<?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>226929</bug_id>
          
          <creation_ts>2021-06-11 10:38:27 -0700</creation_ts>
          <short_desc>Enable release logging in ephemeral sessions for parts of WebCore</short_desc>
          <delta_ts>2021-06-11 13:37:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768980</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 10:38:27 -0700</bug_when>
    <thetext>Enable release logging in ephemeral sessions for parts of WebCore (to limit patch size).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768983</commentid>
    <comment_count>1</comment_count>
      <attachid>431208</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 10:44:50 -0700</bug_when>
    <thetext>Created attachment 431208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768988</commentid>
    <comment_count>2</comment_count>
      <attachid>431209</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 10:54:16 -0700</bug_when>
    <thetext>Created attachment 431209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768999</commentid>
    <comment_count>3</comment_count>
      <attachid>431213</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 11:16:22 -0700</bug_when>
    <thetext>Created attachment 431213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769006</commentid>
    <comment_count>4</comment_count>
      <attachid>431214</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 11:34:24 -0700</bug_when>
    <thetext>Created attachment 431214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769058</commentid>
    <comment_count>5</comment_count>
      <attachid>431214</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 13:36:57 -0700</bug_when>
    <thetext>Comment on attachment 431214
Patch

Clearing flags on attachment: 431214

Committed r278779 (238736@main): &lt;https://commits.webkit.org/238736@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769059</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-11 13:36:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769060</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-11 13:37:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/79213790&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431208</attachid>
            <date>2021-06-11 10:44:50 -0700</date>
            <delta_ts>2021-06-11 11:02:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226929-20210611104449.patch</filename>
            <type>text/plain</type>
            <size>116159</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2NmE3NWVkMzYyOWNi
YWM4NTY2NTI4NWQ4YzcyY2QwY2M2MmViYS4uNmNmODY2MzVkMzQ5MTgxNjlkMzI5N2QxZmJmYWZj
YmFjYTFlOTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wNi0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSByZWxlYXNlIGxv
Z2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgcmVsZWFzZSBs
b2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2ViQ29yZSwgdG8gZmFj
aWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhbk5hdmlnYXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5n
U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpc2Fs
bG93RGF0YVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9y
TG9hZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BGb3JC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXREb2N1
bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRo
aXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3ND
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dy
ZXNzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRE
YXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nT25lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5jcHA6CisKIDIwMjEtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBFdmVudFNvdXJjZS5jb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhj
ZXB0aW9uIHdoZW4gdGhlIHVybCBwYXJhbSBpcyBhbiBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTJjOGI5NTQyNjNmYjcxYmU3MWU4ODhiNTBkZDgzMDgwOTRkNmEzYi4uMDY0YzAwNmJlODI1OGMz
NmZkNTA4YmU4YTg5Yzg5NGU5ZjQ5NzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MS0wNi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJs
ZSByZWxlYXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgcmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2Vi
Q29yZSwgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIxLTA2LTExICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIENyYXNoIHdo
ZW4gZHJhZ2dpbmcgYW4gYWNjb3VudCBub2RlIGFib3ZlIFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDU0ZWE5MTg5MDFmZWRkYmU1NzRjNTEzY2I2M2IwMjBhZDNkYmQzNDYuLmY0
MmE1NTg5OTU5ZjIyNGYwOTZiMjMxN2M1YzFkYWU0Zjg4ZDM3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzQ0LDggKzM0NCw4IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgogI2VuZGlmCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWws
ICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRd
IERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIg
eyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZp
bmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAt
IFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3Vt
ZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KS50
b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50
NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRE9D
VU1FTlRfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWws
ICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRd
IERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIg
eyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgRE9DVU1FTlRfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVf
b3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJh
bWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNf
X1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNTM3LDcgKzM1MzcsNyBA
QCBib29sIERvY3VtZW50OjpjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25VUkwpCiAKICAgICBpZiAoaXNOYXZpZ2F0aW9uQmxvY2tlZEJ5VGhpcmRQ
YXJ0eUlGcmFtZVJlZGlyZWN0QmxvY2tpbmcoKnRhcmdldEZyYW1lLCBkZXN0aW5hdGlvblVSTCkp
IHsKICAgICAgICAgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKCp0YXJnZXRGcmFtZSwgdXJs
KCksICJUaGUgZnJhbWUgYXR0ZW1wdGluZyBuYXZpZ2F0aW9uIG9mIHRoZSB0b3AtbGV2ZWwgd2lu
ZG93IGlzIGNyb3NzLW9yaWdpbiBvciB1bnRydXN0ZWQgYW5kIHRoZSB1c2VyIGhhcyBuZXZlciBp
bnRlcmFjdGVkIHdpdGggdGhlIGZyYW1lLiJfcyk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoTG9hZGluZywgIk5hdmlnYXRpb24gd2FzIHByZXZlbnRlZCBiZWNhdXNlIGl0
IHdhcyB0cmlnZ2VyZWQgYnkgYSBjcm9zcy1vcmlnaW4gb3IgdW50cnVzdGVkIGlmcmFtZSIpOwor
ICAgICAgICBET0NVTUVOVF9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiTmF2aWdhdGlvbiB3
YXMgcHJldmVudGVkIGJlY2F1c2UgaXQgd2FzIHRyaWdnZXJlZCBieSBhIGNyb3NzLW9yaWdpbiBv
ciB1bnRydXN0ZWQgaWZyYW1lIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTg3MzcsMTEgKzg3MzcsNiBAQCBib29sIERvY3VtZW50OjpzaG91bGRJZ25vcmVTeW5jWEhScygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbnVtYmVyT2ZSZWplY3RlZFN5bmNYSFJzID4gbWF4UmVqZWN0
ZWRTeW5jWEhSc1BlckV2ZW50TG9vcEl0ZXJhdGlvbjsKIH0KIAotYm9vbCBEb2N1bWVudDo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fZnJhbWUgfHwg
bV9mcmFtZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KICNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQogCiBib29sIERvY3VtZW50Ojppc0FwcGxlUGF5QWN0aXZlKCkgY29uc3QKQEAgLTg4
NTksNSArODg1NCw1IEBAIEpTQzo6Vk0mIERvY3VtZW50Ojp2bSgpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0cKKyN1bmRl
ZiBET0NVTUVOVF9SRUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiNDcx
YTYzY2Y1ODZjODIzMTVlMmQ2NTBmMDBkOTllNjk2NjU1NmY1Li45ZGEwNGU3ZjdhYTg1MWQwYjhm
NzBhOTU5ZTc2N2E5Y2QwYjQxNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDE0LDggKzQx
NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5
KTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcmVmZXJyZXJQb2xpY3kudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJX
aGVuRG93bmdyYWRlKTsgfQogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBj
b25zdDsKLQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRE9NSW1wbGVtZW50YXRpb24mIGltcGxlbWVudGF0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA1ZjRjN2Fl
Y2NkZjY0NmRhYzYwNTBkMDRiNGU5YTNiZDM2NDI0MmViLi4zNjc2NzU3NDEwODlhNDk4ODcwYWE5
ZTE2YTIwYjQxOWJlZTBlZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQAogI2RlZmluZSBQQUdFX0lEICgobV9mcmFtZSA/IG1f
ZnJhbWUtPnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZp
ZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+
ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKSA6IEZyYW1lSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpKQogI2RlZmluZSBJU19NQUlOX0ZSQU1FIChtX2ZyYW1lID8gbV9mcmFtZS0+
aXNNYWluRnJhbWUoKSA6IGZhbHNlKQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0l
ZF0gRG9jdW1lbnRMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgSVNfTUFJ
Tl9GUkFNRSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZtdCwg
dGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18pCiAK
ICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9E
b2N1bWVudExvYWRlckFkZGl0aW9ucy5jcHA+CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSkKICAgICBp
ZiAoc2hvdWxkTm90aWZ5QWJvdXRQcm92aXNpb25hbFVSTENoYW5nZSkgewogICAgICAgICAvLyBM
b2dnaW5nIGZvciA8cmRhcjovL3Byb2JsZW0vNTQ4MzAyMzM+LgogICAgICAgICBpZiAoIWZyYW1l
TG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIkRvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0OiBXaXRoIG5vIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciIpOworICAgICAgICAgICAgRE9DVU1FTlRMT0FERVJf
UkVMRUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0OiBXaXRoIG5vIHByb3Zpc2lv
bmFsIGRvY3VtZW50IGxvYWRlciIpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5k
aXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCk7CiAgICAgfQogfQpAQCAtMjU2LDcgKzI1
Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXEpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRNYWluRG9jdW1lbnRFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXRNYWluRG9jdW1lbnRFcnJvcjogKHR5cGU9
JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBlKCkpLCBlcnJvci5lcnJv
ckNvZGUoKSk7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJzZXRNYWluRG9j
dW1lbnRFcnJvcjogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50
eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBtX21haW5Eb2N1bWVudEVycm9yID0g
ZXJyb3I7ICAgIAogICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLnNldE1haW5Eb2N1bWVudEVy
cm9yKHRoaXMsIGVycm9yKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjptYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgibWFpblJlY2VpdmVkRXJyb3I6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRp
Y19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBE
T0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygibWFpblJlY2VpdmVkRXJyb3I6ICh0eXBlPSVkLCBj
b2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwogCiAgICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIp
IHsKICAgICAgICAgQVNTRVJUKCFtYWluUmVzb3VyY2VMb2FkZXIoKSk7CkBAIC0yOTIsNyArMjky
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJEb2N1bWVudExvYWRlcjo6ZnJhbWVEZXN0
cm95ZWQ6IG1fZnJhbWU9JXAiLCBtX2ZyYW1lLmdldCgpKTsKKyAgICBET0NVTUVOVExPQURFUl9S
RUxFQVNFX0xPRygiRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkOiBtX2ZyYW1lPSVwIiwg
bV9mcmFtZS5nZXQoKSk7CiAgICAgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ry
b3llZCgpOwogfQogCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZnJh
bWVEZXN0cm95ZWQoKQogLy8gYnV0IG5vdCBsb2FkcyBpbml0aWF0ZWQgYnkgY2hpbGQgZnJhbWVz
JyBkYXRhIHNvdXJjZXMgLS0gdGhhdCdzIHRoZSBXZWJGcmFtZSdzIGpvYi4KIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJE
b2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmc6IG1fZnJhbWU9JXAiLCBtX2ZyYW1lLmdldCgpKTsK
KyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2Fk
aW5nOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZSk7
CiAgICAgaWYgKCFtX2ZyYW1lKQpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0b3BMb2FkaW5nKCkKIAogICAgIC8vIFRoZSBmcmFtZSBtYXkgaGF2ZSBiZWVuIGRldGFj
aGVkIGZyb20gdGhpcyBkb2N1bWVudCBieSB0aGUgb251bmxvYWQgaGFuZGxlcgogICAgIGlmIChh
dXRvKiBmcmFtZUxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nOiBjYW5jZWxpbmcgbG9hZCIp
OworICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RvcExvYWRpbmc6IGNhbmNl
bGluZyBsb2FkIik7CiAgICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewogICAg
ICAgICAgICAgLy8gU3RvcCB0aGUgbWFpbiByZXNvdXJjZSBsb2FkZXIgYW5kIGxldCBpdCBzZW5k
IHRoZSBjYW5jZWxsZWQgbWVzc2FnZS4KICAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWQoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwpAQCAtNDQwLDcgKzQ0
MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNCiAgICAgfQogCiAgICAgaWYgKCFtX21haW5S
ZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmlzTnVsbCgpKQotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJub3RpZnlGaW5pc2hlZDogY2FuY2VsaW5nIGxvYWQgKHR5cGU9JWQsIGNvZGU9
JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLnR5
cGUoKSksIG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuZXJyb3JDb2RlKCkpOworICAg
ICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygibm90aWZ5RmluaXNoZWQ6IGNhbmNlbGlu
ZyBsb2FkICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4obV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS50eXBlKCkpLCBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJv
cigpLmVycm9yQ29kZSgpKTsKIAogICAgIG1haW5SZWNlaXZlZEVycm9yKG1fbWFpblJlc291cmNl
LT5yZXNvdXJjZUVycm9yKCkpOwogfQpAQCAtNjI3LDExICs2MjcsMTEgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNv
bnN0IFJlc291cmMKIAogICAgIC8vIExvZ2dpbmcgZm9yIDxyZGFyOi8vcHJvYmxlbS81NDgzMDIz
Mz4uCiAgICAgaWYgKCFmcmFtZUxvYWRlcigpIHx8ICFmcmFtZUxvYWRlcigpLT5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxT
ZW5kUmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIiKTsKKyAgICAg
ICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogV2l0aCBubyBw
cm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIiKTsKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsKICAgICBpZiAoIWZyYW1l
TG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1JlcXVlc3QudXJsKCks
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGNhbmNlbGluZyAtIGZvcm0gYWN0aW9uIG5vdCBhbGxv
d2VkIGJ5IENTUCIpOworICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNl
bmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSBmb3JtIGFjdGlvbiBub3QgYWxsb3dlZCBieSBDU1AiKTsK
ICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRF
cnJvcihuZXdSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG5ld1JlcXVlc3QpKTsKICAgICB9CkBAIC02NDIsMTMgKzY0MiwxMyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwg
Y29uc3QgUmVzb3VyYwogICAgICAgICAvLyB0aGVuIGJsb2NrIHRoZSByZWRpcmVjdC4KICAgICAg
ICAgUmVmPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVjdGluZ09yaWdpbihTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKTsKICAgICAgICAgaWYgKCFyZWRpcmVjdGlu
Z09yaWdpbi5nZXQoKS5jYW5EaXNwbGF5KG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGNhbmNlbGluZyAtIHJl
ZGlyZWN0aW5nIFVSTCBub3QgYWxsb3dlZCB0byBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0YXJnZXQi
KTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVl
c3Q6IGNhbmNlbGluZyAtIHJlZGlyZWN0aW5nIFVSTCBub3QgYWxsb3dlZCB0byBkaXNwbGF5IGNv
bnRlbnQgZnJvbSB0YXJnZXQiKTsKICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2Nh
bExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxl
ZEVycm9yKG5ld1JlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXBvcnRBbGxv
d2VkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGNhbmNlbGluZyAtIHJlZGlyZWN0aW5nIHRvIGEgVVJMIHdp
dGggYSBibG9ja2VkIHBvcnQiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IGNhbmNlbGluZyAtIHJlZGlyZWN0aW5nIHRvIGEgVVJMIHdp
dGggYSBibG9ja2VkIHBvcnQiKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRCbG9ja2VkTG9hZEZhaWxlZCgqbV9mcmFtZSwgbmV3
UmVxdWVzdC51cmwoKSk7CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1l
TG9hZGVyKCktPmJsb2NrZWRFcnJvcihuZXdSZXF1ZXN0KSk7CkBAIC03NDQsNyArNzQ0LDcgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1N1YnN0aXR1dGVEYXRhKCkKICAgICBpZiAo
IW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGlu
Z01haW5SZXNvdXJjZTogUmV0dXJuaW5nIHN1YnN0aXR1dGUgZGF0YSIpOworICAgIERPQ1VNRU5U
TE9BREVSX1JFTEVBU0VfTE9HKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmluZyBz
dWJzdGl0dXRlIGRhdGEiKTsKICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZp
ZXIoKTsKICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHRo
aXMsIG1fcmVxdWVzdCk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdCh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyLCBtX3JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0cik7CkBAIC0xMDE1LDcg
KzEwMTUsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjpkaXNhbGxvd0RhdGFSZXF1ZXN0KCkgY29u
c3QKIAogICAgICAgICBjdXJyZW50RG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJOb3QgYWxs
b3dlZCB0byBuYXZpZ2F0ZSB0b3AgZnJhbWUgdG8gZGF0YSBVUkwgJyIsIG1fcmVzcG9uc2UudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInLiIpLCBpZGVudGlmaWVyKTsK
ICAgICB9Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3k6IGNhbm5vdCBzaG93IFVSTCIpOworICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9H
KCJjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogY2Fubm90IHNob3cgVVJMIik7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwMjgsNyArMTAyOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9mcmFtZSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogcG9saWN5QWN0aW9uPSVpIHJlY2Vp
dmVkIGJ5IERvY3VtZW50TG9hZGVyIHdpdGggbnVsbCBmcmFtZSIsIChpbnQpcG9saWN5KTsKKyAg
ICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coImNvbnRpbnVlQWZ0ZXJDb250ZW50UG9s
aWN5OiBwb2xpY3lBY3Rpb249JWkgcmVjZWl2ZWQgYnkgRG9jdW1lbnRMb2FkZXIgd2l0aCBudWxs
IGZyYW1lIiwgKGludClwb2xpY3kpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDQ2
LDcgKzEwNDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9h
ZDogewogICAgICAgICAvLyBtX21haW5SZXNvdXJjZSBjYW4gYmUgbnVsbCwgZS5nLiB3aGVuIGxv
YWRpbmcgYSBzdWJzdGl0dXRlIHJlc291cmNlIGZyb20gYXBwbGljYXRpb24gY2FjaGUuCiAgICAg
ICAgIGlmICghbV9tYWluUmVzb3VyY2UpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5OiBjYW5ub3Qgc2hvdyBVUkwiKTsKKyAg
ICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeTogY2Fubm90IHNob3cgVVJMIik7CiAgICAgICAgICAgICBtYWluUmVjZWl2ZWRFcnJv
cihmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEzNzEsMTIgKzEzNzEsMTIgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6YXR0YWNoVG9GcmFtZShGcmFtZSYgZnJhbWUpCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lKCkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OmF0dGFjaFRvRnJhbWU6
IG1fZnJhbWU9JXAiLCBtX2ZyYW1lLmdldCgpKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNF
X0xPRygiRG9jdW1lbnRMb2FkZXI6OmF0dGFjaFRvRnJhbWU6IG1fZnJhbWU9JXAiLCBtX2ZyYW1l
LmdldCgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZy
YW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWU6IG1fZnJhbWU9JXAiLCBt
X2ZyYW1lLmdldCgpKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKG1faGFzRXZlckJl
ZW5BdHRhY2hlZCkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtYXliZUxvYWRFbXB0eSgpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogUmV0dXJuaW5n
IGVtcHR5IGRvY3VtZW50Iik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJz
dGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmluZyBlbXB0eSBkb2N1bWVudCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTQyLDcgKzE5NDIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogCiAgICAgICAgIC8vIHdpbGxTZW5k
UmVxdWVzdCgpIG1heSBsZWFkIHRvIG91ciBGcmFtZSBiZWluZyBkZXRhY2hlZCBvciBjYW5jZWxs
aW5nIHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCiAgICAgICAgIGlm
ICghbV9mcmFtZSB8fCBtX3JlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogTG9hZCBjYW5jZWxlZCBh
ZnRlciB3aWxsU2VuZFJlcXVlc3QiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVB
U0VfTE9HKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IExvYWQgY2FuY2VsZWQgYWZ0ZXIgd2ls
bFNlbmRSZXF1ZXN0Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTk1
MCwzMCArMTk1MCwzMCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
b3VyY2UoKQogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcmVsb2FkIHRoZSBjYWNoZSBsYXllciBt
aWdodCBoYXZlIG1hZGUgdGhlIHByZXZpb3VzIHJlcXVlc3QgY29uZGl0aW9uYWwuIERvY3VtZW50
TG9hZGVyIGNhbid0IGhhbmRsZSAzMDQgcmVzcG9uc2VzIGl0c2VsZi4KICAgICAgICAgcmVxdWVz
dC5tYWtlVW5jb25kaXRpb25hbCgpOwogCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogU3RhcnRpbmcgbG9hZCIpOworICAgICAgICBET0NV
TUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNlOiBTdGFydGlu
ZyBsb2FkIik7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIGlmIChtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LT5jYW5Mb2FkTWFpblJlc291cmNlKHJlcXVlc3QpIHx8IG1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAgICAgICAgICAgICBtYXRjaFJlZ2lzdHJhdGlvbih1cmwsIFtyZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRo
aXNdIChhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSBjYWxsYmFj
azogTG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIG1haW4gZG9jdW1lbnQgZXJyb3IgKHR5cGU9JWQs
IGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihtX21haW5Eb2N1bWVudEVycm9yLnR5cGUoKSks
IG1fbWFpbkRvY3VtZW50RXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBE
T0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNlIGNhbGxi
YWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgbWFpbiBkb2N1bWVudCBlcnJvciAodHlwZT0l
ZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbWFpbkRvY3VtZW50RXJyb3IudHlwZSgp
KSwgbV9tYWluRG9jdW1lbnRFcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFtX2ZyYW1l
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSBjYWxsYmFjazogTG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5vIGZyYW1l
Iik7CisgICAgICAgICAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBubyBm
cmFtZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSA9IFdURk1v
dmUocmVnaXN0cmF0aW9uRGF0YSk7CiAgICAgICAgICAgICAgICAgLy8gUHJlZmVyIGV4aXN0aW5n
IHN1YnN0aXR1dGUgZGF0YSAoZnJvbSBXS1dlYlZpZXcubG9hZERhdGEgZXRjKSBvdmVyIHNlcnZp
Y2Ugd29ya2VyIGZldGNoLgogICAgICAgICAgICAgICAgIGlmICh0aGlzLT50cnlMb2FkaW5nU3Vi
c3RpdHV0ZURhdGEoKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVj
YXVzZSBvZiBzdWJzdGl0dXRlIGRhdGEiKTsKKyAgICAgICAgICAgICAgICAgICAgRE9DVU1FTlRM
T0FERVJfUkVMRUFTRV9MT0coInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSBjYWxsYmFjazogTG9h
ZCBjYW5jZWxlZCBiZWNhdXNlIG9mIHN1YnN0aXR1dGUgZGF0YSIpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhICYmIHRoaXMtPnRyeUxvYWRpbmdSZXF1ZXN0
RnJvbUFwcGxpY2F0aW9uQ2FjaGUoKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWRlZCBm
cm9tIEFwcGxpY2F0aW9uIENhY2hlIik7CisgICAgICAgICAgICAgICAgICAgIERPQ1VNRU5UTE9B
REVSX1JFTEVBU0VfTE9HKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWRl
ZCBmcm9tIEFwcGxpY2F0aW9uIENhY2hlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGhpcy0+bG9hZE1haW5SZXNvdXJj
ZShXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgIGlmICh0cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTog
TG9hZGVkIGZyb20gQXBwbGljYXRpb24gQ2FjaGUiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9B
REVSX1JFTEVBU0VfTE9HKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IExvYWRlZCBmcm9tIEFw
cGxpY2F0aW9uIENhY2hlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMjA0MSwxNyArMjA0MSwxNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJl
c291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIFRoZSBmcmFtZSBt
YXkgaGF2ZSBnb25lIGF3YXkgaWYgdGhpcyBsb2FkIHdhcyBjYW5jZWxsZWQgc3luY2hyb25vdXNs
eSBhbmQgdGhpcyB3YXMgdGhlIGxhc3QgcGVuZGluZyBsb2FkLgogICAgICAgICAvLyBUaGlzIGlz
IGJlY2F1c2Ugd2UgbWF5IGhhdmUgZmlyZWQgdGhlIGxvYWQgZXZlbnQgaW4gYSBwYXJlbnQgZnJh
bWUuCiAgICAgICAgIGlmICghbV9mcmFtZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgibG9hZE1haW5SZXNvdXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwg
ZnJhbWUgaGFzIGdvbmUgYXdheSIpOworICAgICAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFT
RV9MT0coImxvYWRNYWluUmVzb3VyY2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIGZy
YW1lIGhhcyBnb25lIGF3YXkiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghbV9yZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZE1haW5SZXNvdXJjZTogVW5hYmxlIHRvIGxvYWQgbWFp
biByZXNvdXJjZSwgVVJMIGlzIGludmFsaWQiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVS
X1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291cmNlOiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291
cmNlLCBVUkwgaXMgaW52YWxpZCIpOwogICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9h
ZChmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IobV9yZXF1ZXN0KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJsb2FkTWFpblJlc291cmNlOiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNl
LCByZXR1cm5pbmcgZW1wdHkgZG9jdW1lbnQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coImxvYWRNYWluUmVzb3VyY2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2Us
IHJldHVybmluZyBlbXB0eSBkb2N1bWVudCIpOwogCiAgICAgICAgIHNldFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0KCkpOwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVh
cmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CkBA
IC0yMDY2LDcgKzIwNjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNl
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQogICAgIGlmIChtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fZnJhbWUt
PnBhZ2UoKSAmJiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09IENv
bnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJsb2FkTWFpblJlc291cmNlOiBCbG9ja2VkIGJ5IGNvbnRl
bnQgYmxvY2tlciBlcnJvciIpOworICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygi
bG9hZE1haW5SZXNvdXJjZTogQmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgZXJyb3IiKTsKICAg
ICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjEwNCw3ICsyMTA0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9
IHJlc291cmNlRXJyb3IuaXNOdWxsKCkgPyBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvciht
X3JlcXVlc3QpIDogcmVzb3VyY2VFcnJvcjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImNhbmNlbE1haW5SZXNvdXJjZUxvYWQ6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0
PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIERPQ1VNRU5UTE9B
REVSX1JFTEVBU0VfTE9HKCJjYW5jZWxNYWluUmVzb3VyY2VMb2FkOiAodHlwZT0lZCwgY29kZT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsK
IAogICAgIG1fZGF0YUxvYWRUb2tlbi5jbGVhcigpOwogCkBAIC0yMjgyLDExICsyMjgyLDYgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6YWRkUGVuZGluZ0NvbnRlbnRFeHRlbnNpb25EaXNwbGF5Tm9u
ZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYKIH0KICNlbmRpZgogCi1ib29sIERvY3VtZW50TG9hZGVy
Ojppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiAhbV9mcmFt
ZSB8fCBtX2ZyYW1lLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogI2lmIFVTRShR
VUlDS19MT09LKQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpwcmV2aWV3UmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBkNTM3OTQ3ZTAy
ZmFkZmYyNmJmYWIwZTgzZDg5NWNhODczY2UwODUyLi5lNjkzNTMyZWJkNjRmNWMwNDJjN2MzN2Q4
MzkxODk1OTdkNmU2OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApA
QCAtMzg1LDggKzM4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwg
eyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCiAKLSAgICBi
b29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiAgICAgdm9pZCBzdGFydElj
b25Mb2FkaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z0ljb24oSWNvbkxvYWRlciYsIFNoYXJlZEJ1ZmZlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggZDAyN2IyMjZlYjI2NmI2OTQ1YWYwMDI0NWVmZWI0ZDJlY2U1OWQx
Yi4uZDcxM2Y3ZGQ0YTQ5MmNmYzM2YTgzZTEwZGEyNjIxM2RhYmUyNzVmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNTIsOCArMTUyLDggQEAKIAogI2RlZmluZSBQ
QUdFX0lEICgocGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkp
CiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigp
KSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVf
SUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9h
ZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUo
KSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhp
cywgUEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIs
IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2Vk
VGFyZ2V0LCBFdmUKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oRnJhbWVMb2Fk
UmVxdWVzdCYmIGZyYW1lUmVxdWVzdCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgc3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkK
IHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGlu
ZywgImNoYW5nZUxvY2F0aW9uOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjaGFuZ2VMb2NhdGlvbjogZnJhbWUgbG9h
ZCBzdGFydGVkIik7CiAgICAgQVNTRVJUKGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5o
dHRwTWV0aG9kKCkgPT0gIkdFVCIpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUp
OwpAQCAtOTQyLDcgKzk0Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ2FsbEltcGxpY2l0
Q2xvc2UoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJhbWUpCiB7Ci0g
ICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJs
b2FkVVJMSW50b0NoaWxkRnJhbWU6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9B
REVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRVUkxJbnRvQ2hpbGRGcmFtZTog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKQEAgLTk3
OSw3ICs5NzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRgogCiB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJiBhcmNoaXZlKQogewotICAgIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZEFyY2hpdmU6IGZy
YW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNl
TG9hZGluZywgImxvYWRBcmNoaXZlOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAogICAgIEFyY2hp
dmVSZXNvdXJjZSogbWFpblJlc291cmNlID0gYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7CiAgICAg
QVNTRVJUKG1haW5SZXNvdXJjZSk7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkKIC8vIHRoYXQgYSBo
aWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBz
Y3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgogdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHN0
YXRlT2JqZWN0LCBib29sIGlzTmV3TmF2aWdhdGlvbikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRJblNhbWVEb2N1bWVudDog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAibG9hZEluU2FtZURvY3VtZW50OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAog
ICAgIC8vIElmIHdlIGhhdmUgYSBzdGF0ZSBvYmplY3QsIHdlIGNhbm5vdCBhbHNvIGJlIGEgbmV3
IG5hdmlnYXRpb24uCiAgICAgQVNTRVJUKCFzdGF0ZU9iamVjdCB8fCAoc3RhdGVPYmplY3QgJiYg
IWlzTmV3TmF2aWdhdGlvbikpOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6c3RhcnRlZCgpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQoKQog
ewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAicHJlcGFyZUZvckxvYWRTdGFydDogU3RhcnRpbmcgZnJhbWUgbG9hZCIpOworICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInByZXBhcmVGb3JMb2FkU3RhcnQ6
IFN0YXJ0aW5nIGZyYW1lIGxvYWQiKTsKIAogICAgIG1fcHJvZ3Jlc3NUcmFja2VyLT5wcm9ncmVz
c1N0YXJ0ZWQoKTsKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwpAQCAtMTIxMCwxNCArMTIxMCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXR1cEZvclJl
cGxhY2UoKQogICAgIG1fY2xpZW50LT5yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUobV9kb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgc2V0U3RhdGUoRnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwog
ICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9IG1fZG9jdW1lbnRMb2FkZXI7Ci0gICAg
RlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJzZXR1
cEZvclJlcGxhY2U6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdl
dCgpKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJzZXR1
cEZvclJlcGxhY2U6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdl
dCgpKTsKICAgICBtX2RvY3VtZW50TG9hZGVyID0gbnVsbHB0cjsKICAgICBkZXRhY2hDaGlsZHJl
bigpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJl
cXVlc3QmJiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0
YXRlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50KQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogZnJhbWUgbG9hZCBzdGFydGVkIik7
CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZyYW1l
UmVxdWVzdDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBQcm90ZWN0IGZyYW1lIGZy
b20gZ2V0dGluZyBibG93biBhd2F5IGluc2lkZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbiBs
b2FkV2l0aERvY3VtZW50TG9hZGVyLgogICAgIGF1dG8gcHJvdGVjdEZyYW1lID0gbWFrZVJlZiht
X2ZyYW1lKTsKQEAgLTEyMjYsMTMgKzEyMjYsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZy
YW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBSZWYK
IAogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIGlmICghcmVxdWVzdC5yZXF1
ZXN0ZXJTZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkgewotICAgICAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJl
cXVlc3Q6IGNhbmNlbGluZyAtIE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2UiKTsK
KyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAibG9hZEZy
YW1lUmVxdWVzdDogY2FuY2VsaW5nIC0gTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJj
ZSIpOwogICAgICAgICByZXBvcnRMb2NhbExvYWRGYWlsZWQoJm1fZnJhbWUsIHVybC5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIXBvcnRBbGxvd2VkKHVybCkpIHsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkRnJhbWVSZXF1ZXN0OiBjYW5jZWxp
bmcgLSBwb3J0IG5vdCBhbGxvd2VkIik7CisgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
KFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGNhbmNlbGluZyAtIHBvcnQgbm90
IGFsbG93ZWQiKTsKICAgICAgICAgcmVwb3J0QmxvY2tlZExvYWRGYWlsZWQobV9mcmFtZSwgdXJs
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMTQsNyArMTMxNCw3IEBAIGJvb2wgRnJh
bWVMb2FkZXI6OmlzU3RvcExvYWRpbmdBbGxvd2VkKCkgY29uc3QKIAogdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBS
ZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZFVSTDogZnJhbWUgbG9hZCBzdGFy
dGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAibG9h
ZFVSTDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAgICAgQVNTRVJUKGZyYW1lTG9hZFJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAogICAgIENvbXBsZXRp
b25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTE0MjIsNyArMTQyMiw3IEBAIFN1YnN0aXR1dGVEYXRhIEZy
YW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAK
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiB7Ci0g
ICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJs
b2FkIChGcmFtZUxvYWRSZXF1ZXN0KTogZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRnJhbWVMb2FkUmVxdWVz
dCk6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAgaWYgKG1faW5TdG9wQWxsTG9hZGVycyB8
fCBtX2luQ2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjaykKICAgICAgICAgcmV0dXJu
OwpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRS
ZXF1ZXN0JiYgcmVxdWVzdCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmF2aWdhdGlvbkFjdGlvbiYm
IGFjdGlvbiwgRnJhbWVMb2FkVHlwZSB0eXBlLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0
ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9h
ZFdpdGhOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aE5hdmlnYXRpb25BY3Rp
b246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIgPSBtX2NsaWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0
aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgYWN0aW9u
LmluaXRpYXRlZEJ5TWFpbkZyYW1lKCksIGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KCkpOwpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmF2aWcKIAog
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIp
CiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRp
bmcsICJsb2FkIChEb2N1bWVudExvYWRlcik6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWQgKERvY3VtZW50TG9h
ZGVyKTogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmIHIgPSBu
ZXdEb2N1bWVudExvYWRlci5yZXF1ZXN0KCk7CiAgICAgLy8gRklYTUU6IFVzaW5nIG1fbG9hZFR5
cGUgc2VlbXMgd3JvbmcgaGVyZS4KQEAgLTE1MzAsNyArMTUzMCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXImIG5ld0RvY3VtZW50TG9hZGVyKQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZy
YW1lTG9hZFR5cGUgdHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoRG9jdW1l
bnRMb2FkZXI6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoRG9jdW1lbnRMb2FkZXI6IGZyYW1lIGxvYWQg
c3RhcnRlZCIpOwogCiAgICAgLy8gUmV0YWluIGJlY2F1c2UgZGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQgbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGl0LgogICAgIFJlZjxGcmFtZT4g
cHJvdGVjdChtX2ZyYW1lKTsKQEAgLTE1NjAsNyArMTU2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2Fk
VHlwZSB0CiAgICAgLy8gTG9nIG1haW4gZnJhbWUgbmF2aWdhdGlvbiB0eXBlcy4KICAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFt
ZS5wYWdlKCkpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZFdpdGhEb2N1bWVudExvYWRlcjogbWFpbiBmcmFtZSBs
b2FkIHN0YXJ0ZWQiKTsKKyAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291
cmNlTG9hZGluZywgImxvYWRXaXRoRG9jdW1lbnRMb2FkZXI6IG1haW4gZnJhbWUgbG9hZCBzdGFy
dGVkIik7CiAgICAgICAgICAgICBwYWdlLT5tYWluRnJhbWVMb2FkU3RhcnRlZChuZXdVUkwsIHR5
cGUpOwogICAgICAgICAgICAgcGFnZS0+cGVyZm9ybWFuY2VMb2dnaW5nKCkuZGlkUmVhY2hQb2lu
dE9mSW50ZXJlc3QoUGVyZm9ybWFuY2VMb2dnaW5nOjpNYWluRnJhbWVMb2FkU3RhcnRlZCk7CiAg
ICAgICAgIH0KQEAgLTE2MjgsNyArMTYyOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyUHJv
dmlzaW9uYWxMb2FkRm9yUG9saWN5Q2hlY2soKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hh
bmdlKG1faW5DbGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNoZWNrLCB0cnVlKTsKICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0gICAgRlJBTUVMT0FE
RVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lv
bmFsTG9hZEZvclBvbGljeUNoZWNrOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2Fk
ZXIgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIuZ2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9h
ZGluZywgImNsZWFyUHJvdmlzaW9uYWxMb2FkRm9yUG9saWN5Q2hlY2s6IENsZWFyaW5nIHByb3Zp
c2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIs
IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcihudWxscHRyKTsKIH0KIApAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNv
ZGluZykKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAicmVs
b2FkV2l0aE92ZXJyaWRlRW5jb2Rpbmc6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInJlbG9hZFdpdGhPdmVycmlkZUVu
Y29kaW5nOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOwogICAgIFVSTCB1bnJlYWNoYWJsZVVS
TCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CkBAIC0xNzMyLDcgKzE3MzIs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0
aW9ucykKICAgICBpZiAobV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLnVybCgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJyZWxvYWQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInJlbG9hZDogZnJhbWUg
bG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBSZXBsYWNlIGVycm9yLXBhZ2UgVVJMIHdpdGggdGhl
IFVSTCB3ZSB3ZXJlIHRyeWluZyB0byByZWFjaC4KICAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlh
bFJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7CkBAIC0xODA0LDcgKzE4MDQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRl
bSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcAogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGls
ZCA9IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCkuc3RvcEFsbExvYWRl
cnMoY2xlYXJQcm92aXNpb25hbEl0ZW0pOwogCi0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJzdG9wQWxsTG9hZGVyczogbV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyPSVwLCBtX2RvY3VtZW50TG9hZGVyPSVwIiwgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLmdldCgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJzdG9wQWxsTG9hZGVyczogbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyPSVwLCBtX2RvY3VtZW50TG9hZGVyPSVwIiwgbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLmdldCgpLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKIAogICAg
IGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+c3RvcExvYWRpbmcoKTsKQEAgLTE4MTMsNyArMTgxMyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtIGNsZWFyUHJv
dmlzaW9uYWxJdGVtLCBTdG9wCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmICFtX2ZyYW1lLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuaXNTVkdJbWFnZUNocm9tZUNsaWVudCgpKQogICAgICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+YnJvd3NpbmdDb250ZXh0
UmVtb3ZlZChmcmFtZSgpKTsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUmVzb3VyY2VMb2FkaW5nLCAic3RvcEFsbExvYWRlcnM6IENsZWFyaW5nIHByb3Zpc2lvbmFs
IGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9M
T0coUmVzb3VyY2VMb2FkaW5nLCAic3RvcEFsbExvYWRlcnM6IENsZWFyaW5nIHByb3Zpc2lvbmFs
IGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcihudWxscHRyKTsKIAogICAgIG1faW5TdG9wQWxsTG9hZGVycyA9IGZhbHNlOyAgICAK
QEAgLTE4MjUsNyArMTgyNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BGb3JCYWNrRm9yd2Fy
ZENhY2hlKCkKICAgICBpZiAoIW1fZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAo
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICAgICAgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOwotICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInN0b3BGb3JCYWNrRm9yd2FyZENhY2hl
OiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAg
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJzdG9wRm9yQmFj
a0ZvcndhcmRDYWNoZTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LmdldCgpKTsKICAgICAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihudWxscHRyKTsK
ICAgICB9CiAKQEAgLTE5MDEsNyArMTkwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERvY3Vt
ZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKGxvYWRlciA9PSBtX2Rv
Y3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInNldERvY3VtZW50TG9hZGVyOiBTZXR0
aW5nIGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwgbV9kb2N1bWVudExv
YWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAic2V0RG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgZG9jdW1lbnQgbG9hZGVyIHRvICVwICh3YXMg
JXApIiwgbG9hZGVyLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICAKICAgICBSRUxFQVNF
X0FTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9PSB0aGlzKTsKIApAQCAt
MTkyOSw3ICsxOTI5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9jdW1lbnRMb2Fk
ZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAobV9wb2xpY3lEb2N1bWVudExvYWRl
ciA9PSBsb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAic2V0UG9saWN5RG9jdW1lbnRMb2FkZXI6
IFNldHRpbmcgcG9saWN5IGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwg
bV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9M
T0coUmVzb3VyY2VMb2FkaW5nLCAic2V0UG9saWN5RG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcG9s
aWN5IGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwgbV9wb2xpY3lEb2N1
bWVudExvYWRlci5nZXQoKSk7CiAKICAgICBpZiAobG9hZGVyKQogICAgICAgICBsb2FkZXItPmF0
dGFjaFRvRnJhbWUobV9mcmFtZSk7CkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9PSBsb2FkZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3Vy
Y2VMb2FkaW5nLCAic2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjogU2V0dGluZyBwcm92aXNp
b25hbCBkb2N1bWVudCBsb2FkZXIgdG8gJXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVz
b3VyY2VMb2FkaW5nLCAic2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjogU2V0dGluZyBwcm92
aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgdG8gJXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAKICAgICBBU1NFUlQoIWxvYWRlciB8fCAhbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbG9hZGVyIHx8
IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9PSB0aGlzKTsKQEAgLTE5NjksNyArMTk2OSw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnNldFN0YXRlKEZyYW1lU3RhdGUgbmV3U3RhdGUpCiAgICAgICAgIGlm
IChtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+c3RvcFJl
Y29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpICYm
IG9sZFN0YXRlICE9IG5ld1N0YXRlKSB7Ci0gICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInNldFN0YXRlOiBtYWluIGZyYW1lIGxv
YWQgY29tcGxldGVkIik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJzZXRTdGF0ZTogbWFpbiBmcmFtZSBsb2FkIGNvbXBsZXRlZCIpOwogICAg
ICAgICAgICAgbV9mcmFtZS5wYWdlKCktPnBlcmZvcm1hbmNlTG9nZ2luZygpLmRpZFJlYWNoUG9p
bnRPZkludGVyZXN0KFBlcmZvcm1hbmNlTG9nZ2luZzo6TWFpbkZyYW1lTG9hZENvbXBsZXRlZCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVh
clByb3Zpc2lvbmFsTG9hZCgpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lvbmFsTG9hZDogQ2xlYXJpbmcgcHJv
dmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXAp
IiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBGUkFNRUxPQURFUl9S
RUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lvbmFsTG9hZDogQ2xlYXJp
bmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBzZXRQcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKG51bGxwdHIpOwogICAgIG1fcHJvZ3Jlc3NUcmFja2VyLT5w
cm9ncmVzc0NvbXBsZXRlZCgpOwogICAgIHNldFN0YXRlKEZyYW1lU3RhdGU6OkNvbXBsZXRlKTsK
QEAgLTIxNTksNyArMjE1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZChDYWNoZWRQYWdlKiBjYWNoZWRQYWdlKQogICAgIHNldERvY3VtZW50TG9hZGVyKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgaWYgKG9yaWdpbmFsUHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlciAhPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgInRyYW5zaXRpb25Ub0NvbW1pdHRlZDogQ2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9j
dW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJ0cmFuc2l0aW9uVG9Db21taXR0ZWQ6IENsZWFyaW5nIHByb3Zpc2lv
bmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcihudWxscHRyKTsKIAogICAgIC8vIE5vdGhpbmcgZWxzZSBjYW4gaW50ZXJydXB0
IHRoaXMgY29tbWl0IC0gc2V0IHRoZSBQcm92aXNpb25hbC0+Q29tbWl0dGVkIHRyYW5zaXRpb24g
aW4gc3RvbmUKQEAgLTI1MDQsNyArMjUwNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9h
ZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAgICAgLy8gT25seSByZXNldCBpZiB3ZSBhcmVu
J3QgYWxyZWFkeSBnb2luZyB0byBhIG5ldyBwcm92aXNpb25hbCBpdGVtLgogICAgICAgICBib29s
IHNob3VsZFJlc2V0ID0gIWhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKTsKICAgICAgICAgaWYg
KCFwcm90ZWN0b3ItPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8fCBwcm90ZWN0b3ItPmlzU3RvcHBp
bmcoKSkgewotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChS
ZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZTogRmFpbGVkIHBy
b3Zpc2lvbmFsIGxvYWQgKGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJv
ckNvZGUgPSAlZCkiLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwg
ZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0co
UmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBw
cm92aXNpb25hbCBsb2FkIChpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJy
b3JDb2RlID0gJWQpIiwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgICAgICAgICAgZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKCpwcm90ZWN0b3IsIGVycm9yKTsKICAgICAgICAgICAgIEFTU0VSVCghcHJvdGVj
dG9yLT5pc0xvYWRpbmcoKSk7CkBAIC0yNTY2LDExICsyNTY2LDExIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIAogICAgICAgICBBWE9iamVjdENh
Y2hlOjpBWExvYWRpbmdFdmVudCBsb2FkaW5nRXZlbnQ7CiAgICAgICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVk
IGZyYW1lIGxvYWQgd2l0aCBlcnJvciAoaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0g
JWQsIGVycm9yQ29kZSA9ICVkKSIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxh
dGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZTog
RmluaXNoZWQgZnJhbWUgbG9hZCB3aXRoIGVycm9yIChpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxs
YXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlz
Q2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEZhaWxMb2FkKGVycm9yKTsKICAgICAgICAgICAgIGxvYWRpbmdFdmVudCA9
IEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ0ZhaWxlZDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQiKTsK
KyAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNo
ZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIik7CiAjaWYg
RU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgICAgICAgICAgYXV0byBkb2N1bWVudCA9IG1fZnJh
bWUuZG9jdW1lbnQoKTsKICAgICAgICAgICAgIGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8RGF0YURl
dGVjdG9yVHlwZT4geyBtX2ZyYW1lLnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSB9OwpA
QCAtMzAxNyw3ICszMDE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkU2FtZVNpdGVJbmZvVG9S
ZXF1ZXN0SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb24KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBFdmVudCogZXZlbnQs
IFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkUG9zdFJlcXVlc3Q6IGZyYW1lIGxvYWQgc3Rh
cnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxv
YWRQb3N0UmVxdWVzdDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBTdHJpbmcgZnJhbWVO
YW1lID0gcmVxdWVzdC5mcmFtZU5hbWUoKTsKICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSA9
IHJlcXVlc3QubG9ja0hpc3RvcnkoKTsKQEAgLTMxODMsNyArMzE4Myw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXF1CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHByb3Zpc2lvbmFsIHJlcXVlc3QgZm9y
IGEgZGlmZmVyZW50IGRvY3VtZW50LCBhIGZyYWdtZW50IHNjcm9sbCBzaG91bGQgY2FuY2VsIGl0
LgogICAgIGlmIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgJiYgIWVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCku
dXJsKCksIHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci0+c3RvcExvYWRpbmcoKTsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5OiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcs
ICJjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBDbGVhcmluZyBw
cm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0l
cCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgICAgICBzZXRQcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKG51bGxwdHIpOwogICAgIH0KIApAQCAtMzQyNCw3ICszNDI0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBib29sIGNhbkNvbnRpbnVlID0gbmF2
aWdhdGlvblBvbGljeURlY2lzaW9uID09IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGlu
dWVMb2FkICYmIHNob3VsZENsb3NlKCkgJiYgIXVybElzRGlzYWxsb3dlZDsKIAogICAgIGlmICgh
Y2FuQ29udGludWUpIHsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6IGNh
bid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgZHVlIHRvIHRoZSBmb2xsb3dpbmcgcmVhc29ucyAo
IgorICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJh
bWUgZHVlIHRvIHRoZSBmb2xsb3dpbmcgcmVhc29ucyAoIgogICAgICAgICAgICAgImFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCA9ICVkLCAiCiAgICAgICAgICAgICAicmVxdWVzdFVSTElzVmFs
aWQgPSAlZCwgIgogICAgICAgICAgICAgIm5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9ICVkKSIs
CkBAIC0zNDY4LDEyICszNDY4LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzYyNTA4NTY+IC0gSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9uIHBh
Z2VzIHdpdGggbXVsdGlwbGUgZnJhbWVzLCBzdG9wQWxsTG9hZGVycygpCiAgICAgLy8gbWlnaHQg
ZGV0YWNoIHRoZSBjdXJyZW50IEZyYW1lTG9hZGVyLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBi
YWlsIG9uIHRoaXMgbmV3bHkgZGVmdW5jdCBsb2FkLiAKICAgICBpZiAoIW1fZnJhbWUucGFnZSgp
KSB7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VM
b2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51
ZSBsb2FkaW5nIGZyYW1lIGJlY2F1c2UgaXQgYmVjYW1lIGRlZnVuY3QiKTsKKyAgICAgICAgRlJB
TUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZyYW1lIGJlY2F1c2UgaXQg
YmVjYW1lIGRlZnVuY3QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7Ci0gICAg
RlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1l
bnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6IFNldHRpbmcg
cHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9
JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBtX2xvYWRUeXBl
ID0gdHlwZTsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlOjpQcm92aXNpb25hbCk7CiAKQEAgLTM0
ODQsNyArMzQ4NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIGlmIChoaXN0
b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkgJiYgaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLT5p
c0luQmFja0ZvcndhcmRDYWNoZSgpKSB7CiAgICAgICAgICAgICBkaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpiYWNrRm9yd2FyZENhY2hlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFs
S2V5KCksIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgU2hvdWxkU2FtcGxlOjpZZXMpOwog
ICAgICAgICAgICAgbG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCk7Ci0gICAgICAg
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywg
ImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3QgY29udGludWUgbG9hZGlu
ZyBmcmFtZSBiZWNhdXNlIGl0IHdpbGwgYmUgbG9hZGVkIGZyb20gY2FjaGUiKTsKKyAgICAgICAg
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9h
ZEFmdGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3QgY29udGludWUgbG9hZGluZyBmcmFtZSBiZWNh
dXNlIGl0IHdpbGwgYmUgbG9hZGVkIGZyb20gY2FjaGUiKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpiYWNrRm9yd2FyZENhY2hl
S2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIERpYWdub3N0aWNM
b2dnaW5nUmVzdWx0RmFpbCwgU2hvdWxkU2FtcGxlOjpZZXMpOwpAQCAtMzQ5Miw3ICszNDkyLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1f
ZnJhbWUpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IChjb21w
bGV0aW9uSGFuZGxlcik6IEZyYW1lIGxvYWQgY2FuY2VsZWQgLSBubyBwcm92aXNpb25hbCBkb2N1
bWVudCBsb2FkZXIgYmVmb3JlIHByZXBhcmVGb3JMb2FkU3RhcnQiKTsKKyAgICAgICAgICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBsb2FkIGNhbmNlbGVk
IC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGJlZm9yZSBwcmVwYXJlRm9yTG9hZFN0
YXJ0Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNTAx
LDEzICszNTAxLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIC8vIFRoZSBs
b2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRTdGFydCgpLCBu
dWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLAogICAgICAgICAvLyBz
byB3ZSBuZWVkIHRvIG51bGwgY2hlY2sgaXQgYWdhaW4uCiAgICAgICAgIGlmICghbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlv
blBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBsb2FkIGNhbmNlbGVkIC0gbm8gcHJv
dmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGFmdGVyIHByZXBhcmVGb3JMb2FkU3RhcnQiKTsKKyAg
ICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBs
b2FkIGNhbmNlbGVkIC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGFmdGVyIHByZXBh
cmVGb3JMb2FkU3RhcnQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGFjdGl2ZURvY0xvYWRlciA9IGFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCk7CiAgICAgICAgIGlmIChhY3RpdmVEb2NMb2FkZXIgJiYgYWN0aXZlRG9jTG9h
ZGVyLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkgewotICAgICAgICAgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRl
ck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBsZXRpb25IYW5kbGVyKTogTWFpbiBmcmFtZSBhbHJlYWR5
IGJlaW5nIGxvYWRlZCIpOworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVz
b3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IChjb21wbGV0
aW9uSGFuZGxlcik6IE1haW4gZnJhbWUgYWxyZWFkeSBiZWluZyBsb2FkZWQiKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTM3MzAsNyArMzczMCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRTYW1lRG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQog
Ly8gbWV0aG9kcyBvZiBGcmFtZUxvYWRlci4KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJl
bnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSwg
RnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgRm9ybVN1Ym1pc3Npb25DYWNoZUxvYWRQb2xpY3kgY2Fj
aGVMb2FkUG9saWN5LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkKQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAibG9hZERpZmZlcmVudERvY3VtZW50SXRlbTogZnJhbWUgbG9hZCBz
dGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAi
bG9hZERpZmZlcmVudERvY3VtZW50SXRlbTogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBS
ZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0zODczLDcgKzM4NzMsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpyZXRyeUFmdGVyRmFpbGVkQ2FjaGVPbmx5TWFpblJlc291cmNl
TG9hZCgpCiAgICAgICAgIGxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oKml0ZW0sIGhpc3Rvcnko
KS5jdXJyZW50SXRlbSgpLCBsb2FkVHlwZSwgTWF5Tm90QXR0ZW1wdENhY2hlT25seUxvYWRGb3JG
b3JtU3VibWlzc2lvbkl0ZW0sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogICAg
IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgRlJBTUVMT0FE
RVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJyZXRyeUFm
dGVyRmFpbGVkQ2FjaGVPbmx5TWFpblJlc291cmNlTG9hZDogUmV0cnlpbmcgbG9hZCBhZnRlciBm
YWlsZWQgY2FjaGUtb25seSBtYWluIHJlc291cmNlIGxvYWQgZmFpbGVkIGJlY2F1c2UgdGhlcmUg
aXMgbm8gcHJvdmlzaW9uYWwgaGlzdG9yeSBpdGVtLiIpOworICAgICAgICBGUkFNRUxPQURFUl9S
RUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRpbmcsICJyZXRyeUFmdGVyRmFpbGVkQ2FjaGVP
bmx5TWFpblJlc291cmNlTG9hZDogUmV0cnlpbmcgbG9hZCBhZnRlciBmYWlsZWQgY2FjaGUtb25s
eSBtYWluIHJlc291cmNlIGxvYWQgZmFpbGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gcHJvdmlzaW9u
YWwgaGlzdG9yeSBpdGVtLiIpOwogICAgIH0KIH0KIApAQCAtNDA1NCwxMSArNDA1NCw2IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNsZWFyVGVzdGluZ092ZXJyaWRlcygpCiAgICAgbV9pc1N0cmljdFJh
d1Jlc291cmNlVmFsaWRhdGlvblBvbGljeURpc2FibGVkRm9yVGVzdGluZyA9IGZhbHNlOwogfQog
Ci1ib29sIEZyYW1lTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBmcmFtZSgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiBib29s
IEZyYW1lTG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDAwNGZiZDliN2NjZmJmOGE0
ZWY4ZGRjMDc1ZjA1YmU3MmFiYzcxOWEuLmYxMjM5OWU1ZTU1Y2ZkNzMwNGQ2NzRkMWI2OWE1ZDc5
NjdjODI2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0zMDksNyArMzA5
LDYgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hh
bmRsZWRVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5k
bGVkVVJMOyB9CiAgICAgdm9pZCBzZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVS
TChjb25zdCBVUkwmIHVybCkgeyBtX3Byb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJM
ID0gdXJsOyB9CiAKLSAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NUZXh0SW5wdXRGcm9tRWRpdGluZygpIGNvbnN0OwogICAg
IGJvb2wgaXNSZWxvYWRpbmdGcm9tT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkVHlwZSA9
PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTI0ZmRlZDIyMjVmMWMxOTE4ZjQ1NDAxNzU2
NjcxN2UyMDQ4NGVhYi4uMGRjYjQ3NTU2ZDA0ODc0ODc4NjU2ZTQ1OWM5YmFjOWFmNjRkY2ZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBQ
cm9ncmVzc1RyYWNrZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBQUk9H
UkVTU19UUkFDS0VSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBQcm9ncmVzc1RyYWNrZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFtZSkKICAgICB9CiAgICAgbV9udW1Qcm9ncmVz
c1RyYWNrZWRGcmFtZXMrKzsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInByb2dyZXNz
U3RhcnRlZDogZnJhbWUgJXAsIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRp
bmcgZnJhbWUgJXAsIGlzTWFpbkxvYWQgJWQiLCAmZnJhbWUsIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9u
dW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgp
LCBtX2lzTWFpbkxvYWQpOworICAgIFBST0dSRVNTX1RSQUNLRVJfUkVMRUFTRV9MT0coInByb2dy
ZXNzU3RhcnRlZDogZnJhbWUgJXAsIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2lu
YXRpbmcgZnJhbWUgJXAsIGlzTWFpbkxvYWQgJWQiLCAmZnJhbWUsIG1fcHJvZ3Jlc3NWYWx1ZSwg
bV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdl
dCgpLCBtX2lzTWFpbkxvYWQpOwogCiAgICAgbV9jbGllbnQtPmRpZENoYW5nZUVzdGltYXRlZFBy
b2dyZXNzKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2Fk
aW5nKGZyYW1lKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJv
Z3Jlc3NTdGFydGVkKEZyYW1lJiBmcmFtZSkKIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVz
c0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgTE9HKFByb2dyZXNzLCAiUHJvZ3Jlc3Mg
Y29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFt
ZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgJmZyYW1lLCBmcmFtZS50cmVlKCku
dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9u
dW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcm9ncmVzc0NvbXBsZXRlZDogZnJhbWUg
JXAsIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAsIGlz
TWFpbkxvYWQgJWQiLCAmZnJhbWUsIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNr
ZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpLCBtX2lzTWFpbkxvYWQp
OworICAgIFBST0dSRVNTX1RSQUNLRVJfUkVMRUFTRV9MT0coInByb2dyZXNzQ29tcGxldGVkOiBm
cmFtZSAlcCwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAl
cCwgaXNNYWluTG9hZCAlZCIsICZmcmFtZSwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNz
VHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNNYWlu
TG9hZCk7CiAKICAgICBpZiAobV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMgPD0gMCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpwcm9n
cmVzc0NvbXBsZXRlZChGcmFtZSYgZnJhbWUpCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6ZmluYWxQ
cm9ncmVzc0NvbXBsZXRlKCkKIHsKICAgICBMT0coUHJvZ3Jlc3MsICJGaW5hbCBwcm9ncmVzcyBj
b21wbGV0ZSAoJXApIiwgdGhpcyk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZmluYWxQ
cm9ncmVzc0NvbXBsZXRlOiB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5n
IGZyYW1lICVwLCBpc01haW5Mb2FkICVkLCBpc01haW5Mb2FkUHJvZ3Jlc3NpbmcgJWQiLCBtX3By
b2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJv
Z3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkLCBpc01haW5Mb2FkUHJvZ3Jlc3NpbmcoKSk7
CisgICAgUFJPR1JFU1NfVFJBQ0tFUl9SRUxFQVNFX0xPRygiZmluYWxQcm9ncmVzc0NvbXBsZXRl
OiB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01h
aW5Mb2FkICVkLCBpc01haW5Mb2FkUHJvZ3Jlc3NpbmcgJWQiLCBtX3Byb2dyZXNzVmFsdWUsIG1f
bnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQo
KSwgbV9pc01haW5Mb2FkLCBpc01haW5Mb2FkUHJvZ3Jlc3NpbmcoKSk7CiAKICAgICBhdXRvIGZy
YW1lID0gV1RGTW92ZShtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSk7CiAKQEAgLTMxNSwxMiAr
MzE1LDQgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJl
ZCgpCiAgICAgICAgIG1fcHJvZ3Jlc3NIZWFydGJlYXRUaW1lci5zdG9wKCk7CiB9CiAKLWJvb2wg
UHJvZ3Jlc3NUcmFja2VyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewotICAg
IGlmICghbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cm9ncmVzc1RyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
aAppbmRleCBhOTQwNGM2OGUxMmVjOTllNDBhMGQ2M2RkZTdlMTYzZTY1MDY4NWU4Li4zMTliMGNj
ODFiOTk0NjFkOGQ1ZThmNTE5MjVmNGVhNzA0YzA1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5oCkBAIC02OSw3ICs2OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
aW5hbFByb2dyZXNzQ29tcGxldGUoKTsKIAogICAgIHZvaWQgcHJvZ3Jlc3NIZWFydGJlYXRUaW1l
ckZpcmVkKCk7Ci0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIAog
ICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNfdW5pcXVlSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmIzMzY2MzI3MmQ0MWJmMTQ2ZGE1
ZTUwYTRhN2EzMDRiODMyMzE3My4uODdlNDE0OGYyNzkyNzUxNTg1NzNiMjNjYTNmYzE4NjllMGQ4
MjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NCwx
MCArNjQsMTAgQEAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyLmgiCiAjZW5kaWYKIAotI3Vu
ZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRwogI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNk
ZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllcigpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBSZXNv
dXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRlcigp
LCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJ
RD0lbHVdIFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIGZy
YW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMjYsOSArMTI2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChS
ZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKIHsK
ICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIgfHwgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkp
IHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGRvY3Vt
ZW50IGxvYWRlci4iKTsKKyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJp
bml0OiBDYW5jZWxsaW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gZG9jdW1lbnQgbG9hZGVyLiIpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJpbml0OiBD
YW5jZWxsaW5nIGJlY2F1c2UgdGhlIGRvY3VtZW50IGxvYWRlciBoYXMgbm8gZnJhbWUuIik7Cisg
ICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBi
ZWNhdXNlIHRoZSBkb2N1bWVudCBsb2FkZXIgaGFzIG5vIGZyYW1lLiIpOwogICAgICAgICBjYW5j
ZWwoKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9CkBA
IC0xNDMsMTQgKzE0MywxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVx
dWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIG1fZGVmZXJz
TG9hZGluZyA9IG1fb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQ
b2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAmJiBtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRp
bmcoKTsKIAogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBTZWN1cml0eUNoZWNr
UG9saWN5OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkuY2FuRGlzcGxheShjbGllbnRSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVzZSBpdCB2aW9s
YXRlcyBzZWN1cml0eSBwb2xpY3kuIik7CisgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVzZSBpdCB2aW9sYXRlcyBzZWN1cml0eSBw
b2xpY3kuIik7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9m
cmFtZS5nZXQoKSwgY2xpZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlbGVh
c2VSZXNvdXJjZXMoKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
ICAgICB9CiAKICAgICBpZiAoIXBvcnRBbGxvd2VkKGNsaWVudFJlcXVlc3QudXJsKCkpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImluaXQ6IENhbmNlbGxpbmcgbG9hZCB0byBh
IGJsb2NrZWQgcG9ydC4iKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImlu
aXQ6IENhbmNlbGxpbmcgbG9hZCB0byBhIGJsb2NrZWQgcG9ydC4iKTsKICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydEJsb2NrZWRMb2FkRmFpbGVkKCptX2ZyYW1lLCBjbGllbnRSZXF1ZXN0LnVy
bCgpKTsKICAgICAgICAgcmVsZWFzZVJlc291cmNlcygpOwogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtMTcyLDEzICsxNzIsMTMgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2kKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBJZiB0aGlzIFJl
c291cmNlTG9hZGVyIHdhcyBzdG9wcGVkIGFzIGEgcmVzdWx0IG9mIHdpbGxTZW5kUmVxdWVzdCwg
YmFpbCBvdXQuCiAgICAgICAgIGlmIChtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVz
ZSBpdCB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QuIik7CisgICAg
ICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBsb2Fk
IGJlY2F1c2UgaXQgd2FzIHN0b3BwZWQgYXMgYSByZXN1bHQgb2Ygd2lsbFNlbmRSZXF1ZXN0LiIp
OwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAg
fQogI2VuZGlmCiAKICAgICAgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImluaXQ6IENhbmNlbGxpbmcgbG9hZCBiZWNhdXNlIHRo
ZSByZXF1ZXN0IGlzIG51bGwuIik7CisgICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiaW5pdDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgdGhlIHJlcXVlc3QgaXMgbnVsbC4i
KTsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKICAgICAgICAgfQpAQCAtMjg5LDEyICsyODksMTIgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgICAgICBpZiAodGhpcy0+cmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFkZWNvZGVSZXN1
bHQpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWREYXRhVVJMOiBk
ZWNvZGluZyBvZiBkYXRhIGZhaWxlZCIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImxvYWREYXRhVVJMOiBkZWNvZGluZyBvZiBkYXRhIGZhaWxlZCIpOwogICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAodGhpcy0+d2FzQ2FuY2VsbGVk
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWREYXRhVVJMOiBM
b2FkIHdhcyBjYW5jZWxsZWQiKTsKKyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJsb2FkRGF0YVVSTDogTG9hZCB3YXMgY2FuY2VsbGVkIik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFJlCiAgICAgICAgICAgICBib29sIGJsb2NrZWRMb2FkID0gcmVzdWx0cy5zdW1tYXJ5LmJsb2Nr
ZWRMb2FkOwogICAgICAgICAgICAgQ29udGVudEV4dGVuc2lvbnM6OmFwcGx5UmVzdWx0c1RvUmVx
dWVzdChXVEZNb3ZlKHJlc3VsdHMpLCBwYWdlLCByZXF1ZXN0KTsKICAgICAgICAgICAgIGlmIChi
bG9ja2VkTG9hZCkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2Yg
Y29udGVudCBibG9ja2VyIik7CisgICAgICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJl
Y2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CiAgICAgICAgICAgICAgICAgZGlkRmFpbChibG9j
a2VkQnlDb250ZW50QmxvY2tlckVycm9yKCkpOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzM5NSw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAjZW5kaWYKIAogICAgIGlmIChyZXF1ZXN0LmlzTnVs
bCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdElu
dGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIp
OworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50
ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBlbXB0eSByZXF1ZXN0Iik7
CiAgICAgICAgIGRpZEZhaWwoY2Fubm90U2hvd1VSTEVycm9yKCkpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CkBAIC00MDgsNyArNDA4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgUmUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAv
LyBJZiB0aGlzIFJlc291cmNlTG9hZGVyIHdhcyBzdG9wcGVkIGFzIGEgcmVzdWx0IG9mIGFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0LCBiYWlsIG91dAogICAgICAgICBpZiAobV9yZWFj
aGVkVGVybWluYWxTdGF0ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgcmVhY2hlZCB0ZXJtaW5hbCBz
dGF0ZSBhZnRlciBjYWxsaW5nIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KCkiKTsK
KyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgbG9hZCByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIGFmdGVyIGNhbGxp
bmcgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoKSIpOwogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZQogCiAg
ICAgYm9vbCBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCk7CiAgICAgaWYg
KGlzUmVkaXJlY3QpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IFByb2Nlc3NpbmcgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0Iik7CisgICAg
ICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDog
UHJvY2Vzc2luZyBjcm9zcy1vcmlnaW4gcmVkaXJlY3QiKTsKICAgICAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCh0
aGlzLCByZXF1ZXN0LnVybCgpKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5kaWRMb2FkRnJvbVJlZ2lzdHJhYmxl
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpKTsKQEAgLTQ0MywxMyArNDQz
LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAKICAgICAgICAgaWYgKHJlZGlyZWN0VVJM
LnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSBkYXRhIFVSTCBkZWNv
ZGluZyBsb2NhbGx5LgotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWw6IFJlZGlyZWN0ZWQgdG8gYSBkYXRhIFVSTC4gUHJvY2Vzc2luZyBs
b2NhbGx5Iik7CisgICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWw6IFJlZGlyZWN0ZWQgdG8gYSBkYXRhIFVSTC4gUHJvY2Vzc2luZyBs
b2NhbGx5Iik7CiAgICAgICAgICAgICBmaW5pc2hOZXR3b3JrTG9hZCgpOwogICAgICAgICAgICAg
bG9hZERhdGFVUkwoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBjYWxsaW5nIGNvbXBsZXRpb24gaGFuZGxl
ciIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIApAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByLCBD
b21wbGV0aW9uSGFuCiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQtPnVzZWRMZWdhY3lUTFMoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkgewotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ1c2VkTGVnYWN5VExTOiIp
OworICAgICAgICAgICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygidXNlZExl
Z2FjeVRMUzoiKTsKICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y29uc29sZSgpLmFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3Ry
aW5nKCJMb2FkZWQgcmVzb3VyY2UgZnJvbSAiLCByLnVybCgpLmhvc3QoKSwgIiB1c2luZyBUTFMg
MS4wIG9yIDEuMSwgd2hpY2ggYXJlIGRlcHJlY2F0ZWQgcHJvdG9jb2xzIHRoYXQgd2lsbCBiZSBy
ZW1vdmVkLiBQbGVhc2UgdXNlIFRMUyAxLjIgb3IgbmV3ZXIgaW5zdGVhZC4iKSwgMCwgZG9jdW1l
bnQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0VXNl
ZExlZ2FjeVRMUyh0cnVlKTsKQEAgLTU3OCw3ICs1NzgsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aAogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6Iik7CisgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZEZpbmlzaExvYWRpbmc6Iik7CiAKICAgICBkaWRGaW5pc2hMb2FkaW5nT25lUGFy
dChuZXR3b3JrTG9hZE1ldHJpY3MpOwogCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ09uZVBhcnQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG8KICAgICAvLyBJZiBsb2FkIGhhcyBiZWVuIGNhbmNlbGxlZCBhZnRlciBmaW5p
c2hpbmcgKHdoaWNoIGNvdWxkIGhhcHBlbiB3aXRoIGEKICAgICAvLyBKYXZhU2NyaXB0IHRoYXQg
Y2hhbmdlcyB0aGUgd2luZG93IGxvY2F0aW9uKSwgZG8gbm90aGluZy4KICAgICBpZiAod2FzQ2Fu
Y2VsbGVkKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9h
ZGluZ09uZVBhcnQ6IExvYWQgd2FzIGNhbmNlbGxlZCBhZnRlciBmaW5pc2hpbmcuIik7CisgICAg
ICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nT25lUGFydDog
TG9hZCB3YXMgY2FuY2VsbGVkIGFmdGVyIGZpbmlzaGluZy4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwpAQCAtNjA4LDcgKzYw
OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0KGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmFpbDoiKTsKKyAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlk
RmFpbDoiKTsKIAogICAgIGlmICh3YXNDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NzExLDcgKzcxMSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEFzeW5j
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzCiB7CiAgICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBwcm90ZWN0ZWRIYW5kbGUoaGFuZGxlKTsKICAgICBpZiAoZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGly
ZWN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1
c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOworICAgICAg
ICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0QXN5bmM6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNzU2LDEzICs3NTYsMTMgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3YXNCbG9ja2VkOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CisgICAgUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBv
ZiBjb250ZW50IGJsb2NrZXIiKTsKICAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5j
ZWxlZCBiZWNhdXNlIG9mIGludmFsaWQgVVJMIik7CisgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBpbnZh
bGlkIFVSTCIpOwogICAgIGRpZEZhaWwoY2Fubm90U2hvd1VSTEVycm9yKCkpOwogfQogCkBAIC04
NjksMTMgKzg2OSw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzUXVpY2tMb29rUmVzb3VyY2Uo
KSBjb25zdAogfQogI2VuZGlmCiAKLWJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lTG9hZGVyKCkgJiYgZnJhbWVM
b2FkZXIoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRwogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9JRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0Nzg5NzU0ODE0NDdiMTZjYjlk
ZDQ4ZGQ0YjU3ZGJiZGM0MWRlYjUyLi43YTRhMGQ3ZDdmNDY0NTM2YzJjNjg4NWFmODM2OWRmMDY5
NzViYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTUxLDcg
KzE1MSw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgY29uc3QgRnJhbWUqIGZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmYxMzk5MzZlOTcx
MWM0MzA0NWVmZGMwN2M3NzQ0ODQyYWZkZWU0My4uYTI2MWVhZWY0ZjI0ZDE2ZjE5NDU0ZGE1YTBi
Zjk1M2U3ZmJiMjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC02NywxNiArNjcsMTYgQEAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyLmgi
CiAjZW5kaWYKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0cKKyN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUgogI2RlZmluZSBQ
QUdFX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlm
aWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVfSUQg
KChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigp
KSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FC
TEVECi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFVOVVNFRF9WQVJJ
QUJMRSh0aGlzKQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4u
KSBVTlVTRURfVkFSSUFCTEUodGhpcykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQorI2RlZmluZSBTVUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMp
CiAjZWxzZQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUmVzb3VyY2VMb2FkaW5nLCAiJXAg
LSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxvYWRlcj0l
cCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9J
RCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykK
LSNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGluZywg
IiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2Fk
ZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBB
R0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdT
X18pCisjZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gU3VicmVzb3Vy
Y2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwg
aWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2Fk
aW5nLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhp
cywgUEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZB
X0FSR1NfXykKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGIKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIGlmICghbV9kb2N1bWVudExvYWRlcikgewogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJpbml0OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgZG9jdW1l
bnQgbG9hZGVyIGlzIG51bGwiKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HX0VSUk9SKCJpbml0OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgZG9jdW1l
bnQgbG9hZGVyIGlzIG51bGwiKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0
ZSgpKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgIFJl
ZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW5l
d1JlcXVlc3QudXJsKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1
c2UgbmV3IHJlcXVlc3QgaXMgaW52YWxpZCIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2Vs
ZWQgYmVjYXVzZSBuZXcgcmVxdWVzdCBpcyBpbnZhbGlkIik7CiAgICAgICAgIGNhbmNlbChjYW5u
b3RTaG93VVJMRXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG5ld1JlcXVlc3QpKTsKICAgICB9CkBAIC0yMDQsMjAgKzIwNCwyMCBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjbwogICAgIGF1dG8gY29udGludWVXaWxsU2VuZFJlcXVlc3QgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZWRpcmVjdFJlc3BvbnNlXSAoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIs
IFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpIG11dGFibGUgewogICAgICAgICBpZiAobmV3
UmVxdWVzdC5pc051bGwoKSB8fCByZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAg
ICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxl
ZCBiZWNhdXNlIG5ldyByZXF1ZXN0IGlzIE5VTEwgKDEpIik7CisgICAgICAgICAgICAgICAgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgbmV3IHJlcXVlc3QgaXMgTlVMTCAoMSkiKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHJl
YWNoZWQgdGVybWluYWwgc3RhdGUiKTsKKyAgICAgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2Fu
Y2VsZWQgYmVjYXVzZSByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoV1RGTW92ZShu
ZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCByZWRpcmVjdFJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVy
bmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlOyBjYWxsaW5nIGNvbXBsZXRpb24gaGFuZGxlciIp
OworICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2Vu
ZFJlcXVlc3RJbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZTsgY2FsbGluZyBjb21wbGV0
aW9uIGhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChyZXF1
ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBy
ZXF1ZXN0IGlzIE5VTEwgKDIpIik7CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNl
bGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgyKSIpOwogICAgICAgICAgICAgICAgIGNhbmNl
bCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKICAgICAgICAgICAgIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBjbwogICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgp
KQogICAgICAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNv
dXJjZUxvYWRBZnRlclJlZGlyZWN0KHJlcXVlc3QpOwogCi0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBmaW5p
c2hlZDsgY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICAgICAgICAgIFNVQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2Ug
bG9hZCBmaW5pc2hlZDsgY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICB9
OwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgICAg
ICAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKCkpOwogCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3QgYWxs
b3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdCIpOworICAgICAgICAgICAgICAgIFNVQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9h
ZCBjYW5jZWxlZCBiZWNhdXNlIG5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIHJlZGlyZWN0Iik7CiAK
ICAgICAgICAgICAgICAgICBjYW5jZWwoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKQEAgLTI1MCwxNyArMjUwLDE3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291
cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgICAgICBvcGFxdWVSZWRpcmVjdGVk
UmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZXJl
ZGlyZWN0KTsKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnJlc3BvbnNlUmVjZWl2ZWQob3BhcXVl
UmVkaXJlY3RlZFJlc3BvbnNlKTsKICAgICAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKKyAgICAgICAgICAgICAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6
IHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBy
ZXNvdXJjZSBsb2FkIGNvbXBsZXRlZCIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNvbXBs
ZXRlZCIpOwogCiAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwog
ICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZyhlbXB0eU1ldHJpY3MpOwogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9
IGVsc2UgaWYgKG1fcmVkaXJlY3RDb3VudCsrID49IG9wdGlvbnMoKS5tYXhSZWRpcmVjdENvdW50
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0
cyIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5k
UmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgdG9vIG1hbnkg
cmVkaXJlY3RzIik7CiAgICAgICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwg
MCwgcmVxdWVzdCgpLnVybCgpLCAiVG9vIG1hbnkgcmVkaXJlY3Rpb25zIl9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KQEAgLTI3NywxMyArMjc3LDEzIEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fZG9j
dW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkudXBkYXRlUmVxdWVzdEFmdGVyUmVk
aXJlY3Rpb24obV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LCBvcHRpb25zKCkpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIENhY2hlZFJlc291cmNlTG9hZGVyOjp1
cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAocmVhbGx5IENhY2hlZFJlc291cmNlTG9hZGVy
OjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbikgc2FpZCBubyIpOworICAgICAgICAgICAgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZVJl
cXVlc3RBZnRlclJlZGlyZWN0aW9uIChyZWFsbHkgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJl
cXVlc3RBZnRlclJlZGlyZWN0aW9uKSBzYWlkIG5vIik7CiAgICAgICAgICAgICBjYW5jZWwoKTsK
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3Qp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcG9ydEFsbG93ZWQobmV3UmVxdWVzdC51cmwo
KSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVz
dEludGVybmFsOiByZXNvdXJjZSBsb2FkIChyZWRpcmVjdCkgY2FuY2VsZWQgYmVjYXVzZSBpdCBh
dHRlbXB0ZWQgdG8gdXNlIGEgYmxvY2tlZCBwb3J0Iik7CisgICAgICAgICAgICBTVUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxv
YWQgKHJlZGlyZWN0KSBjYW5jZWxlZCBiZWNhdXNlIGl0IGF0dGVtcHRlZCB0byB1c2UgYSBibG9j
a2VkIHBvcnQiKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lKQogICAgICAgICAgICAgICAgIEZy
YW1lTG9hZGVyOjpyZXBvcnRCbG9ja2VkTG9hZEZhaWxlZCgqbV9mcmFtZSwgbmV3UmVxdWVzdC51
cmwoKSk7CiAgICAgICAgICAgICBjYW5jZWwoZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEVycm9yKG5l
d1JlcXVlc3QpKTsKQEAgLTI5NSwxOCArMjk1LDE4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNv
CiAgICAgICAgICAgICBhdXRvIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIkNyb3NzLW9yaWdp
biByZWRpcmVjdGlvbiB0byAiLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiIGRlbmllZCBi
eSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6ICIsIGFjY2Vzc0NvbnRyb2xD
aGVja1Jlc3VsdC5lcnJvcigpKTsKICAgICAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUt
PmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yTWVzc2FnZSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGNyb3Nz
cy1vcmlnaW4gcmVkaXJlY3Rpb24gZGVuaWVkIGJ5IENPUlMgcG9saWN5Iik7CisgICAgICAgICAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6
IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9u
IGRlbmllZCBieSBDT1JTIHBvbGljeSIpOwogICAgICAgICAgICAgY2FuY2VsKFJlc291cmNlRXJy
b3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51cmwoKSwgZXJyb3JNZXNzYWdlLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9yZXNvdXJjZS0+aXNJbWFnZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNl
TG9hZGVyKCkuc2hvdWxkRGVmZXJJbWFnZUxvYWQobmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBy
ZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgaXQncyBhbiBpbWFnZSB0aGF0IHNob3VsZCBi
ZSBkZWZlcmVkIik7CisgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBp
dCdzIGFuIGltYWdlIHRoYXQgc2hvdWxkIGJlIGRlZmVyZWQiKTsKICAgICAgICAgICAgIGNhbmNl
bCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcmVzb3VyY2UtPnJlZGlyZWN0UmVjZWl2ZWQo
V1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdCA9IFdURk1vdmUoY29u
dGludWVXaWxsU2VuZFJlcXVlc3QpXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgZG9uZSBub3RpZnlpbmcgY2xpZW50cyIpOworICAgICAgICAgICAg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBy
ZXNvdXJjZSBkb25lIG5vdGlmeWluZyBjbGllbnRzIik7CiAgICAgICAgICAgICBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShyZXF1ZXN0
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBDb20KICAgICBpZiAocmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyICYmIHJlc3BvbnNlLnVybCgpICE9IHJl
cXVlc3QoKS51cmwoKSkgewogICAgICAgICBhdXRvJiBsb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVy
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgICAgICBpZiAoIWxvYWRlci5hbGxvd2VkQnlD
b250ZW50U2VjdXJpdHlQb2xpY3kobV9yZXNvdXJjZS0+dHlwZSgpLCByZXNwb25zZS51cmwoKSwg
b3B0aW9ucygpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZl
ZDo6WWVzKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIG5vdCBhbGxvd2VkIGJ5IGNvbnRlbnQg
cG9saWN5Iik7CisgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlk
UmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIG5vdCBhbGxvd2VkIGJ5IGNv
bnRlbnQgcG9saWN5Iik7CiAgICAgICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcih7IH0sIDAs
IHJlc3BvbnNlLnVybCgpLCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tCiAjZW5kaWYKIAogICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVS
YW5nZVJlcXVlc3RlZEZsYWcocmVxdWVzdCgpLCByZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNh
dXNlIHJlY2VpdmluZyBhIHJhbmdlIHJlcXVlc3RlZCByZXNwb25zZSBmb3IgYSBub24tcmFuZ2Ug
cmVxdWVzdCIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIHJlY2VpdmluZyBhIHJhbmdlIHJl
cXVlc3RlZCByZXNwb25zZSBmb3IgYSBub24tcmFuZ2UgcmVxdWVzdCIpOwogICAgICAgICBjYW5j
ZWwoV1RGTW92ZSgqZXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzMiw3ICs0
MzIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogICAgIGlmICghYWNjZXNzQ29udHJvbENo
ZWNrUmVzdWx0KSB7CiAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgYWNjZXNzQ29udHJvbENo
ZWNrUmVzdWx0LmVycm9yKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRS
ZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFj
Y2VzcyBjb250cm9sIik7CisgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2lu
IGFjY2VzcyBjb250cm9sIik7CiAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygp
LCAwLCByZXF1ZXN0KCkudXJsKCksIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5lcnJvcigpLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KICAgICAgICAg
ICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBDYWNoZWRSZXNvdXJjZUxvYWRl
cidzIHJlcXVlc3QgY291bnQKICAgICAgICAgICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmICghbV9yZXNvdXJjZS0+aXNJbWFnZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIHNvbWV0aGluZyBhYm91dCBhIG11bHRpLXBhcnQgbm9u
LWltYWdlIik7CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBzb21ldGhpbmcgYWJv
dXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOwogICAgICAgICAgICAgICAgIGNhbmNlbCgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTcwNiw3ICs3MDYsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp1cGRhdGVSZWZlcnJlclBvbGljeShjb25zdCBTdHJp
bmcmIHJlZmVycmVyUG9saWN5VmFsdWUpCiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzoiKTsKKyAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzoiKTsKIAog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZp
ZXdMb2FkZXIuZ2V0KCkpIHsKQEAgLTc0Niw3ICs3NDYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZQogICAgIG1fcmVzb3VyY2UtPmZpbmlzaExvYWRpbmcocmVzb3VyY2VEYXRhKCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CiAKICAgICBpZiAod2FzQ2FuY2VsbGVkKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNlbGVkIik7Cisg
ICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiB3
YXMgY2FuY2VsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzU2LDE2ICs3NTYs
MTYgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICBub3RpZnlEb25lKExvYWRDb21wbGV0
aW9uVHlwZTo6RmluaXNoKTsKIAogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IHJlYWNoZWQg
dGVybWluYWwgc3RhdGUiKTsKKyAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZEZpbmlzaExvYWRpbmc6IHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5n
OiBEaWQgbm90IHJlYWNoIHRlcm1pbmFsIHN0YXRlIik7CisgICAgU1VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6IERpZCBub3QgcmVhY2ggdGVybWluYWwgc3Rh
dGUiKTsKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiB9CiAKIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkRmFpbDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8
aW50PihlcnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgU1VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImRpZEZhaWw6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19j
YXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5n
ZXQoKSkKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxDYW5jZWw6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0
PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFNVQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsQ2FuY2VsOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0
aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gU2luY2Ugd2UgZGVmZXIgaW5pdGlhbGl6YXRpb24g
dG8gc2NoZWR1bGluZyB0aW1lIG9uIGlPUyBidXQKQEAgLTg1OSwxNCArODU5LDE0IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlIHR5cGUpCiAg
ICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUodHlwZSwgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0
aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJu
b3RpZnlEb25lOiBkb2N1bWVudCBsb2FkZXIgaXMgbnVsbC4gQ291bGQgbm90IGNhbGwgbG9hZERv
bmUoKSIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUigibm90
aWZ5RG9uZTogZG9jdW1lbnQgbG9hZGVyIGlzIG51bGwuIENvdWxkIG5vdCBjYWxsIGxvYWREb25l
KCkiKTsKIAogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJl
bW92ZVN1YnJlc291cmNlTG9hZGVyKHR5cGUsIHRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibm90aWZ5RG9uZTogZG9jdW1lbnQgbG9hZGVyIGlz
IG51bGwuIENvdWxkIG5vdCBjYWxsIHJlbW92ZVN1YnJlc291cmNlTG9hZGVyKCkiKTsKKyAgICAg
ICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeURvbmU6IGRvY3Vt
ZW50IGxvYWRlciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCByZW1vdmVTdWJyZXNvdXJjZUxvYWRl
cigpIik7CiB9CiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQpA
QCAtOTE3LDUgKzkxNyw1IEBAIGNvbnN0IEhUVFBIZWFkZXJNYXAqIFN1YnJlc291cmNlTG9hZGVy
OjpvcmlnaW5hbEhlYWRlcnMoKSBjb25zdAogCiAjdW5kZWYgUEFHRV9JRAogI3VuZGVmIEZSQU1F
X0lECi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRworI3Vu
ZGVmIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4NGEwZmUxZTMzOTliZWM1
NjIzMTIyNjI5ODU4OTYxYzZlN2RjYmU0Li5iZWY5ZTdkYzViMTZlODUwMTY1MGRkZWU2ZWQwYmQy
ZjhjMWJhNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTYzLDEzICs2MywxMSBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2Vu
ZGlmCiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0df
QUxXQVlTCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0cKICNkZWZpbmUgUEFHRV9J
RChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRSZXNvdXJjZUxvYWRlci5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2U6OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VE
X1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRSZXNvdXJj
ZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gW3BhZ2VJ
RD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10
LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVfSUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQot
I2RlZmluZSBSRUxFQVNFX0xPR19BTFdBWVMoZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdv
cmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRShmbXQsIGZyYW1lLCAu
Li4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFt
ZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNzQsNyArMTcyLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJlZm9yZVN0
YXJ0aW5nKCkKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJsb2FkOiBObyBhc3Nv
Y2lhdGVkIGZyYW1lIik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HKCJsb2Fk
OiBObyBhc3NvY2lhdGVkIGZyYW1lIik7CiAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkyLDExICsxOTAsMTEgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIp
CiAgICAgICAgICAgICAvLyBCZWFjb25zIGFyZSBhbGxvd2VkIHRvIGdvIHRocm91Z2ggaW4gJ3Bh
Z2VoaWRlJyBldmVudCBoYW5kbGVycy4KICAgICAgICAgICAgIGlmIChtX29wdGlvbnMua2VlcEFs
aXZlIHx8IHNob3VsZFVzZVBpbmdMb2FkKHR5cGUoKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoImxvYWQ6IEFi
b3V0IHRvIGVudGVyIGJhY2svZm9yd2FyZCBjYWNoZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIENB
Q0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEFib3V0IHRvIGVudGVy
IGJhY2svZm9yd2FyZCBjYWNoZSIsIGZyYW1lKTsKICAgICAgICAgICAgIGZhaWxCZWZvcmVTdGFy
dGluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERvY3VtZW50OjpJbkJh
Y2tGb3J3YXJkQ2FjaGU6Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhf
RlJBTUUoImxvYWQ6IEFscmVhZHkgaW4gYmFjay9mb3J3YXJkIGNhY2hlIiwgZnJhbWUpOworICAg
ICAgICAgICAgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgibG9hZDogQWxy
ZWFkeSBpbiBiYWNrL2ZvcndhcmQgY2FjaGUiLCBmcmFtZSk7CiAgICAgICAgICAgICBmYWlsQmVm
b3JlU3RhcnRpbmcoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjA2LDEx
ICsyMDQsMTEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgaWYgKG1fb3B0aW9ucy5zZWN1cml0eUNoZWNr
ID09IFNlY3VyaXR5Q2hlY2tQb2xpY3k6OkRvU2VjdXJpdHlDaGVjayAmJiAhbV9vcHRpb25zLmtl
ZXBBbGl2ZSAmJiAhc2hvdWxkVXNlUGluZ0xvYWQodHlwZSgpKSkgewogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewogICAgICAgICAgICAgaWYgKGZyYW1lTG9hZGVyLnN0YXRlKCkgPT0gRnJhbWVTdGF0
ZTo6UHJvdmlzaW9uYWwpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9X
SVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gc3RhdGUgaXMgcHJvdmlz
aW9uYWwiLCBmcmFtZSk7CisgICAgICAgICAgICAgICAgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRSgibG9hZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRlIGlzIHBy
b3Zpc2lvbmFsIiwgZnJhbWUpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lTG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gbm90IGFjdGl2
ZSBkb2N1bWVudCIsIGZyYW1lKTsKKyAgICAgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gbm90IGFj
dGl2ZSBkb2N1bWVudCIsIGZyYW1lKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGZyYW1lTG9hZGVy
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmcoKSkKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoImxvYWQ6IEZhaWxlZCBzZWN1cml0eSBj
aGVjayAtLSBhY3RpdmUgbG9hZGVyIGlzIHN0b3BwaW5nIiwgZnJhbWUpOworICAgICAgICAgICAg
ICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEZhaWxlZCBz
ZWN1cml0eSBjaGVjayAtLSBhY3RpdmUgbG9hZGVyIGlzIHN0b3BwaW5nIiwgZnJhbWUpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZmFpbEJl
Zm9yZVN0YXJ0aW5nKCk7CkBAIC0yODYsMTAgKzI4NCwxMCBAQCB2b2lkIENhY2hlZFJlc291cmNl
Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5sb2FkUmVzb3VyY2UoZnJhbWUsICp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBtX29w
dGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+KHRoaXMpLCBmcmFtZVJlZiA9IG1ha2VSZWYoZnJhbWUpLCBsb2dnaW5nQWxsb3dl
ZCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpXSAoUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiYmIGxvYWRlcikgeworICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2UoZnJhbWUsICp0aGlzLCBXVEZNb3Zl
KHJlcXVlc3QpLCBtX29wdGlvbnMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KHRoaXMpLCBmcmFtZVJlZiA9IG1ha2VSZWYoZnJhbWUp
XSAoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmIGxvYWRlcikgewogICAgICAgICBtX2xvYWRl
ciA9IFdURk1vdmUobG9hZGVyKTsKICAgICAgICAgaWYgKCFtX2xvYWRlcikgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUYobG9nZ2luZ0FsbG93ZWQsIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlOjpsb2FkOiBV
bmFibGUgdG8gY3JlYXRlIFN1YnJlc291cmNlTG9hZGVyIiwgdGhpcywgUEFHRV9JRChmcmFtZVJl
Zi5nZXQoKSksIEZSQU1FX0lEKGZyYW1lUmVmLmdldCgpKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2
NCAiXSBDYWNoZWRSZXNvdXJjZTo6bG9hZDogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNvdXJjZUxv
YWRlciIsIHRoaXMsIFBBR0VfSUQoZnJhbWVSZWYuZ2V0KCkpLCBGUkFNRV9JRChmcmFtZVJlZi5n
ZXQoKSkpOwogICAgICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQ0OCw3ICs0NDYsNyBAQCBTZWNvbmRzIENhY2hlZFJlc291
cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkg
Y29ucwogCiB2b2lkIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBSRUxFQVNFX0xPR19BTFdBWVMoInJlZGlyZWN0UmVjZWl2ZWQ6Iik7CisgICAgQ0FD
SEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0coInJlZGlyZWN0UmVjZWl2ZWQ6Iik7CiAKICAgICBtX3Jl
cXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOwogICAgIGlmICghcmVzcG9uc2UuaXNO
dWxsKCkpCkBAIC05NDMsNiArOTQxLDUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6cHJldmlld1Jl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICN1bmRl
ZiBQQUdFX0lECiAjdW5kZWYgRlJBTUVfSUQKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VE
Ci0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FCi0jdW5kZWYgUkVMRUFT
RV9MT0dfQUxXQVlTCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0cKKyN1bmRlZiBD
QUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPR19XSVRIX0ZSQU1FCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0MDNkNWEw
YWU0MjEwOGM5NDg1NjM4NDgxMzM0NTc4MTE0NDgyNDI4Li42MjA1MjFlM2ZlNmEyN2I3YzE2ZmU1
Zjc1MGQ3Y2U2M2I2YjcwMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk0LDExICs5NCwxMSBAQAogI2luY2x1
ZGUgIkRldmljZS5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisj
dW5kZWYgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICNkZWZpbmUgUEFHRV9JRChm
cmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0
KCkpCiAjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
TmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoZm10LCBm
cmFtZSwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0
d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVfSUQo
ZnJhbWUpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDQUNIRURSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPR19XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFT
RV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIl0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwg
RlJBTUVfSUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0
QWZ0ZXJSZWRpcmVjdGlvbihDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLAogICAgIGlmIChkb2N1
bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkg
ewogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lKCksIHVy
bC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAgICAgICAgIExPRyhSZXNvdXJj
ZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b24gVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlv
bjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwor
ICAgICAgICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiY2FuUmVxdWVzdEFmdGVy
UmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgU2VjdXJpdHlPcmlnaW46OmNhbkRp
c3BsYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjA1LDIwICs2MDUs
MjAgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b24oQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICAvLyBCdXQgd2UgY3VycmVudGx5IGFs
bG93IGF0IGxlYXN0IGRhdGEgVVJMcyB0byBiZSBsb2FkZWQuCiAKICAgICBpZiAob3B0aW9ucy5t
b2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbiAmJiAhbV9kb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5v
dCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0Iik7CiAgICAgICAgIHByaW50
QWNjZXNzRGVuaWVkTWVzc2FnZSh1cmwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFhbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kodHlwZSwgdXJsLCBvcHRp
b25zLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVz
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRp
cmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOworICAgICAg
ICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiY2FuUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgY29udGVudCBwb2xpY3kiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIExhc3Qgb2YgYWxsLCBjaGVjayBmb3IgaW5z
ZWN1cmUgY29udGVudC4gV2UgZG8gdGhpcyBsYXN0IHNvIHRoYXQgd2hlbiBmb2xrcyBibG9jayBp
bnNlY3VyZSBjb250ZW50IHdpdGggYSBDU1AgcG9saWN5LCB0aGV5IGRvbid0IGdldCBhIHdhcm5p
bmcuCiAgICAgLy8gVGhleSdsbCBzdGlsbCBnZXQgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGFi
b3V0IENTUCBibG9ja2luZyB0aGUgbG9hZC4KICAgICBpZiAoIWNoZWNrSW5zZWN1cmVDb250ZW50
KHR5cGUsIHVybCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVz
dEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVjYXVzZSBjb250ZW50IGlz
IGluc2VjdXJlIik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJj
YW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBiZWNhdXNlIGNv
bnRlbnQgaXMgaW5zZWN1cmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
ODU2LDEzICs4NTYsMTMgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKIHsKICAgICBVUkwgdXJs
ID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICBpZiAoIWZyYW1lKCkgfHwg
IWZyYW1lKCktPnBhZ2UoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXF1
ZXN0UmVzb3VyY2U6IGZhaWxlZCBiZWNhdXNlIG5vIGZyYW1lIG9yIHBhZ2UiKTsKKyAgICAgICAg
Q0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInJlcXVlc3RSZXNvdXJjZTogZmFpbGVk
IGJlY2F1c2Ugbm8gZnJhbWUgb3IgcGFnZSIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIklu
dmFsaWQgbG9hZGVyIHN0YXRlIl9zIH0pOwogICAgIH0KIAogICAgIGF1dG8mIGZyYW1lID0gKnRo
aXMtPmZyYW1lKCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgicmVxdWVzdFJlc291cmNlOiBVUkwgaXMgaW52YWxp
ZCIsIGZyYW1lKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfV0lU
SF9GUkFNRSgicmVxdWVzdFJlc291cmNlOiBVUkwgaXMgaW52YWxpZCIsIGZyYW1lKTsKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCB1cmwsICJVUkwgaXMgaW52YWxpZCJfcyB9KTsKICAgICB9CiAKQEAgLTg5
MywxNCArODkzLDE0IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAKICAgICAvLyBXZSBhcmUg
cGFzc2luZyB1cmwgYXMgd2VsbCBhcyByZXF1ZXN0LCBhcyByZXF1ZXN0IHVybCBtYXkgY29udGFp
biBhIGZyYWdtZW50IGlkZW50aWZpZXIuCiAgICAgaWYgKCFjYW5SZXF1ZXN0KHR5cGUsIHVybCwg
cmVxdWVzdC5vcHRpb25zKCksIGZvclByZWxvYWQpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRURfV0lUSF9GUkFNRSgicmVxdWVzdFJlc291cmNlOiBOb3QgYWxsb3dlZCB0byByZXF1
ZXN0IHJlc291cmNlIiwgZnJhbWUpOworICAgICAgICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJyZXF1ZXN0UmVzb3VyY2U6IE5vdCBhbGxvd2VkIHRvIHJlcXVl
c3QgcmVzb3VyY2UiLCBmcmFtZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiTm90IGFsbG93
ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29u
dHJvbCB9KTsKICAgICB9CiAKICAgICBpZiAoIXBvcnRBbGxvd2VkKHVybCkpIHsKICAgICAgICAg
aWYgKGZvclByZWxvYWQgPT0gRm9yUHJlbG9hZDo6Tm8pCiAgICAgICAgICAgICBGcmFtZUxvYWRl
cjo6cmVwb3J0QmxvY2tlZExvYWRGYWlsZWQoZnJhbWUsIHVybCk7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
ZXNvdXJjZSBVUkwgaGFzIGEgYmxvY2tlZCBwb3J0IiwgZnJhbWUpOworICAgICAgICBDQUNIRURS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19XSVRIX0ZSQU1FKCJDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlIFVSTCBoYXMgYSBibG9ja2VkIHBvcnQiLCBmcmFtZSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChmcmFtZS5sb2FkZXIoKS5ibG9ja2VkRXJyb3IocmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOwogICAgIH0KIApAQCAtOTE5LDcgKzkxOSw3IEBAIFJl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgICAgIGJvb2wgbWFkZUhUVFBTID0gcmVzdWx0cy5z
dW1tYXJ5Lm1hZGVIVFRQUzsKICAgICAgICAgcmVxdWVzdC5hcHBseVJlc3VsdHMoV1RGTW92ZShy
ZXN1bHRzKSwgJnBhZ2UpOwogICAgICAgICBpZiAoYmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgicmVxdWVzdFJlc291cmNlOiBSZXNv
dXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIsIGZyYW1lKTsKKyAgICAgICAgICAgIENB
Q0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJj
ZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiLCBmcmFtZSk7CiAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIFdURk1v
dmUocmVxdWVzdCksIHBhZ2Uuc2Vzc2lvbklEKCksICZwYWdlLmNvb2tpZUphcigpLCBwYWdlLnNl
dHRpbmdzKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CkBAIC0xNjE0LDE0
ICsxNjE0LDkgQEAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygKICAgICByZXR1cm4gb3B0aW9uczsK
IH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlciA/IG1fZG9jdW1lbnRMb2Fk
ZXItPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogdHJ1ZTsKLX0KLQogfQogCiAjdW5kZWYg
UEFHRV9JRAogI3VuZGVmIEZSQU1FX0lECi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAot
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRQorI3VuZGVmIENBQ0hFRFJF
U09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0dfV0lUSF9GUkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCBlNDVjMDk1OTMxMWQ2NTZhZjI3MTMyMTk1MzA2
NmYzZTRiZDUzNGM5Li45NGUxODJkOWEwMTkxMGUxOTM5NmRhNTkyYjFkOTY4ODVkY2NiMzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtMTY0LDggKzE2NCw2IEBAIHB1YmxpYzoKIAogICAgIFJlc291cmNlVGltaW5nSW5m
b3JtYXRpb24mIHJlc291cmNlVGltaW5nSW5mb3JtYXRpb24oKSB7IHJldHVybiBtX3Jlc291cmNl
VGltaW5nSW5mbzsgfQogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25z
dDsKLQogICAgIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyJiBrZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
cigpIHsgcmV0dXJuIG1fa2VlcGFsaXZlUmVxdWVzdFRyYWNrZXI7IH0KIAogICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZSo+IHZpc2libGVSZXNvdXJjZXNUb1ByaW9yaXRpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggMWFmMjdkODRmMzVhZjBkM2JhMWZiOWRiYWZhMzFlNDNjNjY2MTMzMi4u
NjllYmI0NTRjYTUzNGM0ODg0YmE1MjllOTlkNGM3MzgyNDQ5ZDA0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQAogI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb25SZXN1bHRz
U3RvcmFnZS5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIEZyYW1lOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgRlJBTUVfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKGNoYW5uZWwsICIlcCAtIEZyYW1lOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02ODAsNyArNjgwLDcg
QEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IFVzZXJTY3JpcHQKICAgICBpZiAobG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExv
YWRpbmcsICJpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAgRlJBTUVfUkVM
RUFTRV9MT0dfRVJST1IoTG9hZGluZywgImluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTogSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGxvYWRlcigpLmNsaWVudCgpLm5vdGlmeVBhZ2VP
ZkFwcEJvdW5kQmVoYXZpb3IoKTsKQEAgLTEwNDQsMTEgKzEwNDQsNiBAQCB2b2lkIEZyYW1lOjpk
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgICAgICByb290LT5jb21wb3NpdG9y
KCkuZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiB9CiAKLWJvb2wgRnJhbWU6Omlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhZ2UoKSAmJiBw
YWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB2b2lkIEZyYW1lOjpkcm9w
Q2hpbGRyZW4oKQogewogICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKQEAgLTExNDYsNCArMTE0
MSw0IEBAIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZSYgRnJhbWU6OmRhdGFEZXRlY3Rpb25S
ZXN1bHRzKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jdW5kZWYgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRAorI3VuZGVmIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKaW5kZXggMzdiMWFmMjExZTM0MDk3NGUwYzUyN2JlZThiMTczYjY2NjhlZWUwYy4uZjA3
NDNlOTM5NzU3ZjY3MmE3Mjc2ZmFiZTNiNjU5NmUzMTc5YWUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApA
QCAtMzAzLDggKzMwMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCk7CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
c1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICB2b2lkIGRpZFByZXdhcm1Mb2NhbFN0
b3JhZ2UoKTsKICAgICBib29sIG1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGMxZDNkN2Y4YWE3YmExYzAyNGMzZTgzODIxYzQz
ZjE3ZDBlNTM4MDEuLjU4MTA4M2U2ZjM0YzYyMThjZTA1NGRhOTBlMmJmYmI0MjUyZTdjZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQAogCiAjZGVmaW5l
IFBBR0VfSUQgZnJhbWUoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJ
bnQ2NCgpCiAjZGVmaW5lIEZSQU1FX0lEIGZyYW1lKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1l
SWRlbnRpZmllcigpKS50b1VJbnQ2NCgpCi0jZGVmaW5lIEZSQU1FVklFV19SRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihmcmFtZSgpLnBhZ2Uo
KSAmJiBmcmFtZSgpLnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWws
ICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRd
IEZyYW1lVmlldzo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZSgpLmlzTWFp
bkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FVklFV19SRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihmcmFtZSgpLnBhZ2Uo
KSAmJiBmcmFtZSgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIG1haW49JWRdIEZyYW1lVmlldzo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBm
cmFtZSgpLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMTcxMjc1OWY2M2MyNmVkZjE0NTIxNzJhODkxYTNk
MmVhMDM0MGJiMC4uMmM2OTUxYzI0ZDdhZWE1ODczMjc2ZDFkYjI3ZTAxZDNhMzcxMTgyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0zMTM3LDExICszMTM3LDYgQEAgdm9pZCBQYWdlOjpzZXRSZXNv
dXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogfQogI2VuZGlmCiAKLWJvb2wg
UGFnZTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
ZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KIFN0cmluZyBQYWdlOjpj
YXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpCiB7CiAgICAgcmV0dXJuIG1fY2FwdGlv
blVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGJkMDM2YTJmZDVk
NzQwZjExYTIxNmY5NjhmZTdkNWQzYTAyM2RhOGIuLmQ2NzFlNzhhYWU5NjBhOTc2NzZiYTFiOTEy
MzNkZDgyZDc2YTg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03ODMsOCArNzgzLDYgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b250cm9sbGVkQnlBdXRvbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRDb250cm9sbGVkQnlBdXRvbWF0
aW9uKGJvb2wgY29udHJvbGxlZCkgeyBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24gPSBjb250cm9s
bGVkOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpIGNvbnN0OwotCiAgICAgU3RyaW5nIGNhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0
KCk7CiAgICAgdm9pZCBzZXRDYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1v
bml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCmlu
ZGV4IDBmYzZkNmRiZWY4MjRjODRlZDUzZmVmODY2ZDZmNmEyM2ExYjNkNzUuLjhlNDljMmZjY2Zj
YzRlMWI1OWFkZjUwNDA4NDNkNWQ1NGI0NDI3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5l
bCwgIiVwIC0gUGVyZm9ybWFuY2VNb25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYobV9wYWdlLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCAiJXAgLSBQZXJmb3JtYW5jZU1vbml0b3I6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQogCiBzdGF0aWMgY29uc3RleHByIGNvbnN0IFNlY29uZHMgY3B1VXNhZ2VNZWFzdXJlbWVu
dERlbGF5IHsgNV9zIH07CiBzdGF0aWMgY29uc3RleHByIGNvbnN0IFNlY29uZHMgcG9zdExvYWRD
UFVVc2FnZU1lYXN1cmVtZW50RHVyYXRpb24geyAxMF9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDg0
YzBiZWQzNmIyZmVjYTFmZTgwZWI2ZGYyYzMwZDAzMGVkMjE4Ni4uZWNkNDA1MmVhYzAzODAyODI1
NWE3ODYyMzZlMTk2OTg1M2FmYTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRD0lIiBQUkl1NjQgIl0gV2ViUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIl0gV2ViUmVzb3VyY2VMb2FkZXI6
OiIgZm10LCB0aGlzLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlELCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTAwLDIwICsxMDAsMjAgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVz
dCwgSVBDOjoKICAgICBwcm9wb3NlZFJlcXVlc3Quc2V0SFRUUEJvZHkocHJvcG9zZWRSZXF1ZXN0
Qm9keS50YWtlRGF0YSgpKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndpbGxTZW5kUmVxdWVzdDoiKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
Rygid2lsbFNlbmRSZXF1ZXN0OiIpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGly
ZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4
aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVk
IGZhbHNlIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2Vu
ZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGly
ZWN0IHJldHVybmVkIGZhbHNlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2Nv
cmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KV0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewogICAgICAgICBpZiAoIW1fY29yZUxvYWRl
ciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5v
IGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciIpOworICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5v
IGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBy
ZXR1cm5pbmcgQ29udGludWVXaWxsU2VuZFJlcXVlc3QiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0Iik7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Q29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgbV9jb3JlTG9hZGVyLT5pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpKSk7CiAgICAgfSk7CiB9CkBAIC0xMjYsMTIg
KzEyNiwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBi
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQpIiwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkKSIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2Nv
cmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUg
Y29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1
c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgICAg
ICAgICBpZiAobV9jb3JlTG9hZGVyICYmIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKQogICAg
ICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGlu
dWluZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOworICAgICAgICAgICAg
ICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5v
dCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAg
ICAgIH07CiAgICAgfQogCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBi
b28KICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9u
c2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgp
LCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21w
bGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Ig
bm8gSUQiKTsKKyAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNl
IG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yMDQsNyArMjA0LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICB9CiAKICAgICBpZiAoIW1fbnVtQnl0ZXNS
ZWNlaXZlZCkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6
IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAg
bV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZEJ5dGVzKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGlu
dDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJj
ZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2Fk
OiAobGVuZ3RoPSV6ZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFdFQlJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChsZW5ndGg9JXpkKSIsIG1f
bnVtQnl0ZXNSZWNlaXZlZCk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9s
bGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuZXR3b3JrTG9hZE1ldHJp
Y3NdKCkgbXV0YWJsZSB7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpCiB7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNl
cnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6Iik7CiAKICAgICBBU1NFUlQobV9jb3Jl
TG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9k
ZTo6T25seSk7CiAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IobV9jb3JlTG9hZGVyLT5y
ZXF1ZXN0KCkudXJsKCkpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291
cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2Fk
OiIpOworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGYWlsUmVzb3VyY2VM
b2FkOiIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3JdKCkgbXV0YWJsZSB7CkBAIC0yNzYs
NyArMjc2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJs
b2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlBy
b2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Iik7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2Vj
dXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2Fk
aW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICcl
cyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNv
bnRlbnRTZWN1cml0eVBvbGljeURlbmllZDoiKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBv
bGljeURlbmllZDoiKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Rv
cExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogfQpAQCAtMjkzLDEzICsyOTMs
MTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlv
bnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUp
CiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzb3VyY2U6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVSZXNvdXJjZToiKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJj
ZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1
ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAo
YXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChh
dXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGU6Ok5vKTsKQEAgLTMyMiwxMSArMzIyLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQK
IH0KICNlbmRpZgogCi1ib29sIFdlYlJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdAotewotICAgIHJldHVybiByZXNvdXJjZUxvYWRlcigpICYmIHJlc291cmNl
TG9hZGVyKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2UxZDQ5OTQ3MTVmODg0OWNlOGJm
ZTVlYzM0NTVkNDczNzc4MDBkNC4uMzU1MjAxYjk3MDQzNWM1NGQ1NGIzZmJmOWU0NDJhY2QyYmNi
MmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV0
YWNoRnJvbUNvcmVMb2FkZXIoKTsKIAotICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgV2ViUmVzb3VyY2VMb2FkZXIoUmVmPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyPiYmLCBjb25zdCBUcmFja2luZ1BhcmFtZXRlcnMmKTsKIAo=
</data>
<flag name="commit-queue"
          id="452907"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431209</attachid>
            <date>2021-06-11 10:54:16 -0700</date>
            <delta_ts>2021-06-11 11:20:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226929-20210611105415.patch</filename>
            <type>text/plain</type>
            <size>117960</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2NmE3NWVkMzYyOWNi
YWM4NTY2NTI4NWQ4YzcyY2QwY2M2MmViYS4uNmNmODY2MzVkMzQ5MTgxNjlkMzI5N2QxZmJmYWZj
YmFjYTFlOTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wNi0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSByZWxlYXNlIGxv
Z2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgcmVsZWFzZSBs
b2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2ViQ29yZSwgdG8gZmFj
aWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhbk5hdmlnYXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5n
U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpc2Fs
bG93RGF0YVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9y
TG9hZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BGb3JC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXREb2N1
bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRo
aXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3ND
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dy
ZXNzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRE
YXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nT25lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5jcHA6CisKIDIwMjEtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBFdmVudFNvdXJjZS5jb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhj
ZXB0aW9uIHdoZW4gdGhlIHVybCBwYXJhbSBpcyBhbiBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTJjOGI5NTQyNjNmYjcxYmU3MWU4ODhiNTBkZDgzMDgwOTRkNmEzYi4uMDY0YzAwNmJlODI1OGMz
NmZkNTA4YmU4YTg5Yzg5NGU5ZjQ5NzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MS0wNi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJs
ZSByZWxlYXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgcmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2Vi
Q29yZSwgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIxLTA2LTExICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIENyYXNoIHdo
ZW4gZHJhZ2dpbmcgYW4gYWNjb3VudCBub2RlIGFib3ZlIFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWRmYjM4YWVmYmU5
ZjcyNDc0ZGFmNzI3YWZlZGM0YTZjODYzODcyZC4uNjY4NDg2ZmQ4N2ZjZmU0NGUyOGMxYzVkMWE3
NjgyY2I5YmFlNzIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYobV9mcmFtZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
U2NyaXB0Q29udHJvbGxlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFND
UklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFNjcmlwdENvbnRyb2xsZXI6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpAQCAtNTg1LDcgKzU4NSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICAgICBpZiAo
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CisgICAgICAgIFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywg
ImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
LWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfQogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwpAQCAtODcwLDQgKzg3MCw0IEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI3Vu
ZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBTQ1JJUFRDT05UUk9MTEVS
X1JFTEVBU0VfTE9HX0VSUk9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGVhOTE4OTAx
ZmVkZGJlNTc0YzUxM2NiNjNiMDIwYWQzZGJkMzQ2Li5mNDJhNTU4OTk1OWYyMjRmMDk2YjIzMTdj
NWMxZGFlNGY4OGQzN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM0NCw4ICszNDQs
OCBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZh
bHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3Vt
ZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9H
X0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAg
LSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1
bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUlu
dDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzUzNyw3ICszNTM3LDcgQEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2
aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogCiAg
ICAgaWYgKGlzTmF2aWdhdGlvbkJsb2NrZWRCeVRoaXJkUGFydHlJRnJhbWVSZWRpcmVjdEJsb2Nr
aW5nKCp0YXJnZXRGcmFtZSwgZGVzdGluYXRpb25VUkwpKSB7CiAgICAgICAgIHByaW50TmF2aWdh
dGlvbkVycm9yTWVzc2FnZSgqdGFyZ2V0RnJhbWUsIHVybCgpLCAiVGhlIGZyYW1lIGF0dGVtcHRp
bmcgbmF2aWdhdGlvbiBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdyBpcyBjcm9zcy1vcmlnaW4gb3Ig
dW50cnVzdGVkIGFuZCB0aGUgdXNlciBoYXMgbmV2ZXIgaW50ZXJhY3RlZCB3aXRoIHRoZSBmcmFt
ZS4iX3MpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJO
YXZpZ2F0aW9uIHdhcyBwcmV2ZW50ZWQgYmVjYXVzZSBpdCB3YXMgdHJpZ2dlcmVkIGJ5IGEgY3Jv
c3Mtb3JpZ2luIG9yIHVudHJ1c3RlZCBpZnJhbWUiKTsKKyAgICAgICAgRE9DVU1FTlRfUkVMRUFT
RV9MT0dfRVJST1IoTG9hZGluZywgIk5hdmlnYXRpb24gd2FzIHByZXZlbnRlZCBiZWNhdXNlIGl0
IHdhcyB0cmlnZ2VyZWQgYnkgYSBjcm9zcy1vcmlnaW4gb3IgdW50cnVzdGVkIGlmcmFtZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NzM3LDExICs4NzM3LDYgQEAgYm9v
bCBEb2N1bWVudDo6c2hvdWxkSWdub3JlU3luY1hIUnMoKSBjb25zdAogICAgIHJldHVybiBtX251
bWJlck9mUmVqZWN0ZWRTeW5jWEhScyA+IG1heFJlamVjdGVkU3luY1hIUnNQZXJFdmVudExvb3BJ
dGVyYXRpb247CiB9CiAKLWJvb2wgRG9jdW1lbnQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2ZyYW1lIHx8IG1fZnJhbWUtPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogYm9vbCBEb2N1bWVu
dDo6aXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0CkBAIC04ODU5LDUgKzg4NTQsNSBAQCBKU0M6OlZN
JiBEb2N1bWVudDo6dm0oKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCisjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0df
RVJST1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjQ3MWE2M2NmNTg2YzgyMzE1ZTJkNjUwZjAw
ZDk5ZTY5NjY1NTZmNS4uOWRhMDRlN2Y3YWE4NTFkMGI4ZjcwYTk1OWU3NjdhOWNkMGI0MTcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQxNCw4ICs0MTQsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSk7CiAgICAgUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5LnZh
bHVlX29yKFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KIAotICAg
IGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IERPTUltcGxlbWVudGF0aW9uJiBpbXBsZW1lbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNWY0YzdhZWNjZGY2NDZkYWM2MDUwZDA0YjRlOWEz
YmQzNjQyNDJlYi4uMzY3Njc1NzQxMDg5YTQ5ODg3MGFhOWUxNmEyMGI0MTliZWUwZWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAKICNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9v
cihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVm
aW5lIEZSQU1FX0lEICgobV9mcmFtZSA/IG1fZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFt
ZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUg
SVNfTUFJTl9GUkFNRSAobV9mcmFtZSA/IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSkK
LSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJ
dTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lE
LCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRMb2FkZXJBZGRpdGlvbnMu
Y3BwPgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCiAgICAgaWYgKHNob3VsZE5vdGlmeUFib3V0UHJv
dmlzaW9uYWxVUkxDaGFuZ2UpIHsKICAgICAgICAgLy8gTG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzU0ODMwMjMzPi4KICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2Fk
ZXIiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExv
YWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIiKTsK
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNp
b25hbFVSTCgpOwogICAgIH0KIH0KQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxKQogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB7CiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19j
YXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBET0NV
TUVOVExPQURFUl9SRUxFQVNFX0xPRygic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBj
b2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwogCiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKICAgICBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5zZXRNYWluRG9jdW1lbnRFcnJvcih0aGlzLCBlcnJvcik7CkBAIC0y
NzAsNyArMjcwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIm1haW5SZWNlaXZl
ZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUo
KSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coIm1haW5SZWNlaXZlZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxp
bnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIEFTU0VSVCghbWFp
blJlc291cmNlTG9hZGVyKCkpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lk
IERvY3VtZW50TG9hZGVyOjpmcmFtZURlc3Ryb3llZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkOiBtX2ZyYW1lPSVwIiwgbV9m
cmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9h
ZGVyOjpmcmFtZURlc3Ryb3llZDogbV9mcmFtZT0lcCIsIG1fZnJhbWUuZ2V0KCkpOwogICAgIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKIH0KIApAQCAtMzAyLDcg
KzMwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkKCkKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2Fk
aW5nOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZzogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZSkKQEAg
LTM2Niw3ICszNjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAKICAg
ICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgYmVlbiBkZXRhY2hlZCBmcm9tIHRoaXMgZG9jdW1lbnQg
YnkgdGhlIG9udW5sb2FkIGhhbmRsZXIKICAgICBpZiAoYXV0byogZnJhbWVMb2FkZXIgPSBEb2N1
bWVudExvYWRlcjo6ZnJhbWVMb2FkZXIoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdG9wTG9hZGluZzogY2FuY2VsaW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FE
RVJfUkVMRUFTRV9MT0coInN0b3BMb2FkaW5nOiBjYW5jZWxpbmcgbG9hZCIpOwogICAgICAgICBp
ZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAgICAgIC8vIFN0b3AgdGhlIG1h
aW4gcmVzb3VyY2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2Uu
CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyLT5jYW5jZWxs
ZWRFcnJvcihtX3JlcXVlc3QpKTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2FkTQogICAgIH0KIAogICAgIGlmICghbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3Io
KS5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibm90aWZ5RmluaXNo
ZWQ6IGNhbmNlbGluZyBsb2FkICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4o
bV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS50eXBlKCkpLCBtX21haW5SZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIm5vdGlmeUZpbmlzaGVkOiBjYW5jZWxpbmcgbG9hZCAodHlwZT0lZCwgY29kZT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkudHlw
ZSgpKSwgbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5lcnJvckNvZGUoKSk7CiAKICAg
ICBtYWluUmVjZWl2ZWRFcnJvcihtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKIH0K
QEAgLTYyNywxMSArNjI3LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAgICAvLyBM
b2dnaW5nIGZvciA8cmRhcjovL3Byb2JsZW0vNTQ4MzAyMzM+LgogICAgIGlmICghZnJhbWVMb2Fk
ZXIoKSB8fCAhZnJhbWVMb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJv
dmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIik7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlID0gIXJlZGlyZWN0
UmVzcG9uc2UuaXNOdWxsKCk7CiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFj
dGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1ZXN0LnVybCgpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
OiBjYW5jZWxpbmcgLSBmb3JtIGFjdGlvbiBub3QgYWxsb3dlZCBieSBDU1AiKTsKKyAgICAgICAg
RE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogY2FuY2VsaW5nIC0g
Zm9ybSBhY3Rpb24gbm90IGFsbG93ZWQgYnkgQ1NQIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtNjQyLDEzICs2NDIsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAg
Ly8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCiAgICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
cmVkaXJlY3RpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3BvbnNl
LnVybCgpKSk7CiAgICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4uZ2V0KCkuY2FuRGlzcGxh
eShuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVjdGluZyBVUkwgbm90IGFsbG93
ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CisgICAgICAgICAgICBET0NVTUVO
VExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVj
dGluZyBVUkwgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CiAg
ICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0
KCksIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgY2FuY2VsTWFpblJl
c291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwb3J0QWxsb3dlZChuZXdSZXF1ZXN0LnVybCgpKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7Cisg
ICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0QmxvY2tlZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAg
ICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5ibG9ja2VkRXJyb3Io
bmV3UmVxdWVzdCkpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRy
eUxvYWRpbmdTdWJzdGl0dXRlRGF0YSgpCiAgICAgaWYgKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFs
aWQoKSB8fCAhbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmlu
ZyBzdWJzdGl0dXRlIGRhdGEiKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3Rh
cnRMb2FkaW5nTWFpblJlc291cmNlOiBSZXR1cm5pbmcgc3Vic3RpdHV0ZSBkYXRhIik7CiAgICAg
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVlc3QpOwogICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgbV9yZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCksIG51bGxwdHIpOwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6ZGlzYWxsb3dEYXRhUmVxdWVzdCgpIGNvbnN0CiAKICAgICAgICAgY3VycmVudERv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiTm90IGFsbG93ZWQgdG8gbmF2aWdhdGUgdG9wIGZy
YW1lIHRvIGRhdGEgVVJMICciLCBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiJy4iKSwgaWRlbnRpZmllcik7CiAgICAgfQotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5OiBjYW5ub3Qgc2hvdyBVUkwi
KTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3k6IGNhbm5vdCBzaG93IFVSTCIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
ZnJhbWUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVBZnRlckNv
bnRlbnRQb2xpY3k6IHBvbGljeUFjdGlvbj0laSByZWNlaXZlZCBieSBEb2N1bWVudExvYWRlciB3
aXRoIG51bGwgZnJhbWUiLCAoaW50KXBvbGljeSk7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JF
TEVBU0VfTE9HKCJjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogcG9saWN5QWN0aW9uPSVpIHJl
Y2VpdmVkIGJ5IERvY3VtZW50TG9hZGVyIHdpdGggbnVsbCBmcmFtZSIsIChpbnQpcG9saWN5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6IHsKICAgICAgICAgLy8gbV9tYWlu
UmVzb3VyY2UgY2FuIGJlIG51bGwsIGUuZy4gd2hlbiBsb2FkaW5nIGEgc3Vic3RpdHV0ZSByZXNv
dXJjZSBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLgogICAgICAgICBpZiAoIW1fbWFpblJlc291cmNl
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZUFmdGVyQ29u
dGVudFBvbGljeTogY2Fubm90IHNob3cgVVJMIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURF
Ul9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQb2xpY3k6IGNhbm5vdCBzaG93IFVS
TCIpOwogICAgICAgICAgICAgbWFpblJlY2VpdmVkRXJyb3IoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0xMzcxLDEyICsxMzcxLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmF0
dGFjaFRvRnJhbWUoRnJhbWUmIGZyYW1lKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YXR0YWNoVG9G
cmFtZSgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIkRvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5n
ZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjph
dHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZTogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOworICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiAKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGlmIChtX2hhc0V2ZXJCZWVuQXR0YWNoZWQpCkBAIC0xOTIyLDcg
KzE5MjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2Uo
KQogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBp
ZiAobWF5YmVMb2FkRW1wdHkoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmluZyBlbXB0eSBkb2N1bWVudCIpOworICAg
ICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNl
OiBSZXR1cm5pbmcgZW1wdHkgZG9jdW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKCkKIAogICAgICAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBv
dXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGlu
ZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgogICAgICAgICBpZiAoIW1fZnJhbWUgfHwgbV9yZXF1ZXN0
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExv
YWRpbmdNYWluUmVzb3VyY2U6IExvYWQgY2FuY2VsZWQgYWZ0ZXIgd2lsbFNlbmRSZXF1ZXN0Iik7
CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFp
blJlc291cmNlOiBMb2FkIGNhbmNlbGVkIGFmdGVyIHdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NTAsMzAgKzE5NTAsMzAgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIHJlbG9hZCB0aGUgY2FjaGUgbGF5ZXIgbWlnaHQgaGF2ZSBtYWRlIHRoZSBwcmV2
aW91cyByZXF1ZXN0IGNvbmRpdGlvbmFsLiBEb2N1bWVudExvYWRlciBjYW4ndCBoYW5kbGUgMzA0
IHJlc3BvbnNlcyBpdHNlbGYuCiAgICAgICAgIHJlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsK
IAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2U6IFN0YXJ0aW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0co
InN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogU3RhcnRpbmcgbG9hZCIpOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAobV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+Y2Fu
TG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0KSB8fCBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbWF0
Y2hSZWdpc3RyYXRpb24odXJsLCBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoYXV0byYmIHJlZ2lzdHJhdGlv
bkRhdGEpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghbV9tYWluRG9jdW1lbnRFcnJv
ci5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVz
ZSBvZiBtYWluIGRvY3VtZW50IGVycm9yICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0
PGludD4obV9tYWluRG9jdW1lbnRFcnJvci50eXBlKCkpLCBtX21haW5Eb2N1bWVudEVycm9yLmVy
cm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSBjYWxsYmFjazogTG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG9mIG1haW4gZG9jdW1lbnQgZXJyb3IgKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nh
c3Q8aW50PihtX21haW5Eb2N1bWVudEVycm9yLnR5cGUoKSksIG1fbWFpbkRvY3VtZW50RXJyb3Iu
ZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghbV9mcmFtZSkgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJh
Y2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBubyBmcmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNlIGNh
bGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm8gZnJhbWUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpOwog
ICAgICAgICAgICAgICAgIC8vIFByZWZlciBleGlzdGluZyBzdWJzdGl0dXRlIGRhdGEgKGZyb20g
V0tXZWJWaWV3LmxvYWREYXRhIGV0Yykgb3ZlciBzZXJ2aWNlIHdvcmtlciBmZXRjaC4KICAgICAg
ICAgICAgICAgICBpZiAodGhpcy0+dHJ5TG9hZGluZ1N1YnN0aXR1dGVEYXRhKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2FkaW5nTWFpblJl
c291cmNlIGNhbGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2Ygc3Vic3RpdHV0ZSBkYXRh
Iik7CisgICAgICAgICAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBz
dWJzdGl0dXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSAmJiB0aGlzLT50cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIp
OworICAgICAgICAgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNo
ZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHRoaXMtPmxvYWRNYWluUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CkBA
IC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWlu
UmVzb3VyY2UoKQogICAgICAgICB9CiAjZWxzZQogICAgICAgICBpZiAodHJ5TG9hZGluZ1JlcXVl
c3RGcm9tQXBwbGljYXRpb25DYWNoZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IExvYWRlZCBmcm9tIEFwcGxpY2F0aW9u
IENhY2hlIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogICAgICAgICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgZ29uZSBhd2F5IGlmIHRo
aXMgbG9hZCB3YXMgY2FuY2VsbGVkIHN5bmNocm9ub3VzbHkgYW5kIHRoaXMgd2FzIHRoZSBsYXN0
IHBlbmRpbmcgbG9hZC4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHdlIG1heSBoYXZlIGZp
cmVkIHRoZSBsb2FkIGV2ZW50IGluIGEgcGFyZW50IGZyYW1lLgogICAgICAgICBpZiAoIW1fZnJh
bWUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWRNYWluUmVzb3Vy
Y2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIGZyYW1lIGhhcyBnb25lIGF3YXkiKTsK
KyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291cmNl
OiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCBmcmFtZSBoYXMgZ29uZSBhd2F5Iik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fcmVxdWVzdC51
cmwoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxv
YWRNYWluUmVzb3VyY2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIFVSTCBpcyBpbnZh
bGlkIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygibG9hZE1haW5S
ZXNvdXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgVVJMIGlzIGludmFsaWQiKTsK
ICAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZE1haW5SZXNv
dXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgcmV0dXJuaW5nIGVtcHR5IGRvY3Vt
ZW50Iik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291
cmNlOiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCByZXR1cm5pbmcgZW1wdHkgZG9jdW1l
bnQiKTsKIAogICAgICAgICBzZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAg
Ly8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBv
c3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApAQCAtMjA2Niw3ICsyMDY2LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAobV9tYWluUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS5kb21haW4oKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0
Q29udGVudEJsb2NrZXJEb21haW4pIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
bG9hZE1haW5SZXNvdXJjZTogQmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgZXJyb3IiKTsKKyAg
ICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coImxvYWRNYWluUmVzb3VyY2U6IEJsb2Nr
ZWQgYnkgY29udGVudCBibG9ja2VyIGVycm9yIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihtX3JlcXVl
c3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMDQsNyArMjEwNCw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgp
ID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KSA6IHJlc291cmNlRXJy
b3I7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY2FuY2Vs
TWFpblJlc291cmNlTG9hZDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50Pihl
cnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBtX2RhdGFMb2FkVG9rZW4u
Y2xlYXIoKTsKIApAQCAtMjI4MiwxMSArMjI4Miw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFk
ZFBlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3Rvcihjb25zdCBTdHJpbmcm
CiB9CiAjZW5kaWYKIAotYm9vbCBEb2N1bWVudExvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fZnJhbWUgfHwgbV9mcmFtZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6cHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3
M2NlMDg1Mi4uZTY5MzUzMmViZDY0ZjVjMDQyYzdjMzdkODM5MTg5NTk3ZDZlNjkwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM4NSw4ICszODUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKLQogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZm
ZXIqKT4mJik7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFy
ZWRCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQwMjdi
MjI2ZWIyNjZiNjk0NWFmMDAyNDVlZmViNGQyZWNlNTlkMWIuLmQ3MTNmN2RkNGE0OTJjZmMzNmE4
M2UxMGRhMjYyMTNkYWJlMjc1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTUyLDggKzE1Miw4IEBACiAKICNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRCAoKGZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVmaW5l
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBb
cGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxv
YWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1l
KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0Vf
SUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBt
X2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihj
aGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBt
YWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2Zy
YW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZVJlcXVlc3Qs
IEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGFuZ2VMb2NhdGlvbjogZnJh
bWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VM
b2FkaW5nLCAiY2hhbmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgIEFTU0VS
VChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsK
IAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKQEAgLTk0Miw3ICs5NDIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NhbGxJbXBsaWNpdENsb3NlKCkKIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZFVSTEludG9DaGlsZEZyYW1lOiBm
cmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJj
ZUxvYWRpbmcsICJsb2FkVVJMSW50b0NoaWxkRnJhbWU6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwog
CiAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVyZXIsIEYKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUmVmPEFyY2hp
dmU+JiYgYXJjaGl2ZSkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KFJlc291cmNlTG9hZGluZywgImxvYWRBcmNoaXZlOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkQXJjaGl2ZTog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJj
ZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIEFTU0VSVChtYWluUmVzb3VyY2UpOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZvckNv
b2tpZXMoY29uc3QgVVJMJiB1cmwpCiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBVUkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0
aGluZyB0byBkby4KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBV
UkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05h
dmlnYXRpb24pCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNv
dXJjZUxvYWRpbmcsICJsb2FkSW5TYW1lRG9jdW1lbnQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwor
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRJblNhbWVE
b2N1bWVudDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Rh
dGUgb2JqZWN0LCB3ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VS
VCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKQEAg
LTExOTIsNyArMTE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQoKQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInByZXBhcmVGb3JMb2FkU3RhcnQ6
IFN0YXJ0aW5nIGZyYW1lIGxvYWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJwcmVwYXJlRm9yTG9hZFN0YXJ0OiBTdGFydGluZyBmcmFtZSBsb2FkIik7
CiAKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NTdGFydGVkKCk7CiAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKQEAgLTEyMTAsMTQgKzEyMTAs
MTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKICAgICBtX2NsaWVudC0+
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIHNl
dFN0YXRlKEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9kb2N1bWVudExv
YWRlciA9IG51bGxwdHI7CiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgc3RkOjpvcHRpb25hbDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRG
cmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVB
U0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3Rh
cnRlZCIpOwogCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24gYXdheSBp
bnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExvYWRlci4K
ICAgICBhdXRvIHByb3RlY3RGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CkBAIC0xMjI2LDEzICsx
MjI2LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmCiAKICAgICBBU1NFUlQobV9mcmFtZS5k
b2N1bWVudCgpKTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4oKS5j
YW5EaXNwbGF5KHVybCkpIHsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkRnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBOb3Qg
YWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291cmNlIik7CisgICAgICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGNhbmNlbGluZyAt
IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2UiKTsKICAgICAgICAgcmVwb3J0TG9j
YWxMb2FkRmFpbGVkKCZtX2ZyYW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFwb3J0QWxsb3dlZCh1cmwp
KSB7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VM
b2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogY2FuY2VsaW5nIC0gcG9ydCBub3QgYWxsb3dlZCIp
OworICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2Fk
RnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBwb3J0IG5vdCBhbGxvd2VkIik7CiAgICAgICAgIHJl
cG9ydEJsb2NrZWRMb2FkRmFpbGVkKG1fZnJhbWUsIHVybCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBib29sIEZyYW1lTG9hZGVyOjppc1N0b3BMb2FkaW5n
QWxsb3dlZCgpIGNvbnN0CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVx
dWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9h
ZFR5cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogICAgIEFTU0VSVChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSA9PSAiR0VUIik7CiAKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0x
NDIyLDcgKzE0MjIsNyBAQCBTdWJzdGl0dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0
aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRnJhbWVMb2FkUmVxdWVzdCk6
IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291
cmNlTG9hZGluZywgImxvYWQgKEZyYW1lTG9hZFJlcXVlc3QpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMgfHwgbV9pbkNsZWFyUHJvdmlzaW9uYWxM
b2FkRm9yUG9saWN5Q2hlY2spCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzAsNyArMTQ3MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24mJiBhY3Rpb24sIEZyYW1lTG9hZFR5cGUg
dHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbjog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAibG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURv
Y3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0
LnVybCgpKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIGFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgp
LCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKQEAgLTE0ODcsNyArMTQ4
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
RG9jdW1lbnRMb2FkZXImIG5ld0RvY3VtZW50TG9hZGVyKQogewotICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRG9jdW1lbnRMb2Fk
ZXIpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJsb2FkIChEb2N1bWVudExvYWRlcik6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVz
dCgpOwogICAgIC8vIEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCkBA
IC0xNTMwLDcgKzE1MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVy
JiBuZXdEb2N1bWVudExvYWRlcikKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFJlZlB0
cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0
YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJs
b2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAogICAgIC8vIFJl
dGFpbiBiZWNhdXNlIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0x
NTYwLDcgKzE1NjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgIC8vIExvZyBtYWlu
IGZyYW1lIG5hdmlnYXRpb24gdHlwZXMuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxv
YWRXaXRoRG9jdW1lbnRMb2FkZXI6IG1haW4gZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgICAg
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERv
Y3VtZW50TG9hZGVyOiBtYWluIGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgICAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lTG9hZFN0YXJ0ZWQobmV3VVJMLCB0eXBlKTsKICAgICAgICAgICAgIHBhZ2Ut
PnBlcmZvcm1hbmNlTG9nZ2luZygpLmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNl
TG9nZ2luZzo6TWFpbkZyYW1lTG9hZFN0YXJ0ZWQpOwogICAgICAgICB9CkBAIC0xNjI4LDcgKzE2
MjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNo
ZWNrKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2luQ2xlYXJQcm92aXNpb25h
bExvYWRGb3JQb2xpY3lDaGVjaywgdHJ1ZSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5zdG9wTG9hZGluZygpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUmVzb3VyY2VMb2FkaW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjazog
Q2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lvbmFs
TG9hZEZvclBvbGljeUNoZWNrOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIg
KG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7
CiB9CiAKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgaWYgKCFtX2RvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZzogZnJhbWUgbG9hZCBzdGFy
dGVkIik7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51
bnJlYWNoYWJsZVVSTCgpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXItPnJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
cmVsb2FkOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
RyhSZXNvdXJjZUxvYWRpbmcsICJyZWxvYWQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAg
Ly8gUmVwbGFjZSBlcnJvci1wYWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8g
cmVhY2guCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExv
YWRlci0+cmVxdWVzdCgpOwpAQCAtMTgwNCw3ICsxODA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW0gY2xlYXJQcm92aXNpb25hbEl0ZW0s
IFN0b3AKICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgY2hpbGQtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKGNsZWFyUHJvdmlzaW9uYWxJdGVt
KTsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2Fk
aW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCwgbV9k
b2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0l
cCwgbV9kb2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2Fk
aW5nKCk7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcAogICAg
IGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiAhbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKSkKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmJyb3dzaW5nQ29udGV4dFJlbW92ZWQoZnJhbWUoKSk7CiAKLSAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKICAg
ICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsgICAgCkBAIC0xODI1LDcgKzE4MjUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpCiAgICAgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKICAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoKTsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzdG9wRm9yQmFja0ZvcndhcmRDYWNoZTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwg
ZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic3RvcEZvckJhY2tGb3J3YXJkQ2FjaGU6IENsZWFyaW5n
IHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
PSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgICAgIHNldFBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAgICAgfQogCkBAIC0xOTAxLDcgKzE5
MDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXREb2N1bWVudExvYWRlcjogU2V0dGluZyBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldERvY3VtZW50TG9hZGVyOiBT
ZXR0aW5nIGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwgbV9kb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2Fk
ZXItPmZyYW1lTG9hZGVyKCkgPT0gdGhpcyk7CiAKQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnNldFBvbGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgaWYgKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgInNldFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVu
dCBsb2FkZXIgdG8gJXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNl
dFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCiAg
ICAgaWYgKGxvYWRlcikKICAgICAgICAgbG9hZGVyLT5hdHRhY2hUb0ZyYW1lKG1fZnJhbWUpOwpA
QCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIHRv
ICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVy
IHRvICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogCiAgICAgQVNTRVJUKCFsb2FkZXIgfHwgIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cik7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2FkZXItPmZyYW1lTG9hZGVyKCkg
PT0gdGhpcyk7CkBAIC0xOTY5LDcgKzE5NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0
ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQogICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAg
ICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBvbGRTdGF0ZSAhPSBuZXdTdGF0ZSkg
ewotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXRTdGF0ZTogbWFpbiBmcmFtZSBsb2FkIGNvbXBsZXRlZCIpOworICAgICAg
ICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0U3RhdGU6
IG1haW4gZnJhbWUgbG9hZCBjb21wbGV0ZWQiKTsKICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgp
LT5wZXJmb3JtYW5jZUxvZ2dpbmcoKS5kaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQZXJmb3JtYW5j
ZUxvZ2dpbmc6Ok1haW5GcmFtZUxvYWRDb21wbGV0ZWQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTk3Nyw3ICsxOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBu
ZXdTdGF0ZSkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQogewot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
Y2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2Fk
aW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50
IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKICAg
ICBzZXRTdGF0ZShGcmFtZVN0YXRlOjpDb21wbGV0ZSk7CkBAIC0yMTU5LDcgKzIxNTksNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVk
UGFnZSkKICAgICBzZXREb2N1bWVudExvYWRlcihtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIGlmIChvcmlnaW5hbFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgIT0gbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgRlJBTUVMT0FE
RVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJ0cmFuc2l0aW9uVG9D
b21taXR0ZWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAidHJhbnNp
dGlvblRvQ29tbWl0dGVkOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAK
ICAgICAvLyBOb3RoaW5nIGVsc2UgY2FuIGludGVycnVwdCB0aGlzIGNvbW1pdCAtIHNldCB0aGUg
UHJvdmlzaW9uYWwtPkNvbW1pdHRlZCB0cmFuc2l0aW9uIGluIHN0b25lCkBAIC0yNTA0LDcgKzI1
MDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgp
CiAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBu
ZXcgcHJvdmlzaW9uYWwgaXRlbS4KICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFoaXN0b3J5
KCkucHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5pc0xvYWRpbmdJ
bkFQSVNlbnNlKCkgfHwgcHJvdGVjdG9yLT5pc1N0b3BwaW5nKCkpIHsKLSAgICAgICAgICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1RpbWVv
dXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNU
aW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAg
ICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGYWlsZWQgcHJvdmlzaW9uYWwgbG9hZCAoaXNUaW1l
b3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9ICVkKSIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAK
ICAgICAgICAgICAgIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgqcHJvdGVjdG9yLCBl
cnJvcik7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3RlY3Rvci0+aXNMb2FkaW5nKCkpOwpAQCAt
MjU2NiwxMSArMjU2NiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpCiAKICAgICAgICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQgbG9h
ZGluZ0V2ZW50OwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3Ig
KGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBl
cnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQgd2l0
aCBlcnJvciAoaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9
ICVkKSIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGYWlsTG9hZChl
cnJvcik7CiAgICAgICAgICAgICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRp
bmdGYWlsZWQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIik7CisgICAgICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICAgICAgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgICAg
ICAgICBhdXRvIHR5cGVzID0gT3B0aW9uU2V0PERhdGFEZXRlY3RvclR5cGU+IHsgbV9mcmFtZS5z
ZXR0aW5ncygpLmRhdGFEZXRlY3RvclR5cGVzKCkgfTsKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZv
cm1TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAibG9hZFBvc3RSZXF1ZXN0OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkUG9zdFJlcXVlc3Q6IGZyYW1lIGxv
YWQgc3RhcnRlZCIpOwogCiAgICAgU3RyaW5nIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1l
KCk7CiAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSByZXF1ZXN0LmxvY2tIaXN0b3J5KCk7
CkBAIC0zMTgzLDcgKzMxODMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50
U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdQogICAgIC8vIElm
IHdlIGhhdmUgYSBwcm92aXNpb25hbCByZXF1ZXN0IGZvciBhIGRpZmZlcmVudCBkb2N1bWVudCwg
YSBmcmFnbWVudCBzY3JvbGwgc2hvdWxkIGNhbmNlbCBpdC4KICAgICBpZiAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKSkg
ewogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0g
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAiY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcg
cHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9
JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVGcmFnbWVudFNjcm9s
bEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLmdldCgpKTsKICAgICAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICB9CiAKQEAgLTM0MjQsNyArMzQyNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAgICAgYm9vbCBjYW5Db250aW51ZSA9IG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
PSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCAmJiBzaG91bGRDbG9zZSgp
ICYmICF1cmxJc0Rpc2FsbG93ZWQ7CiAKICAgICBpZiAoIWNhbkNvbnRpbnVlKSB7Ci0gICAgICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZy
YW1lIGR1ZSB0byB0aGUgZm9sbG93aW5nIHJlYXNvbnMgKCIKKyAgICAgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZyYW1lIGR1ZSB0byB0aGUgZm9sbG93aW5n
IHJlYXNvbnMgKCIKICAgICAgICAgICAgICJhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgPSAl
ZCwgIgogICAgICAgICAgICAgInJlcXVlc3RVUkxJc1ZhbGlkID0gJWQsICIKICAgICAgICAgICAg
ICJuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSAlZCkiLApAQCAtMzQ2OCwxMiArMzQ2OCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82MjUwODU2
PiAtIEluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBvbiBwYWdlcyB3aXRoIG11bHRpcGxlIGZyYW1l
cywgc3RvcEFsbExvYWRlcnMoKQogICAgIC8vIG1pZ2h0IGRldGFjaCB0aGUgY3VycmVudCBGcmFt
ZUxvYWRlciwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgYmFpbCBvbiB0aGlzIG5ld2x5IGRlZnVu
Y3QgbG9hZC4gCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3QgY29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNl
IGl0IGJlY2FtZSBkZWZ1bmN0Iik7CisgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJl
c291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3Qg
Y29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNlIGl0IGJlY2FtZSBkZWZ1bmN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1f
cG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7
CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxv
YWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9sb2FkVHlwZSA9IHR5cGU7CiAgICAgc2V0U3RhdGUo
RnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC0zNDg0LDcgKzM0ODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgp
ICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKS0+aXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkg
ewogICAgICAgICAgICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgp
LCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z1Jlc3VsdFBhc3MsIFNob3VsZFNhbXBsZTo6WWVzKTsKICAgICAgICAgICAgIGxvYWRQcm92aXNp
b25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmln
YXRpb25Qb2xpY3k6IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxs
IGJlIGxvYWRlZCBmcm9tIGNhY2hlIik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6
IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxsIGJlIGxvYWRlZCBm
cm9tIGNhY2hlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTM0OTIsNyArMzQ5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlCiAKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBs
b2FkIGNhbmNlbGVkIC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGJlZm9yZSBwcmVw
YXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBs
ZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3Vt
ZW50IGxvYWRlciBiZWZvcmUgcHJlcGFyZUZvckxvYWRTdGFydCIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzUwMSwxMyArMzUwMSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAvLyBUaGUgbG9hZCBtaWdodCBiZSBjYW5jZWxsZWQg
aW5zaWRlIG9mIHByZXBhcmVGb3JMb2FkU3RhcnQoKSwgbnVsbGluZyBvdXQgdGhlIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlciwKICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBudWxsIGNoZWNr
IGl0IGFnYWluLgogICAgICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewot
ICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxv
YWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBsZXRpb25IYW5k
bGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9S
RUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Q
b2xpY3kgKGNvbXBsZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zp
c2lvbmFsIGRvY3VtZW50IGxvYWRlciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBhY3RpdmVEb2NMb2FkZXIgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgICAgICBp
ZiAoYWN0aXZlRG9jTG9hZGVyICYmIGFjdGl2ZURvY0xvYWRlci0+aXNMb2FkaW5nTWFpblJlc291
cmNlKCkpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IChjb21w
bGV0aW9uSGFuZGxlcik6IE1haW4gZnJhbWUgYWxyZWFkeSBiZWluZyBsb2FkZWQiKTsKKyAgICAg
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBNYWluIGZyYW1l
IGFscmVhZHkgYmVpbmcgbG9hZGVkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0zNzMwLDcgKzM3MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2Ft
ZURvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIC8vIG1ldGhvZHMgb2YgRnJhbWVMb2Fk
ZXIuCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJ
dGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUs
IEZvcm1TdWJtaXNzaW9uQ2FjaGVMb2FkUG9saWN5IGNhY2hlTG9hZFBvbGljeSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRE
aWZmZXJlbnREb2N1bWVudEl0ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9B
REVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFt
ZShtX2ZyYW1lKTsKIApAQCAtMzg3Myw3ICszODczLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0
cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogICAgICAgICBsb2FkRGlm
ZmVyZW50RG9jdW1lbnRJdGVtKCppdGVtLCBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSwgbG9hZFR5
cGUsIE1heU5vdEF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5S
ZXNvdXJjZUxvYWQ6IFJldHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiBy
ZXNvdXJjZSBsb2FkIGZhaWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3Rv
cnkgaXRlbS4iKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoUmVzb3Vy
Y2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQ6IFJl
dHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiByZXNvdXJjZSBsb2FkIGZh
aWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3RvcnkgaXRlbS4iKTsKICAg
ICB9CiB9CiAKQEAgLTQwNTQsMTEgKzQwNTQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRl
c3RpbmdPdmVycmlkZXMoKQogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xp
Y3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKS5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6aGFz
SFRNTFZpZXcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAppbmRleCAwMDRmYmQ5YjdjY2ZiZjhhNGVmOGRkYzA3NWYwNWJlNzJhYmM3MTlh
Li5mMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlhNWQ3OTY3YzgyNjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzA5LDcgKzMwOSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBVUkwmIHByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTDsgfQogICAgIHZvaWQgc2V0
UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9w
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHVybDsgfQogCi0gICAgYm9vbCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNz
VGV4dElucHV0RnJvbUVkaXRpbmcoKSBjb25zdDsKICAgICBib29sIGlzUmVsb2FkaW5nRnJvbU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CmluZGV4IGUyNGZkZWQyMjI1ZjFjMTkxOGY0NTQwMTc1NjY3MTdlMjA0ODRlYWIuLjBkY2I0NzU1
NmQwNDg3NDg3ODY1NmU0NTljOWJhYzlhZjY0ZGNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPR1JFU1NfVFJBQ0tFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFt
ZSYgZnJhbWUpCiAgICAgfQogICAgIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2YWx1
ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2Fk
ICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQ
Uk9HUkVTU19UUkFDS0VSX1JFTEVBU0VfTE9HKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2
YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5M
b2FkICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJh
bWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKIAog
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJh
bWUpCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZyYW1l
KQogewogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGNvbXBsZXRlZCAoJXApIC0gZnJhbWUg
JXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFt
ZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicHJvZ3Jlc3NDb21wbGV0ZWQ6IGZyYW1lICVwLCB2YWx1ZSAlZiwgdHJhY2tlZCBm
cmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2FkICVkIiwgJmZyYW1lLCBt
X3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5n
UHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQUk9HUkVTU19UUkFDS0VS
X1JFTEVBU0VfTE9HKCJwcm9ncmVzc0NvbXBsZXRlZDogZnJhbWUgJXAsIHZhbHVlICVmLCB0cmFj
a2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAsIGlzTWFpbkxvYWQgJWQiLCAmZnJh
bWUsIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2lu
YXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpLCBtX2lzTWFpbkxvYWQpOwogCiAgICAgaWYgKG1fbnVt
UHJvZ3Jlc3NUcmFja2VkRnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVybjsKQEAgLTE2MCw3ICsx
NjAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZy
YW1lKQogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiB7CiAg
ICAgTE9HKFByb2dyZXNzLCAiRmluYWwgcHJvZ3Jlc3MgY29tcGxldGUgKCVwKSIsIHRoaXMpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUg
JWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAl
ZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dy
ZXNzVHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNN
YWluTG9hZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nKCkpOworICAgIFBST0dSRVNTX1RSQUNLRVJf
UkVMRUFTRV9MT0coImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUgJWYsIHRyYWNrZWQgZnJh
bWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAlZCwgaXNNYWluTG9hZFBy
b2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1l
cywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNNYWluTG9hZCwgaXNNYWlu
TG9hZFByb2dyZXNzaW5nKCkpOwogCiAgICAgYXV0byBmcmFtZSA9IFdURk1vdmUobV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUpOwogCkBAIC0zMTUsMTIgKzMxNSw0IEBAIHZvaWQgUHJvZ3Jlc3NU
cmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQoKQogICAgICAgICBtX3Byb2dyZXNz
SGVhcnRiZWF0VGltZXIuc3RvcCgpOwogfQogCi1ib29sIFByb2dyZXNzVHJhY2tlcjo6aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fb3JpZ2luYXRpbmdQcm9n
cmVzc0ZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYTk0MDRjNjhlMTJlYzk5
ZTQwYTBkNjNkZGU3ZTE2M2U2NTA2ODVlOC4uMzE5YjBjYzgxYjk5NDYxZDhkNWU4ZjUxOTI1ZjRl
YTcwNGMwNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApAQCAt
NjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7
CiAKICAgICB2b2lkIHByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZCgpOwotICAgIGJvb2wgaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9u
ZyBzX3VuaXF1ZUlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDJiMzM2NjMyNzJkNDFiZjE0NmRhNWU1MGE0YTdhMzA0YjgzMjMxNzMuLjg3
ZTQxNDhmMjc5Mjc1MTU4NTczYjIzY2EzZmMxODY5ZTBkODIwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNjQsMTAgKzY0LDEwIEBACiAjaW5jbHVkZSAi
UHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExP
V0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICNkZWZpbmUgUEFHRV9JRCAo
KGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6
IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUo
KSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFt
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlz
LCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBSZXNvdXJjZUxvYWRlcjo6
IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDkgKzEy
Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50
UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9h
ZGVyIHx8ICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmICghbV9kb2N1
bWVudExvYWRlcikKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImluaXQ6IENh
bmNlbGxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBkb2N1bWVudCBsb2FkZXIuIik7CisgICAgICAg
ICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGRvY3VtZW50IGxvYWRlci4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNlIHRoZSBk
b2N1bWVudCBsb2FkZXIgaGFzIG5vIGZyYW1lLiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgYmVjYXVzZSB0aGUgZG9jdW1lbnQgbG9h
ZGVyIGhhcyBubyBmcmFtZS4iKTsKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQpAQCAtMTQzLDE0ICsxNDMsMTQgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBtX2RlZmVyc0xvYWRpbmcgPSBtX29wdGlvbnMuZGVm
ZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcgJiYgbV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAKICAgICBpZiAobV9vcHRp
b25zLnNlY3VyaXR5Q2hlY2sgPT0gU2VjdXJpdHlDaGVja1BvbGljeTo6RG9TZWN1cml0eUNoZWNr
ICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkoY2xp
ZW50UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5p
dDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIp
OworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBs
b2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIpOwogICAgICAgICBGcmFt
ZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVl
c3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKCFwb3J0
QWxsb3dlZChjbGllbnRSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8gYSBibG9ja2VkIHBvcnQuIik7CisgICAg
ICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8g
YSBibG9ja2VkIHBvcnQuIik7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRCbG9ja2VkTG9h
ZEZhaWxlZCgqbV9mcmFtZSwgY2xpZW50UmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTE3MiwxMyArMTcyLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1
ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRlciB3YXMgc3RvcHBl
ZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QsIGJhaWwgb3V0LgogICAgICAgICBpZiAo
bV9yZWFjaGVkVGVybWluYWxTdGF0ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiaW5pdDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgd2FzIHN0b3BwZWQgYXMgYSBy
ZXN1bHQgb2Ygd2lsbFNlbmRSZXF1ZXN0LiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgbG9hZCBiZWNhdXNlIGl0IHdhcyBzdG9wcGVk
IGFzIGEgcmVzdWx0IG9mIHdpbGxTZW5kUmVxdWVzdC4iKTsKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIGlm
IChyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBudWxsLiIpOwor
ICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcg
bG9hZCBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIG51bGwuIik7CiAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAg
IH0KQEAgLTI4OSwxMiArMjg5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJM
KCkKICAgICAgICAgaWYgKHRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQi
KTsKKyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkRGF0YVVSTDog
ZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQiKTsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
ZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJE
YXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHRoaXMtPndhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogTG9hZCB3YXMgY2FuY2VsbGVkIik7Cisg
ICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygibG9hZERhdGFVUkw6IExvYWQg
d2FzIGNhbmNlbGxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZQogICAgICAgICAgICAgYm9vbCBi
bG9ja2VkTG9hZCA9IHJlc3VsdHMuc3VtbWFyeS5ibG9ja2VkTG9hZDsKICAgICAgICAgICAgIENv
bnRlbnRFeHRlbnNpb25zOjphcHBseVJlc3VsdHNUb1JlcXVlc3QoV1RGTW92ZShyZXN1bHRzKSwg
cGFnZSwgcmVxdWVzdCk7CiAgICAgICAgICAgICBpZiAoYmxvY2tlZExvYWQpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDog
cmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tlciIpOworICAg
ICAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tl
ciIpOwogICAgICAgICAgICAgICAgIGRpZEZhaWwoYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cigpKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZQogI2VuZGlmCiAKICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBj
YW5jZWxlZCBiZWNhdXNlIG9mIGVtcHR5IHJlcXVlc3QiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIpOwogICAgICAgICBkaWRGYWlsKGNhbm5v
dFNob3dVUkxFcnJvcigpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRl
ciB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCwgYmFpbCBvdXQKICAgICAgICAgaWYgKG1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIHJlYWNoZWQgdGVybWluYWwgc3RhdGUgYWZ0ZXIgY2FsbGluZyBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCgpIik7CisgICAgICAgICAgICBSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
cmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSBhZnRlciBjYWxsaW5nIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KCkiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MjgsNyArNDI4
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKIAogICAgIGJvb2wgaXNSZWRpcmVjdCA9ICFy
ZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBQcm9jZXNz
aW5nIGNyb3NzLW9yaWdpbiByZWRpcmVjdCIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IFByb2Nlc3NpbmcgY3Jvc3Mtb3JpZ2lu
IHJlZGlyZWN0Iik7CiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5jcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdC51cmwoKSk7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFp
bihyZXF1ZXN0LnVybCgpKSk7CkBAIC00NDMsMTMgKzQ0MywxMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZQogCiAgICAgICAgIGlmIChyZWRpcmVjdFVSTC5wcm90b2NvbElzRGF0YSgpKSB7CiAg
ICAgICAgICAgICAvLyBIYW5kbGUgZGF0YSBVUkwgZGVjb2RpbmcgbG9jYWxseS4KLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOworICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOwogICAgICAgICAgICAg
ZmluaXNoTmV0d29ya0xvYWQoKTsKICAgICAgICAgICAgIGxvYWREYXRhVVJMKCk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICBSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9
CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBp
ZiAoIWRvY3VtZW50LT51c2VkTGVnYWN5VExTKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgidXNlZExlZ2FjeVRMUzoiKTsKKyAgICAgICAgICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInVzZWRMZWdhY3lUTFM6Iik7CiAgICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPmNvbnNvbGUoKS5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTG9hZGVkIHJlc291cmNlIGZy
b20gIiwgci51cmwoKS5ob3N0KCksICIgdXNpbmcgVExTIDEuMCBvciAxLjEsIHdoaWNoIGFyZSBk
ZXByZWNhdGVkIHByb3RvY29scyB0aGF0IHdpbGwgYmUgcmVtb3ZlZC4gUGxlYXNlIHVzZSBUTFMg
MS4yIG9yIG5ld2VyIGluc3RlYWQuIiksIDAsIGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldFVzZWRMZWdhY3lUTFModHJ1ZSk7CkBAIC01
NzgsNyArNTc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2Fk
aW5nOiIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5n
OiIpOwogCiAgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQobmV0d29ya0xvYWRNZXRyaWNzKTsK
IApAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmdPbmVQYXJ0KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAgICAgLy8gSWYg
bG9hZCBoYXMgYmVlbiBjYW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nICh3aGljaCBjb3VsZCBoYXBw
ZW4gd2l0aCBhCiAgICAgLy8gSmF2YVNjcmlwdCB0aGF0IGNoYW5nZXMgdGhlIHdpbmRvdyBsb2Nh
dGlvbiksIGRvIG5vdGhpbmcuCiAgICAgaWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0OiBMb2FkIHdhcyBj
YW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nLiIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkRmluaXNoTG9hZGluZ09uZVBhcnQ6IExvYWQgd2FzIGNhbmNlbGxlZCBhZnRl
ciBmaW5pc2hpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX3Jl
YWNoZWRUZXJtaW5hbFN0YXRlKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nT25lUGFydChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6Iik7Cisg
ICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZEZhaWw6Iik7CiAKICAgICBpZiAod2Fz
Q2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZXNvdXJjZVJlcXVlcwogewogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVk
SGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3RBc3luYzogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTc1NiwxMyArNzU2LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRl
bnQgYmxvY2tlciIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2Vk
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CiAg
ICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNh
bm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBpbnZhbGlk
IFVSTCIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2VkOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgaW52YWxpZCBVUkwiKTsKICAgICBkaWRGYWls
KGNhbm5vdFNob3dVUkxFcnJvcigpKTsKIH0KIApAQCAtODY5LDEzICs4NjksOCBAQCBib29sIFJl
c291cmNlTG9hZGVyOjppc1F1aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi1i
b29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICN1
bmRlZiBQQUdFX0lECiAjdW5kZWYgRlJBTUVfSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggNDc4OTc1NDgxNDQ3YjE2Y2I5ZGQ0OGRkNGI1N2RiYmRjNDFkZWI1Mi4u
N2E0YTBkN2Q3ZjQ2NDUzNmMyYzY4ODVhZjgzNjlkZjA2OTc1YmI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE1MSw3ICsxNTEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIGNvbnN0IEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0
KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0OwogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMTM5OTM2ZTk3MTFjNDMwNDVlZmRjMDdjNzc0NDg0MmFm
ZGVlNDMuLmEyNjFlYWVmNGYyNGQxNmYxOTQ1NGRhNWEwYmY5NTNlN2ZiYjIyZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjcsMTYgKzY3LDE2
IEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCisjdW5kZWYgU1VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1IKICNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFt
ZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSku
dG9VSW50NjQoKSkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKGZtdCwgLi4uKSBVTlVTRURfVkFSSUFCTEUodGhpcykKLSNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMp
CisjZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBVTlVTRURf
VkFSSUFCTEUodGhpcykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQogI2Vsc2UKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJy
ZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRl
cigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0g
U3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTVUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxv
YWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9
JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBm
cmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChiCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7Cisg
ICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CkBAIC0xOTAsNyArMTkwLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5ldyByZXF1ZXN0IGlzIGludmFs
aWQiKTsKKyAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVx
dWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgbmV3IHJlcXVlc3Qg
aXMgaW52YWxpZCIpOwogICAgICAgICBjYW5jZWwoY2Fubm90U2hvd1VSTEVycm9yKCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtMjA0LDIwICsyMDQsMjAgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBhdXRv
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgcmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBuZXcgcmVxdWVzdCBp
cyBOVUxMICgxKSIpOworICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG5ldyByZXF1ZXN0IGlzIE5VTEwgKDEpIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6
IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7
CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5k
UmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVhY2hlZCB0
ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNw
b25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBz
dGF0ZTsgY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAgICBTVUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlYWNo
ZWQgdGVybWluYWwgc3RhdGU7IGNhbGxpbmcgY29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgyKSIpOwor
ICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHJlcXVlc3QgaXMg
TlVMTCAoMikiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNv
dXJjZSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdChy
ZXF1ZXN0KTsKIAotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CisgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcg
Y29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgfTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIAotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJl
Y3QiKTsKKyAgICAgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3Qg
YWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdCIpOwogCiAgICAgICAgICAgICAgICAgY2FuY2Vs
KGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CkBAIC0yNTAsMTcgKzI1MCwxNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjbwogICAgICAgICAgICAgb3BhcXVlUmVkaXJlY3RlZFJlc3BvbnNlLnNldFRhaW50aW5nKFJl
c291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgICAgICAgICBt
X3Jlc291cmNlLT5yZXNwb25zZVJlY2VpdmVkKG9wYXF1ZVJlZGlyZWN0ZWRSZXNwb25zZSk7CiAg
ICAgICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVk
IHRlcm1pbmFsIHN0YXRlIik7CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3
UmVxdWVzdCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQi
KTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQiKTsKIAogICAgICAgICAgICAg
TmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKICAgICAgICAgICAgIGRpZEZpbmlzaExv
YWRpbmcoZW1wdHlNZXRyaWNzKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3JlZGlyZWN0Q291
bnQrKyA+PSBvcHRpb25zKCkubWF4UmVkaXJlY3RDb3VudCkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
Y2FuY2VsZWQgYmVjYXVzZSB0b28gbWFueSByZWRpcmVjdHMiKTsKKyAgICAgICAgICAgIFNVQlJF
U09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3Vy
Y2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0cyIpOwogICAgICAgICAg
ICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51cmwoKSwgIlRv
byBtYW55IHJlZGlyZWN0aW9ucyJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkp
OwogICAgICAgICB9CkBAIC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
bwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnVwZGF0ZVJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKG1fcmVzb3VyY2UtPnR5
cGUoKSwgbmV3UmVxdWVzdCwgb3B0aW9ucygpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2Vs
ZWQgYmVjYXVzZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24gKHJlYWxseSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24pIHNhaWQgbm8iKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAo
cmVhbGx5IENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbikg
c2FpZCBubyIpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIXBvcnRBbGxvd2VkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9h
ZCAocmVkaXJlY3QpIGNhbmNlbGVkIGJlY2F1c2UgaXQgYXR0ZW1wdGVkIHRvIHVzZSBhIGJsb2Nr
ZWQgcG9ydCIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIChyZWRpcmVjdCkgY2FuY2VsZWQg
YmVjYXVzZSBpdCBhdHRlbXB0ZWQgdG8gdXNlIGEgYmxvY2tlZCBwb3J0Iik7CiAgICAgICAgICAg
ICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tl
ZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAgICAgICAgY2Fu
Y2VsKGZyYW1lTG9hZGVyKCktPmJsb2NrZWRFcnJvcihuZXdSZXF1ZXN0KSk7CkBAIC0yOTUsMTgg
KzI5NSwxOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3
UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJl
c291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRl
bmllZCBieSBDT1JTIHBvbGljeSIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2UgY3Jvc3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3ki
KTsKICAgICAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0
KCkudXJsKCksIGVycm9yTWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCkpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSAm
JiBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNob3VsZERlZmVySW1h
Z2VMb2FkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBi
ZWNhdXNlIGl0J3MgYW4gaW1hZ2UgdGhhdCBzaG91bGQgYmUgZGVmZXJlZCIpOworICAgICAgICAg
ICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgaXQncyBhbiBpbWFnZSB0aGF0IHNob3Vs
ZCBiZSBkZWZlcmVkIik7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogICAg
ICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUobmV3UmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QgPSBXVEZNb3ZlKGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGRvbmUg
bm90aWZ5aW5nIGNsaWVudHMiKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgZG9uZSBub3RpZnlpbmcg
Y2xpZW50cyIpOwogICAgICAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAg
ICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vy
dmljZVdvcmtlciAmJiByZXNwb25zZS51cmwoKSAhPSByZXF1ZXN0KCkudXJsKCkpIHsKICAgICAg
ICAgYXV0byYgbG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICAgICAgaWYgKCFsb2FkZXIuYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KG1f
cmVzb3VyY2UtPnR5cGUoKSwgcmVzcG9uc2UudXJsKCksIG9wdGlvbnMoKSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxv
YWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOworICAgICAgICAgICAg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2Vs
aW5nIGxvYWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOwogICAgICAg
ICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoeyB9LCAwLCByZXNwb25zZS51cmwoKSwgeyB9LCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogI2VuZGlm
CiAKICAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKHJlcXVl
c3QoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSBy
ZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEgbm9uLXJhbmdlIHJlcXVlc3QiKTsKKyAgICAgICAgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5n
IGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSByZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEg
bm9uLXJhbmdlIHJlcXVlc3QiKTsKICAgICAgICAgY2FuY2VsKFdURk1vdmUoKmVycm9yKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBDb20KICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkgewogICAgICAgICBp
ZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5lcnJvcigpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxp
bmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOworICAgICAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5j
ZWxpbmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOwogICAg
ICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgMCwgcmVxdWVzdCgpLnVybCgpLCBh
Y2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBt
dWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CiAgICAg
ICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVz
ZSBzb21ldGhpbmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOworICAgICAgICAgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNh
bmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1h
Z2UiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6dXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeVZhbHVl
KQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6Iik7CisgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6Iik7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC03
NDYsNyArNzQ2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICBtX3Jlc291cmNlLT5m
aW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogCiAgICAg
aWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNlbGVkIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTc1NiwxNiArNzU2LDE2IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1lCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7CiAKICAg
ICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CisgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFj
aGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogRGlkIG5vdCByZWFjaCB0ZXJtaW5h
bCBzdGF0ZSIpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hM
b2FkaW5nOiBEaWQgbm90IHJlYWNoIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgcmVsZWFzZVJlc291
cmNlcygpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6
ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRG
YWlsOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSks
IGVycm9yLmVycm9yQ29kZSgpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRv
IHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpCkBAIC04MDMsNyArODAzLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsQ2FuY2Vs
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bENhbmNlbDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBl
KCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcgdGltZSBvbiBp
T1MgYnV0CkBAIC04NTksMTQgKzg1OSwxNCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3Rp
ZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWRE
b25lKHR5cGUsIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibm90aWZ5RG9uZTogZG9jdW1lbnQgbG9h
ZGVyIGlzIG51bGwuIENvdWxkIG5vdCBjYWxsIGxvYWREb25lKCkiKTsKKyAgICAgICAgU1VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRl
ciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBsb2FkRG9uZSgpIik7CiAKICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyKQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0
eXBlLCB0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRlciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBy
ZW1vdmVTdWJyZXNvdXJjZUxvYWRlcigpIik7CisgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HX0VSUk9SKCJub3RpZnlEb25lOiBkb2N1bWVudCBsb2FkZXIgaXMgbnVsbC4gQ291
bGQgbm90IGNhbGwgcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIoKSIpOwogfQogCiB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKQEAgLTkxNyw1ICs5MTcsNSBAQCBjb25z
dCBIVFRQSGVhZGVyTWFwKiBTdWJyZXNvdXJjZUxvYWRlcjo6b3JpZ2luYWxIZWFkZXJzKCkgY29u
c3QKIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9JRAotI3VuZGVmIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggODRhMGZlMWUzMzk5YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2Jl
NC4uYmVmOWU3ZGM1YjE2ZTg1MDE2NTBkZGVlNmVkMGJkMmY4YzFiYTcxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC02MywxMyArNjMs
MTEgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCi0jdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENBQ0hFRFJF
U09VUkNFX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQo
KS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9J
RChmcmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9V
SW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUs
IC4uLikgUkVMRUFTRV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSks
IEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfQUxX
QVlTKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZTo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JFTEVB
U0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJj
ZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JF
TEVBU0VfTE9HX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNoZWRS
ZXNvdXJjZTo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSksICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTc0LDcgKzE3Miw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZygpCiB2b2lkIENhY2hlZFJl
c291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikK
IHsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyLmZyYW1lKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIpOworICAgICAg
ICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRygibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIp
OwogICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE5MiwxMSArMTkwLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgLy8gQmVhY29u
cyBhcmUgYWxsb3dlZCB0byBnbyB0aHJvdWdoIGluICdwYWdlaGlkZScgZXZlbnQgaGFuZGxlcnMu
CiAgICAgICAgICAgICBpZiAobV9vcHRpb25zLmtlZXBBbGl2ZSB8fCBzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2Zvcndh
cmQgY2FjaGUiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xP
R19XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2ZvcndhcmQgY2FjaGUiLCBm
cmFtZSk7CiAgICAgICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlOgotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBbHJlYWR5IGlu
IGJhY2svZm9yd2FyZCBjYWNoZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIENBQ0hFRFJFU09VUkNF
X1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEFscmVhZHkgaW4gYmFjay9mb3J3YXJkIGNh
Y2hlIiwgZnJhbWUpOwogICAgICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIwNiwxMSArMjA0LDExIEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVy
KQogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5
OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgIXNob3VsZFVzZVBp
bmdMb2FkKHR5cGUoKSkpIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGlm
IChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDogRmFpbGVk
IHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRlIGlzIHByb3Zpc2lvbmFsIiwgZnJhbWUpOworICAgICAg
ICAgICAgICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEZh
aWxlZCBzZWN1cml0eSBjaGVjayAtLSBzdGF0ZSBpcyBwcm92aXNpb25hbCIsIGZyYW1lKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKQot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDog
RmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7Cisg
ICAgICAgICAgICAgICAgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgibG9h
ZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5pc1N0b3BwaW5nKCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9X
SVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZlIGxvYWRlciBp
cyBzdG9wcGluZyIsIGZyYW1lKTsKKyAgICAgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZl
IGxvYWRlciBpcyBzdG9wcGluZyIsIGZyYW1lKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwpAQCAtMjg2
LDEwICsyODQsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlKGZy
YW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPih0aGlzKSwgZnJhbWVS
ZWYgPSBtYWtlUmVmKGZyYW1lKSwgbG9nZ2luZ0FsbG93ZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4m
JiBsb2FkZXIpIHsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
bG9hZFJlc291cmNlKGZyYW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pih0aGlzKSwgZnJhbWVSZWYgPSBtYWtlUmVmKGZyYW1lKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4mJiBsb2FkZXIpIHsKICAgICAgICAgbV9sb2FkZXIgPSBXVEZNb3ZlKGxvYWRlcik7CiAg
ICAgICAgIGlmICghbV9sb2FkZXIpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGxvZ2dp
bmdBbGxvd2VkLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6bG9hZDogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNv
dXJjZUxvYWRlciIsIHRoaXMsIFBBR0VfSUQoZnJhbWVSZWYuZ2V0KCkpLCBGUkFNRV9JRChmcmFt
ZVJlZi5nZXQoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3Bh
Z2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6Omxv
YWQ6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVzb3VyY2VMb2FkZXIiLCB0aGlzLCBQQUdFX0lEKGZy
YW1lUmVmLmdldCgpKSwgRlJBTUVfSUQoZnJhbWVSZWYuZ2V0KCkpKTsKICAgICAgICAgICAgIGZh
aWxCZWZvcmVTdGFydGluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00
NDgsNyArNDQ2LDcgQEAgU2Vjb25kcyBDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnMKIAogdm9pZCBDYWNoZWRSZXNv
dXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfQUxX
QVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIpOworICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9H
KCJyZWRpcmVjdFJlY2VpdmVkOiIpOwogCiAgICAgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xh
eWVyID0gdHJ1ZTsKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQpAQCAtOTQzLDYgKzk0MSw1
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAjdW5kZWYgUEFHRV9JRAogI3VuZGVmIEZSQU1F
X0lECi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRURfV0lUSF9GUkFNRQotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENB
Q0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDAzZDVhMGFlNDIxMDhjOTQ4NTYzODQ4MTMzNDU3
ODExNDQ4MjQyOC4uNjIwNTIxZTNmZTZhMjdiN2MxNmZlNWY3NTBkN2NlNjNiNmI3MDI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCwxMSArOTQsMTEgQEAKICNpbmNsdWRlICJEZXZpY2UuaCIKICNlbmRpZgog
Ci0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRChm
cmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVB
U0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0df
V0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtw
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZB
X0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OTcsNyArNTk3LDcgQEAgYm9v
bCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uIFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5v
dCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTYwNSwyMCArNjA1LDIwIEBAIGJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsCiAgICAgLy8gQnV0IHdlIGN1cnJlbnRseSBhbGxvdyBhdCBsZWFzdCBkYXRhIFVSTHMg
dG8gYmUgbG9hZGVkLgogCiAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OlNhbWVPcmlnaW4gJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRl
clJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0Iik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJjYW5S
ZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9y
aWdpbjo6Y2FuUmVxdWVzdCIpOwogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJs
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghYWxsb3dlZEJ5Q29u
dGVudFNlY3VyaXR5UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFs
bG93ZWQgYnkgY29udGVudCBwb2xpY3kiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxv
d2VkIGJ5IGNvbnRlbnQgcG9saWN5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBMYXN0IG9mIGFsbCwgY2hlY2sgZm9yIGluc2VjdXJlIGNvbnRlbnQuIFdlIGRvIHRo
aXMgbGFzdCBzbyB0aGF0IHdoZW4gZm9sa3MgYmxvY2sgaW5zZWN1cmUgY29udGVudCB3aXRoIGEg
Q1NQIHBvbGljeSwgdGhleSBkb24ndCBnZXQgYSB3YXJuaW5nLgogICAgIC8vIFRoZXknbGwgc3Rp
bGwgZ2V0IGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBhYm91dCBDU1AgYmxvY2tpbmcgdGhlIGxv
YWQuCiAgICAgaWYgKCFjaGVja0luc2VjdXJlQ29udGVudCh0eXBlLCB1cmwpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwg
d2FzIG5vdCBhbGxvd2VkIGJlY2F1c2UgY29udGVudCBpcyBpbnNlY3VyZSIpOworICAgICAgICBD
QUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVjYXVzZSBjb250ZW50IGlzIGluc2VjdXJlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg1NiwxMyArODU2LDEzIEBAIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1CiB7CiAgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCk7CiAgICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBmYWlsZWQgYmVj
YXVzZSBubyBmcmFtZSBvciBwYWdlIik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJyZXF1ZXN0UmVzb3VyY2U6IGZhaWxlZCBiZWNhdXNlIG5vIGZyYW1lIG9yIHBh
Z2UiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJJbnZhbGlkIGxvYWRlciBzdGF0ZSJfcyB9
KTsKICAgICB9CiAKICAgICBhdXRvJiBmcmFtZSA9ICp0aGlzLT5mcmFtZSgpOwogICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoInJlcXVlc3RSZXNvdXJjZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CisgICAgICAgIENB
Q0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJj
ZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiVVJM
IGlzIGludmFsaWQiX3MgfSk7CiAgICAgfQogCkBAIC04OTMsMTQgKzg5MywxNCBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdQogCiAgICAgLy8gV2UgYXJlIHBhc3NpbmcgdXJsIGFzIHdlbGwgYXMg
cmVxdWVzdCwgYXMgcmVxdWVzdCB1cmwgbWF5IGNvbnRhaW4gYSBmcmFnbWVudCBpZGVudGlmaWVy
LgogICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3Qub3B0aW9ucygpLCBmb3JQ
cmVsb2FkKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJl
cXVlc3RSZXNvdXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSIsIGZyYW1lKTsK
KyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgicmVx
dWVzdFJlc291cmNlOiBOb3QgYWxsb3dlZCB0byByZXF1ZXN0IHJlc291cmNlIiwgZnJhbWUpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2Ui
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgfQogCiAgICAg
aWYgKCFwb3J0QWxsb3dlZCh1cmwpKSB7CiAgICAgICAgIGlmIChmb3JQcmVsb2FkID09IEZvclBy
ZWxvYWQ6Ok5vKQogICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydEJsb2NrZWRMb2FkRmFp
bGVkKGZyYW1lLCB1cmwpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIGhhcyBhIGJsb2Nr
ZWQgcG9ydCIsIGZyYW1lKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRSgiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwg
aGFzIGEgYmxvY2tlZCBwb3J0IiwgZnJhbWUpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZnJhbWUubG9hZGVyKCkuYmxvY2tlZEVycm9yKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
KTsKICAgICB9CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQog
ICAgICAgICBib29sIG1hZGVIVFRQUyA9IHJlc3VsdHMuc3VtbWFyeS5tYWRlSFRUUFM7CiAgICAg
ICAgIHJlcXVlc3QuYXBwbHlSZXN1bHRzKFdURk1vdmUocmVzdWx0cyksICZwYWdlKTsKICAgICAg
ICAgaWYgKGJsb2NrZWRMb2FkKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
X1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50
IGJsb2NrZXIiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJyZXF1ZXN0UmVzb3VyY2U6IFJlc291cmNlIGJsb2NrZWQgYnkg
Y29udGVudCBibG9ja2VyIiwgZnJhbWUpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgewogICAgICAgICAgICAgICAgIGF1dG8gcmVz
b3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBwYWdlLnNlc3Np
b25JRCgpLCAmcGFnZS5jb29raWVKYXIoKSwgcGFnZS5zZXR0aW5ncygpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzb3VyY2UpOwpAQCAtMTYxNCwxNCArMTYxNCw5IEBAIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnRMb2FkZXIgPyBtX2RvY3VtZW50TG9hZGVyLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7Ci19Ci0KIH0KIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9J
RAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VEX1dJVEhfRlJBTUUKKyN1bmRlZiBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RworI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
aW5kZXggZTQ1YzA5NTkzMTFkNjU2YWYyNzEzMjE5NTMwNjZmM2U0YmQ1MzRjOS4uOTRlMTgyZDlh
MDE5MTBlMTkzOTZkYTU5MmIxZDk2ODg1ZGNjYjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTE2NCw4ICsxNjQsNiBA
QCBwdWJsaWM6CiAKICAgICBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uJiByZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9yZXNvdXJjZVRpbWluZ0luZm87IH0KIAotICAgIGJv
b2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlciYga2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIoKSB7IHJldHVybiBtX2tlZXBhbGl2
ZVJlcXVlc3RUcmFja2VyOyB9CiAKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiB2aXNpYmxl
UmVzb3VyY2VzVG9Qcmlvcml0aXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDFhZjI3ZDg0
ZjM1YWYwZDNiYTFmYjlkYmFmYTMxZTQzYzY2NjEzMzIuLjY5ZWJiNDU0Y2E1MzRjNDg4NGJhNTI5
ZTk5ZDRjNzM4MjQ0OWQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTIsNyArMTEyLDcg
QEAKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNlbmRpZgogCi0j
ZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAi
JXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FX1JF
TEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihj
aGFubmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVz
ZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2Ny
aXB0CiAgICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclBy
aXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMt
PmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiaW5qZWN0VXNlclNjcmlw
dEltbWVkaWF0ZWx5OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAt
Ym91bmQgZG9tYWluIik7CisgICAgICAgIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcs
ICJpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBsb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CkBA
IC0xMDQ0LDExICsxMDQ0LDYgQEAgdm9pZCBGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JD
aGFuZ2VkKCkKICAgICAgICAgcm9vdC0+Y29tcG9zaXRvcigpLmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpOwogfQogCi1ib29sIEZyYW1lOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSBjb25zdAotewotICAgIHJldHVybiBwYWdlKCkgJiYgcGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKLX0KLQogdm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluRnJhbWUoKSk7CkBAIC0xMTQ2LDQgKzExNDEsNCBAQCBEYXRhRGV0ZWN0aW9uUmVz
dWx0c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRl
ZiBGUkFNRV9SRUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDM3YjFhZjIxMWUz
NDA5NzRlMGM1MjdiZWU4YjE3M2I2NjY4ZWVlMGMuLmYwNzQzZTkzOTc1N2Y2NzJhNzI3NmZhYmUz
YjY1OTZlMzE3OWFlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw4ICszMDMsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAg
IGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNv
bnN0OwotCiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQ
cmV3YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBjMWQzZDdmOGFhN2JhMWMwMjRjM2U4MzgyMWM0M2YxN2QwZTUzODAxLi41ODEwODNlNmYz
NGM2MjE4Y2UwNTRkYTkwZTJiZmJiNDI1MmU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xMzcsNyArMTM3LDcgQEAKIAogI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRV9J
RCBmcmFtZSgpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQo
KQotI2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlz
LCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19f
KQorI2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPnNl
c3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6
OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAj
I19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDE3MTI3NTlmNjNjMjZlZGYxNDUyMTcyYTg5MWEzZDJlYTAzNDBiYjAuLjJjNjk1MWMyNGQ3
YWVhNTg3MzI3NmQxZGIyN2UwMWQzYTM3MTE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEz
NywxMSArMzEzNyw2IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKIH0KICNlbmRpZgogCi1ib29sIFBhZ2U6OmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiBTdHJpbmcgUGFnZTo6Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0
eWxlU2hlZXQoKQogewogICAgIHJldHVybiBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNo
ZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCBiZDAzNmEyZmQ1ZDc0MGYxMWEyMTZmOTY4ZmU3ZDVkM2Ew
MjNkYThiLi5kNjcxZTc4YWFlOTYwYTk3Njc2YmExYjkxMjMzZGQ4MmQ3NmE4OTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtNzgzLDggKzc4Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udHJvbGxl
ZEJ5QXV0b21hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsg
fQogICAgIHZvaWQgc2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpIHsg
bV9jb250cm9sbGVkQnlBdXRvbWF0aW9uID0gY29udHJvbGxlZDsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQogICAgIFN0cmlu
ZyBjYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpOwogICAgIHZvaWQgc2V0Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAppbmRleCAwZmM2ZDZkYmVmODI0Yzg0ZWQ1
M2ZlZjg2NmQ2ZjZhMjNhMWIzZDc1Li44ZTQ5YzJmY2NmY2M0ZTFiNTlhZGY1MDQwODQzZDVkNTRi
NDQyNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCkBA
IC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2Uu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9u
aXRvcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5zZXNzaW9u
SUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUGVyZm9ybWFu
Y2VNb25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBTZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSB7IDVfcyB9Owogc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBTZWNvbmRzIHBvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0
aW9uIHsgMTBfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ4NGMwYmVkMzZiMmZlY2ExZmU4MGViNmRm
MmMzMGQwMzBlZDIxODYuLmVjZDQwNTJlYWMwMzgwMjgyNTVhNzg2MjM2ZTE5Njk4NTNhZmExZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJl
c291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKLSNk
ZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJ
dTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICJdIFdlYlJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIl
cCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNl
SUQ9JSIgUFJJdTY0ICJdIFdlYlJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgIyNfX1ZBX0FS
R1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTEwMCwyMCArMTAwLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6CiAgICAgcHJvcG9zZWRS
ZXF1ZXN0LnNldEhUVFBCb2R5KHByb3Bvc2VkUmVxdWVzdEJvZHkudGFrZURhdGEoKSk7CiAKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6Iik7
CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDoiKTsK
IAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVMb2FkZXIuZ2V0KCks
IHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5
YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOworICAgICAgICBXRUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5
IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVl
c3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZp
ZXIiKTsKKyAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2Vu
ZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZp
ZXIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Iik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxs
U2VuZFJlcXVlc3Q6IHJldHVybmluZyBDb250aW51ZVdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KHJlcXVlc3QsIG1fY29yZUxvYWRlci0+aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMoKSkpOwogICAgIH0pOwogfQpAQCAtMTI2LDEyICsxMjYsMTIgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzVG9CZVMKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMnLiBTdGF0dXMgJWQu
IiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkKSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9u
c2U6IChodHRwU3RhdHVzQ29kZT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAog
ICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBp
ZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
Lm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25z
ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNo
ZWQiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVS
ZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVh
ZHkgY2FjaGVkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAm
JiBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNv
cmVMb2FkZXIgb3Igbm8gSUQiKTsKKyAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1
c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTU3
LDcgKzE1Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgICAgIG1faW50ZXJjZXB0
Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVk
UmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
b3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8
ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJj
ZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CisgICAgICAgICAgICAg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90
IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElE
Iik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9u
c2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlCiAgICAgfQogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRh
Iik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0
YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBk
YXRhLnNpemUoKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3Jl
TG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKGxlbmd0aD0lemQpIiwgbV9udW1C
eXRlc1JlY2VpdmVkKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkRmlu
aXNoUmVzb3VyY2VMb2FkOiAobGVuZ3RoPSV6ZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAg
ICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmV0d29ya0xvYWRNZXRyaWNzXSgpIG11dGFibGUgewpAQCAtMjQy
LDcgKzI0Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxTZXJ2aWNlV29ya2Vy
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
OiIpOworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJzZXJ2aWNlV29ya2VyRGlk
Tm90SGFuZGxlOiIpOwogCiAgICAgQVNTRVJUKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZp
Y2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpOwogICAgIGF1dG8gZXJy
b3IgPSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90
SGFuZGxlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2Nv
cmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKKyAgICBXRUJSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKIAogICAgIGlmIChVTkxJ
S0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpKSkgewogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGVycm9yXSgpIG11dGFibGUgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRl
ci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIpOworICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIp
OwogCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7
CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9h
ZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlBy
b2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09y
Q29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5p
ZWQ6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInN0b3BMb2FkaW5nQWZ0
ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6Iik7CiAKICAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVy
KCksIHJlc3BvbnNlKTsKIH0KQEAgLTI5MywxMyArMjkzLDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3Qg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICcl
cyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiIpOworICAgIFdFQlJF
U09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6Iik7CiAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNy
ZWF0ZSBTaGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9h
ZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdl
KCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dE
aWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFs
RXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRC
dWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CkBAIC0zMjIsMTEg
KzMyMiw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJS
ZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gcmVzb3VyY2VMb2FkZXIoKSAmJiByZXNvdXJjZUxvYWRlcigpLT5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQuLjM1
NTIwMWI5NzA0MzVjNTRkNTRiM2ZiZjllNDQyYWNkMmJjYjJiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtNzEs
OCArNzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiAK
LSAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiBwcml2YXRlOgog
ICAgIFdlYlJlc291cmNlTG9hZGVyKFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgY29u
c3QgVHJhY2tpbmdQYXJhbWV0ZXJzJik7CiAK
</data>
<flag name="commit-queue"
          id="452912"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431213</attachid>
            <date>2021-06-11 11:16:22 -0700</date>
            <delta_ts>2021-06-11 11:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226929-20210611111621.patch</filename>
            <type>text/plain</type>
            <size>117957</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2NmE3NWVkMzYyOWNi
YWM4NTY2NTI4NWQ4YzcyY2QwY2M2MmViYS4uNmNmODY2MzVkMzQ5MTgxNjlkMzI5N2QxZmJmYWZj
YmFjYTFlOTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wNi0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSByZWxlYXNlIGxv
Z2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgcmVsZWFzZSBs
b2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2ViQ29yZSwgdG8gZmFj
aWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhbk5hdmlnYXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5n
U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpc2Fs
bG93RGF0YVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9y
TG9hZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BGb3JC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXREb2N1
bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRo
aXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3ND
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dy
ZXNzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRE
YXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nT25lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5jcHA6CisKIDIwMjEtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBFdmVudFNvdXJjZS5jb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhj
ZXB0aW9uIHdoZW4gdGhlIHVybCBwYXJhbSBpcyBhbiBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTJjOGI5NTQyNjNmYjcxYmU3MWU4ODhiNTBkZDgzMDgwOTRkNmEzYi4uMDY0YzAwNmJlODI1OGMz
NmZkNTA4YmU4YTg5Yzg5NGU5ZjQ5NzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MS0wNi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJs
ZSByZWxlYXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgcmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2Vi
Q29yZSwgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIxLTA2LTExICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIENyYXNoIHdo
ZW4gZHJhZ2dpbmcgYW4gYWNjb3VudCBub2RlIGFib3ZlIFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWRmYjM4YWVmYmU5
ZjcyNDc0ZGFmNzI3YWZlZGM0YTZjODYzODcyZC4uNjY4NDg2ZmQ4N2ZjZmU0NGUyOGMxYzVkMWE3
NjgyY2I5YmFlNzIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYobV9mcmFtZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
U2NyaXB0Q29udHJvbGxlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFND
UklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFNjcmlwdENvbnRyb2xsZXI6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpAQCAtNTg1LDcgKzU4NSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICAgICBpZiAo
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CisgICAgICAgIFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywg
ImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
LWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfQogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwpAQCAtODcwLDQgKzg3MCw0IEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI3Vu
ZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBTQ1JJUFRDT05UUk9MTEVS
X1JFTEVBU0VfTE9HX0VSUk9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGVhOTE4OTAx
ZmVkZGJlNTc0YzUxM2NiNjNiMDIwYWQzZGJkMzQ2Li5mNDJhNTU4OTk1OWYyMjRmMDk2YjIzMTdj
NWMxZGFlNGY4OGQzN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM0NCw4ICszNDQs
OCBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZh
bHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3Vt
ZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9H
X0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAg
LSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1
bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUlu
dDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzUzNyw3ICszNTM3LDcgQEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2
aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogCiAg
ICAgaWYgKGlzTmF2aWdhdGlvbkJsb2NrZWRCeVRoaXJkUGFydHlJRnJhbWVSZWRpcmVjdEJsb2Nr
aW5nKCp0YXJnZXRGcmFtZSwgZGVzdGluYXRpb25VUkwpKSB7CiAgICAgICAgIHByaW50TmF2aWdh
dGlvbkVycm9yTWVzc2FnZSgqdGFyZ2V0RnJhbWUsIHVybCgpLCAiVGhlIGZyYW1lIGF0dGVtcHRp
bmcgbmF2aWdhdGlvbiBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdyBpcyBjcm9zcy1vcmlnaW4gb3Ig
dW50cnVzdGVkIGFuZCB0aGUgdXNlciBoYXMgbmV2ZXIgaW50ZXJhY3RlZCB3aXRoIHRoZSBmcmFt
ZS4iX3MpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJO
YXZpZ2F0aW9uIHdhcyBwcmV2ZW50ZWQgYmVjYXVzZSBpdCB3YXMgdHJpZ2dlcmVkIGJ5IGEgY3Jv
c3Mtb3JpZ2luIG9yIHVudHJ1c3RlZCBpZnJhbWUiKTsKKyAgICAgICAgRE9DVU1FTlRfUkVMRUFT
RV9MT0dfRVJST1IoTG9hZGluZywgIk5hdmlnYXRpb24gd2FzIHByZXZlbnRlZCBiZWNhdXNlIGl0
IHdhcyB0cmlnZ2VyZWQgYnkgYSBjcm9zcy1vcmlnaW4gb3IgdW50cnVzdGVkIGlmcmFtZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NzM3LDExICs4NzM3LDYgQEAgYm9v
bCBEb2N1bWVudDo6c2hvdWxkSWdub3JlU3luY1hIUnMoKSBjb25zdAogICAgIHJldHVybiBtX251
bWJlck9mUmVqZWN0ZWRTeW5jWEhScyA+IG1heFJlamVjdGVkU3luY1hIUnNQZXJFdmVudExvb3BJ
dGVyYXRpb247CiB9CiAKLWJvb2wgRG9jdW1lbnQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2ZyYW1lIHx8IG1fZnJhbWUtPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogYm9vbCBEb2N1bWVu
dDo6aXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0CkBAIC04ODU5LDUgKzg4NTQsNSBAQCBKU0M6OlZN
JiBEb2N1bWVudDo6dm0oKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCisjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0df
RVJST1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjQ3MWE2M2NmNTg2YzgyMzE1ZTJkNjUwZjAw
ZDk5ZTY5NjY1NTZmNS4uOWRhMDRlN2Y3YWE4NTFkMGI4ZjcwYTk1OWU3NjdhOWNkMGI0MTcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQxNCw4ICs0MTQsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSk7CiAgICAgUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5LnZh
bHVlX29yKFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KIAotICAg
IGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IERPTUltcGxlbWVudGF0aW9uJiBpbXBsZW1lbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNWY0YzdhZWNjZGY2NDZkYWM2MDUwZDA0YjRlOWEz
YmQzNjQyNDJlYi4uMzY3Njc1NzQxMDg5YTQ5ODg3MGFhOWUxNmEyMGI0MTliZWUwZWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAKICNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9v
cihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVm
aW5lIEZSQU1FX0lEICgobV9mcmFtZSA/IG1fZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFt
ZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUg
SVNfTUFJTl9GUkFNRSAobV9mcmFtZSA/IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSkK
LSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJ
dTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lE
LCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRMb2FkZXJBZGRpdGlvbnMu
Y3BwPgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCiAgICAgaWYgKHNob3VsZE5vdGlmeUFib3V0UHJv
dmlzaW9uYWxVUkxDaGFuZ2UpIHsKICAgICAgICAgLy8gTG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzU0ODMwMjMzPi4KICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2Fk
ZXIiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExv
YWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIiKTsK
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNp
b25hbFVSTCgpOwogICAgIH0KIH0KQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxKQogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB7CiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19j
YXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBET0NV
TUVOVExPQURFUl9SRUxFQVNFX0xPRygic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBj
b2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwogCiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKICAgICBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5zZXRNYWluRG9jdW1lbnRFcnJvcih0aGlzLCBlcnJvcik7CkBAIC0y
NzAsNyArMjcwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIm1haW5SZWNlaXZl
ZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUo
KSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coIm1haW5SZWNlaXZlZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxp
bnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIEFTU0VSVCghbWFp
blJlc291cmNlTG9hZGVyKCkpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lk
IERvY3VtZW50TG9hZGVyOjpmcmFtZURlc3Ryb3llZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkOiBtX2ZyYW1lPSVwIiwgbV9m
cmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9h
ZGVyOjpmcmFtZURlc3Ryb3llZDogbV9mcmFtZT0lcCIsIG1fZnJhbWUuZ2V0KCkpOwogICAgIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKIH0KIApAQCAtMzAyLDcg
KzMwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkKCkKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2Fk
aW5nOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZzogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZSkKQEAg
LTM2Niw3ICszNjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAKICAg
ICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgYmVlbiBkZXRhY2hlZCBmcm9tIHRoaXMgZG9jdW1lbnQg
YnkgdGhlIG9udW5sb2FkIGhhbmRsZXIKICAgICBpZiAoYXV0byogZnJhbWVMb2FkZXIgPSBEb2N1
bWVudExvYWRlcjo6ZnJhbWVMb2FkZXIoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdG9wTG9hZGluZzogY2FuY2VsaW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FE
RVJfUkVMRUFTRV9MT0coInN0b3BMb2FkaW5nOiBjYW5jZWxpbmcgbG9hZCIpOwogICAgICAgICBp
ZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAgICAgIC8vIFN0b3AgdGhlIG1h
aW4gcmVzb3VyY2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2Uu
CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyLT5jYW5jZWxs
ZWRFcnJvcihtX3JlcXVlc3QpKTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2FkTQogICAgIH0KIAogICAgIGlmICghbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3Io
KS5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibm90aWZ5RmluaXNo
ZWQ6IGNhbmNlbGluZyBsb2FkICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4o
bV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS50eXBlKCkpLCBtX21haW5SZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIm5vdGlmeUZpbmlzaGVkOiBjYW5jZWxpbmcgbG9hZCAodHlwZT0lZCwgY29kZT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkudHlw
ZSgpKSwgbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5lcnJvckNvZGUoKSk7CiAKICAg
ICBtYWluUmVjZWl2ZWRFcnJvcihtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKIH0K
QEAgLTYyNywxMSArNjI3LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAgICAvLyBM
b2dnaW5nIGZvciA8cmRhcjovL3Byb2JsZW0vNTQ4MzAyMzM+LgogICAgIGlmICghZnJhbWVMb2Fk
ZXIoKSB8fCAhZnJhbWVMb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJv
dmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIik7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlID0gIXJlZGlyZWN0
UmVzcG9uc2UuaXNOdWxsKCk7CiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFj
dGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1ZXN0LnVybCgpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
OiBjYW5jZWxpbmcgLSBmb3JtIGFjdGlvbiBub3QgYWxsb3dlZCBieSBDU1AiKTsKKyAgICAgICAg
RE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogY2FuY2VsaW5nIC0g
Zm9ybSBhY3Rpb24gbm90IGFsbG93ZWQgYnkgQ1NQIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtNjQyLDEzICs2NDIsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAg
Ly8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCiAgICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
cmVkaXJlY3RpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3BvbnNl
LnVybCgpKSk7CiAgICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4uZ2V0KCkuY2FuRGlzcGxh
eShuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVjdGluZyBVUkwgbm90IGFsbG93
ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CisgICAgICAgICAgICBET0NVTUVO
VExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVj
dGluZyBVUkwgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CiAg
ICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0
KCksIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgY2FuY2VsTWFpblJl
c291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwb3J0QWxsb3dlZChuZXdSZXF1ZXN0LnVybCgpKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7Cisg
ICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0QmxvY2tlZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAg
ICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5ibG9ja2VkRXJyb3Io
bmV3UmVxdWVzdCkpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRy
eUxvYWRpbmdTdWJzdGl0dXRlRGF0YSgpCiAgICAgaWYgKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFs
aWQoKSB8fCAhbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmlu
ZyBzdWJzdGl0dXRlIGRhdGEiKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3Rh
cnRMb2FkaW5nTWFpblJlc291cmNlOiBSZXR1cm5pbmcgc3Vic3RpdHV0ZSBkYXRhIik7CiAgICAg
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVlc3QpOwogICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgbV9yZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCksIG51bGxwdHIpOwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6ZGlzYWxsb3dEYXRhUmVxdWVzdCgpIGNvbnN0CiAKICAgICAgICAgY3VycmVudERv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiTm90IGFsbG93ZWQgdG8gbmF2aWdhdGUgdG9wIGZy
YW1lIHRvIGRhdGEgVVJMICciLCBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiJy4iKSwgaWRlbnRpZmllcik7CiAgICAgfQotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5OiBjYW5ub3Qgc2hvdyBVUkwi
KTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3k6IGNhbm5vdCBzaG93IFVSTCIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
ZnJhbWUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVBZnRlckNv
bnRlbnRQb2xpY3k6IHBvbGljeUFjdGlvbj0laSByZWNlaXZlZCBieSBEb2N1bWVudExvYWRlciB3
aXRoIG51bGwgZnJhbWUiLCAoaW50KXBvbGljeSk7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JF
TEVBU0VfTE9HKCJjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogcG9saWN5QWN0aW9uPSVpIHJl
Y2VpdmVkIGJ5IERvY3VtZW50TG9hZGVyIHdpdGggbnVsbCBmcmFtZSIsIChpbnQpcG9saWN5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6IHsKICAgICAgICAgLy8gbV9tYWlu
UmVzb3VyY2UgY2FuIGJlIG51bGwsIGUuZy4gd2hlbiBsb2FkaW5nIGEgc3Vic3RpdHV0ZSByZXNv
dXJjZSBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLgogICAgICAgICBpZiAoIW1fbWFpblJlc291cmNl
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZUFmdGVyQ29u
dGVudFBvbGljeTogY2Fubm90IHNob3cgVVJMIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURF
Ul9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQb2xpY3k6IGNhbm5vdCBzaG93IFVS
TCIpOwogICAgICAgICAgICAgbWFpblJlY2VpdmVkRXJyb3IoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0xMzcxLDEyICsxMzcxLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmF0
dGFjaFRvRnJhbWUoRnJhbWUmIGZyYW1lKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YXR0YWNoVG9G
cmFtZSgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIkRvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5n
ZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjph
dHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZTogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOworICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiAKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGlmIChtX2hhc0V2ZXJCZWVuQXR0YWNoZWQpCkBAIC0xOTIyLDcg
KzE5MjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2Uo
KQogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBp
ZiAobWF5YmVMb2FkRW1wdHkoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmluZyBlbXB0eSBkb2N1bWVudCIpOworICAg
ICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNl
OiBSZXR1cm5pbmcgZW1wdHkgZG9jdW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKCkKIAogICAgICAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBv
dXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGlu
ZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgogICAgICAgICBpZiAoIW1fZnJhbWUgfHwgbV9yZXF1ZXN0
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExv
YWRpbmdNYWluUmVzb3VyY2U6IExvYWQgY2FuY2VsZWQgYWZ0ZXIgd2lsbFNlbmRSZXF1ZXN0Iik7
CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFp
blJlc291cmNlOiBMb2FkIGNhbmNlbGVkIGFmdGVyIHdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NTAsMzAgKzE5NTAsMzAgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIHJlbG9hZCB0aGUgY2FjaGUgbGF5ZXIgbWlnaHQgaGF2ZSBtYWRlIHRoZSBwcmV2
aW91cyByZXF1ZXN0IGNvbmRpdGlvbmFsLiBEb2N1bWVudExvYWRlciBjYW4ndCBoYW5kbGUgMzA0
IHJlc3BvbnNlcyBpdHNlbGYuCiAgICAgICAgIHJlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsK
IAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2U6IFN0YXJ0aW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0co
InN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogU3RhcnRpbmcgbG9hZCIpOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAobV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+Y2Fu
TG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0KSB8fCBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbWF0
Y2hSZWdpc3RyYXRpb24odXJsLCBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoYXV0byYmIHJlZ2lzdHJhdGlv
bkRhdGEpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghbV9tYWluRG9jdW1lbnRFcnJv
ci5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVz
ZSBvZiBtYWluIGRvY3VtZW50IGVycm9yICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0
PGludD4obV9tYWluRG9jdW1lbnRFcnJvci50eXBlKCkpLCBtX21haW5Eb2N1bWVudEVycm9yLmVy
cm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSBjYWxsYmFjazogTG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG9mIG1haW4gZG9jdW1lbnQgZXJyb3IgKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nh
c3Q8aW50PihtX21haW5Eb2N1bWVudEVycm9yLnR5cGUoKSksIG1fbWFpbkRvY3VtZW50RXJyb3Iu
ZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghbV9mcmFtZSkgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJh
Y2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBubyBmcmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNlIGNh
bGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm8gZnJhbWUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpOwog
ICAgICAgICAgICAgICAgIC8vIFByZWZlciBleGlzdGluZyBzdWJzdGl0dXRlIGRhdGEgKGZyb20g
V0tXZWJWaWV3LmxvYWREYXRhIGV0Yykgb3ZlciBzZXJ2aWNlIHdvcmtlciBmZXRjaC4KICAgICAg
ICAgICAgICAgICBpZiAodGhpcy0+dHJ5TG9hZGluZ1N1YnN0aXR1dGVEYXRhKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2FkaW5nTWFpblJl
c291cmNlIGNhbGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2Ygc3Vic3RpdHV0ZSBkYXRh
Iik7CisgICAgICAgICAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBz
dWJzdGl0dXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSAmJiB0aGlzLT50cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIp
OworICAgICAgICAgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNo
ZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHRoaXMtPmxvYWRNYWluUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CkBA
IC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWlu
UmVzb3VyY2UoKQogICAgICAgICB9CiAjZWxzZQogICAgICAgICBpZiAodHJ5TG9hZGluZ1JlcXVl
c3RGcm9tQXBwbGljYXRpb25DYWNoZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IExvYWRlZCBmcm9tIEFwcGxpY2F0aW9u
IENhY2hlIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogICAgICAgICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgZ29uZSBhd2F5IGlmIHRo
aXMgbG9hZCB3YXMgY2FuY2VsbGVkIHN5bmNocm9ub3VzbHkgYW5kIHRoaXMgd2FzIHRoZSBsYXN0
IHBlbmRpbmcgbG9hZC4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHdlIG1heSBoYXZlIGZp
cmVkIHRoZSBsb2FkIGV2ZW50IGluIGEgcGFyZW50IGZyYW1lLgogICAgICAgICBpZiAoIW1fZnJh
bWUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWRNYWluUmVzb3Vy
Y2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIGZyYW1lIGhhcyBnb25lIGF3YXkiKTsK
KyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291cmNl
OiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCBmcmFtZSBoYXMgZ29uZSBhd2F5Iik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fcmVxdWVzdC51
cmwoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxv
YWRNYWluUmVzb3VyY2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIFVSTCBpcyBpbnZh
bGlkIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygibG9hZE1haW5S
ZXNvdXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgVVJMIGlzIGludmFsaWQiKTsK
ICAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZE1haW5SZXNv
dXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgcmV0dXJuaW5nIGVtcHR5IGRvY3Vt
ZW50Iik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291
cmNlOiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCByZXR1cm5pbmcgZW1wdHkgZG9jdW1l
bnQiKTsKIAogICAgICAgICBzZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAg
Ly8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBv
c3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApAQCAtMjA2Niw3ICsyMDY2LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAobV9tYWluUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS5kb21haW4oKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0
Q29udGVudEJsb2NrZXJEb21haW4pIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
bG9hZE1haW5SZXNvdXJjZTogQmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgZXJyb3IiKTsKKyAg
ICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coImxvYWRNYWluUmVzb3VyY2U6IEJsb2Nr
ZWQgYnkgY29udGVudCBibG9ja2VyIGVycm9yIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihtX3JlcXVl
c3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMDQsNyArMjEwNCw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgp
ID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KSA6IHJlc291cmNlRXJy
b3I7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY2FuY2Vs
TWFpblJlc291cmNlTG9hZDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50Pihl
cnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBtX2RhdGFMb2FkVG9rZW4u
Y2xlYXIoKTsKIApAQCAtMjI4MiwxMSArMjI4Miw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFk
ZFBlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3Rvcihjb25zdCBTdHJpbmcm
CiB9CiAjZW5kaWYKIAotYm9vbCBEb2N1bWVudExvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fZnJhbWUgfHwgbV9mcmFtZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6cHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3
M2NlMDg1Mi4uZTY5MzUzMmViZDY0ZjVjMDQyYzdjMzdkODM5MTg5NTk3ZDZlNjkwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM4NSw4ICszODUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKLQogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZm
ZXIqKT4mJik7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFy
ZWRCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQwMjdi
MjI2ZWIyNjZiNjk0NWFmMDAyNDVlZmViNGQyZWNlNTlkMWIuLmQ3MTNmN2RkNGE0OTJjZmMzNmE4
M2UxMGRhMjYyMTNkYWJlMjc1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTUyLDggKzE1Miw4IEBACiAKICNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRCAoKGZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVmaW5l
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBb
cGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxv
YWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1l
KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0Vf
SUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBt
X2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihj
aGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBt
YWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2Zy
YW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZVJlcXVlc3Qs
IEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGFuZ2VMb2NhdGlvbjogZnJh
bWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VM
b2FkaW5nLCAiY2hhbmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgIEFTU0VS
VChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsK
IAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKQEAgLTk0Miw3ICs5NDIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NhbGxJbXBsaWNpdENsb3NlKCkKIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZFVSTEludG9DaGlsZEZyYW1lOiBm
cmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJj
ZUxvYWRpbmcsICJsb2FkVVJMSW50b0NoaWxkRnJhbWU6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwog
CiAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVyZXIsIEYKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUmVmPEFyY2hp
dmU+JiYgYXJjaGl2ZSkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KFJlc291cmNlTG9hZGluZywgImxvYWRBcmNoaXZlOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkQXJjaGl2ZTog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJj
ZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIEFTU0VSVChtYWluUmVzb3VyY2UpOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZvckNv
b2tpZXMoY29uc3QgVVJMJiB1cmwpCiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBVUkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0
aGluZyB0byBkby4KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBV
UkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05h
dmlnYXRpb24pCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNv
dXJjZUxvYWRpbmcsICJsb2FkSW5TYW1lRG9jdW1lbnQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwor
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRJblNhbWVE
b2N1bWVudDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Rh
dGUgb2JqZWN0LCB3ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VS
VCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKQEAg
LTExOTIsNyArMTE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQoKQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInByZXBhcmVGb3JMb2FkU3RhcnQ6
IFN0YXJ0aW5nIGZyYW1lIGxvYWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJwcmVwYXJlRm9yTG9hZFN0YXJ0OiBTdGFydGluZyBmcmFtZSBsb2FkIik7
CiAKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NTdGFydGVkKCk7CiAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKQEAgLTEyMTAsMTQgKzEyMTAs
MTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKICAgICBtX2NsaWVudC0+
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIHNl
dFN0YXRlKEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9kb2N1bWVudExv
YWRlciA9IG51bGxwdHI7CiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgc3RkOjpvcHRpb25hbDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRG
cmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVB
U0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3Rh
cnRlZCIpOwogCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24gYXdheSBp
bnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExvYWRlci4K
ICAgICBhdXRvIHByb3RlY3RGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CkBAIC0xMjI2LDEzICsx
MjI2LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmCiAKICAgICBBU1NFUlQobV9mcmFtZS5k
b2N1bWVudCgpKTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4oKS5j
YW5EaXNwbGF5KHVybCkpIHsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkRnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBOb3Qg
YWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291cmNlIik7CisgICAgICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGNhbmNlbGluZyAt
IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2UiKTsKICAgICAgICAgcmVwb3J0TG9j
YWxMb2FkRmFpbGVkKCZtX2ZyYW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFwb3J0QWxsb3dlZCh1cmwp
KSB7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VM
b2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogY2FuY2VsaW5nIC0gcG9ydCBub3QgYWxsb3dlZCIp
OworICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2Fk
RnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBwb3J0IG5vdCBhbGxvd2VkIik7CiAgICAgICAgIHJl
cG9ydEJsb2NrZWRMb2FkRmFpbGVkKG1fZnJhbWUsIHVybCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBib29sIEZyYW1lTG9hZGVyOjppc1N0b3BMb2FkaW5n
QWxsb3dlZCgpIGNvbnN0CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVx
dWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9h
ZFR5cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogICAgIEFTU0VSVChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSA9PSAiR0VUIik7CiAKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0x
NDIyLDcgKzE0MjIsNyBAQCBTdWJzdGl0dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0
aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRnJhbWVMb2FkUmVxdWVzdCk6
IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291
cmNlTG9hZGluZywgImxvYWQgKEZyYW1lTG9hZFJlcXVlc3QpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMgfHwgbV9pbkNsZWFyUHJvdmlzaW9uYWxM
b2FkRm9yUG9saWN5Q2hlY2spCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzAsNyArMTQ3MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24mJiBhY3Rpb24sIEZyYW1lTG9hZFR5cGUg
dHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbjog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAibG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURv
Y3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0
LnVybCgpKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIGFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgp
LCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKQEAgLTE0ODcsNyArMTQ4
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
RG9jdW1lbnRMb2FkZXImIG5ld0RvY3VtZW50TG9hZGVyKQogewotICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRG9jdW1lbnRMb2Fk
ZXIpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJsb2FkIChEb2N1bWVudExvYWRlcik6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVz
dCgpOwogICAgIC8vIEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCkBA
IC0xNTMwLDcgKzE1MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVy
JiBuZXdEb2N1bWVudExvYWRlcikKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFJlZlB0
cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0
YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJs
b2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAogICAgIC8vIFJl
dGFpbiBiZWNhdXNlIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0x
NTYwLDcgKzE1NjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgIC8vIExvZyBtYWlu
IGZyYW1lIG5hdmlnYXRpb24gdHlwZXMuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxv
YWRXaXRoRG9jdW1lbnRMb2FkZXI6IG1haW4gZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgICAg
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERv
Y3VtZW50TG9hZGVyOiBtYWluIGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgICAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lTG9hZFN0YXJ0ZWQobmV3VVJMLCB0eXBlKTsKICAgICAgICAgICAgIHBhZ2Ut
PnBlcmZvcm1hbmNlTG9nZ2luZygpLmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNl
TG9nZ2luZzo6TWFpbkZyYW1lTG9hZFN0YXJ0ZWQpOwogICAgICAgICB9CkBAIC0xNjI4LDcgKzE2
MjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNo
ZWNrKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2luQ2xlYXJQcm92aXNpb25h
bExvYWRGb3JQb2xpY3lDaGVjaywgdHJ1ZSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5zdG9wTG9hZGluZygpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUmVzb3VyY2VMb2FkaW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjazog
Q2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lvbmFs
TG9hZEZvclBvbGljeUNoZWNrOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIg
KG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7
CiB9CiAKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgaWYgKCFtX2RvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZzogZnJhbWUgbG9hZCBzdGFy
dGVkIik7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51
bnJlYWNoYWJsZVVSTCgpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXItPnJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
cmVsb2FkOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
RyhSZXNvdXJjZUxvYWRpbmcsICJyZWxvYWQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAg
Ly8gUmVwbGFjZSBlcnJvci1wYWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8g
cmVhY2guCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExv
YWRlci0+cmVxdWVzdCgpOwpAQCAtMTgwNCw3ICsxODA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW0gY2xlYXJQcm92aXNpb25hbEl0ZW0s
IFN0b3AKICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgY2hpbGQtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKGNsZWFyUHJvdmlzaW9uYWxJdGVt
KTsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2Fk
aW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCwgbV9k
b2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0l
cCwgbV9kb2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2Fk
aW5nKCk7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcAogICAg
IGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiAhbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKSkKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmJyb3dzaW5nQ29udGV4dFJlbW92ZWQoZnJhbWUoKSk7CiAKLSAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKICAg
ICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsgICAgCkBAIC0xODI1LDcgKzE4MjUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpCiAgICAgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKICAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoKTsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzdG9wRm9yQmFja0ZvcndhcmRDYWNoZTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwg
ZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic3RvcEZvckJhY2tGb3J3YXJkQ2FjaGU6IENsZWFyaW5n
IHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
PSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgICAgIHNldFBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAgICAgfQogCkBAIC0xOTAxLDcgKzE5
MDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXREb2N1bWVudExvYWRlcjogU2V0dGluZyBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldERvY3VtZW50TG9hZGVyOiBT
ZXR0aW5nIGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwgbV9kb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2Fk
ZXItPmZyYW1lTG9hZGVyKCkgPT0gdGhpcyk7CiAKQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnNldFBvbGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgaWYgKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgInNldFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVu
dCBsb2FkZXIgdG8gJXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNl
dFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCiAg
ICAgaWYgKGxvYWRlcikKICAgICAgICAgbG9hZGVyLT5hdHRhY2hUb0ZyYW1lKG1fZnJhbWUpOwpA
QCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIHRv
ICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVy
IHRvICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogCiAgICAgQVNTRVJUKCFsb2FkZXIgfHwgIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cik7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2FkZXItPmZyYW1lTG9hZGVyKCkg
PT0gdGhpcyk7CkBAIC0xOTY5LDcgKzE5NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0
ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQogICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAg
ICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBvbGRTdGF0ZSAhPSBuZXdTdGF0ZSkg
ewotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXRTdGF0ZTogbWFpbiBmcmFtZSBsb2FkIGNvbXBsZXRlZCIpOworICAgICAg
ICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0U3RhdGU6
IG1haW4gZnJhbWUgbG9hZCBjb21wbGV0ZWQiKTsKICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgp
LT5wZXJmb3JtYW5jZUxvZ2dpbmcoKS5kaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQZXJmb3JtYW5j
ZUxvZ2dpbmc6Ok1haW5GcmFtZUxvYWRDb21wbGV0ZWQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTk3Nyw3ICsxOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBu
ZXdTdGF0ZSkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQogewot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
Y2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2Fk
aW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50
IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKICAg
ICBzZXRTdGF0ZShGcmFtZVN0YXRlOjpDb21wbGV0ZSk7CkBAIC0yMTU5LDcgKzIxNTksNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVk
UGFnZSkKICAgICBzZXREb2N1bWVudExvYWRlcihtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIGlmIChvcmlnaW5hbFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgIT0gbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgRlJBTUVMT0FE
RVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJ0cmFuc2l0aW9uVG9D
b21taXR0ZWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAidHJhbnNp
dGlvblRvQ29tbWl0dGVkOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAK
ICAgICAvLyBOb3RoaW5nIGVsc2UgY2FuIGludGVycnVwdCB0aGlzIGNvbW1pdCAtIHNldCB0aGUg
UHJvdmlzaW9uYWwtPkNvbW1pdHRlZCB0cmFuc2l0aW9uIGluIHN0b25lCkBAIC0yNTA0LDcgKzI1
MDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgp
CiAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBu
ZXcgcHJvdmlzaW9uYWwgaXRlbS4KICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFoaXN0b3J5
KCkucHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5pc0xvYWRpbmdJ
bkFQSVNlbnNlKCkgfHwgcHJvdGVjdG9yLT5pc1N0b3BwaW5nKCkpIHsKLSAgICAgICAgICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1RpbWVv
dXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNU
aW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAg
ICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGYWlsZWQgcHJvdmlzaW9uYWwgbG9hZCAoaXNUaW1l
b3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9ICVkKSIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAK
ICAgICAgICAgICAgIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgqcHJvdGVjdG9yLCBl
cnJvcik7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3RlY3Rvci0+aXNMb2FkaW5nKCkpOwpAQCAt
MjU2NiwxMSArMjU2NiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpCiAKICAgICAgICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQgbG9h
ZGluZ0V2ZW50OwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3Ig
KGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBl
cnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQgd2l0
aCBlcnJvciAoaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9
ICVkKSIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGYWlsTG9hZChl
cnJvcik7CiAgICAgICAgICAgICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRp
bmdGYWlsZWQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIik7CisgICAgICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICAgICAgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgICAg
ICAgICBhdXRvIHR5cGVzID0gT3B0aW9uU2V0PERhdGFEZXRlY3RvclR5cGU+IHsgbV9mcmFtZS5z
ZXR0aW5ncygpLmRhdGFEZXRlY3RvclR5cGVzKCkgfTsKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZv
cm1TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAibG9hZFBvc3RSZXF1ZXN0OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkUG9zdFJlcXVlc3Q6IGZyYW1lIGxv
YWQgc3RhcnRlZCIpOwogCiAgICAgU3RyaW5nIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1l
KCk7CiAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSByZXF1ZXN0LmxvY2tIaXN0b3J5KCk7
CkBAIC0zMTgzLDcgKzMxODMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50
U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdQogICAgIC8vIElm
IHdlIGhhdmUgYSBwcm92aXNpb25hbCByZXF1ZXN0IGZvciBhIGRpZmZlcmVudCBkb2N1bWVudCwg
YSBmcmFnbWVudCBzY3JvbGwgc2hvdWxkIGNhbmNlbCBpdC4KICAgICBpZiAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKSkg
ewogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0g
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAiY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcg
cHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9
JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVGcmFnbWVudFNjcm9s
bEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLmdldCgpKTsKICAgICAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICB9CiAKQEAgLTM0MjQsNyArMzQyNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAgICAgYm9vbCBjYW5Db250aW51ZSA9IG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
PSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCAmJiBzaG91bGRDbG9zZSgp
ICYmICF1cmxJc0Rpc2FsbG93ZWQ7CiAKICAgICBpZiAoIWNhbkNvbnRpbnVlKSB7Ci0gICAgICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZy
YW1lIGR1ZSB0byB0aGUgZm9sbG93aW5nIHJlYXNvbnMgKCIKKyAgICAgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZyYW1lIGR1ZSB0byB0aGUgZm9sbG93aW5n
IHJlYXNvbnMgKCIKICAgICAgICAgICAgICJhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgPSAl
ZCwgIgogICAgICAgICAgICAgInJlcXVlc3RVUkxJc1ZhbGlkID0gJWQsICIKICAgICAgICAgICAg
ICJuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSAlZCkiLApAQCAtMzQ2OCwxMiArMzQ2OCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82MjUwODU2
PiAtIEluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBvbiBwYWdlcyB3aXRoIG11bHRpcGxlIGZyYW1l
cywgc3RvcEFsbExvYWRlcnMoKQogICAgIC8vIG1pZ2h0IGRldGFjaCB0aGUgY3VycmVudCBGcmFt
ZUxvYWRlciwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgYmFpbCBvbiB0aGlzIG5ld2x5IGRlZnVu
Y3QgbG9hZC4gCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3QgY29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNl
IGl0IGJlY2FtZSBkZWZ1bmN0Iik7CisgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJl
c291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3Qg
Y29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNlIGl0IGJlY2FtZSBkZWZ1bmN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1f
cG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7
CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxv
YWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9sb2FkVHlwZSA9IHR5cGU7CiAgICAgc2V0U3RhdGUo
RnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC0zNDg0LDcgKzM0ODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgp
ICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKS0+aXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkg
ewogICAgICAgICAgICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgp
LCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z1Jlc3VsdFBhc3MsIFNob3VsZFNhbXBsZTo6WWVzKTsKICAgICAgICAgICAgIGxvYWRQcm92aXNp
b25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmln
YXRpb25Qb2xpY3k6IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxs
IGJlIGxvYWRlZCBmcm9tIGNhY2hlIik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6
IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxsIGJlIGxvYWRlZCBm
cm9tIGNhY2hlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTM0OTIsNyArMzQ5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlCiAKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBs
b2FkIGNhbmNlbGVkIC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGJlZm9yZSBwcmVw
YXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBs
ZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3Vt
ZW50IGxvYWRlciBiZWZvcmUgcHJlcGFyZUZvckxvYWRTdGFydCIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzUwMSwxMyArMzUwMSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAvLyBUaGUgbG9hZCBtaWdodCBiZSBjYW5jZWxsZWQg
aW5zaWRlIG9mIHByZXBhcmVGb3JMb2FkU3RhcnQoKSwgbnVsbGluZyBvdXQgdGhlIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlciwKICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBudWxsIGNoZWNr
IGl0IGFnYWluLgogICAgICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewot
ICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxv
YWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBsZXRpb25IYW5k
bGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9S
RUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Q
b2xpY3kgKGNvbXBsZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zp
c2lvbmFsIGRvY3VtZW50IGxvYWRlciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBhY3RpdmVEb2NMb2FkZXIgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgICAgICBp
ZiAoYWN0aXZlRG9jTG9hZGVyICYmIGFjdGl2ZURvY0xvYWRlci0+aXNMb2FkaW5nTWFpblJlc291
cmNlKCkpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IChjb21w
bGV0aW9uSGFuZGxlcik6IE1haW4gZnJhbWUgYWxyZWFkeSBiZWluZyBsb2FkZWQiKTsKKyAgICAg
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBNYWluIGZyYW1l
IGFscmVhZHkgYmVpbmcgbG9hZGVkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0zNzMwLDcgKzM3MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2Ft
ZURvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIC8vIG1ldGhvZHMgb2YgRnJhbWVMb2Fk
ZXIuCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJ
dGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUs
IEZvcm1TdWJtaXNzaW9uQ2FjaGVMb2FkUG9saWN5IGNhY2hlTG9hZFBvbGljeSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRE
aWZmZXJlbnREb2N1bWVudEl0ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9B
REVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFt
ZShtX2ZyYW1lKTsKIApAQCAtMzg3Myw3ICszODczLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0
cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogICAgICAgICBsb2FkRGlm
ZmVyZW50RG9jdW1lbnRJdGVtKCppdGVtLCBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSwgbG9hZFR5
cGUsIE1heU5vdEF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5S
ZXNvdXJjZUxvYWQ6IFJldHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiBy
ZXNvdXJjZSBsb2FkIGZhaWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3Rv
cnkgaXRlbS4iKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoUmVzb3Vy
Y2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQ6IFJl
dHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiByZXNvdXJjZSBsb2FkIGZh
aWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3RvcnkgaXRlbS4iKTsKICAg
ICB9CiB9CiAKQEAgLTQwNTQsMTEgKzQwNTQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRl
c3RpbmdPdmVycmlkZXMoKQogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xp
Y3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKS5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6aGFz
SFRNTFZpZXcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAppbmRleCAwMDRmYmQ5YjdjY2ZiZjhhNGVmOGRkYzA3NWYwNWJlNzJhYmM3MTlh
Li5mMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlhNWQ3OTY3YzgyNjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzA5LDcgKzMwOSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBVUkwmIHByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTDsgfQogICAgIHZvaWQgc2V0
UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9w
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHVybDsgfQogCi0gICAgYm9vbCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNz
VGV4dElucHV0RnJvbUVkaXRpbmcoKSBjb25zdDsKICAgICBib29sIGlzUmVsb2FkaW5nRnJvbU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CmluZGV4IGUyNGZkZWQyMjI1ZjFjMTkxOGY0NTQwMTc1NjY3MTdlMjA0ODRlYWIuLjBkY2I0NzU1
NmQwNDg3NDg3ODY1NmU0NTljOWJhYzlhZjY0ZGNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPR1JFU1NfVFJBQ0tFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFt
ZSYgZnJhbWUpCiAgICAgfQogICAgIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2YWx1
ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2Fk
ICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQ
Uk9HUkVTU19UUkFDS0VSX1JFTEVBU0VfTE9HKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2
YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5M
b2FkICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJh
bWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKIAog
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJh
bWUpCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZyYW1l
KQogewogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGNvbXBsZXRlZCAoJXApIC0gZnJhbWUg
JXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFt
ZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicHJvZ3Jlc3NDb21wbGV0ZWQ6IGZyYW1lICVwLCB2YWx1ZSAlZiwgdHJhY2tlZCBm
cmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2FkICVkIiwgJmZyYW1lLCBt
X3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5n
UHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQUk9HUkVTU19UUkFDS0VS
X1JFTEVBU0VfTE9HKCJwcm9ncmVzc0NvbXBsZXRlZDogZnJhbWUgJXAsIHZhbHVlICVmLCB0cmFj
a2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAsIGlzTWFpbkxvYWQgJWQiLCAmZnJh
bWUsIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2lu
YXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpLCBtX2lzTWFpbkxvYWQpOwogCiAgICAgaWYgKG1fbnVt
UHJvZ3Jlc3NUcmFja2VkRnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVybjsKQEAgLTE2MCw3ICsx
NjAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZy
YW1lKQogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiB7CiAg
ICAgTE9HKFByb2dyZXNzLCAiRmluYWwgcHJvZ3Jlc3MgY29tcGxldGUgKCVwKSIsIHRoaXMpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUg
JWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAl
ZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dy
ZXNzVHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNN
YWluTG9hZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nKCkpOworICAgIFBST0dSRVNTX1RSQUNLRVJf
UkVMRUFTRV9MT0coImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUgJWYsIHRyYWNrZWQgZnJh
bWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAlZCwgaXNNYWluTG9hZFBy
b2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1l
cywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNNYWluTG9hZCwgaXNNYWlu
TG9hZFByb2dyZXNzaW5nKCkpOwogCiAgICAgYXV0byBmcmFtZSA9IFdURk1vdmUobV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUpOwogCkBAIC0zMTUsMTIgKzMxNSw0IEBAIHZvaWQgUHJvZ3Jlc3NU
cmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQoKQogICAgICAgICBtX3Byb2dyZXNz
SGVhcnRiZWF0VGltZXIuc3RvcCgpOwogfQogCi1ib29sIFByb2dyZXNzVHJhY2tlcjo6aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fb3JpZ2luYXRpbmdQcm9n
cmVzc0ZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYTk0MDRjNjhlMTJlYzk5
ZTQwYTBkNjNkZGU3ZTE2M2U2NTA2ODVlOC4uMzE5YjBjYzgxYjk5NDYxZDhkNWU4ZjUxOTI1ZjRl
YTcwNGMwNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApAQCAt
NjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7
CiAKICAgICB2b2lkIHByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZCgpOwotICAgIGJvb2wgaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9u
ZyBzX3VuaXF1ZUlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDJiMzM2NjMyNzJkNDFiZjE0NmRhNWU1MGE0YTdhMzA0YjgzMjMxNzMuLjg3
ZTQxNDhmMjc5Mjc1MTU4NTczYjIzY2EzZmMxODY5ZTBkODIwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNjQsMTAgKzY0LDEwIEBACiAjaW5jbHVkZSAi
UHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExP
V0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICNkZWZpbmUgUEFHRV9JRCAo
KGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6
IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUo
KSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFt
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlz
LCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBSZXNvdXJjZUxvYWRlcjo6
IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDkgKzEy
Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50
UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9h
ZGVyIHx8ICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmICghbV9kb2N1
bWVudExvYWRlcikKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImluaXQ6IENh
bmNlbGxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBkb2N1bWVudCBsb2FkZXIuIik7CisgICAgICAg
ICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGRvY3VtZW50IGxvYWRlci4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNlIHRoZSBk
b2N1bWVudCBsb2FkZXIgaGFzIG5vIGZyYW1lLiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgYmVjYXVzZSB0aGUgZG9jdW1lbnQgbG9h
ZGVyIGhhcyBubyBmcmFtZS4iKTsKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQpAQCAtMTQzLDE0ICsxNDMsMTQgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBtX2RlZmVyc0xvYWRpbmcgPSBtX29wdGlvbnMuZGVm
ZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcgJiYgbV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAKICAgICBpZiAobV9vcHRp
b25zLnNlY3VyaXR5Q2hlY2sgPT0gU2VjdXJpdHlDaGVja1BvbGljeTo6RG9TZWN1cml0eUNoZWNr
ICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkoY2xp
ZW50UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5p
dDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIp
OworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBs
b2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIpOwogICAgICAgICBGcmFt
ZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVl
c3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKCFwb3J0
QWxsb3dlZChjbGllbnRSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8gYSBibG9ja2VkIHBvcnQuIik7CisgICAg
ICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8g
YSBibG9ja2VkIHBvcnQuIik7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRCbG9ja2VkTG9h
ZEZhaWxlZCgqbV9mcmFtZSwgY2xpZW50UmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTE3MiwxMyArMTcyLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1
ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRlciB3YXMgc3RvcHBl
ZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QsIGJhaWwgb3V0LgogICAgICAgICBpZiAo
bV9yZWFjaGVkVGVybWluYWxTdGF0ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiaW5pdDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgd2FzIHN0b3BwZWQgYXMgYSBy
ZXN1bHQgb2Ygd2lsbFNlbmRSZXF1ZXN0LiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgbG9hZCBiZWNhdXNlIGl0IHdhcyBzdG9wcGVk
IGFzIGEgcmVzdWx0IG9mIHdpbGxTZW5kUmVxdWVzdC4iKTsKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIGlm
IChyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBudWxsLiIpOwor
ICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcg
bG9hZCBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIG51bGwuIik7CiAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAg
IH0KQEAgLTI4OSwxMiArMjg5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJM
KCkKICAgICAgICAgaWYgKHRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQi
KTsKKyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkRGF0YVVSTDog
ZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQiKTsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
ZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJE
YXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHRoaXMtPndhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogTG9hZCB3YXMgY2FuY2VsbGVkIik7Cisg
ICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygibG9hZERhdGFVUkw6IExvYWQg
d2FzIGNhbmNlbGxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZQogICAgICAgICAgICAgYm9vbCBi
bG9ja2VkTG9hZCA9IHJlc3VsdHMuc3VtbWFyeS5ibG9ja2VkTG9hZDsKICAgICAgICAgICAgIENv
bnRlbnRFeHRlbnNpb25zOjphcHBseVJlc3VsdHNUb1JlcXVlc3QoV1RGTW92ZShyZXN1bHRzKSwg
cGFnZSwgcmVxdWVzdCk7CiAgICAgICAgICAgICBpZiAoYmxvY2tlZExvYWQpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDog
cmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tlciIpOworICAg
ICAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tl
ciIpOwogICAgICAgICAgICAgICAgIGRpZEZhaWwoYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cigpKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZQogI2VuZGlmCiAKICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBj
YW5jZWxlZCBiZWNhdXNlIG9mIGVtcHR5IHJlcXVlc3QiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIpOwogICAgICAgICBkaWRGYWlsKGNhbm5v
dFNob3dVUkxFcnJvcigpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRl
ciB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCwgYmFpbCBvdXQKICAgICAgICAgaWYgKG1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIHJlYWNoZWQgdGVybWluYWwgc3RhdGUgYWZ0ZXIgY2FsbGluZyBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCgpIik7CisgICAgICAgICAgICBSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
cmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSBhZnRlciBjYWxsaW5nIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KCkiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MjgsNyArNDI4
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKIAogICAgIGJvb2wgaXNSZWRpcmVjdCA9ICFy
ZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBQcm9jZXNz
aW5nIGNyb3NzLW9yaWdpbiByZWRpcmVjdCIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IFByb2Nlc3NpbmcgY3Jvc3Mtb3JpZ2lu
IHJlZGlyZWN0Iik7CiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5jcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdC51cmwoKSk7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFp
bihyZXF1ZXN0LnVybCgpKSk7CkBAIC00NDMsMTMgKzQ0MywxMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZQogCiAgICAgICAgIGlmIChyZWRpcmVjdFVSTC5wcm90b2NvbElzRGF0YSgpKSB7CiAg
ICAgICAgICAgICAvLyBIYW5kbGUgZGF0YSBVUkwgZGVjb2RpbmcgbG9jYWxseS4KLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOworICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOwogICAgICAgICAgICAg
ZmluaXNoTmV0d29ya0xvYWQoKTsKICAgICAgICAgICAgIGxvYWREYXRhVVJMKCk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICBSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9
CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBp
ZiAoIWRvY3VtZW50LT51c2VkTGVnYWN5VExTKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgidXNlZExlZ2FjeVRMUzoiKTsKKyAgICAgICAgICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInVzZWRMZWdhY3lUTFM6Iik7CiAgICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPmNvbnNvbGUoKS5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTG9hZGVkIHJlc291cmNlIGZy
b20gIiwgci51cmwoKS5ob3N0KCksICIgdXNpbmcgVExTIDEuMCBvciAxLjEsIHdoaWNoIGFyZSBk
ZXByZWNhdGVkIHByb3RvY29scyB0aGF0IHdpbGwgYmUgcmVtb3ZlZC4gUGxlYXNlIHVzZSBUTFMg
MS4yIG9yIG5ld2VyIGluc3RlYWQuIiksIDAsIGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldFVzZWRMZWdhY3lUTFModHJ1ZSk7CkBAIC01
NzgsNyArNTc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2Fk
aW5nOiIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5n
OiIpOwogCiAgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQobmV0d29ya0xvYWRNZXRyaWNzKTsK
IApAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmdPbmVQYXJ0KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAgICAgLy8gSWYg
bG9hZCBoYXMgYmVlbiBjYW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nICh3aGljaCBjb3VsZCBoYXBw
ZW4gd2l0aCBhCiAgICAgLy8gSmF2YVNjcmlwdCB0aGF0IGNoYW5nZXMgdGhlIHdpbmRvdyBsb2Nh
dGlvbiksIGRvIG5vdGhpbmcuCiAgICAgaWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0OiBMb2FkIHdhcyBj
YW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nLiIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkRmluaXNoTG9hZGluZ09uZVBhcnQ6IExvYWQgd2FzIGNhbmNlbGxlZCBhZnRl
ciBmaW5pc2hpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX3Jl
YWNoZWRUZXJtaW5hbFN0YXRlKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nT25lUGFydChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6Iik7Cisg
ICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZEZhaWw6Iik7CiAKICAgICBpZiAod2Fz
Q2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZXNvdXJjZVJlcXVlcwogewogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVk
SGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3RBc3luYzogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTc1NiwxMyArNzU2LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRl
bnQgYmxvY2tlciIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2Vk
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CiAg
ICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNh
bm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBpbnZhbGlk
IFVSTCIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2VkOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgaW52YWxpZCBVUkwiKTsKICAgICBkaWRGYWls
KGNhbm5vdFNob3dVUkxFcnJvcigpKTsKIH0KIApAQCAtODY5LDEzICs4NjksOCBAQCBib29sIFJl
c291cmNlTG9hZGVyOjppc1F1aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi1i
b29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICN1
bmRlZiBQQUdFX0lECiAjdW5kZWYgRlJBTUVfSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggNDc4OTc1NDgxNDQ3YjE2Y2I5ZGQ0OGRkNGI1N2RiYmRjNDFkZWI1Mi4u
N2E0YTBkN2Q3ZjQ2NDUzNmMyYzY4ODVhZjgzNjlkZjA2OTc1YmI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE1MSw3ICsxNTEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIGNvbnN0IEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0
KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0OwogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMTM5OTM2ZTk3MTFjNDMwNDVlZmRjMDdjNzc0NDg0MmFm
ZGVlNDMuLmEyNjFlYWVmNGYyNGQxNmYxOTQ1NGRhNWEwYmY5NTNlN2ZiYjIyZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjcsMTYgKzY3LDE2
IEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCisjdW5kZWYgU1VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1IKICNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFt
ZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSku
dG9VSW50NjQoKSkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKGZtdCwgLi4uKSBVTlVTRURfVkFSSUFCTEUodGhpcykKLSNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMp
CisjZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBVTlVTRURf
VkFSSUFCTEUodGhpcykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQogI2Vsc2UKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJy
ZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRl
cigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0g
U3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTVUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxv
YWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9
JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBm
cmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChiCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7Cisg
ICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CkBAIC0xOTAsNyArMTkwLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5ldyByZXF1ZXN0IGlzIGludmFs
aWQiKTsKKyAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVx
dWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgbmV3IHJlcXVlc3Qg
aXMgaW52YWxpZCIpOwogICAgICAgICBjYW5jZWwoY2Fubm90U2hvd1VSTEVycm9yKCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtMjA0LDIwICsyMDQsMjAgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBhdXRv
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgcmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBuZXcgcmVxdWVzdCBp
cyBOVUxMICgxKSIpOworICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG5ldyByZXF1ZXN0IGlzIE5VTEwgKDEpIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6
IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7
CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5k
UmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVhY2hlZCB0
ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNw
b25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBz
dGF0ZTsgY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAgICBTVUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlYWNo
ZWQgdGVybWluYWwgc3RhdGU7IGNhbGxpbmcgY29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgyKSIpOwor
ICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHJlcXVlc3QgaXMg
TlVMTCAoMikiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNv
dXJjZSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdChy
ZXF1ZXN0KTsKIAotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CisgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcg
Y29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgfTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIAotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJl
Y3QiKTsKKyAgICAgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3Qg
YWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdCIpOwogCiAgICAgICAgICAgICAgICAgY2FuY2Vs
KGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CkBAIC0yNTAsMTcgKzI1MCwxNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjbwogICAgICAgICAgICAgb3BhcXVlUmVkaXJlY3RlZFJlc3BvbnNlLnNldFRhaW50aW5nKFJl
c291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgICAgICAgICBt
X3Jlc291cmNlLT5yZXNwb25zZVJlY2VpdmVkKG9wYXF1ZVJlZGlyZWN0ZWRSZXNwb25zZSk7CiAg
ICAgICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVk
IHRlcm1pbmFsIHN0YXRlIik7CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3
UmVxdWVzdCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQi
KTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQiKTsKIAogICAgICAgICAgICAg
TmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKICAgICAgICAgICAgIGRpZEZpbmlzaExv
YWRpbmcoZW1wdHlNZXRyaWNzKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3JlZGlyZWN0Q291
bnQrKyA+PSBvcHRpb25zKCkubWF4UmVkaXJlY3RDb3VudCkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
Y2FuY2VsZWQgYmVjYXVzZSB0b28gbWFueSByZWRpcmVjdHMiKTsKKyAgICAgICAgICAgIFNVQlJF
U09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3Vy
Y2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0cyIpOwogICAgICAgICAg
ICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51cmwoKSwgIlRv
byBtYW55IHJlZGlyZWN0aW9ucyJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkp
OwogICAgICAgICB9CkBAIC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
bwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnVwZGF0ZVJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKG1fcmVzb3VyY2UtPnR5
cGUoKSwgbmV3UmVxdWVzdCwgb3B0aW9ucygpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2Vs
ZWQgYmVjYXVzZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24gKHJlYWxseSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24pIHNhaWQgbm8iKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAo
cmVhbGx5IENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbikg
c2FpZCBubyIpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIXBvcnRBbGxvd2VkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9h
ZCAocmVkaXJlY3QpIGNhbmNlbGVkIGJlY2F1c2UgaXQgYXR0ZW1wdGVkIHRvIHVzZSBhIGJsb2Nr
ZWQgcG9ydCIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIChyZWRpcmVjdCkgY2FuY2VsZWQg
YmVjYXVzZSBpdCBhdHRlbXB0ZWQgdG8gdXNlIGEgYmxvY2tlZCBwb3J0Iik7CiAgICAgICAgICAg
ICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tl
ZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAgICAgICAgY2Fu
Y2VsKGZyYW1lTG9hZGVyKCktPmJsb2NrZWRFcnJvcihuZXdSZXF1ZXN0KSk7CkBAIC0yOTUsMTgg
KzI5NSwxOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3
UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJl
c291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRl
bmllZCBieSBDT1JTIHBvbGljeSIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2UgY3Jvc3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3ki
KTsKICAgICAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0
KCkudXJsKCksIGVycm9yTWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCkpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSAm
JiBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNob3VsZERlZmVySW1h
Z2VMb2FkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBi
ZWNhdXNlIGl0J3MgYW4gaW1hZ2UgdGhhdCBzaG91bGQgYmUgZGVmZXJlZCIpOworICAgICAgICAg
ICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgaXQncyBhbiBpbWFnZSB0aGF0IHNob3Vs
ZCBiZSBkZWZlcmVkIik7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogICAg
ICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUobmV3UmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QgPSBXVEZNb3ZlKGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGRvbmUg
bm90aWZ5aW5nIGNsaWVudHMiKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgZG9uZSBub3RpZnlpbmcg
Y2xpZW50cyIpOwogICAgICAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAg
ICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vy
dmljZVdvcmtlciAmJiByZXNwb25zZS51cmwoKSAhPSByZXF1ZXN0KCkudXJsKCkpIHsKICAgICAg
ICAgYXV0byYgbG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICAgICAgaWYgKCFsb2FkZXIuYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KG1f
cmVzb3VyY2UtPnR5cGUoKSwgcmVzcG9uc2UudXJsKCksIG9wdGlvbnMoKSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxv
YWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOworICAgICAgICAgICAg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2Vs
aW5nIGxvYWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOwogICAgICAg
ICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoeyB9LCAwLCByZXNwb25zZS51cmwoKSwgeyB9LCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogI2VuZGlm
CiAKICAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKHJlcXVl
c3QoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSBy
ZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEgbm9uLXJhbmdlIHJlcXVlc3QiKTsKKyAgICAgICAgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5n
IGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSByZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEg
bm9uLXJhbmdlIHJlcXVlc3QiKTsKICAgICAgICAgY2FuY2VsKFdURk1vdmUoKmVycm9yKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBDb20KICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkgewogICAgICAgICBp
ZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5lcnJvcigpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxp
bmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOworICAgICAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5j
ZWxpbmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOwogICAg
ICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgMCwgcmVxdWVzdCgpLnVybCgpLCBh
Y2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBt
dWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CiAgICAg
ICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVz
ZSBzb21ldGhpbmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOworICAgICAgICAgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNh
bmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1h
Z2UiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6dXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeVZhbHVl
KQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6Iik7CisgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6Iik7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC03
NDYsNyArNzQ2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICBtX3Jlc291cmNlLT5m
aW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogCiAgICAg
aWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNlbGVkIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTc1NiwxNiArNzU2LDE2IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1lCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7CiAKICAg
ICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CisgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFj
aGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogRGlkIG5vdCByZWFjaCB0ZXJtaW5h
bCBzdGF0ZSIpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hM
b2FkaW5nOiBEaWQgbm90IHJlYWNoIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgcmVsZWFzZVJlc291
cmNlcygpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6
ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRG
YWlsOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSks
IGVycm9yLmVycm9yQ29kZSgpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRv
IHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpCkBAIC04MDMsNyArODAzLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsQ2FuY2Vs
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bENhbmNlbDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBl
KCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcgdGltZSBvbiBp
T1MgYnV0CkBAIC04NTksMTQgKzg1OSwxNCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3Rp
ZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWRE
b25lKHR5cGUsIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibm90aWZ5RG9uZTogZG9jdW1lbnQgbG9h
ZGVyIGlzIG51bGwuIENvdWxkIG5vdCBjYWxsIGxvYWREb25lKCkiKTsKKyAgICAgICAgU1VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRl
ciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBsb2FkRG9uZSgpIik7CiAKICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyKQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0
eXBlLCB0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRlciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBy
ZW1vdmVTdWJyZXNvdXJjZUxvYWRlcigpIik7CisgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HX0VSUk9SKCJub3RpZnlEb25lOiBkb2N1bWVudCBsb2FkZXIgaXMgbnVsbC4gQ291
bGQgbm90IGNhbGwgcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIoKSIpOwogfQogCiB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKQEAgLTkxNyw1ICs5MTcsNSBAQCBjb25z
dCBIVFRQSGVhZGVyTWFwKiBTdWJyZXNvdXJjZUxvYWRlcjo6b3JpZ2luYWxIZWFkZXJzKCkgY29u
c3QKIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9JRAotI3VuZGVmIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggODRhMGZlMWUzMzk5YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2Jl
NC4uYmVmOWU3ZGM1YjE2ZTg1MDE2NTBkZGVlNmVkMGJkMmY4YzFiYTcxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC02MywxMyArNjMs
MTEgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCi0jdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENBQ0hFRFJF
U09VUkNFX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQo
KS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9J
RChmcmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9V
SW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUs
IC4uLikgUkVMRUFTRV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSks
IEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfQUxX
QVlTKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZTo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JFTEVB
U0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJj
ZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JF
TEVBU0VfTE9HX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNoZWRS
ZXNvdXJjZTo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSksICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTc0LDcgKzE3Miw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZygpCiB2b2lkIENhY2hlZFJl
c291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikK
IHsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyLmZyYW1lKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIpOworICAgICAg
ICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRygibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIp
OwogICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE5MiwxMSArMTkwLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgLy8gQmVhY29u
cyBhcmUgYWxsb3dlZCB0byBnbyB0aHJvdWdoIGluICdwYWdlaGlkZScgZXZlbnQgaGFuZGxlcnMu
CiAgICAgICAgICAgICBpZiAobV9vcHRpb25zLmtlZXBBbGl2ZSB8fCBzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2Zvcndh
cmQgY2FjaGUiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xP
R19XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2ZvcndhcmQgY2FjaGUiLCBm
cmFtZSk7CiAgICAgICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlOgotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBbHJlYWR5IGlu
IGJhY2svZm9yd2FyZCBjYWNoZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIENBQ0hFRFJFU09VUkNF
X1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEFscmVhZHkgaW4gYmFjay9mb3J3YXJkIGNh
Y2hlIiwgZnJhbWUpOwogICAgICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIwNiwxMSArMjA0LDExIEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVy
KQogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5
OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgIXNob3VsZFVzZVBp
bmdMb2FkKHR5cGUoKSkpIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGlm
IChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDogRmFpbGVk
IHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRlIGlzIHByb3Zpc2lvbmFsIiwgZnJhbWUpOworICAgICAg
ICAgICAgICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEZh
aWxlZCBzZWN1cml0eSBjaGVjayAtLSBzdGF0ZSBpcyBwcm92aXNpb25hbCIsIGZyYW1lKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKQot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDog
RmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7Cisg
ICAgICAgICAgICAgICAgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgibG9h
ZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5pc1N0b3BwaW5nKCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9X
SVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZlIGxvYWRlciBp
cyBzdG9wcGluZyIsIGZyYW1lKTsKKyAgICAgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZl
IGxvYWRlciBpcyBzdG9wcGluZyIsIGZyYW1lKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwpAQCAtMjg2
LDEwICsyODQsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlKGZy
YW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPih0aGlzKSwgZnJhbWVS
ZWYgPSBtYWtlUmVmKGZyYW1lKSwgbG9nZ2luZ0FsbG93ZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4m
JiBsb2FkZXIpIHsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
bG9hZFJlc291cmNlKGZyYW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pih0aGlzKSwgZnJhbWVSZWYgPSBtYWtlUmVmKGZyYW1lKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4mJiBsb2FkZXIpIHsKICAgICAgICAgbV9sb2FkZXIgPSBXVEZNb3ZlKGxvYWRlcik7CiAg
ICAgICAgIGlmICghbV9sb2FkZXIpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGxvZ2dp
bmdBbGxvd2VkLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6bG9hZDogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNv
dXJjZUxvYWRlciIsIHRoaXMsIFBBR0VfSUQoZnJhbWVSZWYuZ2V0KCkpLCBGUkFNRV9JRChmcmFt
ZVJlZi5nZXQoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3Bh
Z2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6Omxv
YWQ6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVzb3VyY2VMb2FkZXIiLCB0aGlzLCBQQUdFX0lEKGZy
YW1lUmVmLmdldCgpKSwgRlJBTUVfSUQoZnJhbWVSZWYuZ2V0KCkpKTsKICAgICAgICAgICAgIGZh
aWxCZWZvcmVTdGFydGluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00
NDgsNyArNDQ2LDcgQEAgU2Vjb25kcyBDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnMKIAogdm9pZCBDYWNoZWRSZXNv
dXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfQUxX
QVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIpOworICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9H
KCJyZWRpcmVjdFJlY2VpdmVkOiIpOwogCiAgICAgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xh
eWVyID0gdHJ1ZTsKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQpAQCAtOTQzLDYgKzk0MSw1
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAjdW5kZWYgUEFHRV9JRAogI3VuZGVmIEZSQU1F
X0lECi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRURfV0lUSF9GUkFNRQotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENB
Q0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDAzZDVhMGFlNDIxMDhjOTQ4NTYzODQ4MTMzNDU3
ODExNDQ4MjQyOC4uNjIwNTIxZTNmZTZhMjdiN2MxNmZlNWY3NTBkN2NlNjNiNmI3MDI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCwxMSArOTQsMTEgQEAKICNpbmNsdWRlICJEZXZpY2UuaCIKICNlbmRpZgog
Ci0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRChm
cmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVB
U0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0df
V0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtw
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZB
X0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OTcsNyArNTk3LDcgQEAgYm9v
bCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uIFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5v
dCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTYwNSwyMCArNjA1LDIwIEBAIGJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsCiAgICAgLy8gQnV0IHdlIGN1cnJlbnRseSBhbGxvdyBhdCBsZWFzdCBkYXRhIFVSTHMg
dG8gYmUgbG9hZGVkLgogCiAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OlNhbWVPcmlnaW4gJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRl
clJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0Iik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJjYW5S
ZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9y
aWdpbjo6Y2FuUmVxdWVzdCIpOwogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJs
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghYWxsb3dlZEJ5Q29u
dGVudFNlY3VyaXR5UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFs
bG93ZWQgYnkgY29udGVudCBwb2xpY3kiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxv
d2VkIGJ5IGNvbnRlbnQgcG9saWN5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBMYXN0IG9mIGFsbCwgY2hlY2sgZm9yIGluc2VjdXJlIGNvbnRlbnQuIFdlIGRvIHRo
aXMgbGFzdCBzbyB0aGF0IHdoZW4gZm9sa3MgYmxvY2sgaW5zZWN1cmUgY29udGVudCB3aXRoIGEg
Q1NQIHBvbGljeSwgdGhleSBkb24ndCBnZXQgYSB3YXJuaW5nLgogICAgIC8vIFRoZXknbGwgc3Rp
bGwgZ2V0IGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBhYm91dCBDU1AgYmxvY2tpbmcgdGhlIGxv
YWQuCiAgICAgaWYgKCFjaGVja0luc2VjdXJlQ29udGVudCh0eXBlLCB1cmwpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwg
d2FzIG5vdCBhbGxvd2VkIGJlY2F1c2UgY29udGVudCBpcyBpbnNlY3VyZSIpOworICAgICAgICBD
QUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVjYXVzZSBjb250ZW50IGlzIGluc2VjdXJlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg1NiwxMyArODU2LDEzIEBAIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1CiB7CiAgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCk7CiAgICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBmYWlsZWQgYmVj
YXVzZSBubyBmcmFtZSBvciBwYWdlIik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJyZXF1ZXN0UmVzb3VyY2U6IGZhaWxlZCBiZWNhdXNlIG5vIGZyYW1lIG9yIHBh
Z2UiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJJbnZhbGlkIGxvYWRlciBzdGF0ZSJfcyB9
KTsKICAgICB9CiAKICAgICBhdXRvJiBmcmFtZSA9ICp0aGlzLT5mcmFtZSgpOwogICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoInJlcXVlc3RSZXNvdXJjZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CisgICAgICAgIENB
Q0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJj
ZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiVVJM
IGlzIGludmFsaWQiX3MgfSk7CiAgICAgfQogCkBAIC04OTMsMTQgKzg5MywxNCBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdQogCiAgICAgLy8gV2UgYXJlIHBhc3NpbmcgdXJsIGFzIHdlbGwgYXMg
cmVxdWVzdCwgYXMgcmVxdWVzdCB1cmwgbWF5IGNvbnRhaW4gYSBmcmFnbWVudCBpZGVudGlmaWVy
LgogICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3Qub3B0aW9ucygpLCBmb3JQ
cmVsb2FkKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJl
cXVlc3RSZXNvdXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSIsIGZyYW1lKTsK
KyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgicmVx
dWVzdFJlc291cmNlOiBOb3QgYWxsb3dlZCB0byByZXF1ZXN0IHJlc291cmNlIiwgZnJhbWUpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2Ui
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgfQogCiAgICAg
aWYgKCFwb3J0QWxsb3dlZCh1cmwpKSB7CiAgICAgICAgIGlmIChmb3JQcmVsb2FkID09IEZvclBy
ZWxvYWQ6Ok5vKQogICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydEJsb2NrZWRMb2FkRmFp
bGVkKGZyYW1lLCB1cmwpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIGhhcyBhIGJsb2Nr
ZWQgcG9ydCIsIGZyYW1lKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRSgiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwg
aGFzIGEgYmxvY2tlZCBwb3J0IiwgZnJhbWUpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZnJhbWUubG9hZGVyKCkuYmxvY2tlZEVycm9yKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
KTsKICAgICB9CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQog
ICAgICAgICBib29sIG1hZGVIVFRQUyA9IHJlc3VsdHMuc3VtbWFyeS5tYWRlSFRUUFM7CiAgICAg
ICAgIHJlcXVlc3QuYXBwbHlSZXN1bHRzKFdURk1vdmUocmVzdWx0cyksICZwYWdlKTsKICAgICAg
ICAgaWYgKGJsb2NrZWRMb2FkKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
X1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50
IGJsb2NrZXIiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJyZXF1ZXN0UmVzb3VyY2U6IFJlc291cmNlIGJsb2NrZWQgYnkg
Y29udGVudCBibG9ja2VyIiwgZnJhbWUpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgewogICAgICAgICAgICAgICAgIGF1dG8gcmVz
b3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBwYWdlLnNlc3Np
b25JRCgpLCAmcGFnZS5jb29raWVKYXIoKSwgcGFnZS5zZXR0aW5ncygpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzb3VyY2UpOwpAQCAtMTYxNCwxNCArMTYxNCw5IEBAIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnRMb2FkZXIgPyBtX2RvY3VtZW50TG9hZGVyLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7Ci19Ci0KIH0KIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9J
RAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VEX1dJVEhfRlJBTUUKKyN1bmRlZiBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RworI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
aW5kZXggZTQ1YzA5NTkzMTFkNjU2YWYyNzEzMjE5NTMwNjZmM2U0YmQ1MzRjOS4uOTRlMTgyZDlh
MDE5MTBlMTkzOTZkYTU5MmIxZDk2ODg1ZGNjYjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTE2NCw4ICsxNjQsNiBA
QCBwdWJsaWM6CiAKICAgICBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uJiByZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9yZXNvdXJjZVRpbWluZ0luZm87IH0KIAotICAgIGJv
b2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlciYga2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIoKSB7IHJldHVybiBtX2tlZXBhbGl2
ZVJlcXVlc3RUcmFja2VyOyB9CiAKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiB2aXNpYmxl
UmVzb3VyY2VzVG9Qcmlvcml0aXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDFhZjI3ZDg0
ZjM1YWYwZDNiYTFmYjlkYmFmYTMxZTQzYzY2NjEzMzIuLjcwNTRhY2M5MDIxNGViODE3YmQ3ODQy
OThjZTc3Zjc2ZDMyYzVkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTIsNyArMTEyLDcg
QEAKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNlbmRpZgogCi0j
ZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAi
JXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FX1JF
TEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
CiAgICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiaW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7CisgICAgICAgIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJp
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlv
biBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBsb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CkBAIC0x
MDQ0LDExICsxMDQ0LDYgQEAgdm9pZCBGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKCkKICAgICAgICAgcm9vdC0+Y29tcG9zaXRvcigpLmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpOwogfQogCi1ib29sIEZyYW1lOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBwYWdlKCkgJiYgcGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKTsKLX0KLQogdm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluRnJhbWUoKSk7CkBAIC0xMTQ2LDQgKzExNDEsNCBAQCBEYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBG
UkFNRV9SRUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDM3YjFhZjIxMWUzNDA5
NzRlMGM1MjdiZWU4YjE3M2I2NjY4ZWVlMGMuLmYwNzQzZTkzOTc1N2Y2NzJhNzI3NmZhYmUzYjY1
OTZlMzE3OWFlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw4ICszMDMsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIGJv
b2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
OwotCiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQcmV3
YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCBjMWQzZDdmOGFhN2JhMWMwMjRjM2U4MzgyMWM0M2YxN2QwZTUzODAxLi41ODEwODNlNmYzNGM2
MjE4Y2UwNTRkYTkwZTJiZmJiNDI1MmU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0xMzcsNyArMTM3LDcgQEAKIAogI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRV9JRCBm
cmFtZSgpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQot
I2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAi
LCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQ
QUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPnNlc3Np
b25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlE
PSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIg
Zm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19f
VkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDE3MTI3NTlmNjNjMjZlZGYxNDUyMTcyYTg5MWEzZDJlYTAzNDBiYjAuLjJjNjk1MWMyNGQ3YWVh
NTg3MzI3NmQxZGIyN2UwMWQzYTM3MTE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEzNywx
MSArMzEzNyw2IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIH0KICNlbmRpZgogCi1ib29sIFBhZ2U6OmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpOwotfQotCiBTdHJpbmcgUGFnZTo6Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxl
U2hlZXQoKQogewogICAgIHJldHVybiBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCBiZDAzNmEyZmQ1ZDc0MGYxMWEyMTZmOTY4ZmU3ZDVkM2EwMjNk
YThiLi5kNjcxZTc4YWFlOTYwYTk3Njc2YmExYjkxMjMzZGQ4MmQ3NmE4OTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNzgzLDggKzc4Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udHJvbGxlZEJ5
QXV0b21hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsgfQog
ICAgIHZvaWQgc2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpIHsgbV9j
b250cm9sbGVkQnlBdXRvbWF0aW9uID0gY29udHJvbGxlZDsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQogICAgIFN0cmluZyBj
YXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpOwogICAgIHZvaWQgc2V0Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAppbmRleCAwZmM2ZDZkYmVmODI0Yzg0ZWQ1M2Zl
Zjg2NmQ2ZjZhMjNhMWIzZDc1Li44ZTQ5YzJmY2NmY2M0ZTFiNTlhZGY1MDQwODQzZDVkNTRiNDQy
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmluZSBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9uaXRv
cjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5zZXNzaW9uSUQo
KS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUGVyZm9ybWFuY2VN
b25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBTZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSB7IDVfcyB9Owogc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBTZWNvbmRzIHBvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9u
IHsgMTBfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ4NGMwYmVkMzZiMmZlY2ExZmU4MGViNmRmMmMz
MGQwMzBlZDIxODYuLmVjZDQwNTJlYWMwMzgwMjgyNTVhNzg2MjM2ZTE5Njk4NTNhZmExZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291
cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKLSNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICJdIFdlYlJlc291
cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0VCUkVTT1VS
Q0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAt
IFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9
JSIgUFJJdTY0ICJdIFdlYlJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQu
dG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgIyNfX1ZBX0FSR1Nf
XykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEw
MCwyMCArMTAwLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6CiAgICAgcHJvcG9zZWRSZXF1
ZXN0LnNldEhUVFBCb2R5KHByb3Bvc2VkUmVxdWVzdEJvZHkudGFrZURhdGEoKSk7CiAKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6Iik7Cisg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDoiKTsKIAog
ICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVMb2FkZXIuZ2V0KCksIHBy
b3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOworICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJl
Y2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3Qo
V1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIi
KTsKKyAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIi
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0Iik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2Vu
ZFJlcXVlc3Q6IHJldHVybmluZyBDb250aW51ZVdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KHJlcXVlc3QsIG1fY29yZUxvYWRlci0+aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMoKSkpOwogICAgIH0pOwogfQpAQCAtMTI2LDEyICsxMjYsMTIgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzVG9CZVMKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMnLiBTdGF0dXMgJWQuIiwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkKSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
OworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChodHRwU3RhdHVzQ29kZT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAogICAg
IFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAo
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1h
eWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBu
b3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQi
KTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNw
b25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkg
Y2FjaGVkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBt
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVM
b2FkZXIgb3Igbm8gSUQiKTsKKyAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ug
bm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTU3LDcg
KzE1Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgICAgIG1faW50ZXJjZXB0Q29u
dHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVx
dWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3Zl
cnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFt
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0
IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CisgICAgICAgICAgICAgICAg
V0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNv
bnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7
CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2Uo
aW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
CiAgICAgfQogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7
CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTog
U3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRh
LnNpemUoKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9h
ZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKGxlbmd0aD0lemQpIiwgbV9udW1CeXRl
c1JlY2VpdmVkKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNo
UmVzb3VyY2VMb2FkOiAobGVuZ3RoPSV6ZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAg
aWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5k
ZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbmV0d29ya0xvYWRNZXRyaWNzXSgpIG11dGFibGUgewpAQCAtMjQyLDcg
KzI0Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxTZXJ2aWNlV29ya2VyTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnNl
cnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiIp
OworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJzZXJ2aWNlV29ya2VyRGlkTm90
SGFuZGxlOiIpOwogCiAgICAgQVNTRVJUKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpOwogICAgIGF1dG8gZXJyb3Ig
PSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKQEAgLTI1Niw3
ICsyNTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKKyAgICBXRUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKIAogICAgIGlmIChVTkxJS0VM
WShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKSkgewogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGVycm9yXSgpIG11dGFibGUgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIpOworICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIpOwog
CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiB9
CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGlu
Z0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nl
c3MpIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29u
dGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5z
dHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6
Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInN0b3BMb2FkaW5nQWZ0ZXJY
RnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6Iik7CiAKICAgICBtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCks
IHJlc3BvbnNlKTsKIH0KQEAgLTI5MywxMyArMjkzLDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdl
YlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyci
LCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiIpOworICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6Iik7CiAKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVh
dGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHBy
b2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNv
dXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VS
Q0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0
ZSBTaGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVy
LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFn
bm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJy
b3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZm
ZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CkBAIC0zMjIsMTEgKzMy
Miw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJSZXNv
dXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcmVzb3VyY2VMb2FkZXIoKSAmJiByZXNvdXJjZUxvYWRlcigpLT5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3Mzc3ODAwZDQuLjM1NTIw
MWI5NzA0MzVjNTRkNTRiM2ZiZjllNDQyYWNkMmJjYjJiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtNzEsOCAr
NzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiAKLSAg
ICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IFdlYlJlc291cmNlTG9hZGVyKFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgY29uc3Qg
VHJhY2tpbmdQYXJhbWV0ZXJzJik7CiAK
</data>
<flag name="commit-queue"
          id="452915"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431214</attachid>
            <date>2021-06-11 11:34:24 -0700</date>
            <delta_ts>2021-06-11 13:36:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226929-20210611113423.patch</filename>
            <type>text/plain</type>
            <size>119454</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU2NmE3NWVkMzYyOWNi
YWM4NTY2NTI4NWQ4YzcyY2QwY2M2MmViYS4uNmNmODY2MzVkMzQ5MTgxNjlkMzI5N2QxZmJmYWZj
YmFjYTFlOTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0wNi0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSByZWxlYXNlIGxv
Z2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgcmVsZWFzZSBs
b2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2ViQ29yZSwgdG8gZmFj
aWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhbk5hdmlnYXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5n
U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpc2Fs
bG93RGF0YVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZElu
U2FtZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpwcmVwYXJlRm9y
TG9hZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXR1cEZvclJlcGxh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BGb3JC
YWNrRm9yd2FyZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXREb2N1
bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRo
aXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWluUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3ND
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dy
ZXNzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRE
YXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nT25lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVj
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRv
ci5jcHA6CisKIDIwMjEtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBFdmVudFNvdXJjZS5jb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhj
ZXB0aW9uIHdoZW4gdGhlIHVybCBwYXJhbSBpcyBhbiBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NTJjOGI5NTQyNjNmYjcxYmU3MWU4ODhiNTBkZDgzMDgwOTRkNmEzYi4uMDY0YzAwNmJlODI1OGMz
NmZkNTA4YmU4YTg5Yzg5NGU5ZjQ5NzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MS0wNi0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJs
ZSByZWxlYXNlIGxvZ2dpbmcgaW4gZXBoZW1lcmFsIHNlc3Npb25zIGZvciBwYXJ0cyBvZiBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFi
bGUgcmVsZWFzZSBsb2dnaW5nIGluIGVwaGVtZXJhbCBzZXNzaW9ucyBmb3IgcGFydHMgb2YgV2Vi
Q29yZSwgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorCiAyMDIxLTA2LTExICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIENyYXNoIHdo
ZW4gZHJhZ2dpbmcgYW4gYWNjb3VudCBub2RlIGFib3ZlIFdlYlZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWRmYjM4YWVmYmU5
ZjcyNDc0ZGFmNzI3YWZlZGM0YTZjODYzODcyZC4uNjY4NDg2ZmQ4N2ZjZmU0NGUyOGMxYzVkMWE3
NjgyY2I5YmFlNzIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYobV9mcmFtZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
U2NyaXB0Q29udHJvbGxlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFND
UklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFNjcmlwdENvbnRyb2xsZXI6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpAQCAtNTg1LDcgKzU4NSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICAgICBpZiAo
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CisgICAgICAgIFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywg
ImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
LWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfQogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwpAQCAtODcwLDQgKzg3MCw0IEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI3Vu
ZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBTQ1JJUFRDT05UUk9MTEVS
X1JFTEVBU0VfTE9HX0VSUk9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1NGVhOTE4OTAx
ZmVkZGJlNTc0YzUxM2NiNjNiMDIwYWQzZGJkMzQ2Li5mNDJhNTU4OTk1OWYyMjRmMDk2YjIzMTdj
NWMxZGFlNGY4OGQzN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM0NCw4ICszNDQs
OCBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZh
bHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3Vt
ZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRv
cERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9H
X0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAg
LSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1
bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUlu
dDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzUzNyw3ICszNTM3LDcgQEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2
aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogCiAg
ICAgaWYgKGlzTmF2aWdhdGlvbkJsb2NrZWRCeVRoaXJkUGFydHlJRnJhbWVSZWRpcmVjdEJsb2Nr
aW5nKCp0YXJnZXRGcmFtZSwgZGVzdGluYXRpb25VUkwpKSB7CiAgICAgICAgIHByaW50TmF2aWdh
dGlvbkVycm9yTWVzc2FnZSgqdGFyZ2V0RnJhbWUsIHVybCgpLCAiVGhlIGZyYW1lIGF0dGVtcHRp
bmcgbmF2aWdhdGlvbiBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdyBpcyBjcm9zcy1vcmlnaW4gb3Ig
dW50cnVzdGVkIGFuZCB0aGUgdXNlciBoYXMgbmV2ZXIgaW50ZXJhY3RlZCB3aXRoIHRoZSBmcmFt
ZS4iX3MpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJO
YXZpZ2F0aW9uIHdhcyBwcmV2ZW50ZWQgYmVjYXVzZSBpdCB3YXMgdHJpZ2dlcmVkIGJ5IGEgY3Jv
c3Mtb3JpZ2luIG9yIHVudHJ1c3RlZCBpZnJhbWUiKTsKKyAgICAgICAgRE9DVU1FTlRfUkVMRUFT
RV9MT0dfRVJST1IoTG9hZGluZywgIk5hdmlnYXRpb24gd2FzIHByZXZlbnRlZCBiZWNhdXNlIGl0
IHdhcyB0cmlnZ2VyZWQgYnkgYSBjcm9zcy1vcmlnaW4gb3IgdW50cnVzdGVkIGlmcmFtZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NzM3LDExICs4NzM3LDYgQEAgYm9v
bCBEb2N1bWVudDo6c2hvdWxkSWdub3JlU3luY1hIUnMoKSBjb25zdAogICAgIHJldHVybiBtX251
bWJlck9mUmVqZWN0ZWRTeW5jWEhScyA+IG1heFJlamVjdGVkU3luY1hIUnNQZXJFdmVudExvb3BJ
dGVyYXRpb247CiB9CiAKLWJvb2wgRG9jdW1lbnQ6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2ZyYW1lIHx8IG1fZnJhbWUtPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogYm9vbCBEb2N1bWVu
dDo6aXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0CkBAIC04ODU5LDUgKzg4NTQsNSBAQCBKU0M6OlZN
JiBEb2N1bWVudDo6dm0oKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCisjdW5kZWYgRE9DVU1FTlRfUkVMRUFTRV9MT0df
RVJST1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjQ3MWE2M2NmNTg2YzgyMzE1ZTJkNjUwZjAw
ZDk5ZTY5NjY1NTZmNS4uOWRhMDRlN2Y3YWE4NTFkMGI4ZjcwYTk1OWU3NjdhOWNkMGI0MTcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQxNCw4ICs0MTQsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSk7CiAgICAgUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5LnZh
bHVlX29yKFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KIAotICAg
IGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VY
UE9SVCBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IERPTUltcGxlbWVudGF0aW9uJiBpbXBsZW1lbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNWY0YzdhZWNjZGY2NDZkYWM2MDUwZDA0YjRlOWEz
YmQzNjQyNDJlYi4uMzY3Njc1NzQxMDg5YTQ5ODg3MGFhOWUxNmEyMGI0MTliZWUwZWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAKICNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9v
cihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVm
aW5lIEZSQU1FX0lEICgobV9mcmFtZSA/IG1fZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFt
ZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUg
SVNfTUFJTl9GUkFNRSAobV9mcmFtZSA/IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSkK
LSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJ
dTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lE
LCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRMb2FkZXJBZGRpdGlvbnMu
Y3BwPgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCiAgICAgaWYgKHNob3VsZE5vdGlmeUFib3V0UHJv
dmlzaW9uYWxVUkxDaGFuZ2UpIHsKICAgICAgICAgLy8gTG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzU0ODMwMjMzPi4KICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2Fk
ZXIiKTsKKyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExv
YWRlcjo6c2V0UmVxdWVzdDogV2l0aCBubyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIiKTsK
ICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNp
b25hbFVSTCgpOwogICAgIH0KIH0KQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxKQogdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB7CiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19j
YXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBET0NV
TUVOVExPQURFUl9SRUxFQVNFX0xPRygic2V0TWFpbkRvY3VtZW50RXJyb3I6ICh0eXBlPSVkLCBj
b2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwogCiAgICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKICAgICBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5zZXRNYWluRG9jdW1lbnRFcnJvcih0aGlzLCBlcnJvcik7CkBAIC0y
NzAsNyArMjcwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIm1haW5SZWNlaXZl
ZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUo
KSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coIm1haW5SZWNlaXZlZEVycm9yOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxp
bnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIEFTU0VSVCghbWFp
blJlc291cmNlTG9hZGVyKCkpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lk
IERvY3VtZW50TG9hZGVyOjpmcmFtZURlc3Ryb3llZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkOiBtX2ZyYW1lPSVwIiwgbV9m
cmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9h
ZGVyOjpmcmFtZURlc3Ryb3llZDogbV9mcmFtZT0lcCIsIG1fZnJhbWUuZ2V0KCkpOwogICAgIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKIH0KIApAQCAtMzAyLDcg
KzMwMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZyYW1lRGVzdHJveWVkKCkKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2Fk
aW5nOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZzogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZSkKQEAg
LTM2Niw3ICszNjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAKICAg
ICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgYmVlbiBkZXRhY2hlZCBmcm9tIHRoaXMgZG9jdW1lbnQg
YnkgdGhlIG9udW5sb2FkIGhhbmRsZXIKICAgICBpZiAoYXV0byogZnJhbWVMb2FkZXIgPSBEb2N1
bWVudExvYWRlcjo6ZnJhbWVMb2FkZXIoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdG9wTG9hZGluZzogY2FuY2VsaW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FE
RVJfUkVMRUFTRV9MT0coInN0b3BMb2FkaW5nOiBjYW5jZWxpbmcgbG9hZCIpOwogICAgICAgICBp
ZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAgICAgIC8vIFN0b3AgdGhlIG1h
aW4gcmVzb3VyY2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2Uu
CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyLT5jYW5jZWxs
ZWRFcnJvcihtX3JlcXVlc3QpKTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2FkTQogICAgIH0KIAogICAgIGlmICghbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3Io
KS5pc051bGwoKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibm90aWZ5RmluaXNo
ZWQ6IGNhbmNlbGluZyBsb2FkICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4o
bV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS50eXBlKCkpLCBtX21haW5SZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpLmVycm9yQ29kZSgpKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVM
RUFTRV9MT0coIm5vdGlmeUZpbmlzaGVkOiBjYW5jZWxpbmcgbG9hZCAodHlwZT0lZCwgY29kZT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkudHlw
ZSgpKSwgbV9tYWluUmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKS5lcnJvckNvZGUoKSk7CiAKICAg
ICBtYWluUmVjZWl2ZWRFcnJvcihtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKIH0K
QEAgLTYyNywxMSArNjI3LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAgICAvLyBM
b2dnaW5nIGZvciA8cmRhcjovL3Byb2JsZW0vNTQ4MzAyMzM+LgogICAgIGlmICghZnJhbWVMb2Fk
ZXIoKSB8fCAhZnJhbWVMb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJv
dmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IFdpdGggbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIik7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlID0gIXJlZGlyZWN0
UmVzcG9uc2UuaXNOdWxsKCk7CiAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFj
dGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1ZXN0LnVybCgpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
OiBjYW5jZWxpbmcgLSBmb3JtIGFjdGlvbiBub3QgYWxsb3dlZCBieSBDU1AiKTsKKyAgICAgICAg
RE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogY2FuY2VsaW5nIC0g
Zm9ybSBhY3Rpb24gbm90IGFsbG93ZWQgYnkgQ1NQIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtNjQyLDEzICs2NDIsMTMgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICAgICAg
Ly8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCiAgICAgICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
cmVkaXJlY3RpbmdPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3BvbnNl
LnVybCgpKSk7CiAgICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4uZ2V0KCkuY2FuRGlzcGxh
eShuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVjdGluZyBVUkwgbm90IGFsbG93
ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CisgICAgICAgICAgICBET0NVTUVO
VExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBjYW5jZWxpbmcgLSByZWRpcmVj
dGluZyBVUkwgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGFyZ2V0Iik7CiAg
ICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0
KCksIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgY2FuY2VsTWFpblJl
c291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwb3J0QWxsb3dlZChuZXdSZXF1ZXN0LnVybCgpKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7Cisg
ICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBj
YW5jZWxpbmcgLSByZWRpcmVjdGluZyB0byBhIFVSTCB3aXRoIGEgYmxvY2tlZCBwb3J0Iik7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0QmxvY2tlZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAg
ICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5ibG9ja2VkRXJyb3Io
bmV3UmVxdWVzdCkpOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRy
eUxvYWRpbmdTdWJzdGl0dXRlRGF0YSgpCiAgICAgaWYgKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFs
aWQoKSB8fCAhbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmlu
ZyBzdWJzdGl0dXRlIGRhdGEiKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3Rh
cnRMb2FkaW5nTWFpblJlc291cmNlOiBSZXR1cm5pbmcgc3Vic3RpdHV0ZSBkYXRhIik7CiAgICAg
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVlc3QpOwogICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgbV9yZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCksIG51bGxwdHIpOwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6ZGlzYWxsb3dEYXRhUmVxdWVzdCgpIGNvbnN0CiAKICAgICAgICAgY3VycmVudERv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiTm90IGFsbG93ZWQgdG8gbmF2aWdhdGUgdG9wIGZy
YW1lIHRvIGRhdGEgVVJMICciLCBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiJy4iKSwgaWRlbnRpZmllcik7CiAgICAgfQotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5OiBjYW5ub3Qgc2hvdyBVUkwi
KTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3k6IGNhbm5vdCBzaG93IFVSTCIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
ZnJhbWUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVBZnRlckNv
bnRlbnRQb2xpY3k6IHBvbGljeUFjdGlvbj0laSByZWNlaXZlZCBieSBEb2N1bWVudExvYWRlciB3
aXRoIG51bGwgZnJhbWUiLCAoaW50KXBvbGljeSk7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JF
TEVBU0VfTE9HKCJjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogcG9saWN5QWN0aW9uPSVpIHJl
Y2VpdmVkIGJ5IERvY3VtZW50TG9hZGVyIHdpdGggbnVsbCBmcmFtZSIsIChpbnQpcG9saWN5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKICAgICBjYXNlIFBvbGljeUFjdGlvbjo6RG93bmxvYWQ6IHsKICAgICAgICAgLy8gbV9tYWlu
UmVzb3VyY2UgY2FuIGJlIG51bGwsIGUuZy4gd2hlbiBsb2FkaW5nIGEgc3Vic3RpdHV0ZSByZXNv
dXJjZSBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLgogICAgICAgICBpZiAoIW1fbWFpblJlc291cmNl
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZUFmdGVyQ29u
dGVudFBvbGljeTogY2Fubm90IHNob3cgVVJMIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURF
Ul9SRUxFQVNFX0xPRygiY29udGludWVBZnRlckNvbnRlbnRQb2xpY3k6IGNhbm5vdCBzaG93IFVS
TCIpOwogICAgICAgICAgICAgbWFpblJlY2VpdmVkRXJyb3IoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0xMzcxLDEyICsxMzcxLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmF0
dGFjaFRvRnJhbWUoRnJhbWUmIGZyYW1lKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YXR0YWNoVG9G
cmFtZSgpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIkRvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5n
ZXQoKSk7CisgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coIkRvY3VtZW50TG9hZGVyOjph
dHRhY2hUb0ZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZTogbV9mcmFtZT0lcCIsIG1fZnJh
bWUuZ2V0KCkpOworICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lOiBtX2ZyYW1lPSVwIiwgbV9mcmFtZS5nZXQoKSk7CiAKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGlmIChtX2hhc0V2ZXJCZWVuQXR0YWNoZWQpCkBAIC0xOTIyLDcg
KzE5MjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2Uo
KQogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBp
ZiAobWF5YmVMb2FkRW1wdHkoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydExvYWRpbmdNYWluUmVzb3VyY2U6IFJldHVybmluZyBlbXB0eSBkb2N1bWVudCIpOworICAg
ICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNl
OiBSZXR1cm5pbmcgZW1wdHkgZG9jdW1lbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKCkKIAogICAgICAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBv
dXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGlu
ZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgogICAgICAgICBpZiAoIW1fZnJhbWUgfHwgbV9yZXF1ZXN0
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExv
YWRpbmdNYWluUmVzb3VyY2U6IExvYWQgY2FuY2VsZWQgYWZ0ZXIgd2lsbFNlbmRSZXF1ZXN0Iik7
CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFp
blJlc291cmNlOiBMb2FkIGNhbmNlbGVkIGFmdGVyIHdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE5NTAsMzAgKzE5NTAsMzAgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIHJlbG9hZCB0aGUgY2FjaGUgbGF5ZXIgbWlnaHQgaGF2ZSBtYWRlIHRoZSBwcmV2
aW91cyByZXF1ZXN0IGNvbmRpdGlvbmFsLiBEb2N1bWVudExvYWRlciBjYW4ndCBoYW5kbGUgMzA0
IHJlc3BvbnNlcyBpdHNlbGYuCiAgICAgICAgIHJlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsK
IAotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2U6IFN0YXJ0aW5nIGxvYWQiKTsKKyAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0co
InN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZTogU3RhcnRpbmcgbG9hZCIpOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAobV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+Y2Fu
TG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0KSB8fCBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgYXV0byB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbWF0
Y2hSZWdpc3RyYXRpb24odXJsLCBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoYXV0byYmIHJlZ2lzdHJhdGlv
bkRhdGEpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghbV9tYWluRG9jdW1lbnRFcnJv
ci5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVz
ZSBvZiBtYWluIGRvY3VtZW50IGVycm9yICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0
PGludD4obV9tYWluRG9jdW1lbnRFcnJvci50eXBlKCkpLCBtX21haW5Eb2N1bWVudEVycm9yLmVy
cm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coInN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSBjYWxsYmFjazogTG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG9mIG1haW4gZG9jdW1lbnQgZXJyb3IgKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nh
c3Q8aW50PihtX21haW5Eb2N1bWVudEVycm9yLnR5cGUoKSksIG1fbWFpbkRvY3VtZW50RXJyb3Iu
ZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICghbV9mcmFtZSkgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJh
Y2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBubyBmcmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRMb2FkaW5nTWFpblJlc291cmNlIGNh
bGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm8gZnJhbWUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpOwog
ICAgICAgICAgICAgICAgIC8vIFByZWZlciBleGlzdGluZyBzdWJzdGl0dXRlIGRhdGEgKGZyb20g
V0tXZWJWaWV3LmxvYWREYXRhIGV0Yykgb3ZlciBzZXJ2aWNlIHdvcmtlciBmZXRjaC4KICAgICAg
ICAgICAgICAgICBpZiAodGhpcy0+dHJ5TG9hZGluZ1N1YnN0aXR1dGVEYXRhKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2FkaW5nTWFpblJl
c291cmNlIGNhbGxiYWNrOiBMb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2Ygc3Vic3RpdHV0ZSBkYXRh
Iik7CisgICAgICAgICAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFy
dExvYWRpbmdNYWluUmVzb3VyY2UgY2FsbGJhY2s6IExvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBz
dWJzdGl0dXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSAmJiB0aGlzLT50cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIp
OworICAgICAgICAgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlIGNhbGxiYWNrOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNo
ZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHRoaXMtPmxvYWRNYWluUmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CkBA
IC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWlu
UmVzb3VyY2UoKQogICAgICAgICB9CiAjZWxzZQogICAgICAgICBpZiAodHJ5TG9hZGluZ1JlcXVl
c3RGcm9tQXBwbGljYXRpb25DYWNoZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydExvYWRpbmdNYWluUmVzb3VyY2U6IExvYWRlZCBmcm9tIEFwcGxpY2F0aW9u
IENhY2hlIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygic3RhcnRM
b2FkaW5nTWFpblJlc291cmNlOiBMb2FkZWQgZnJvbSBBcHBsaWNhdGlvbiBDYWNoZSIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogICAgICAgICAvLyBUaGUgZnJhbWUgbWF5IGhhdmUgZ29uZSBhd2F5IGlmIHRo
aXMgbG9hZCB3YXMgY2FuY2VsbGVkIHN5bmNocm9ub3VzbHkgYW5kIHRoaXMgd2FzIHRoZSBsYXN0
IHBlbmRpbmcgbG9hZC4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHdlIG1heSBoYXZlIGZp
cmVkIHRoZSBsb2FkIGV2ZW50IGluIGEgcGFyZW50IGZyYW1lLgogICAgICAgICBpZiAoIW1fZnJh
bWUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWRNYWluUmVzb3Vy
Y2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIGZyYW1lIGhhcyBnb25lIGF3YXkiKTsK
KyAgICAgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291cmNl
OiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCBmcmFtZSBoYXMgZ29uZSBhd2F5Iik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fcmVxdWVzdC51
cmwoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxv
YWRNYWluUmVzb3VyY2U6IFVuYWJsZSB0byBsb2FkIG1haW4gcmVzb3VyY2UsIFVSTCBpcyBpbnZh
bGlkIik7CisgICAgICAgICAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygibG9hZE1haW5S
ZXNvdXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgVVJMIGlzIGludmFsaWQiKTsK
ICAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkuY2Fubm90U2hvd1VSTEVycm9yKG1fcmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZE1haW5SZXNv
dXJjZTogVW5hYmxlIHRvIGxvYWQgbWFpbiByZXNvdXJjZSwgcmV0dXJuaW5nIGVtcHR5IGRvY3Vt
ZW50Iik7CisgICAgICAgIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkTWFpblJlc291
cmNlOiBVbmFibGUgdG8gbG9hZCBtYWluIHJlc291cmNlLCByZXR1cm5pbmcgZW1wdHkgZG9jdW1l
bnQiKTsKIAogICAgICAgICBzZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAg
Ly8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBv
c3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApAQCAtMjA2Niw3ICsyMDY2LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAobV9tYWluUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS5kb21haW4oKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0
Q29udGVudEJsb2NrZXJEb21haW4pIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
bG9hZE1haW5SZXNvdXJjZTogQmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgZXJyb3IiKTsKKyAg
ICAgICAgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9MT0coImxvYWRNYWluUmVzb3VyY2U6IEJsb2Nr
ZWQgYnkgY29udGVudCBibG9ja2VyIGVycm9yIik7CiAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQoZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihtX3JlcXVl
c3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMDQsNyArMjEwNCw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgp
ID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KSA6IHJlc291cmNlRXJy
b3I7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRygiY2FuY2Vs
TWFpblJlc291cmNlTG9hZDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50Pihl
cnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBtX2RhdGFMb2FkVG9rZW4u
Y2xlYXIoKTsKIApAQCAtMjI4MiwxMSArMjI4Miw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFk
ZFBlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3Rvcihjb25zdCBTdHJpbmcm
CiB9CiAjZW5kaWYKIAotYm9vbCBEb2N1bWVudExvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fZnJhbWUgfHwgbV9mcmFtZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCk7Ci19Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6cHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZDUzNzk0N2UwMmZhZGZmMjZiZmFiMGU4M2Q4OTVjYTg3
M2NlMDg1Mi4uZTY5MzUzMmViZDY0ZjVjMDQyYzdjMzdkODM5MTg5NTk3ZDZlNjkwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM4NSw4ICszODUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgogCi0gICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSBjb25zdDsKLQogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZm
ZXIqKT4mJik7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFy
ZWRCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGQwMjdi
MjI2ZWIyNjZiNjk0NWFmMDAyNDVlZmViNGQyZWNlNTlkMWIuLmQ3MTNmN2RkNGE0OTJjZmMzNmE4
M2UxMGRhMjYyMTNkYWJlMjc1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTUyLDggKzE1Miw4IEBACiAKICNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRCAoKGZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVmaW5l
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBb
cGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxv
YWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1l
KCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0Vf
SUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
RyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAi
LCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBt
X2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihj
aGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBt
YWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2Zy
YW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZVJlcXVlc3Qs
IEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjaGFuZ2VMb2NhdGlvbjogZnJh
bWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VM
b2FkaW5nLCAiY2hhbmdlTG9jYXRpb246IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgIEFTU0VS
VChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsK
IAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKQEAgLTk0Miw3ICs5NDIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NhbGxJbXBsaWNpdENsb3NlKCkKIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZFVSTEludG9DaGlsZEZyYW1lOiBm
cmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJj
ZUxvYWRpbmcsICJsb2FkVVJMSW50b0NoaWxkRnJhbWU6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwog
CiAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVyZXIsIEYKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUmVmPEFyY2hp
dmU+JiYgYXJjaGl2ZSkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KFJlc291cmNlTG9hZGluZywgImxvYWRBcmNoaXZlOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkQXJjaGl2ZTog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJj
ZSA9IGFyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIEFTU0VSVChtYWluUmVzb3VyY2UpOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZvckNv
b2tpZXMoY29uc3QgVVJMJiB1cmwpCiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBVUkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0
aGluZyB0byBkby4KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBV
UkwmIHVybCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05h
dmlnYXRpb24pCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNv
dXJjZUxvYWRpbmcsICJsb2FkSW5TYW1lRG9jdW1lbnQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwor
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRJblNhbWVE
b2N1bWVudDogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Rh
dGUgb2JqZWN0LCB3ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VS
VCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKQEAg
LTExOTIsNyArMTE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQoKQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInByZXBhcmVGb3JMb2FkU3RhcnQ6
IFN0YXJ0aW5nIGZyYW1lIGxvYWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJwcmVwYXJlRm9yTG9hZFN0YXJ0OiBTdGFydGluZyBmcmFtZSBsb2FkIik7
CiAKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NTdGFydGVkKCk7CiAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKQEAgLTEyMTAsMTQgKzEyMTAs
MTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKICAgICBtX2NsaWVudC0+
cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIHNl
dFN0YXRlKEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0dXBGb3JSZXBsYWNlOiBTZXR0aW5nIHBy
b3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVw
KSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9kb2N1bWVudExv
YWRlciA9IG51bGxwdHI7CiAgICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgRXZlbnQq
IGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgc3RkOjpvcHRpb25hbDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRG
cmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVB
U0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGZyYW1lIGxvYWQgc3Rh
cnRlZCIpOwogCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24gYXdheSBp
bnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExvYWRlci4K
ICAgICBhdXRvIHByb3RlY3RGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CkBAIC0xMjI2LDEzICsx
MjI2LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdCYmIHJlcXVlc3QsIEV2ZW50KiBldmVudCwgUmVmCiAKICAgICBBU1NFUlQobV9mcmFtZS5k
b2N1bWVudCgpKTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4oKS5j
YW5EaXNwbGF5KHVybCkpIHsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChSZXNvdXJjZUxvYWRpbmcsICJsb2FkRnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBOb3Qg
YWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291cmNlIik7CisgICAgICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRGcmFtZVJlcXVlc3Q6IGNhbmNlbGluZyAt
IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2UiKTsKICAgICAgICAgcmVwb3J0TG9j
YWxMb2FkRmFpbGVkKCZtX2ZyYW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFwb3J0QWxsb3dlZCh1cmwp
KSB7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VM
b2FkaW5nLCAibG9hZEZyYW1lUmVxdWVzdDogY2FuY2VsaW5nIC0gcG9ydCBub3QgYWxsb3dlZCIp
OworICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2Fk
RnJhbWVSZXF1ZXN0OiBjYW5jZWxpbmcgLSBwb3J0IG5vdCBhbGxvd2VkIik7CiAgICAgICAgIHJl
cG9ydEJsb2NrZWRMb2FkRmFpbGVkKG1fZnJhbWUsIHVybCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBib29sIEZyYW1lTG9hZGVyOjppc1N0b3BMb2FkaW5n
QWxsb3dlZCgpIGNvbnN0CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVx
dWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9h
ZFR5cGUgbmV3TG9hZFR5cGUsIEV2ZW50KiBldmVudCwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVS
X1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRVUkw6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogICAgIEFTU0VSVChmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSA9PSAiR0VUIik7CiAKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0x
NDIyLDcgKzE0MjIsNyBAQCBTdWJzdGl0dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0
aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRnJhbWVMb2FkUmVxdWVzdCk6
IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291
cmNlTG9hZGluZywgImxvYWQgKEZyYW1lTG9hZFJlcXVlc3QpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMgfHwgbV9pbkNsZWFyUHJvdmlzaW9uYWxM
b2FkRm9yUG9saWN5Q2hlY2spCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzAsNyArMTQ3MCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24mJiBhY3Rpb24sIEZyYW1lTG9hZFR5cGUg
dHlwZSwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbjog
ZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAibG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uOiBmcmFtZSBsb2FkIHN0YXJ0ZWQi
KTsKIAogICAgIFJlZjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURv
Y3VtZW50TG9hZGVyKHJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0
LnVybCgpKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIGFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgp
LCBhY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKQEAgLTE0ODcsNyArMTQ4
Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
RG9jdW1lbnRMb2FkZXImIG5ld0RvY3VtZW50TG9hZGVyKQogewotICAgIEZSQU1FTE9BREVSX1JF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAibG9hZCAoRG9jdW1lbnRMb2Fk
ZXIpOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJsb2FkIChEb2N1bWVudExvYWRlcik6IGZyYW1lIGxvYWQgc3RhcnRl
ZCIpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVz
dCgpOwogICAgIC8vIEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCkBA
IC0xNTMwLDcgKzE1MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVy
JiBuZXdEb2N1bWVudExvYWRlcikKIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHR5cGUsIFJlZlB0
cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0
YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJs
b2FkV2l0aERvY3VtZW50TG9hZGVyOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKIAogICAgIC8vIFJl
dGFpbiBiZWNhdXNlIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IG1heSByZWxlYXNlIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0x
NTYwLDcgKzE1NjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgIC8vIExvZyBtYWlu
IGZyYW1lIG5hdmlnYXRpb24gdHlwZXMuCiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxv
YWRXaXRoRG9jdW1lbnRMb2FkZXI6IG1haW4gZnJhbWUgbG9hZCBzdGFydGVkIik7CisgICAgICAg
ICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkV2l0aERv
Y3VtZW50TG9hZGVyOiBtYWluIGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogICAgICAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lTG9hZFN0YXJ0ZWQobmV3VVJMLCB0eXBlKTsKICAgICAgICAgICAgIHBhZ2Ut
PnBlcmZvcm1hbmNlTG9nZ2luZygpLmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNl
TG9nZ2luZzo6TWFpbkZyYW1lTG9hZFN0YXJ0ZWQpOwogICAgICAgICB9CkBAIC0xNjI4LDcgKzE2
MjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZEZvclBvbGljeUNo
ZWNrKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2luQ2xlYXJQcm92aXNpb25h
bExvYWRGb3JQb2xpY3lDaGVjaywgdHJ1ZSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyLT5zdG9wTG9hZGluZygpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUmVzb3VyY2VMb2FkaW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWRGb3JQb2xpY3lDaGVjazog
Q2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjbGVhclByb3Zpc2lvbmFs
TG9hZEZvclBvbGljeUNoZWNrOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIg
KG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7
CiB9CiAKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhP
dmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiAgICAgaWYgKCFtX2RvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5n
OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhSZXNv
dXJjZUxvYWRpbmcsICJyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZzogZnJhbWUgbG9hZCBzdGFy
dGVkIik7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51
bnJlYWNoYWJsZVVSTCgpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXItPnJlcXVlc3QoKS51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
cmVsb2FkOiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xP
RyhSZXNvdXJjZUxvYWRpbmcsICJyZWxvYWQ6IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAg
Ly8gUmVwbGFjZSBlcnJvci1wYWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8g
cmVhY2guCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExv
YWRlci0+cmVxdWVzdCgpOwpAQCAtMTgwNCw3ICsxODA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW0gY2xlYXJQcm92aXNpb25hbEl0ZW0s
IFN0b3AKICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgY2hpbGQtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKGNsZWFyUHJvdmlzaW9uYWxJdGVt
KTsKIAotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2Fk
aW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCwgbV9k
b2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3Vy
Y2VMb2FkaW5nLCAic3RvcEFsbExvYWRlcnM6IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0l
cCwgbV9kb2N1bWVudExvYWRlcj0lcCIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKQogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2Fk
aW5nKCk7CkBAIC0xODEzLDcgKzE4MTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbSBjbGVhclByb3Zpc2lvbmFsSXRlbSwgU3RvcAogICAg
IGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiAhbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LmlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKSkKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmJyb3dzaW5nQ29udGV4dFJlbW92ZWQoZnJhbWUoKSk7CiAKLSAg
ICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInN0
b3BBbGxMb2FkZXJzOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKICAg
ICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsgICAgCkBAIC0xODI1LDcgKzE4MjUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdG9wRm9yQmFja0ZvcndhcmRDYWNoZSgpCiAgICAgaWYgKCFtX2Zy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKICAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoKTsKLSAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzdG9wRm9yQmFja0ZvcndhcmRDYWNoZTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwg
ZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic3RvcEZvckJhY2tGb3J3YXJkQ2FjaGU6IENsZWFyaW5n
IHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
PSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgICAgIHNldFBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAgICAgfQogCkBAIC0xOTAxLDcgKzE5
MDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXREb2N1bWVudExvYWRlcjogU2V0dGluZyBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldERvY3VtZW50TG9hZGVyOiBT
ZXR0aW5nIGRvY3VtZW50IGxvYWRlciB0byAlcCAod2FzICVwKSIsIGxvYWRlciwgbV9kb2N1bWVu
dExvYWRlci5nZXQoKSk7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2Fk
ZXItPmZyYW1lTG9hZGVyKCkgPT0gdGhpcyk7CiAKQEAgLTE5MjksNyArMTkyOSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnNldFBvbGljeURvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgaWYgKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNl
TG9hZGluZywgInNldFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVu
dCBsb2FkZXIgdG8gJXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNl
dFBvbGljeURvY3VtZW50TG9hZGVyOiBTZXR0aW5nIHBvbGljeSBkb2N1bWVudCBsb2FkZXIgdG8g
JXAgKHdhcyAlcCkiLCBsb2FkZXIsIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCiAg
ICAgaWYgKGxvYWRlcikKICAgICAgICAgbG9hZGVyLT5hdHRhY2hUb0ZyYW1lKG1fZnJhbWUpOwpA
QCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIgPT0gbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgInNldFByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIHRv
ICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0KCkp
OworICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgInNldFByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI6IFNldHRpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVy
IHRvICVwICh3YXMgJXApIiwgbG9hZGVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIuZ2V0
KCkpOwogCiAgICAgQVNTRVJUKCFsb2FkZXIgfHwgIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cik7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWxvYWRlciB8fCBsb2FkZXItPmZyYW1lTG9hZGVyKCkg
PT0gdGhpcyk7CkBAIC0xOTY5LDcgKzE5NjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0
ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQogICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAg
ICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBvbGRTdGF0ZSAhPSBuZXdTdGF0ZSkg
ewotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJj
ZUxvYWRpbmcsICJzZXRTdGF0ZTogbWFpbiBmcmFtZSBsb2FkIGNvbXBsZXRlZCIpOworICAgICAg
ICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAic2V0U3RhdGU6
IG1haW4gZnJhbWUgbG9hZCBjb21wbGV0ZWQiKTsKICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgp
LT5wZXJmb3JtYW5jZUxvZ2dpbmcoKS5kaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQZXJmb3JtYW5j
ZUxvZ2dpbmc6Ok1haW5GcmFtZUxvYWRDb21wbGV0ZWQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTk3Nyw3ICsxOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBu
ZXdTdGF0ZSkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQogewot
ICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAi
Y2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci5nZXQoKSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2Fk
aW5nLCAiY2xlYXJQcm92aXNpb25hbExvYWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50
IGxvYWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICBtX3Byb2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKICAg
ICBzZXRTdGF0ZShGcmFtZVN0YXRlOjpDb21wbGV0ZSk7CkBAIC0yMTU5LDcgKzIxNTksNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSogY2FjaGVk
UGFnZSkKICAgICBzZXREb2N1bWVudExvYWRlcihtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIu
Z2V0KCkpOwogICAgIGlmIChvcmlnaW5hbFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgIT0gbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm47Ci0gICAgRlJBTUVMT0FE
RVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJ0cmFuc2l0aW9uVG9D
b21taXR0ZWQ6IENsZWFyaW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQo
KSk7CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAidHJhbnNp
dGlvblRvQ29tbWl0dGVkOiBDbGVhcmluZyBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIgKG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcj0lcCkiLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAK
ICAgICAvLyBOb3RoaW5nIGVsc2UgY2FuIGludGVycnVwdCB0aGlzIGNvbW1pdCAtIHNldCB0aGUg
UHJvdmlzaW9uYWwtPkNvbW1pdHRlZCB0cmFuc2l0aW9uIGluIHN0b25lCkBAIC0yNTA0LDcgKzI1
MDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgp
CiAgICAgICAgIC8vIE9ubHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBu
ZXcgcHJvdmlzaW9uYWwgaXRlbS4KICAgICAgICAgYm9vbCBzaG91bGRSZXNldCA9ICFoaXN0b3J5
KCkucHJvdmlzaW9uYWxJdGVtKCk7CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5pc0xvYWRpbmdJ
bkFQSVNlbnNlKCkgfHwgcHJvdGVjdG9yLT5pc1N0b3BwaW5nKCkpIHsKLSAgICAgICAgICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZhaWxlZCBwcm92aXNpb25hbCBsb2FkIChpc1RpbWVv
dXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyb3JDb2RlID0gJWQpIiwgZXJyb3IuaXNU
aW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAg
ICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGYWlsZWQgcHJvdmlzaW9uYWwgbG9hZCAoaXNUaW1l
b3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9ICVkKSIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAK
ICAgICAgICAgICAgIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgqcHJvdGVjdG9yLCBl
cnJvcik7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3RlY3Rvci0+aXNMb2FkaW5nKCkpOwpAQCAt
MjU2NiwxMSArMjU2NiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpCiAKICAgICAgICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQgbG9h
ZGluZ0V2ZW50OwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIHdpdGggZXJyb3Ig
KGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJvckNvZGUgPSAlZCkiLCBl
cnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiY2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWU6IEZpbmlzaGVkIGZyYW1lIGxvYWQgd2l0
aCBlcnJvciAoaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGVycm9yQ29kZSA9
ICVkKSIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGYWlsTG9hZChl
cnJvcik7CiAgICAgICAgICAgICBsb2FkaW5nRXZlbnQgPSBBWE9iamVjdENhY2hlOjpBWExvYWRp
bmdGYWlsZWQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lOiBGaW5pc2hlZCBmcmFtZSBsb2FkIik7CisgICAgICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZTogRmluaXNoZWQgZnJhbWUgbG9hZCIpOwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICAgICAgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgICAg
ICAgICBhdXRvIHR5cGVzID0gT3B0aW9uU2V0PERhdGFEZXRlY3RvclR5cGU+IHsgbV9mcmFtZS5z
ZXR0aW5ncygpLmRhdGFEZXRlY3RvclR5cGVzKCkgfTsKQEAgLTMwMTcsNyArMzAxNyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgRXZlbnQqIGV2ZW50LCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZv
cm1TdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAibG9hZFBvc3RSZXF1ZXN0OiBmcmFtZSBsb2FkIHN0YXJ0ZWQiKTsKKyAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJsb2FkUG9zdFJlcXVlc3Q6IGZyYW1lIGxv
YWQgc3RhcnRlZCIpOwogCiAgICAgU3RyaW5nIGZyYW1lTmFtZSA9IHJlcXVlc3QuZnJhbWVOYW1l
KCk7CiAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSByZXF1ZXN0LmxvY2tIaXN0b3J5KCk7
CkBAIC0zMTgzLDcgKzMxODMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50
U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdQogICAgIC8vIElm
IHdlIGhhdmUgYSBwcm92aXNpb25hbCByZXF1ZXN0IGZvciBhIGRpZmZlcmVudCBkb2N1bWVudCwg
YSBmcmFnbWVudCBzY3JvbGwgc2hvdWxkIGNhbmNlbCBpdC4KICAgICBpZiAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKSkg
ewogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0g
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5n
LCAiY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcg
cHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9
JXApIiwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKyAgICAgICAgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVGcmFnbWVudFNjcm9s
bEFmdGVyTmF2aWdhdGlvblBvbGljeTogQ2xlYXJpbmcgcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9h
ZGVyIChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI9JXApIiwgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLmdldCgpKTsKICAgICAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihu
dWxscHRyKTsKICAgICB9CiAKQEAgLTM0MjQsNyArMzQyNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAgICAgYm9vbCBjYW5Db250aW51ZSA9IG5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9
PSBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCAmJiBzaG91bGRDbG9zZSgp
ICYmICF1cmxJc0Rpc2FsbG93ZWQ7CiAKICAgICBpZiAoIWNhbkNvbnRpbnVlKSB7Ci0gICAgICAg
IEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZy
YW1lIGR1ZSB0byB0aGUgZm9sbG93aW5nIHJlYXNvbnMgKCIKKyAgICAgICAgRlJBTUVMT0FERVJf
UkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBjYW4ndCBjb250aW51ZSBsb2FkaW5nIGZyYW1lIGR1ZSB0byB0aGUgZm9sbG93aW5n
IHJlYXNvbnMgKCIKICAgICAgICAgICAgICJhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgPSAl
ZCwgIgogICAgICAgICAgICAgInJlcXVlc3RVUkxJc1ZhbGlkID0gJWQsICIKICAgICAgICAgICAg
ICJuYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSAlZCkiLApAQCAtMzQ2OCwxMiArMzQ2OCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82MjUwODU2
PiAtIEluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBvbiBwYWdlcyB3aXRoIG11bHRpcGxlIGZyYW1l
cywgc3RvcEFsbExvYWRlcnMoKQogICAgIC8vIG1pZ2h0IGRldGFjaCB0aGUgY3VycmVudCBGcmFt
ZUxvYWRlciwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgYmFpbCBvbiB0aGlzIG5ld2x5IGRlZnVu
Y3QgbG9hZC4gCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICBGUkFNRUxPQURF
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3QgY29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNl
IGl0IGJlY2FtZSBkZWZ1bmN0Iik7CisgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJl
c291cmNlTG9hZGluZywgImNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeTogY2FuJ3Qg
Y29udGludWUgbG9hZGluZyBmcmFtZSBiZWNhdXNlIGl0IGJlY2FtZSBkZWZ1bmN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVyKG1f
cG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciAobV9wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7
CisgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5OiBTZXR0aW5nIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxv
YWRlciAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyPSVwKSIsIG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9sb2FkVHlwZSA9IHR5cGU7CiAgICAgc2V0U3RhdGUo
RnJhbWVTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC0zNDg0LDcgKzM0ODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBpZiAoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgp
ICYmIGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKS0+aXNJbkJhY2tGb3J3YXJkQ2FjaGUoKSkg
ewogICAgICAgICAgICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgp
LCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z1Jlc3VsdFBhc3MsIFNob3VsZFNhbXBsZTo6WWVzKTsKICAgICAgICAgICAgIGxvYWRQcm92aXNp
b25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwotICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmln
YXRpb25Qb2xpY3k6IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxs
IGJlIGxvYWRlZCBmcm9tIGNhY2hlIik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNF
X0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3k6
IGNhbid0IGNvbnRpbnVlIGxvYWRpbmcgZnJhbWUgYmVjYXVzZSBpdCB3aWxsIGJlIGxvYWRlZCBm
cm9tIGNhY2hlIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6YmFja0ZvcndhcmRDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJldHJpZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTM0OTIsNyArMzQ5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlCiAKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgICAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBGcmFtZSBs
b2FkIGNhbmNlbGVkIC0gbm8gcHJvdmlzaW9uYWwgZG9jdW1lbnQgbG9hZGVyIGJlZm9yZSBwcmVw
YXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhS
ZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBs
ZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3Vt
ZW50IGxvYWRlciBiZWZvcmUgcHJlcGFyZUZvckxvYWRTdGFydCIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzUwMSwxMyArMzUwMSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAvLyBUaGUgbG9hZCBtaWdodCBiZSBjYW5jZWxsZWQg
aW5zaWRlIG9mIHByZXBhcmVGb3JMb2FkU3RhcnQoKSwgbnVsbGluZyBvdXQgdGhlIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlciwKICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBudWxsIGNoZWNr
IGl0IGFnYWluLgogICAgICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewot
ICAgICAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChSZXNvdXJjZUxv
YWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kgKGNvbXBsZXRpb25IYW5k
bGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRl
ciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CisgICAgICAgICAgICBGUkFNRUxPQURFUl9S
RUxFQVNFX0xPRyhSZXNvdXJjZUxvYWRpbmcsICJjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Q
b2xpY3kgKGNvbXBsZXRpb25IYW5kbGVyKTogRnJhbWUgbG9hZCBjYW5jZWxlZCAtIG5vIHByb3Zp
c2lvbmFsIGRvY3VtZW50IGxvYWRlciBhZnRlciBwcmVwYXJlRm9yTG9hZFN0YXJ0Iik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBhY3RpdmVEb2NMb2FkZXIgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgICAgICBp
ZiAoYWN0aXZlRG9jTG9hZGVyICYmIGFjdGl2ZURvY0xvYWRlci0+aXNMb2FkaW5nTWFpblJlc291
cmNlKCkpIHsKLSAgICAgICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UmVzb3VyY2VMb2FkaW5nLCAiY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5IChjb21w
bGV0aW9uSGFuZGxlcik6IE1haW4gZnJhbWUgYWxyZWFkeSBiZWluZyBsb2FkZWQiKTsKKyAgICAg
ICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImNvbnRpbnVl
TG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSAoY29tcGxldGlvbkhhbmRsZXIpOiBNYWluIGZyYW1l
IGFscmVhZHkgYmVpbmcgbG9hZGVkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0zNzMwLDcgKzM3MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2Ft
ZURvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIC8vIG1ldGhvZHMgb2YgRnJhbWVMb2Fk
ZXIuCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJ
dGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUs
IEZvcm1TdWJtaXNzaW9uQ2FjaGVMb2FkUG9saWN5IGNhY2hlTG9hZFBvbGljeSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKIHsKLSAgICBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKFJlc291cmNlTG9hZGluZywgImxvYWRE
aWZmZXJlbnREb2N1bWVudEl0ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOworICAgIEZSQU1FTE9B
REVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW06IGZyYW1lIGxvYWQgc3RhcnRlZCIpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFt
ZShtX2ZyYW1lKTsKIApAQCAtMzg3Myw3ICszODczLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0
cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogICAgICAgICBsb2FkRGlm
ZmVyZW50RG9jdW1lbnRJdGVtKCppdGVtLCBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSwgbG9hZFR5
cGUsIE1heU5vdEF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUmVzb3VyY2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5S
ZXNvdXJjZUxvYWQ6IFJldHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiBy
ZXNvdXJjZSBsb2FkIGZhaWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3Rv
cnkgaXRlbS4iKTsKKyAgICAgICAgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoUmVzb3Vy
Y2VMb2FkaW5nLCAicmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQ6IFJl
dHJ5aW5nIGxvYWQgYWZ0ZXIgZmFpbGVkIGNhY2hlLW9ubHkgbWFpbiByZXNvdXJjZSBsb2FkIGZh
aWxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHByb3Zpc2lvbmFsIGhpc3RvcnkgaXRlbS4iKTsKICAg
ICB9CiB9CiAKQEAgLTQwNTQsMTEgKzQwNTQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRl
c3RpbmdPdmVycmlkZXMoKQogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xp
Y3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKS5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6aGFz
SFRNTFZpZXcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAppbmRleCAwMDRmYmQ5YjdjY2ZiZjhhNGVmOGRkYzA3NWYwNWJlNzJhYmM3MTlh
Li5mMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlhNWQ3OTY3YzgyNjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzA5LDcgKzMwOSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBVUkwmIHByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTDsgfQogICAgIHZvaWQgc2V0
UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9w
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCA9IHVybDsgfQogCi0gICAgYm9vbCBp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNz
VGV4dElucHV0RnJvbUVkaXRpbmcoKSBjb25zdDsKICAgICBib29sIGlzUmVsb2FkaW5nRnJvbU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2Fk
RnJvbU9yaWdpbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CmluZGV4IGUyNGZkZWQyMjI1ZjFjMTkxOGY0NTQwMTc1NjY3MTdlMjA0ODRlYWIuLjBkY2I0NzU1
NmQwNDg3NDg3ODY1NmU0NTljOWJhYzlhZjY0ZGNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUFJPR1JFU1NfVFJBQ0tFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJvZ3Jlc3NUcmFja2VyOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFt
ZSYgZnJhbWUpCiAgICAgfQogICAgIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzKys7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2YWx1
ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2Fk
ICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQ
Uk9HUkVTU19UUkFDS0VSX1JFTEVBU0VfTE9HKCJwcm9ncmVzc1N0YXJ0ZWQ6IGZyYW1lICVwLCB2
YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5M
b2FkICVkIiwgJmZyYW1lLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJh
bWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKIAog
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZSk7CkBAIC0xNDMsNyAr
MTQzLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSYgZnJh
bWUpCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZyYW1l
KQogewogICAgIExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGNvbXBsZXRlZCAoJXApIC0gZnJhbWUg
JXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFt
ZSAlcCIsIHRoaXMsICZmcmFtZSwgZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicHJvZ3Jlc3NDb21wbGV0ZWQ6IGZyYW1lICVwLCB2YWx1ZSAlZiwgdHJhY2tlZCBm
cmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwLCBpc01haW5Mb2FkICVkIiwgJmZyYW1lLCBt
X3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5n
UHJvZ3Jlc3NGcmFtZS5nZXQoKSwgbV9pc01haW5Mb2FkKTsKKyAgICBQUk9HUkVTU19UUkFDS0VS
X1JFTEVBU0VfTE9HKCJwcm9ncmVzc0NvbXBsZXRlZDogZnJhbWUgJXAsIHZhbHVlICVmLCB0cmFj
a2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAsIGlzTWFpbkxvYWQgJWQiLCAmZnJh
bWUsIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2lu
YXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpLCBtX2lzTWFpbkxvYWQpOwogCiAgICAgaWYgKG1fbnVt
UHJvZ3Jlc3NUcmFja2VkRnJhbWVzIDw9IDApCiAgICAgICAgIHJldHVybjsKQEAgLTE2MCw3ICsx
NjAsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21wbGV0ZWQoRnJhbWUmIGZy
YW1lKQogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiB7CiAg
ICAgTE9HKFByb2dyZXNzLCAiRmluYWwgcHJvZ3Jlc3MgY29tcGxldGUgKCVwKSIsIHRoaXMpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUg
JWYsIHRyYWNrZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAl
ZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dy
ZXNzVHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNN
YWluTG9hZCwgaXNNYWluTG9hZFByb2dyZXNzaW5nKCkpOworICAgIFBST0dSRVNTX1RSQUNLRVJf
UkVMRUFTRV9MT0coImZpbmFsUHJvZ3Jlc3NDb21wbGV0ZTogdmFsdWUgJWYsIHRyYWNrZWQgZnJh
bWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCwgaXNNYWluTG9hZCAlZCwgaXNNYWluTG9hZFBy
b2dyZXNzaW5nICVkIiwgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1l
cywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0KCksIG1faXNNYWluTG9hZCwgaXNNYWlu
TG9hZFByb2dyZXNzaW5nKCkpOwogCiAgICAgYXV0byBmcmFtZSA9IFdURk1vdmUobV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUpOwogCkBAIC0zMTUsMTIgKzMxNSw0IEBAIHZvaWQgUHJvZ3Jlc3NU
cmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQoKQogICAgICAgICBtX3Byb2dyZXNz
SGVhcnRiZWF0VGltZXIuc3RvcCgpOwogfQogCi1ib29sIFByb2dyZXNzVHJhY2tlcjo6aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fb3JpZ2luYXRpbmdQcm9n
cmVzc0ZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9vcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwotfQotCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggYTk0MDRjNjhlMTJlYzk5
ZTQwYTBkNjNkZGU3ZTE2M2U2NTA2ODVlOC4uMzE5YjBjYzgxYjk5NDYxZDhkNWU4ZjUxOTI1ZjRl
YTcwNGMwNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApAQCAt
NjksNyArNjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluYWxQcm9ncmVzc0NvbXBsZXRlKCk7
CiAKICAgICB2b2lkIHByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZCgpOwotICAgIGJvb2wgaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9u
ZyBzX3VuaXF1ZUlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDJiMzM2NjMyNzJkNDFiZjE0NmRhNWU1MGE0YTdhMzA0YjgzMjMxNzMuLjg3
ZTQxNDhmMjc5Mjc1MTU4NTczYjIzY2EzZmMxODY5ZTBkODIwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNjQsMTAgKzY0LDEwIEBACiAjaW5jbHVkZSAi
UHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExP
V0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICNkZWZpbmUgUEFHRV9JRCAo
KGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6
IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUo
KSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFt
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlz
LCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFf
QVJHU19fKQorI2RlZmluZSBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBSZXNvdXJjZUxvYWRlcjo6
IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDkgKzEy
Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50
UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9h
ZGVyIHx8ICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmICghbV9kb2N1
bWVudExvYWRlcikKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImluaXQ6IENh
bmNlbGxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBkb2N1bWVudCBsb2FkZXIuIik7CisgICAgICAg
ICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGRvY3VtZW50IGxvYWRlci4iKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5pdDogQ2FuY2VsbGluZyBiZWNhdXNlIHRoZSBk
b2N1bWVudCBsb2FkZXIgaGFzIG5vIGZyYW1lLiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgYmVjYXVzZSB0aGUgZG9jdW1lbnQgbG9h
ZGVyIGhhcyBubyBmcmFtZS4iKTsKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQpAQCAtMTQzLDE0ICsxNDMsMTQgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBtX2RlZmVyc0xvYWRpbmcgPSBtX29wdGlvbnMuZGVm
ZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcgJiYgbV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCk7CiAKICAgICBpZiAobV9vcHRp
b25zLnNlY3VyaXR5Q2hlY2sgPT0gU2VjdXJpdHlDaGVja1BvbGljeTo6RG9TZWN1cml0eUNoZWNr
ICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkoY2xp
ZW50UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiaW5p
dDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIp
OworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2FuY2VsbGluZyBs
b2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIpOwogICAgICAgICBGcmFt
ZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVl
c3QudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKCFwb3J0
QWxsb3dlZChjbGllbnRSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8gYSBibG9ja2VkIHBvcnQuIik7CisgICAg
ICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgdG8g
YSBibG9ja2VkIHBvcnQuIik7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRCbG9ja2VkTG9h
ZEZhaWxlZCgqbV9mcmFtZSwgY2xpZW50UmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTE3MiwxMyArMTcyLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1
ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRlciB3YXMgc3RvcHBl
ZCBhcyBhIHJlc3VsdCBvZiB3aWxsU2VuZFJlcXVlc3QsIGJhaWwgb3V0LgogICAgICAgICBpZiAo
bV9yZWFjaGVkVGVybWluYWxTdGF0ZSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiaW5pdDogQ2FuY2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgd2FzIHN0b3BwZWQgYXMgYSBy
ZXN1bHQgb2Ygd2lsbFNlbmRSZXF1ZXN0LiIpOworICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcgbG9hZCBiZWNhdXNlIGl0IHdhcyBzdG9wcGVk
IGFzIGEgcmVzdWx0IG9mIHdpbGxTZW5kUmVxdWVzdC4iKTsKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIGlm
IChyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJpbml0OiBDYW5jZWxsaW5nIGxvYWQgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBudWxsLiIpOwor
ICAgICAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImluaXQ6IENhbmNlbGxpbmcg
bG9hZCBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIG51bGwuIik7CiAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAg
IH0KQEAgLTI4OSwxMiArMjg5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJM
KCkKICAgICAgICAgaWYgKHRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQi
KTsKKyAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJsb2FkRGF0YVVSTDog
ZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQiKTsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
ZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJE
YXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHRoaXMtPndhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogTG9hZCB3YXMgY2FuY2VsbGVkIik7Cisg
ICAgICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygibG9hZERhdGFVUkw6IExvYWQg
d2FzIGNhbmNlbGxlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZQogICAgICAgICAgICAgYm9vbCBi
bG9ja2VkTG9hZCA9IHJlc3VsdHMuc3VtbWFyeS5ibG9ja2VkTG9hZDsKICAgICAgICAgICAgIENv
bnRlbnRFeHRlbnNpb25zOjphcHBseVJlc3VsdHNUb1JlcXVlc3QoV1RGTW92ZShyZXN1bHRzKSwg
cGFnZSwgcmVxdWVzdCk7CiAgICAgICAgICAgICBpZiAoYmxvY2tlZExvYWQpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDog
cmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tlciIpOworICAg
ICAgICAgICAgICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tl
ciIpOwogICAgICAgICAgICAgICAgIGRpZEZhaWwoYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cigpKTsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZQogI2VuZGlmCiAKICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBj
YW5jZWxlZCBiZWNhdXNlIG9mIGVtcHR5IHJlcXVlc3QiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIpOwogICAgICAgICBkaWRGYWlsKGNhbm5v
dFNob3dVUkxFcnJvcigpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRl
ciB3YXMgc3RvcHBlZCBhcyBhIHJlc3VsdCBvZiBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCwgYmFpbCBvdXQKICAgICAgICAgaWYgKG1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIHJlYWNoZWQgdGVybWluYWwgc3RhdGUgYWZ0ZXIgY2FsbGluZyBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCgpIik7CisgICAgICAgICAgICBSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
cmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSBhZnRlciBjYWxsaW5nIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KCkiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MjgsNyArNDI4
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKIAogICAgIGJvb2wgaXNSZWRpcmVjdCA9ICFy
ZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBQcm9jZXNz
aW5nIGNyb3NzLW9yaWdpbiByZWRpcmVjdCIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IFByb2Nlc3NpbmcgY3Jvc3Mtb3JpZ2lu
IHJlZGlyZWN0Iik7CiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5jcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdC51cmwoKSk7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkuZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFp
bihyZXF1ZXN0LnVybCgpKSk7CkBAIC00NDMsMTMgKzQ0MywxMyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZQogCiAgICAgICAgIGlmIChyZWRpcmVjdFVSTC5wcm90b2NvbElzRGF0YSgpKSB7CiAg
ICAgICAgICAgICAvLyBIYW5kbGUgZGF0YSBVUkwgZGVjb2RpbmcgbG9jYWxseS4KLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOworICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBSZWRp
cmVjdGVkIHRvIGEgZGF0YSBVUkwuIFByb2Nlc3NpbmcgbG9jYWxseSIpOwogICAgICAgICAgICAg
ZmluaXNoTmV0d29ya0xvYWQoKTsKICAgICAgICAgICAgIGxvYWREYXRhVVJMKCk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJ
bnRlcm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICBSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9
CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxldGlvbkhhbgogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBp
ZiAoIWRvY3VtZW50LT51c2VkTGVnYWN5VExTKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgidXNlZExlZ2FjeVRMUzoiKTsKKyAgICAgICAgICAgICAgICAgICAg
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInVzZWRMZWdhY3lUTFM6Iik7CiAgICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPmNvbnNvbGUoKS5hZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiTG9hZGVkIHJlc291cmNlIGZy
b20gIiwgci51cmwoKS5ob3N0KCksICIgdXNpbmcgVExTIDEuMCBvciAxLjEsIHdoaWNoIGFyZSBk
ZXByZWNhdGVkIHByb3RvY29scyB0aGF0IHdpbGwgYmUgcmVtb3ZlZC4gUGxlYXNlIHVzZSBUTFMg
MS4yIG9yIG5ld2VyIGluc3RlYWQuIiksIDAsIGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldFVzZWRMZWdhY3lUTFModHJ1ZSk7CkBAIC01
NzgsNyArNTc4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2Fk
aW5nOiIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5n
OiIpOwogCiAgICAgZGlkRmluaXNoTG9hZGluZ09uZVBhcnQobmV0d29ya0xvYWRNZXRyaWNzKTsK
IApAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmdPbmVQYXJ0KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAgICAgLy8gSWYg
bG9hZCBoYXMgYmVlbiBjYW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nICh3aGljaCBjb3VsZCBoYXBw
ZW4gd2l0aCBhCiAgICAgLy8gSmF2YVNjcmlwdCB0aGF0IGNoYW5nZXMgdGhlIHdpbmRvdyBsb2Nh
dGlvbiksIGRvIG5vdGhpbmcuCiAgICAgaWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0OiBMb2FkIHdhcyBj
YW5jZWxsZWQgYWZ0ZXIgZmluaXNoaW5nLiIpOworICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkRmluaXNoTG9hZGluZ09uZVBhcnQ6IExvYWQgd2FzIGNhbmNlbGxlZCBhZnRl
ciBmaW5pc2hpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX3Jl
YWNoZWRUZXJtaW5hbFN0YXRlKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nT25lUGFydChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6Iik7Cisg
ICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZEZhaWw6Iik7CiAKICAgICBpZiAod2Fz
Q2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZXNvdXJjZVJlcXVlcwogewogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVk
SGFuZGxlKGhhbmRsZSk7CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3RBc3luYzogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UiKTsKKyAgICAgICAgUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTc1NiwxMyArNzU2LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRl
bnQgYmxvY2tlciIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2Vk
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CiAg
ICAgZGlkRmFpbChibG9ja2VkRXJyb3IoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNh
bm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBpbnZhbGlk
IFVSTCIpOworICAgIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3YXNCbG9ja2VkOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgaW52YWxpZCBVUkwiKTsKICAgICBkaWRGYWls
KGNhbm5vdFNob3dVUkxFcnJvcigpKTsKIH0KIApAQCAtODY5LDEzICs4NjksOCBAQCBib29sIFJl
c291cmNlTG9hZGVyOjppc1F1aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi1i
b29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICN1
bmRlZiBQQUdFX0lECiAjdW5kZWYgRlJBTUVfSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggNDc4OTc1NDgxNDQ3YjE2Y2I5ZGQ0OGRkNGI1N2RiYmRjNDFkZWI1Mi4u
N2E0YTBkN2Q3ZjQ2NDUzNmMyYzY4ODVhZjgzNjlkZjA2OTc1YmI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTE1MSw3ICsxNTEsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIGNvbnN0IEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0
KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0OwogCiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDJmMTM5OTM2ZTk3MTFjNDMwNDVlZmRjMDdjNzc0NDg0MmFm
ZGVlNDMuLmEyNjFlYWVmNGYyNGQxNmYxOTQ1NGRhNWEwYmY5NTNlN2ZiYjIyZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjcsMTYgKzY3LDE2
IEBACiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlci5oIgogI2VuZGlmCiAKLSN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECi0jdW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAor
I3VuZGVmIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HCisjdW5kZWYgU1VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1IKICNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFt
ZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSku
dG9VSW50NjQoKSkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKGZtdCwgLi4uKSBVTlVTRURfVkFSSUFCTEUodGhpcykKLSNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMp
CisjZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBVTlVTRURf
VkFSSUFCTEUodGhpcykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJS
T1IoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQogI2Vsc2UKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJy
ZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZUxvYWRl
cigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0g
U3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVM
b2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBTVUJSRVNPVVJD
RUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coUmVzb3VyY2VMb2FkaW5n
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxv
YWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9
JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBm
cmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChiCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7Cisg
ICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUigiaW5pdDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CkBAIC0xOTAsNyArMTkwLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRl
cm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5ldyByZXF1ZXN0IGlzIGludmFs
aWQiKTsKKyAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVx
dWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgbmV3IHJlcXVlc3Qg
aXMgaW52YWxpZCIpOwogICAgICAgICBjYW5jZWwoY2Fubm90U2hvd1VSTEVycm9yKCkpOwogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAg
fQpAQCAtMjA0LDIwICsyMDQsMjAgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICBhdXRv
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVkaXJlY3RSZXNwb25zZV0gKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkgfHwgcmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBuZXcgcmVxdWVzdCBp
cyBOVUxMICgxKSIpOworICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIG5ldyByZXF1ZXN0IGlzIE5VTEwgKDEpIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6
IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7
CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5k
UmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVhY2hlZCB0
ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNw
b25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBz
dGF0ZTsgY2FsbGluZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAgICBTVUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlYWNo
ZWQgdGVybWluYWwgc3RhdGU7IGNhbGxpbmcgY29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgyKSIpOwor
ICAgICAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHJlcXVlc3QgaXMg
TlVMTCAoMikiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgICAg
IGlmIChtX3Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNv
dXJjZSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBtX2Rv
Y3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdChy
ZXF1ZXN0KTsKIAotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcgY29tcGxldGlv
biBoYW5kbGVyIik7CisgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcg
Y29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgfTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIAotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJl
Y3QiKTsKKyAgICAgICAgICAgICAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3Qg
YWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdCIpOwogCiAgICAgICAgICAgICAgICAgY2FuY2Vs
KGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CkBAIC0yNTAsMTcgKzI1MCwxNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjbwogICAgICAgICAgICAgb3BhcXVlUmVkaXJlY3RlZFJlc3BvbnNlLnNldFRhaW50aW5nKFJl
c291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWVyZWRpcmVjdCk7CiAgICAgICAgICAgICBt
X3Jlc291cmNlLT5yZXNwb25zZVJlY2VpdmVkKG9wYXF1ZVJlZGlyZWN0ZWRSZXNwb25zZSk7CiAg
ICAgICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVk
IHRlcm1pbmFsIHN0YXRlIik7CisgICAgICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3
UmVxdWVzdCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQi
KTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQiKTsKIAogICAgICAgICAgICAg
TmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKICAgICAgICAgICAgIGRpZEZpbmlzaExv
YWRpbmcoZW1wdHlNZXRyaWNzKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3JlZGlyZWN0Q291
bnQrKyA+PSBvcHRpb25zKCkubWF4UmVkaXJlY3RDb3VudCkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQg
Y2FuY2VsZWQgYmVjYXVzZSB0b28gbWFueSByZWRpcmVjdHMiKTsKKyAgICAgICAgICAgIFNVQlJF
U09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3Vy
Y2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0cyIpOwogICAgICAgICAg
ICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAsIHJlcXVlc3QoKS51cmwoKSwgIlRv
byBtYW55IHJlZGlyZWN0aW9ucyJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkp
OwogICAgICAgICB9CkBAIC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBj
bwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLnVwZGF0ZVJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKG1fcmVzb3VyY2UtPnR5
cGUoKSwgbmV3UmVxdWVzdCwgb3B0aW9ucygpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2Vs
ZWQgYmVjYXVzZSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24gKHJlYWxseSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24pIHNhaWQgbm8iKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAo
cmVhbGx5IENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbikg
c2FpZCBubyIpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIXBvcnRBbGxvd2VkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9h
ZCAocmVkaXJlY3QpIGNhbmNlbGVkIGJlY2F1c2UgaXQgYXR0ZW1wdGVkIHRvIHVzZSBhIGJsb2Nr
ZWQgcG9ydCIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIChyZWRpcmVjdCkgY2FuY2VsZWQg
YmVjYXVzZSBpdCBhdHRlbXB0ZWQgdG8gdXNlIGEgYmxvY2tlZCBwb3J0Iik7CiAgICAgICAgICAg
ICBpZiAobV9mcmFtZSkKICAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tl
ZExvYWRGYWlsZWQoKm1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkpOwogICAgICAgICAgICAgY2Fu
Y2VsKGZyYW1lTG9hZGVyKCktPmJsb2NrZWRFcnJvcihuZXdSZXF1ZXN0KSk7CkBAIC0yOTUsMTgg
KzI5NSwxOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgYXV0byBlcnJv
ck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiwgbmV3
UmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNl
IFNoYXJpbmcgcG9saWN5OiAiLCBhY2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSk7CiAg
ICAgICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJl
c291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBjcm9zc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIGRl
bmllZCBieSBDT1JTIHBvbGljeSIpOworICAgICAgICAgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2UgY3Jvc3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3ki
KTsKICAgICAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0
KCkudXJsKCksIGVycm9yTWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCkpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSAm
JiBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNob3VsZERlZmVySW1h
Z2VMb2FkKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBi
ZWNhdXNlIGl0J3MgYW4gaW1hZ2UgdGhhdCBzaG91bGQgYmUgZGVmZXJlZCIpOworICAgICAgICAg
ICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgaXQncyBhbiBpbWFnZSB0aGF0IHNob3Vs
ZCBiZSBkZWZlcmVkIik7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogICAg
ICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUobmV3UmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29u
dGludWVXaWxsU2VuZFJlcXVlc3QgPSBXVEZNb3ZlKGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGRvbmUg
bm90aWZ5aW5nIGNsaWVudHMiKTsKKyAgICAgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgZG9uZSBub3RpZnlpbmcg
Y2xpZW50cyIpOwogICAgICAgICAgICAgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAg
ICAgaWYgKHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vy
dmljZVdvcmtlciAmJiByZXNwb25zZS51cmwoKSAhPSByZXF1ZXN0KCkudXJsKCkpIHsKICAgICAg
ICAgYXV0byYgbG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICAgICAgaWYgKCFsb2FkZXIuYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KG1f
cmVzb3VyY2UtPnR5cGUoKSwgcmVzcG9uc2UudXJsKCksIG9wdGlvbnMoKSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxv
YWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOworICAgICAgICAgICAg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2Vs
aW5nIGxvYWQgYmVjYXVzZSBub3QgYWxsb3dlZCBieSBjb250ZW50IHBvbGljeSIpOwogICAgICAg
ICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoeyB9LCAwLCByZXNwb25zZS51cmwoKSwgeyB9LCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogI2VuZGlm
CiAKICAgICBpZiAoYXV0byBlcnJvciA9IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKHJlcXVl
c3QoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSBy
ZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEgbm9uLXJhbmdlIHJlcXVlc3QiKTsKKyAgICAgICAgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5n
IGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSByZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEg
bm9uLXJhbmdlIHJlcXVlc3QiKTsKICAgICAgICAgY2FuY2VsKFdURk1vdmUoKmVycm9yKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBDb20KICAgICBpZiAoIWFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdCkgewogICAgICAgICBp
ZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGFjY2Vzc0NvbnRyb2xDaGVja1Jlc3VsdC5lcnJvcigpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxp
bmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOworICAgICAg
ICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5j
ZWxpbmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBhY2Nlc3MgY29udHJvbCIpOwogICAg
ICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgMCwgcmVxdWVzdCgpLnVybCgpLCBh
Y2Nlc3NDb250cm9sQ2hlY2tSZXN1bHQuZXJyb3IoKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBt
dWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CiAgICAg
ICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVz
ZSBzb21ldGhpbmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOworICAgICAgICAgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNh
bmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1h
Z2UiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6dXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeVZhbHVl
KQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6Iik7CisgICAgU1VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6Iik7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC03
NDYsNyArNzQ2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICBtX3Jlc291cmNlLT5m
aW5pc2hMb2FkaW5nKHJlc291cmNlRGF0YSgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogCiAgICAg
aWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCIpOworICAgICAgICBTVUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNlbGVkIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTc1NiwxNiArNzU2LDE2IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1lCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkZpbmlzaCk7CiAKICAg
ICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CisgICAg
ICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFj
aGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogRGlkIG5vdCByZWFjaCB0ZXJtaW5h
bCBzdGF0ZSIpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hM
b2FkaW5nOiBEaWQgbm90IHJlYWNoIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgcmVsZWFzZVJlc291
cmNlcygpOwogfQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6
ICh0eXBlPSVkLCBjb2RlPSVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRG
YWlsOiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSks
IGVycm9yLmVycm9yQ29kZSgpKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRv
IHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpCkBAIC04MDMsNyArODAzLDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIAogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsQ2FuY2Vs
OiAodHlwZT0lZCwgY29kZT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2ls
bENhbmNlbDogKHR5cGU9JWQsIGNvZGU9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBl
KCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcgdGltZSBvbiBp
T1MgYnV0CkBAIC04NTksMTQgKzg1OSwxNCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3Rp
ZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmxvYWRE
b25lKHR5cGUsIHNob3VsZFBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgibm90aWZ5RG9uZTogZG9jdW1lbnQgbG9h
ZGVyIGlzIG51bGwuIENvdWxkIG5vdCBjYWxsIGxvYWREb25lKCkiKTsKKyAgICAgICAgU1VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRl
ciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBsb2FkRG9uZSgpIik7CiAKICAgICBpZiAocmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyKQogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0
eXBlLCB0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoIm5vdGlmeURvbmU6IGRvY3VtZW50IGxvYWRlciBpcyBudWxsLiBDb3VsZCBub3QgY2FsbCBy
ZW1vdmVTdWJyZXNvdXJjZUxvYWRlcigpIik7CisgICAgICAgIFNVQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HX0VSUk9SKCJub3RpZnlEb25lOiBkb2N1bWVudCBsb2FkZXIgaXMgbnVsbC4gQ291
bGQgbm90IGNhbGwgcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIoKSIpOwogfQogCiB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKQEAgLTkxNyw1ICs5MTcsNSBAQCBjb25z
dCBIVFRQSGVhZGVyTWFwKiBTdWJyZXNvdXJjZUxvYWRlcjo6b3JpZ2luYWxIZWFkZXJzKCkgY29u
c3QKIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9JRAotI3VuZGVmIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYg
U1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKKyN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggODRhMGZlMWUzMzk5YmVjNTYyMzEyMjYyOTg1ODk2MWM2ZTdkY2Jl
NC4uYmVmOWU3ZGM1YjE2ZTg1MDE2NTBkZGVlNmVkMGJkMmY4YzFiYTcxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC02MywxMyArNjMs
MTEgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCi0jdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENBQ0hFRFJF
U09VUkNFX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQo
KS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9J
RChmcmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9V
SW50NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUs
IC4uLikgUkVMRUFTRV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSks
IEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9MT0dfQUxX
QVlTKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZTo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JFTEVB
U0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJj
ZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JF
TEVBU0VfTE9HX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNoZWRS
ZXNvdXJjZTo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSksICMj
X19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTc0LDcgKzE3Miw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZygpCiB2b2lkIENhY2hlZFJl
c291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikK
IHsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyLmZyYW1lKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIpOworICAgICAg
ICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRygibG9hZDogTm8gYXNzb2NpYXRlZCBmcmFtZSIp
OwogICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE5MiwxMSArMTkwLDExIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgLy8gQmVhY29u
cyBhcmUgYWxsb3dlZCB0byBnbyB0aHJvdWdoIGluICdwYWdlaGlkZScgZXZlbnQgaGFuZGxlcnMu
CiAgICAgICAgICAgICBpZiAobV9vcHRpb25zLmtlZXBBbGl2ZSB8fCBzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2Zvcndh
cmQgY2FjaGUiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xP
R19XSVRIX0ZSQU1FKCJsb2FkOiBBYm91dCB0byBlbnRlciBiYWNrL2ZvcndhcmQgY2FjaGUiLCBm
cmFtZSk7CiAgICAgICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBEb2N1bWVudDo6SW5CYWNrRm9yd2FyZENhY2hlOgotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKCJsb2FkOiBBbHJlYWR5IGlu
IGJhY2svZm9yd2FyZCBjYWNoZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIENBQ0hFRFJFU09VUkNF
X1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEFscmVhZHkgaW4gYmFjay9mb3J3YXJkIGNh
Y2hlIiwgZnJhbWUpOwogICAgICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIwNiwxMSArMjA0LDExIEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVy
KQogICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5
OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fb3B0aW9ucy5rZWVwQWxpdmUgJiYgIXNob3VsZFVzZVBp
bmdMb2FkKHR5cGUoKSkpIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGlm
IChmcmFtZUxvYWRlci5zdGF0ZSgpID09IEZyYW1lU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDogRmFpbGVk
IHNlY3VyaXR5IGNoZWNrIC0tIHN0YXRlIGlzIHByb3Zpc2lvbmFsIiwgZnJhbWUpOworICAgICAg
ICAgICAgICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoImxvYWQ6IEZh
aWxlZCBzZWN1cml0eSBjaGVjayAtLSBzdGF0ZSBpcyBwcm92aXNpb25hbCIsIGZyYW1lKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKQot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRSgibG9hZDog
RmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7Cisg
ICAgICAgICAgICAgICAgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgibG9h
ZDogRmFpbGVkIHNlY3VyaXR5IGNoZWNrIC0tIG5vdCBhY3RpdmUgZG9jdW1lbnQiLCBmcmFtZSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5pc1N0b3BwaW5nKCkpCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9X
SVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZlIGxvYWRlciBp
cyBzdG9wcGluZyIsIGZyYW1lKTsKKyAgICAgICAgICAgICAgICBDQUNIRURSRVNPVVJDRV9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJsb2FkOiBGYWlsZWQgc2VjdXJpdHkgY2hlY2sgLS0gYWN0aXZl
IGxvYWRlciBpcyBzdG9wcGluZyIsIGZyYW1lKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwpAQCAtMjg2
LDEwICsyODQsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlKGZy
YW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPih0aGlzKSwgZnJhbWVS
ZWYgPSBtYWtlUmVmKGZyYW1lKSwgbG9nZ2luZ0FsbG93ZWQgPSBjYWNoZWRSZXNvdXJjZUxvYWRl
ci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4m
JiBsb2FkZXIpIHsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
bG9hZFJlc291cmNlKGZyYW1lLCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgbV9vcHRpb25zLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pih0aGlzKSwgZnJhbWVSZWYgPSBtYWtlUmVmKGZyYW1lKV0gKFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4mJiBsb2FkZXIpIHsKICAgICAgICAgbV9sb2FkZXIgPSBXVEZNb3ZlKGxvYWRlcik7CiAg
ICAgICAgIGlmICghbV9sb2FkZXIpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGxvZ2dp
bmdBbGxvd2VkLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6bG9hZDogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNv
dXJjZUxvYWRlciIsIHRoaXMsIFBBR0VfSUQoZnJhbWVSZWYuZ2V0KCkpLCBGUkFNRV9JRChmcmFt
ZVJlZi5nZXQoKSkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3Bh
Z2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6Omxv
YWQ6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVzb3VyY2VMb2FkZXIiLCB0aGlzLCBQQUdFX0lEKGZy
YW1lUmVmLmdldCgpKSwgRlJBTUVfSUQoZnJhbWVSZWYuZ2V0KCkpKTsKICAgICAgICAgICAgIGZh
aWxCZWZvcmVTdGFydGluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00
NDgsNyArNDQ2LDcgQEAgU2Vjb25kcyBDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnMKIAogdm9pZCBDYWNoZWRSZXNv
dXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfQUxX
QVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIpOworICAgIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9H
KCJyZWRpcmVjdFJlY2VpdmVkOiIpOwogCiAgICAgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xh
eWVyID0gdHJ1ZTsKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQpAQCAtOTQzLDYgKzk0MSw1
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAjdW5kZWYgUEFHRV9JRAogI3VuZGVmIEZSQU1F
X0lECi0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAotI3VuZGVmIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRURfV0lUSF9GUkFNRQotI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUworI3VuZGVmIENB
Q0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HCisjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDAzZDVhMGFlNDIxMDhjOTQ4NTYzODQ4MTMzNDU3
ODExNDQ4MjQyOC4uNjIwNTIxZTNmZTZhMjdiN2MxNmZlNWY3NTBkN2NlNjNiNmI3MDI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC05NCwxMSArOTQsMTEgQEAKICNpbmNsdWRlICJEZXZpY2UuaCIKICNlbmRpZgog
Ci0jdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRV9JRChm
cmFtZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKSkKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZt
dCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVB
U0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0df
V0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtw
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9h
ZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZB
X0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OTcsNyArNTk3LDcgQEAgYm9v
bCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uIFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQg
YnkgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5v
dCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTYwNSwyMCArNjA1LDIwIEBAIGJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsCiAgICAgLy8gQnV0IHdlIGN1cnJlbnRseSBhbGxvdyBhdCBsZWFzdCBkYXRhIFVSTHMg
dG8gYmUgbG9hZGVkLgogCiAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OlNhbWVPcmlnaW4gJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRl
clJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0Iik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJjYW5S
ZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9y
aWdpbjo6Y2FuUmVxdWVzdCIpOwogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJs
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghYWxsb3dlZEJ5Q29u
dGVudFNlY3VyaXR5UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFs
bG93ZWQgYnkgY29udGVudCBwb2xpY3kiKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwgd2FzIG5vdCBhbGxv
d2VkIGJ5IGNvbnRlbnQgcG9saWN5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBMYXN0IG9mIGFsbCwgY2hlY2sgZm9yIGluc2VjdXJlIGNvbnRlbnQuIFdlIGRvIHRo
aXMgbGFzdCBzbyB0aGF0IHdoZW4gZm9sa3MgYmxvY2sgaW5zZWN1cmUgY29udGVudCB3aXRoIGEg
Q1NQIHBvbGljeSwgdGhleSBkb24ndCBnZXQgYSB3YXJuaW5nLgogICAgIC8vIFRoZXknbGwgc3Rp
bGwgZ2V0IGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBhYm91dCBDU1AgYmxvY2tpbmcgdGhlIGxv
YWQuCiAgICAgaWYgKCFjaGVja0luc2VjdXJlQ29udGVudCh0eXBlLCB1cmwpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9uOiBVUkwg
d2FzIG5vdCBhbGxvd2VkIGJlY2F1c2UgY29udGVudCBpcyBpbnNlY3VyZSIpOworICAgICAgICBD
QUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVjYXVzZSBjb250ZW50IGlzIGluc2VjdXJlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg1NiwxMyArODU2LDEzIEBAIFJlc291
cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1CiB7CiAgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCk7CiAgICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVxdWVzdFJlc291cmNlOiBmYWlsZWQgYmVj
YXVzZSBubyBmcmFtZSBvciBwYWdlIik7CisgICAgICAgIENBQ0hFRFJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJyZXF1ZXN0UmVzb3VyY2U6IGZhaWxlZCBiZWNhdXNlIG5vIGZyYW1lIG9yIHBh
Z2UiKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJJbnZhbGlkIGxvYWRlciBzdGF0ZSJfcyB9
KTsKICAgICB9CiAKICAgICBhdXRvJiBmcmFtZSA9ICp0aGlzLT5mcmFtZSgpOwogICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoInJlcXVlc3RSZXNvdXJjZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CisgICAgICAgIENB
Q0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJj
ZTogVVJMIGlzIGludmFsaWQiLCBmcmFtZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiVVJM
IGlzIGludmFsaWQiX3MgfSk7CiAgICAgfQogCkBAIC04OTMsMTQgKzg5MywxNCBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdQogCiAgICAgLy8gV2UgYXJlIHBhc3NpbmcgdXJsIGFzIHdlbGwgYXMg
cmVxdWVzdCwgYXMgcmVxdWVzdCB1cmwgbWF5IGNvbnRhaW4gYSBmcmFnbWVudCBpZGVudGlmaWVy
LgogICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3Qub3B0aW9ucygpLCBmb3JQ
cmVsb2FkKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoInJl
cXVlc3RSZXNvdXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSIsIGZyYW1lKTsK
KyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRSgicmVx
dWVzdFJlc291cmNlOiBOb3QgYWxsb3dlZCB0byByZXF1ZXN0IHJlc291cmNlIiwgZnJhbWUpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIk5vdCBhbGxvd2VkIHRvIHJlcXVlc3QgcmVzb3VyY2Ui
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgfQogCiAgICAg
aWYgKCFwb3J0QWxsb3dlZCh1cmwpKSB7CiAgICAgICAgIGlmIChmb3JQcmVsb2FkID09IEZvclBy
ZWxvYWQ6Ok5vKQogICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydEJsb2NrZWRMb2FkRmFp
bGVkKGZyYW1lLCB1cmwpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJB
TUUoIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIGhhcyBhIGJsb2Nr
ZWQgcG9ydCIsIGZyYW1lKTsKKyAgICAgICAgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRSgiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwg
aGFzIGEgYmxvY2tlZCBwb3J0IiwgZnJhbWUpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoZnJhbWUubG9hZGVyKCkuYmxvY2tlZEVycm9yKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
KTsKICAgICB9CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQog
ICAgICAgICBib29sIG1hZGVIVFRQUyA9IHJlc3VsdHMuc3VtbWFyeS5tYWRlSFRUUFM7CiAgICAg
ICAgIHJlcXVlc3QuYXBwbHlSZXN1bHRzKFdURk1vdmUocmVzdWx0cyksICZwYWdlKTsKICAgICAg
ICAgaWYgKGJsb2NrZWRMb2FkKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
X1dJVEhfRlJBTUUoInJlcXVlc3RSZXNvdXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50
IGJsb2NrZXIiLCBmcmFtZSk7CisgICAgICAgICAgICBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPR19XSVRIX0ZSQU1FKCJyZXF1ZXN0UmVzb3VyY2U6IFJlc291cmNlIGJsb2NrZWQgYnkg
Y29udGVudCBibG9ja2VyIiwgZnJhbWUpOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgewogICAgICAgICAgICAgICAgIGF1dG8gcmVz
b3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpLCBwYWdlLnNlc3Np
b25JRCgpLCAmcGFnZS5jb29raWVKYXIoKSwgcGFnZS5zZXR0aW5ncygpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzb3VyY2UpOwpAQCAtMTYxNCwxNCArMTYxNCw5IEBAIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnRMb2FkZXIgPyBtX2RvY3VtZW50TG9hZGVyLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSA6IHRydWU7Ci19Ci0KIH0KIAogI3VuZGVmIFBBR0VfSUQKICN1bmRlZiBGUkFNRV9J
RAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VEX1dJVEhfRlJBTUUKKyN1bmRlZiBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RworI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
aW5kZXggZTQ1YzA5NTkzMTFkNjU2YWYyNzEzMjE5NTMwNjZmM2U0YmQ1MzRjOS4uOTRlMTgyZDlh
MDE5MTBlMTkzOTZkYTU5MmIxZDk2ODg1ZGNjYjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTE2NCw4ICsxNjQsNiBA
QCBwdWJsaWM6CiAKICAgICBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uJiByZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9yZXNvdXJjZVRpbWluZ0luZm87IH0KIAotICAgIGJv
b2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7Ci0KICAgICBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlciYga2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIoKSB7IHJldHVybiBtX2tlZXBhbGl2
ZVJlcXVlc3RUcmFja2VyOyB9CiAKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiB2aXNpYmxl
UmVzb3VyY2VzVG9Qcmlvcml0aXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDFhZjI3ZDg0
ZjM1YWYwZDNiYTFmYjlkYmFmYTMxZTQzYzY2NjEzMzIuLjcwNTRhY2M5MDIxNGViODE3YmQ3ODQy
OThjZTc3Zjc2ZDMyYzVkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTIsNyArMTEyLDcg
QEAKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNlbmRpZgogCi0j
ZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAi
JXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEZSQU1FX1JF
TEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFu
bmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJT
Y3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
CiAgICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiaW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7CisgICAgICAgIEZSQU1FX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJp
bmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlv
biBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBsb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CkBAIC0x
MDQ0LDExICsxMDQ0LDYgQEAgdm9pZCBGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKCkKICAgICAgICAgcm9vdC0+Y29tcG9zaXRvcigpLmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpOwogfQogCi1ib29sIEZyYW1lOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBwYWdlKCkgJiYgcGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKTsKLX0KLQogdm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluRnJhbWUoKSk7CkBAIC0xMTQ2LDQgKzExNDEsNCBAQCBEYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UmIEZyYW1lOjpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKKyN1bmRlZiBG
UkFNRV9SRUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDM3YjFhZjIxMWUzNDA5
NzRlMGM1MjdiZWU4YjE3M2I2NjY4ZWVlMGMuLmYwNzQzZTkzOTc1N2Y2NzJhNzI3NmZhYmUzYjY1
OTZlMzE3OWFlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMwMyw4ICszMDMsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIGJv
b2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
OwotCiAgICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7CiAgICAgYm9vbCBtYXlQcmV3
YXJtTG9jYWxTdG9yYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCBjMWQzZDdmOGFhN2JhMWMwMjRjM2U4MzgyMWM0M2YxN2QwZTUzODAxLi41ODEwODNlNmYzNGM2
MjE4Y2UwNTRkYTkwZTJiZmJiNDI1MmU3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC0xMzcsNyArMTM3LDcgQEAKIAogI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRV9JRCBm
cmFtZSgpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQot
I2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAi
LCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQ
QUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPnNlc3Np
b25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlE
PSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIg
Zm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19f
VkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDE3MTI3NTlmNjNjMjZlZGYxNDUyMTcyYTg5MWEzZDJlYTAzNDBiYjAuLjJjNjk1MWMyNGQ3YWVh
NTg3MzI3NmQxZGIyN2UwMWQzYTM3MTE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzEzNywx
MSArMzEzNyw2IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIH0KICNlbmRpZgogCi1ib29sIFBhZ2U6OmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpOwotfQotCiBTdHJpbmcgUGFnZTo6Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxl
U2hlZXQoKQogewogICAgIHJldHVybiBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCBiZDAzNmEyZmQ1ZDc0MGYxMWEyMTZmOTY4ZmU3ZDVkM2EwMjNk
YThiLi5kNjcxZTc4YWFlOTYwYTk3Njc2YmExYjkxMjMzZGQ4MmQ3NmE4OTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaApAQCAtNzgzLDggKzc4Myw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udHJvbGxlZEJ5
QXV0b21hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsgfQog
ICAgIHZvaWQgc2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpIHsgbV9j
b250cm9sbGVkQnlBdXRvbWF0aW9uID0gY29udHJvbGxlZDsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKLQogICAgIFN0cmluZyBj
YXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpOwogICAgIHZvaWQgc2V0Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAppbmRleCAwZmM2ZDZkYmVmODI0Yzg0ZWQ1M2Zl
Zjg2NmQ2ZjZhMjNhMWIzZDc1Li44ZTQ5YzJmY2NmY2M0ZTFiNTlhZGY1MDQwODQzZDVkNTRiNDQy
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmluZSBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFBlcmZvcm1hbmNlTW9uaXRv
cjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5zZXNzaW9uSUQo
KS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUGVyZm9ybWFuY2VN
b25pdG9yOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBTZWNvbmRzIGNwdVVzYWdlTWVhc3VyZW1lbnREZWxheSB7IDVfcyB9Owogc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBTZWNvbmRzIHBvc3RMb2FkQ1BVVXNhZ2VNZWFzdXJlbWVudER1cmF0aW9u
IHsgMTBfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3Bh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCmluZGV4IDU5
YTg1NTZjMTExMTM2YzVjN2UyNjZjZTMwNDFjM2Q5ZmI4ZDBiMDMuLjQyOTc2NTk3ZmMxM2YyZTAz
ZjVhYjZkNzJmYmVlM2Y5MWZiODE1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2ViS2l0TmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVz
cGFjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihmcmFtZSgpICYm
IGZyYW1lKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJL
aXROYW1lc3BhY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBXRUJLSVRf
TkFNRVNQQUNFX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19FUlJPUihjaGFubmVsLCAiJXAgLSBXZWJLaXROYW1lc3BhY2U6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKIApAQCAtNTMs
NyArNTMsNyBAQCBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKiBXZWJLaXROYW1lc3BhY2U6
Om1lc3NhZ2VIYW5kbGVycygpCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlm
IChmcmFtZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiSWdub3JpbmcgbWVzc2FnZUhh
bmRsZXJzKCkgcmVxdWVzdCBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAgICAg
IFdFQktJVF9OQU1FU1BBQ0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIklnbm9yaW5nIG1l
c3NhZ2VIYW5kbGVycygpIHJlcXVlc3QgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBmcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CkBAIC02Nyw0ICs2
Nyw0IEBAIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6bWVz
c2FnZUhhbmRsZXJzKCkKIAogI2VuZGlmIC8vIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMp
CiAKLSN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECisjdW5kZWYgV0VCS0lUX05B
TUVTUEFDRV9SRUxFQVNFX0xPR19FUlJPUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ4NGMwYmVkMzZiMmZl
Y2ExZmU4MGViNmRmMmMzMGQwMzBlZDIxODYuLmVjZDQwNTJlYWMwMzgwMjgyNTVhNzg2MjM2ZTE5
Njk4NTNhZmExZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFt3ZWJQ
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJ
dTY0ICJdIFdlYlJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50
NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgIyNfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9H
KE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICJdIFdlYlJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhp
cywgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTEwMCwyMCArMTAwLDIwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6CiAg
ICAgcHJvcG9zZWRSZXF1ZXN0LnNldEhUVFBCb2R5KHByb3Bvc2VkUmVxdWVzdEJvZHkudGFrZURh
dGEoKSk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3Q6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coIndpbGxTZW5k
UmVxdWVzdDoiKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdChtX2NvcmVM
b2FkZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5
IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwor
ICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygid2lsbFNlbmRSZXF1ZXN0OiBl
eGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5l
ZCBmYWxzZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNl
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVy
IG9yIGlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVy
IG9yIGlkZW50aWZpZXIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0Iik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJ3aWxsU2VuZFJlcXVlc3Q6IHJldHVybmluZyBDb250aW51ZVdpbGxTZW5kUmVxdWVz
dCIpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRp
bnVlV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIG1fY29yZUxvYWRlci0+aXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMoKSkpOwogICAgIH0pOwogfQpAQCAtMTI2LDEyICsxMjYsMTIgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVMKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMn
LiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVkKSIsIHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpOworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzcG9uc2U6IChodHRwU3RhdHVzQ29kZT0lZCkiLCByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKTsKIAogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdl
dCgpLCByZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMg
YWxyZWFkeSBjYWNoZWQiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250
ZW50IGlzIGFscmVhZHkgY2FjaGVkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlciAmJiBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBi
ZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKKyAgICAgICAgICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWlu
ZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICB9OwogICAg
IH0KIApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2Us
IGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9j
b3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRp
bnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7Cisg
ICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVS
ZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9h
ZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNv
bnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlCiAgICAgfQogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJl
Y2VpdmluZyBkYXRhIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNS
ZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURh
dGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAn
JXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKGxlbmd0aD0l
emQpIiwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAobGVuZ3RoPSV6ZCkiLCBtX251bUJ5dGVzUmVj
ZWl2ZWQpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVy
Y2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmV0d29ya0xvYWRNZXRyaWNzXSgpIG11dGFi
bGUgewpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlOiIpOworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJzZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlOiIpOwogCiAgICAgQVNTRVJUKG1fY29yZUxvYWRlci0+b3B0
aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpOwog
ICAgIGF1dG8gZXJyb3IgPSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVy
bCgpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNv
dXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9y
ICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKKyAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkRmFpbFJlc291cmNlTG9hZDoiKTsKIAog
ICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9j
b3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xs
ZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGVycm9yXSgpIG11dGFibGUgewpAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiIpOwor
ICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOiIpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5
RGVuaWVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZy
YW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkIGZvciAnJXMnIiwgbV9jb3Jl
TG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJp
dHlQb2xpY3lEZW5pZWQ6Iik7CisgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coInN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6
Iik7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0
ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTI5MywxMyArMjkzLDEzIEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50
U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExP
RyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiIp
OworICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6
Iik7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9t
IHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpj
cmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7
CkBAIC0zMjIsMTEgKzMyMiw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiB9CiAjZW5kaWYK
IAotYm9vbCBXZWJSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkZXIoKSAmJiByZXNvdXJjZUxvYWRlcigpLT5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgV0VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdlMWQ0OTk0NzE1Zjg4NDljZThiZmU1ZWMzNDU1ZDQ3
Mzc3ODAwZDQuLjM1NTIwMWI5NzA0MzVjNTRkNTRiM2ZiZjllNDQyYWNkMmJjYjJiMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNzEsOCArNzEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaEZyb21Db3Jl
TG9hZGVyKCk7CiAKLSAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Owot
CiBwcml2YXRlOgogICAgIFdlYlJlc291cmNlTG9hZGVyKFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4mJiwgY29uc3QgVHJhY2tpbmdQYXJhbWV0ZXJzJik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>