<?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>192933</bug_id>
          
          <creation_ts>2018-12-20 08:50:22 -0800</creation_ts>
          <short_desc>Use Optional::valueOr() instead of Optional::value_or()</short_desc>
          <delta_ts>2018-12-20 12:24:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>
          <dependson>192728</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489855</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-20 08:50:22 -0800</bug_when>
    <thetext>Use Optional::valueOr() instead of Optional::value_or().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489862</commentid>
    <comment_count>1</comment_count>
      <attachid>357817</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-20 09:10:30 -0800</bug_when>
    <thetext>Created attachment 357817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489863</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-20 09:13:55 -0800</bug_when>
    <thetext>Attachment 357817 did not pass style-queue:


ERROR: Source/WTF/wtf/Optional.h:681:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 152 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489961</commentid>
    <comment_count>3</comment_count>
      <attachid>357839</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-20 11:39:04 -0800</bug_when>
    <thetext>Created attachment 357839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489970</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-20 11:43:35 -0800</bug_when>
    <thetext>Attachment 357839 did not pass style-queue:


ERROR: Source/WTF/wtf/Optional.h:681:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 151 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489978</commentid>
    <comment_count>5</comment_count>
      <attachid>357839</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-12-20 11:53:11 -0800</bug_when>
    <thetext>Comment on attachment 357839
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490000</commentid>
    <comment_count>6</comment_count>
      <attachid>357839</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-20 12:23:27 -0800</bug_when>
    <thetext>Comment on attachment 357839
Patch

Clearing flags on attachment: 357839

Committed r239461: &lt;https://trac.webkit.org/changeset/239461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490001</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-20 12:23:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490002</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-20 12:24:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/46879483&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357817</attachid>
            <date>2018-12-20 09:10:30 -0800</date>
            <delta_ts>2018-12-20 11:39:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192933-20181220091028.patch</filename>
            <type>text/plain</type>
            <size>225127</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDE3NTMzYzgwNDE5NTljYTM1YTIzNzlhMzE4ODhjMGEwYTQ1MjVjLi4xMDdhZmQwMzU1NjhjNTdk
NWQxMjQzMGIzNjgxYWMwZGU5ODliMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZh
bHVlX29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dEdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6
OnNldHVwKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmspOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0b3IgYW5kIG1vdmUt
YXNzaWdubWVudCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1ZSBiZWluZyBtb3Zl
ZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5ZjM1OGUyYjY0NDRhNWJjMmUuLjg3
NDA5OTFiNzYxODRhN2UzYTYwYjQyNGExOGYxYTVmZmRkYmJiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFkIG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9P
cHRpb25hbC5oOgorICAgICAgICAoV1RGOjpPcHRpb25hbDxUOjp2YWx1ZU9yIGNvbnN0KToKKwog
MjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0
Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0
b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDJhYjkxMWZkZjdjYjM0NDZlNTZhZmE4ZjQ5ZmRiY2NkNTM4NTkzNTYuLjhlMDU3NmYyZmMw
NmNjNmExMDcyMjE0ZDRmNzYyZGZkMmIyYjk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOTYg
QEAKKzIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFkIG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6
Omhhc2ggY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2Vu
ZGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3Fs
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZSRnJhbWVEYXRhOjp1cGRhdGUpOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRp
b246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52
YWxpZGF0ZURPTUV2ZW50cyk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFj
dGlvbnMpOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGF1c2VUYXNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
OjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpp
bXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJT
QUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAg
ICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleVJTQTo6aW1wb3J0SndrKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUFFU19HQ01NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y291bnRlclRvQ1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxjdWxhdGVJdGFsaWNSYW5nZSk6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6YWRkUnVsZSk6CisgICAgICAgICogY3NzL0RP
TU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXg6OnJvdGF0ZVNlbGYpOgor
ICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01NYXRyaXhSZWFkT25seTo6dmFsaWRhdGVBbmRGaXh1cCk6CisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ291bnRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVl
cnkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlZmVycmVyUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Njcm9sbEFsaWdubWVudCk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2hh
bmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNTUyBjb25zdCk6CisgICAgICAgICogZmls
ZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAq
IGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0hUTUxPTGlzdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0
YW5nbGVXaXRoRm9ybWF0dGluZyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omlz
UG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvUGF0aDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGgyRDo6YWRkUGF0aCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4
dE1lbnUpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29u
c3RyYWludHNBZnRlckxheW91dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXBsaWNhdGVkQ2FzZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2lu
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6CisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RD
b250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9NYXJnaW5U
eXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpWZXJ0aWNhbE1hcmdpbjo6dXNlZFZh
bHVlcyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbnN0cmlu
c2ljV2lkdGhDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29u
dGVudEJveFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmNvbnRl
bnRCb3hMZWZ0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okl0ZXJhdG9yOjpzZXQpOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVu
ZENvbnRlbnRUb0xpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGluZyk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGFI
YXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZp
Z3VyYXRpb246OnNldFZpZXdMYXlvdXRTaXplKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjpnZXRUaW1lVG9OZXh0RXZlbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZnJlZXplQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25UaW1lcik6CisgICAg
ICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybVRocmVhZEJvZHkpOgorICAgICAg
ICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtVGhyZWFkQm9keSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OmRyYXdUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlz
cGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNlbGVj
dGlvbkFsZ29yaXRobTo6c3R5bGVEaXN0YW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzOjpjb21wdXRlV2VpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM6OmNvbXB1dGVXaWR0aCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOjpjb21wdXRlU2xv
cGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXBhcmVQbGF0Zm9ybUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVy
YnVsZW5jZTo6ZmlsbFJlZ2lvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlz
aWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6Om1hcFF1YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpvbkxpbmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmlu
ZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyOjpuZXh0TG9naWNhbEJvdHRvbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6Om5l
eHRTaGFwZUxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFz
ZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25t
ZW50Ojphc2NlbnRGb3JDaGlsZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdy
b3d0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
aW5pdGlhbEJhc2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0aExpbWl0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2l6ZVRyYWNrVG9GaXROb25TcGFubmluZ0l0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFy
ZWFCcmVhZHRoRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pblNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxpemVUcmFja1NpemVzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dEluZm86OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpi
YXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlk
R2FwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6
Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHls
ZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2Vs
bEJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJz
dExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRP
ZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2Nr
OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6
YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjptYXgpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VW5kZXJsaW5lT2Zmc2V0OjpsZW5ndGhPciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Q29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9k
ZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJv
Y2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisKIDIwMTgtMTItMTkgIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBH
VEsgYnVpbGQgYWZ0ZXIgcjIzOTQxMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAwZjgxYzE2MWEwNzczZDli
NWFmYjJkOTkyYzEzNjRmZTA1NWE5ODg1Li4yN2Y1MjViNzQ2OGZkMzY5YjczNmFmMThjNzRkZDU4
M2VmYmJhOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvbmFsOjp2
YWx1ZU9yKCkgaW5zdGVhZCBvZiBPcHRpb25hbDo6dmFsdWVfb3IoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyOTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkRyaXZlcjo6U2Vzc2lvbjo6aGFuZGxlVW5leHBlY3RlZEFsZXJ0T3Blbik6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJEcml2
ZXI6OmJ1aWx0QXV0b21hdGlvbkNvb2tpZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246
OnRha2VTY3JlZW5zaG90KToKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6c2VuZFJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbik6CisKIDIw
MTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYv
T3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9y
IHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
M2YyN2E5NjVjYzZjM2UyZDI3MjliZGY1MDZlNjI5ZTUyNjdhODgyNS4uYTAzZjU0YjgxNDNhYjc1
NDNkMTAxZGFjNDgwM2NmODE5ZjYwYWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAx
OC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBP
cHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZhbHVlX29yKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjkzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkdldFBv
cnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tOgor
ICAgICAgICAoLVtXS1NlY3VyaXR5T3JpZ2luIHBvcnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX2NwdUxpbWl0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X3BvcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0
cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbml0VGltZU91
dFRpbWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eUd0azo6YWN0aXZhdGVJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuY29k
ZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmll
dyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvQ29tcG9zaXRpbmdNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdN
YW5hZ2VyOjpyZWxlYXNlQ29ubmVjdGlvbkZkKToKKwogMjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0
cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUg
dmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGVi
MWQxMTAwODg1ODQzZDAyZjQ0NjFiODIxNzVjNTEyNjBkYTVhOTguLjZmNTBiMjc3ZGQzODc3ZmU1
YjI2NzliOWFlY2U5YmFhMDg1YTZiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6
OnZhbHVlX29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHBvcnRdKToKKwogMjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0cnVjdG9y
IGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUgdmFsdWUg
YmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGY2YzEyNmI3
MjEzNzMzOTcyN2IyNmYzMzlmMDk4YjI3M2ZiZWZjZDcuLjViNmEyOTkzNTVmZTc0NmRjNDU3ODE2
NTU1YzMyMGI4OWQ2YjFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZhbHVl
X29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQp
OgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0b3IgYW5kIG1vdmUtYXNzaWdubWVudCBv
cGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1ZSBiZWluZyBtb3ZlZCBmcm9tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCmluZGV4
IDg3MjE1YzMzYWU1OTIzYzE1YTVjZDRkZTZmMmMzODlmYjIyYjE1NDguLjJmYWZhMTIxMWJjZmRk
NDdjMWY2MDQwMWE2YTMzMzM2ZDNhYzhjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29h
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
LCBib29sIGF1dG9tYXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRp
ZmllcigpLnZhbHVlX29yKDApOworICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0aGlz
LT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKTsKICAgICAKICAgICByZWYoKTsKICAgICBk
aXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0R2xpYi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldEdsaWIuY3BwCmluZGV4IDNiNWM2ODE1NTVhMGJmZmYyMDNmNjk3ZTQ5ODUy
MjgyMGFkOWZlNWQuLjVkZGU4ODgwOWIyNTQxZjMzMmEyMDVkZWMwYWRkZjVlZTUwM2NjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0R2xpYi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRHbGliLmNwcApA
QCAtNDksNyArNDksNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9v
bCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgIGlmICghbV90YXJn
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCk7CisgICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwog
CiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xBbGxvd2VkKCkp
IHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJn
ZXRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
S2V5LmgKaW5kZXggMmIwM2FhNTAyODczMDUwMzJlMWIyZTRhMGQwNjU4Njk5YjU3NTJiNS4uYThl
NjAzYzI2YTBiNjAzNjJhMDJkZWFjMDUxNjE2OWQ1NzU1ODAyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fZmxhZ3MoY29kZVR5cGUsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBkZWJ1Z2dlck1vZGUsIHR5cGVQcm9maWxlckVuYWJsZWQsIGNvbnRy
b2xGbG93UHJvZmlsZXJFbmFibGVkKQotICAgICAgICAgICAgLCBtX2Z1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24oZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbi52YWx1ZV9vcigtMSkpCisgICAgICAgICAgICAsIG1fZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLnZhbHVlT3IoLTEpKQogICAgICAgICAgICAgLCBtX2hhc2goc291cmNlQ29kZS5oYXNo
KCkgXiBtX2ZsYWdzLmJpdHMoKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGM1NzA4YmNiYTRhNThhMDgwM2Y2NDI5YzJmNzU4M2M5ZGIyNzI1N2MuLjJkYzBhZTcxZmFlMzdk
MmZiMWEyNTE2YWU2YmNjYjliZjA3OTczNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTQxMiw3
ICs0MTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogCiAgICAgYm9vbCBoYXNTdGFydCA9
ICEhbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgaWYgKGhh
c1N0YXJ0KSB7Ci0gICAgICAgIGF1dG8gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJ
bmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZS52YWx1ZV9vcigwKTsKKyAgICAgICAg
YXV0byBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1vZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVu
Y3Rpb25JbmRleFNwYWNlLnZhbHVlT3IoMCk7CiAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4
U3BhY2Uoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UpOwogICAgICAgICBjb25zdCBXYXNtOjpTaWdu
YXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0
dXJlSW5kZXgpOwogICAgICAgICAvLyBUaGUgc3RhcnQgZnVuY3Rpb24gbXVzdCBub3QgdGFrZSBh
bnkgYXJndW1lbnRzIG9yIHJldHVybiBhbnl0aGluZy4gVGhpcyBpcyBlbmZvcmNlZCBieSB0aGUg
cGFyc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9X
VEYvd3RmL09wdGlvbmFsLmgKaW5kZXggYTYwNWJlMDE5NDZhMGVjOWIwZjUyMTlmYjBmMGQwNjUy
ZjAzZmJiYS4uNmQ0ZTI0MjZiNzQ1ZDkyN2I1YjRlNjZkZDU1YmEzYzY4ZGJkNDc4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25hbC5oCkBAIC01NTcsMjYgKzU1NywxMiBAQCBwdWJsaWM6CiAgICAgcmV0dXJuICp0aGlzID8g
Kip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxW
Pih2KSk7CiAgIH0KIAotICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuCi0gIHRlbXBsYXRlIDxjbGFz
cyBWPgotICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QmCi0gIHsKLSAgICByZXR1
cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhw
cl9mb3J3YXJkPFY+KHYpKTsKLSAgfQotCiAgIHRlbXBsYXRlIDxjbGFzcyBWPgogICBPUFRJT05B
TF9NVVRBQkxFX0NPTlNURVhQUiBUIHZhbHVlT3IoViYmIHYpICYmCiAgIHsKICAgICByZXR1cm4g
KnRoaXMgPyBkZXRhaWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4o
KnRoaXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNv
bnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKICAgfQogCi0gIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4K
LSAgdGVtcGxhdGUgPGNsYXNzIFY+Ci0gIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQgdmFs
dWVfb3IoViYmIHYpICYmCi0gIHsKLSAgICByZXR1cm4gKnRoaXMgPyBkZXRhaWxfOjpjb25zdGV4
cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRhaW5lZF92YWwoKSkg
OiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsK
LSAgfQotCiAjIGVsc2UKIAogICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KQEAgLTU4NSwxMyArNTcxLDYg
QEAgcHVibGljOgogICAgIHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8
VD4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOwogICB9CiAKLSAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KLSAgY29uc3RleHByIFQgdmFsdWVf
b3IoViYmIHYpIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxf
Ojpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKLSAgfQotCiAj
IGVuZGlmCiAKICAgLy8gMjAuNi4zLjYsIG1vZGlmaWVycwpAQCAtNjk5LDcgKzY3OCw3IEBAIHB1
YmxpYzoKICAgfQogCiAgIHRlbXBsYXRlIDxjbGFzcyBWPgotICBjb25zdGV4cHIgdHlwZW5hbWUg
c3RkOjpkZWNheTxUPjo6dHlwZSB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgY29uc3RleHByIHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUgdmFsdWVPcihWJiYgdikgY29uc3QKICAgewogICAg
IHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8dHlwZW5hbWUgc3RkOjpk
ZWNheTxUPjo6dHlwZT4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOwogICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCAxNTZk
MDg2MDJjNDRkOTNiNTVlZmM1ZmVhYTdlNDkyYzY0MDk4ZjFhLi5lYTQ0ZDVmOGUxNDk4NzQ2N2Q2
ZjJlOTEyODQ3YmMxODVlZDcwMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQoVVJMJiYgdmFsaWRhdGlvblVSTCkKIAogc3RhdGlj
IFJlZjxQYXltZW50QWRkcmVzcz4gY29udmVydChjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0
JiBjb250YWN0KQogewotICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNvbnRhY3Qu
Y291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29yKFZlY3RvcjxTdHJpbmc+
KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29udGFj
dC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCksIGNv
bnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7CisgICAgcmV0dXJuIFBh
eW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwgY29udGFjdC5hZGRyZXNz
TGluZXMudmFsdWVPcihWZWN0b3I8U3RyaW5nPigpKSwgY29udGFjdC5hZG1pbmlzdHJhdGl2ZUFy
ZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxpdHksIGNvbnRhY3QucG9zdGFs
Q29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXplZE5hbWUsIGNvbnRhY3Qu
cGhvbmVOdW1iZXIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25z
dCBQYXltZW50JiBwYXltZW50KQogICAgIEFTU0VSVCghbV9pc1VwZGF0aW5nKTsKIAogICAgIGF1
dG8gYXBwbGVQYXlQYXltZW50ID0gcGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKCkp
OwotICAgIGF1dG8gc2hpcHBpbmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29u
dGFjdC52YWx1ZV9vcihBcHBsZVBheVBheW1lbnRDb250YWN0KCkpOworICAgIGF1dG8gc2hpcHBp
bmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdC52YWx1ZU9yKEFwcGxl
UGF5UGF5bWVudENvbnRhY3QoKSk7CiAgICAgYXV0byBkZXRhaWxzRnVuY3Rpb24gPSBbYXBwbGVQ
YXlQYXltZW50ID0gV1RGTW92ZShhcHBsZVBheVBheW1lbnQpXShKU0M6OkV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlKSB7CiAgICAgICAgIHJldHVybiB0b0pTRGljdGlvbmFyeShleGVjU3RhdGUsIGFwcGxl
UGF5UGF5bWVudCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCAzOTJhMzdjNjM2YTg1
NjNhODY1ODAwNjA1ZmIwOWIyOTA4ZGY1NTJhLi40YmVhOWEwMDg0YmVlNjg3MzI5OGRkMzRiZWEz
N2EwNGVhYTY5ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWkKIAogICAgICAgICAgICAgICAgIC8vIDguOS41LiBSdW4gdGhl
IFVwZGF0ZSBFeHBpcmF0aW9uIGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIGV4
cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgICAgICAvLyBUaGlzIG11c3QgYmUgcnVuLCBhbmQg
TmFOIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBDRE0gaW5zdGFuY2UgZG9lc24ndCBwcm92
aWRlIG9uZS4KLSAgICAgICAgICAgICAgICB1cGRhdGVFeHBpcmF0aW9uKGV4cGlyYXRpb24udmFs
dWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkpOworICAgICAg
ICAgICAgICAgIHVwZGF0ZUV4cGlyYXRpb24oZXhwaXJhdGlvbi52YWx1ZU9yKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpKTsKIAogICAgICAgICAgICAgICAgIC8vIDgu
OS42LiBJZiBtZXNzYWdlIGlzIG5vdCBudWxsLCBydW4gdGhlIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2
ZW50IGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIG1lc3NhZ2UgdHlwZSBhbmQg
bWVzc2FnZS4KICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5k
ZXggZjQyYTlmOWQ4MDE0ZDg3MWQ3M2ViOTU4ODE5MGNjMGJiYjhiN2MxMy4uZTZlYjRiZjA3MWIx
ZjY0YmJkZDZhZGFmMTFmNWRmNDdiNmUwYjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVQcm90b2NvbEhhc2gg
PSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLnByb3RvY29sKTsKICAgICAgICAg
dW5zaWduZWQgbWFpbkZyYW1lSG9zdEhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1l
T3JpZ2luLmhvc3QpOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzhdID0g
eyBuYW1lSGFzaCwgc2Vzc2lvbklESGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hv
c3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1ZV9vcigwKSwgbWFpbkZyYW1lUHJvdG9j
b2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZV9v
cigwKSB9OworICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbOF0gPSB7IG5hbWVIYXNoLCBzZXNz
aW9uSURIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3Blbmlu
Z09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1l
SG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVPcigwKSB9OwogICAgICAgICBy
ZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29k
ZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAppbmRleCA5NzRjNTM0NzlhOTMzNzc2YWUxZmY5YjVhZmNiYWM3MWMzMDhmYWZl
Li5lYTFmODQ5NzY0NzhjMjg3NDdkNzY3ZTViNGM3Y2M2YjUxMjFmMDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNzksNyArNzks
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIGlmICh2ZXJzaW9uICYmICF2ZXJzaW9u
LnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0
b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhIHZlcnNpb24gb2YgMCJfcyB9OwogCi0gICAgcmV0dXJu
IG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLnZhbHVlX29yKDApKTsKKyAgICBy
ZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVPcigwKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3Blbklu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdWludDY0X3QgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGI1OTM3YzcyOTQ0NGUwOTFl
NmY3NzI3MDI5OTM2ODM0YjYwOGNmMTYuLjZhN2YxNDZjYTFjNGQ3ZTUxNWExNTQ4NTFkZjliZDM3
YTA1M2QxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgTWVkaWFT
dHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxNZWRpYVRyYWNrQ29u
c3RyYWludHM+JiBjCiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX3Byb21p
c2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLT5tX3Byb21pc2UtPnJl
c29sdmUoKTsKLSAgICAgICAgd2Vha1RoaXMtPm1fY29uc3RyYWludHMgPSBjb25zdHJhaW50cy52
YWx1ZV9vcihNZWRpYVRyYWNrQ29uc3RyYWludHMgeyB9KTsKKyAgICAgICAgd2Vha1RoaXMtPm1f
Y29uc3RyYWludHMgPSBjb25zdHJhaW50cy52YWx1ZU9yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7
IH0pOwogICAgIH07CiAgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlh
Q29uc3RyYWludHMoY29uc3RyYWludHMpLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92
ZShmYWlsdXJlSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggM2YyNmU2NWU1ODcyY2JjYWQ5YmQy
ODMwNjk0Yzk3ZGY4YjM2ZmE1NC4uNTNkZGMxMmEyMzk3YTBkMTYyODMxNTc4YjM0ZDFhNzIxODAz
NzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZTZW5kZXIuY3BwCkBAIC03OSw4ICs3OSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RU
TUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8aW50PiBkdXJhdGlv
CiAgICAgaWYgKGludGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAudmFsdWUoKSA8IG1pbkludGVy
VG9uZUdhcE1zKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAot
ICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbi52YWx1ZV9vcihkZWZhdWx0VG9uZUR1cmF0aW9uTXMp
OwotICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlX29yKGRlZmF1bHRJbnRl
clRvbmVHYXBNcyk7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVsdFRv
bmVEdXJhdGlvbk1zKTsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZU9y
KGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4
RXJyb3IgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTk3Nzk4MDY3ZGJiZDhkNGQ5N2RmYzg1ZWIxNjUw
ZDUyM2M4MzdlYy4uNTA5MWM4MzQxYWRjZDkxYWEwMjAxOTdhNGE5Yzg0NmIyZWRhY2I2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBl
bHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhv
cml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZh
bHVlX29yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
Y2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3Vt
ZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNl
LT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXgg
YjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMwYy4uYTdjN2RiOWQ2MzAwN2Yx
YjA0M2ZmYTM3YmM1NzhjZmI3NGFkM2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIFZSRnJhbWVEYXRh
Ojp1cGRhdGUoY29uc3QgVlJQbGF0Zm9ybVRyYWNraW5nSW5mbyYgdHJhY2tpbmdJbmZvLCBjb25z
dCBWUkV5ZQogICAgIG1fdGltZXN0YW1wID0gdHJhY2tpbmdJbmZvLnRpbWVzdGFtcDsKICAgICBt
X3Bvc2UtPnVwZGF0ZSh0cmFja2luZ0luZm8pOwogCi0gICAgYXV0byByb3RhdGlvbk1hdHJpeCA9
IHJvdGF0aW9uTWF0cml4RnJvbVF1YXRlcm5pb24odHJhY2tpbmdJbmZvLm9yaWVudGF0aW9uLnZh
bHVlX29yKFZSUGxhdGZvcm1UcmFja2luZ0luZm86OlF1YXRlcm5pb24oMCwgMCwgMCwgMSkpKTsK
LSAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24gPSB0cmFja2luZ0luZm8ucG9zaXRpb24udmFsdWVf
b3IoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKKyAgICBhdXRvIHJvdGF0aW9uTWF0cml4ID0gcm90
YXRpb25NYXRyaXhGcm9tUXVhdGVybmlvbih0cmFja2luZ0luZm8ub3JpZW50YXRpb24udmFsdWVP
cihWUlBsYXRmb3JtVHJhY2tpbmdJbmZvOjpRdWF0ZXJuaW9uKDAsIDAsIDAsIDEpKSk7CisgICAg
RmxvYXRQb2ludDNEIHBvc2l0aW9uID0gdHJhY2tpbmdJbmZvLnBvc2l0aW9uLnZhbHVlT3IoRmxv
YXRQb2ludDNEKDAsIDAsIDApKTsKICAgICByb3RhdGlvbk1hdHJpeC50cmFuc2xhdGUzZCgtcG9z
aXRpb24ueCgpLCAtcG9zaXRpb24ueSgpLCAtcG9zaXRpb24ueigpKTsKIAogICAgIG1fbGVmdFZp
ZXdNYXRyaXggPSByb3RhdGlvbk1hdHJpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IGZjYmEyNWNiZWM1ZjAxZTVkN2M0YzBiZGNkNTI3
ZGU5MmE2NDY5YWQuLjYyNWQ0ZjBmNTc0MDU5OWY0MmNiZmNhMzJmNzAzNDM4NzlmOTBlZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAt
NDYwLDcgKzQ2MCw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICAgICAg
YXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gcHJldmlvdXNseVJ1bm5pbmdUcmFu
c2l0aW9uLT50YXJnZXRTdHlsZSgpOwogICAgICAgICAgICAgICAgIGRvdWJsZSB0cmFuc2Zvcm1l
ZFByb2dyZXNzID0gMTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZWZmZWN0ID0gcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgdHJh
bnNmb3JtZWRQcm9ncmVzcyA9IGVmZmVjdC0+aXRlcmF0aW9uUHJvZ3Jlc3MoKS52YWx1ZV9vcih0
cmFuc2Zvcm1lZFByb2dyZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRQcm9n
cmVzcyA9IGVmZmVjdC0+aXRlcmF0aW9uUHJvZ3Jlc3MoKS52YWx1ZU9yKHRyYW5zZm9ybWVkUHJv
Z3Jlc3MpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA9
IHN0ZDo6bWF4KHN0ZDo6bWluKCgodHJhbnNmb3JtZWRQcm9ncmVzcyAqIHByZXZpb3VzbHlSdW5u
aW5nVHJhbnNpdGlvbi0+cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcigpKSArICgxIC0gcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5yZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkpKSwgMS4w
KSwgMC4wKTsKICAgICAgICAgICAgICAgICBhdXRvIGRlbGF5ID0gbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLT5kZWxheSgpIDwgMCA/IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5k
ZWxheSgpKSAqIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgOiBTZWNvbmRzKG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSk7CiAgICAgICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9
IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVyc2lu
Z1Nob3J0ZW5pbmdGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAwYzIwYzUyODdjYjUzYTIwZTkwYTNhOGIzMjJlNGQy
MTIyNmU3ZTg4Li43NmM4M2I0MmU0Mjg5NjczZGFhOTQwMGRiNDljZTQ4NjAyNjExZGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAK
QEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpjYW5jZWwoKQog
ewogICAgIGF1dG8gY2FuY2VsYXRpb25UaW1lID0gMF9zOwogICAgIGlmIChhdXRvIGFuaW1hdGlv
bkVmZmVjdCA9IGVmZmVjdCgpKQotICAgICAgICBjYW5jZWxhdGlvblRpbWUgPSBhbmltYXRpb25F
ZmZlY3QtPmFjdGl2ZVRpbWUoKS52YWx1ZV9vcigwX3MpOworICAgICAgICBjYW5jZWxhdGlvblRp
bWUgPSBhbmltYXRpb25FZmZlY3QtPmFjdGl2ZVRpbWUoKS52YWx1ZU9yKDBfcyk7CiAKICAgICBX
ZWJBbmltYXRpb246OmNhbmNlbCgpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyhTZWNvbmRzIGVsYXBzZWRUaW1lKQog
ICAgIGlmIChpc1BlbmRpbmcgJiYgbV93YXNQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGl0ZXJhdGlvbiA9IGFuaW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+Y3Vy
cmVudEl0ZXJhdGlvbigpLnZhbHVlX29yKDApIDogMDsKKyAgICBhdXRvIGl0ZXJhdGlvbiA9IGFu
aW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+Y3VycmVudEl0ZXJhdGlvbigpLnZhbHVl
T3IoMCkgOiAwOwogICAgIGF1dG8gY3VycmVudFBoYXNlID0gYW5pbWF0aW9uRWZmZWN0ID8gYW5p
bWF0aW9uRWZmZWN0LT5waGFzZSgpIDogcGhhc2VXaXRob3V0RWZmZWN0KCk7CiAKICAgICBib29s
IHdhc0FjdGl2ZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3Q6OlBoYXNlOjpB
Y3RpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRl
eCAxZTY0NjJkM2I4YTI5ZGIxOTc5YmJjYzVkNTYzZDJjMTc2ZWIwYzg4Li4xM2RiY2QwZmQxMzM5
NzljOTIzNTFjZmIwNDYwZDk4MjExYTczMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29tcHV0ZU1pc3NpbmdLZXlmcmFtZU9mZnNldHMoVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQ
YXJzZWRLZQogICAgIC8vIHRoYXQgYSBrZXlmcmFtZSBoYXNuJ3QgaGFkIGEgY29tcHV0ZWQgb2Zm
c2V0IGJ5IGNoZWNraW5nIGlmIGl0IGhhcyBhIG51bGwgb2Zmc2V0IGFuZCBhIDAgY29tcHV0ZWRP
ZmZzZXQsIHNpbmNlIHRoZSBmaXJzdAogICAgIC8vIGtleWZyYW1lIHdpbGwgYWxyZWFkeSBoYXZl
IGEgMCBjb21wdXRlZE9mZnNldC4KICAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDoga2V5ZnJhbWVz
KQotICAgICAgICBrZXlmcmFtZS5jb21wdXRlZE9mZnNldCA9IGtleWZyYW1lLm9mZnNldC52YWx1
ZV9vcigwKTsKKyAgICAgICAga2V5ZnJhbWUuY29tcHV0ZWRPZmZzZXQgPSBrZXlmcmFtZS5vZmZz
ZXQudmFsdWVPcigwKTsKIAogICAgIC8vIDIuIElmIGtleWZyYW1lcyBjb250YWlucyBtb3JlIHRo
YW4gb25lIGtleWZyYW1lIGFuZCB0aGUgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IG9mIHRoZSBm
aXJzdCBrZXlmcmFtZSBpbiBrZXlmcmFtZXMgaXMgbnVsbCwKICAgICAvLyAgICBzZXQgdGhlIGNv
bXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiB0aGUgZmlyc3Qga2V5ZnJhbWUgdG8gMC4KQEAgLTEz
MTQsNyArMTMxNCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9ucygpCiAgICAgYXV0byogY29tcG9zaXRlZFJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKTsKIAogICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSBj
b2RlIHdlIHVzZSBhIGRlZmF1bHQgb2YgMHMgZm9yIGFuIHVucmVzb2x2ZWQgY3VycmVudCB0aW1l
IHNpbmNlIGZvciBhIFN0b3AgYWN0aW9uIHRoYXQgaXMgYWNjZXB0YWJsZS4KLSAgICBhdXRvIHRp
bWVPZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRpbWUoKS52YWx1ZV9vcigwX3MpLnNlY29u
ZHMoKSAtIGRlbGF5KCkuc2Vjb25kcygpOworICAgIGF1dG8gdGltZU9mZnNldCA9IGFuaW1hdGlv
bigpLT5jdXJyZW50VGltZSgpLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkgLSBkZWxheSgpLnNlY29u
ZHMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogcGVuZGluZ0FjY2VsZXJhdGVk
QWN0aW9ucykgewogICAgICAgICBzd2l0Y2ggKGFjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA2N2U5ODEyZGY0MWQxMWE3ZjJiYTM0MzhlZjVm
N2U4MDBkYjFiMmNiLi4zMzhjY2EzZGEzY2NjYTRjZjg0NTY5NTNjNDY4YmJhNjQ4OThiZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtOTE3LDcgKzkx
Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAv
LyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRpbmcgcmVhZHlUaW1lIHZhbHVlIGNhbiBiZSBudWxs
LiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMrKzE3IGFuZAogICAgICAgICAvLyBDKysxNCBidWls
ZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3MgT3B0aW9uYWwpIGFuZCBhdm9pZCBudWxsIE9wdGlv
bmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAgLy8gYnkgZGVmYXVsdGluZyB0byBhIFNlY29uZHMo
MCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2
MTg5LgotICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZV9vcigwX3Mp
OworICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZU9yKDBfcyk7CiAg
ICAgICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAgIG5ld1N0YXJ0VGltZSAtPSBt
X2hvbGRUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZTsKICAgICAgICAgLy8gMy4gU2V0IHRo
ZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiB0byBuZXcgc3RhcnQgdGltZS4KQEAgLTkyOCw3ICs5
MjgsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1BsYXlUYXNrKCkKICAgICB9IGVs
c2UgaWYgKG1fc3RhcnRUaW1lICYmIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSkgewogICAgICAgICAv
LyBJZiBhbmltYXRpb24ncyBzdGFydCB0aW1lIGlzIHJlc29sdmVkIGFuZCBhbmltYXRpb24gaGFz
IGEgcGVuZGluZyBwbGF5YmFjayByYXRlLAogICAgICAgICAvLyAxLiBMZXQgY3VycmVudCB0aW1l
IHRvIG1hdGNoIGJlIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyAocmVhZHkgdGltZSAtIHN0YXJ0
IHRpbWUpIMOXIHBsYXliYWNrIHJhdGUgZm9yIGFuaW1hdGlvbi4KLSAgICAgICAgYXV0byBjdXJy
ZW50VGltZVRvTWF0Y2ggPSAocmVhZHlUaW1lLnZhbHVlX29yKDBfcykgLSBtX3N0YXJ0VGltZS52
YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lVG9NYXRj
aCA9IChyZWFkeVRpbWUudmFsdWVPcigwX3MpIC0gbV9zdGFydFRpbWUudmFsdWUoKSkgKiBtX3Bs
YXliYWNrUmF0ZTsKICAgICAgICAgLy8gMi4gQXBwbHkgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0
ZSBvbiBhbmltYXRpb24uCiAgICAgICAgIGFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpOwogICAg
ICAgICAvLyAzLiBJZiBhbmltYXRpb24ncyBwbGF5YmFjayByYXRlIGlzIHplcm8sIGxldCBhbmlt
YXRpb24ncyBob2xkIHRpbWUgYmUgY3VycmVudCB0aW1lIHRvIG1hdGNoLgpAQCAtOTM2LDcgKzkz
Niw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAg
ICAgbV9ob2xkVGltZSA9IGN1cnJlbnRUaW1lVG9NYXRjaDsKICAgICAgICAgLy8gNC4gTGV0IG5l
dyBzdGFydCB0aW1lIGJlIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyByZWFkeSB0aW1lIC0gY3Vy
cmVudCB0aW1lIHRvIG1hdGNoIC8gcGxheWJhY2sgcmF0ZSBmb3IgYW5pbWF0aW9uLgogICAgICAg
ICAvLyBJZiB0aGUgcGxheWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgbmV3IHN0YXJ0IHRpbWUgYmUg
c2ltcGx5IHJlYWR5IHRpbWUuCi0gICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1l
LnZhbHVlX29yKDBfcyk7CisgICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1lLnZh
bHVlT3IoMF9zKTsKICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgbmV3
U3RhcnRUaW1lIC09IGN1cnJlbnRUaW1lVG9NYXRjaCAvIG1fcGxheWJhY2tSYXRlOwogICAgICAg
ICAvLyA1LiBTZXQgdGhlIHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9uIHRvIG5ldyBzdGFydCB0aW1l
LgpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQYXVz
ZVRhc2soKQogICAgICAgICAvLyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRpbmcgcmVhZHlUaW1l
IHZhbHVlIGNhbiBiZSBudWxsLiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMrKzE3IGFuZAogICAg
ICAgICAvLyBDKysxNCBidWlsZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3MgT3B0aW9uYWwpIGFu
ZCBhdm9pZCBudWxsIE9wdGlvbmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAgLy8gYnkgZGVmYXVs
dGluZyB0byBhIFNlY29uZHMoMCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2MTg5LgotICAgICAgICBtX2hvbGRUaW1lID0gKHJlYWR5VGltZS52
YWx1ZV9vcigwX3MpIC0gYW5pbWF0aW9uU3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1Jh
dGU7CisgICAgICAgIG1faG9sZFRpbWUgPSAocmVhZHlUaW1lLnZhbHVlT3IoMF9zKSAtIGFuaW1h
dGlvblN0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOwogICAgIH0KIAogICAgIC8v
IDMuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgb24gYW5pbWF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggOTk5ODEwODViNTUwNWM3NDVjOTc1YTZkOTdhYmM1OGNlYWUxYzVmOS4uNzJmZjdjYTVj
OTRiNTAyYWYzNzE5NjcyMmI4ZGMzMzE1OTQ5NWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjYyLDcgKzEy
NjIsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShmaWxlLnVybCgpKTsKICAgICAgICAgd3Jp
dGUoZmlsZS50eXBlKCkpOwogICAgICAgICB3cml0ZShmaWxlLm5hbWUoKSk7Ci0gICAgICAgIHdy
aXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oZmlsZS5sYXN0TW9kaWZpZWRPdmVycmlkZSgpLnZhbHVl
X29yKC0xKSkpOworICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGZpbGUubGFzdE1v
ZGlmaWVkT3ZlcnJpZGUoKS52YWx1ZU9yKC0xKSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCAwMmIyMTcxMWU3ZmJlNGJmZjI0YWQyODE2MGUz
NTMxNmE2ZmQ3MWYyLi40YmZiNGVmYjhlMDU3YWI2ZDk3ZGEyMTFjYjhjN2E5OTdiOTY0OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhN
QUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRl
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlI
TUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1
ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmIGRhdGEsIGNvbnMKICAgICBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gcmVzdWx0OwogICAgIHN3
aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAg
cmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52
YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcoaG1hY1BhcmFtZXRlcnMubGVuZ3Ro
LnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6
Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewogICAgICAgICBhdXRv
IGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGNv
bnN0IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRh
JiYgZGF0YSwgY29ucwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1h
Y1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGht
YWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+
KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlw
dC5jcHAKaW5kZXggM2NjYzFlNmRjNTA4NjUwZjI2NzU1YWEwN2RhZDE2ZmE4NTZlZmQyYS4uZmZi
YzkzYzkxZTk1YmMwOWEwZGNlNTdhZDdkZTUxNTlhNDZlNmRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRl
eHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGtleS5rZXkoKSwgcGFyYW1l
dGVycy5pdlZlY3RvcigpLCBwbGFpblRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0
b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBs
YWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRh
Z0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRw
dXQpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0CiAKIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1E
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkK
IHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJz
Lml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3Io
KSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1
dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhl
clRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdM
ZW5ndGgudmFsdWVPcigwKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0Ny
eXB0LmNwcAppbmRleCBjNjQyY2E2OGYzZmVmZTE2NTVmNzliNGJhNTg0ZWMzMDc3YzVmYjI2Li5k
ZmM1YmE0ZDliZTBkZmU5ZGEyMjU0ZmUyODU1ODMzNTFkOTI1NDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0zMTMs
NyArMzEzLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtp
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFs
dWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlB1YmxpYywgcGxhdGZvcm1LZXkucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFz
aC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlw
dG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVz
YWdlcykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBr
Y3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtNDA4LDcgKzQw
OCw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBl
OjpQcml2YXRlLCBwbGF0Zm9ybUtleS5yZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZh
bHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhw
b3J0U3BraSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlSU0EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNB
LmNwcAppbmRleCA3M2RlNTFhZWIyMTRlMTY0ZTE3ZmQ1MGFmODBmNDM4ZGZiMzliYmZhLi5lYzA2
NzczYzQ0OWE3NDQ3NzZmZjYzNzJiZmEzMTRhYjJjYjcwY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVmUHRyPENy
eXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBhbGdvcml0aG0KICAgICAgICAgLy8gaW1wb3J0IHB1YmxpYyBrZXkKICAgICAgICAgYXV0
byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVi
bGljKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpKTsKICAgICAgICAgLy8gTm90
aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xk
ZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0
LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZh
bHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHVibGlj
S2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJldHVybiBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIC8vIGltcG9ydCBwcml2YXRlIGtleQpAQCAtNjgs
NyArNjgsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgIGlmIChrZXlEYXRhLnAuaXNO
dWxsKCkgJiYga2V5RGF0YS5xLmlzTnVsbCgpICYmIGtleURhdGEuZHAuaXNOdWxsKCkgJiYga2V5
RGF0YS5kcC5pc051bGwoKSAmJiBrZXlEYXRhLnFpLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8g
cHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2
YXRlKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVF
eHBvbmVudCkpOwogICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZl
Y3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhh
c2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnBy
aXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKICAgICBp
ZiAoa2V5RGF0YS5wLmlzTnVsbCgpIHx8IGtleURhdGEucS5pc051bGwoKSB8fCBrZXlEYXRhLmRw
LmlzTnVsbCgpIHx8IGtleURhdGEuZHEuaXNOdWxsKCkgfHwga2V5RGF0YS5xaS5pc051bGwoKSkK
QEAgLTg4LDcgKzg4LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBv
cnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICBpZiAoIWtleURh
dGEub3RoKSB7CiAgICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUobW9k
dWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1v
dmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIHsgfSk7CiAgICAg
ICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBh
IHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdU
Rjo6bnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFz
aCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAg
cmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVu
dHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIFZlY3RvcjxDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvczsKQEAgLTEwNSw3ICsxMDUs
NyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogCiAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9u
ZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25h
bERhdGEoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCksIFdURk1vdmUocHJpdmF0
ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJ
bmZvKSwgV1RGTW92ZShvdGhlclByaW1lSW5mb3MpKTsKICAgICAvLyBOb3RpY2U6IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxk
IG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgcmV0dXJu
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBl
eHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxn
b3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAK
IEpzb25XZWJLZXkgQ3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHAK
aW5kZXggZTI2OGZmNWVlYzk3NzM3Yjc3OWM0ZWIxYzFhZDMwZGRiOTk2ZDk5Ny4uOTIzNDQxNTE4
ZTdiOTlhN2E4N2NiODMxNzA1MmM3ODU0MGUwYWJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwCkBAIC03Miwx
MiArNzIsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjeXB0QUVT
X0dDTShjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb24KIAogRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlB
RVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgcmV0dXJu
IGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRl
eHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5n
dGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICByZXR1cm4gZW5jcnlwdEFFU19HQ00ocGFyYW1ldGVy
cy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFs
RGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CiB9CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCks
IGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3Rvcigp
LCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOworICAgIHJldHVybiBkZWN5
cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBjaXBoZXJUZXh0LCBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZh
bHVlT3IoMCkgLyA4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IDNhYTcwMWQzMTQ3MjM3
MTc0ODU0MjllZTQ3ODhiYmJmOWMzZDAyNzQuLjExYTdjOTE2YjYxMmZkNjMzOWJkZTM3YjIyY2Nl
MjU5YWI2YTk3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
S2V5UlNBTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKQEAgLTM2Myw3ICszNjMsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9L
ZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUg
YW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVi
bGljS2V5LCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
cnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVibGljS2V5
LCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRTcGtpKCkgY29uc3QKQEAgLTQyMCw3ICs0MjAsNyBAQCBS
ZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNl
aG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVs
bG9wdC4KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBo
YXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBD
cnlwdG9LZXlUeXBlOjpQcml2YXRlLCBjY1ByaXZhdGVLZXksIGV4dHJhY3RhYmxlLCB1c2FnZXMp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNo
LnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0
b0tleVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwog
fQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtj
czgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCA3YjI2ZTNhZGFjNWZiZDYxMzIyYzYyNmY2OWI0M2QyODJlZjQz
NTYxLi4xZDA5YzhhNjcxYTM2OTliZmQ5MDAxNTQ4MmZmNjVlYjcyZGQ5NTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
MTk1MSw3ICsxOTUxLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHAKICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiBr
ZXlWYWx1ZSA6ICptYXApIHsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShrZXlWYWx1ZS5rZXksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0g
ICAgICAgIGRvdWJsZSBudW1iZXIgPSAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJ
bmNyZW1lbnQgPyBrZXlWYWx1ZS52YWx1ZS5pbmNyZW1lbnRWYWx1ZSA6IGtleVZhbHVlLnZhbHVl
LnJlc2V0VmFsdWUpLnZhbHVlX29yKDApOworICAgICAgICBkb3VibGUgbnVtYmVyID0gKHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8ga2V5VmFsdWUudmFsdWUuaW5j
cmVtZW50VmFsdWUgOiBrZXlWYWx1ZS52YWx1ZS5yZXNldFZhbHVlKS52YWx1ZU9yKDApOwogICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKG51bWJlciwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGlz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA1NGE0MDQ4MGFhZjFmMTFiNjA0
ZDcwYWNlM2Q2OWUwNzUxNGMzOTBkLi4wZWNhNTFiM2RiNmVmM2FmMTE3N2IzNGQ1Zjk3ZmJkMjYw
NTRlZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZUl0YWxpY1JhbmdlKENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNGb250U3R5bGVWYWx1ZSgpKSB7CiAgICAgICAg
IGF1dG8gcmVzdWx0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJv
bVZhbHVlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlX29yKG5vcm1hbEl0
YWxpY1ZhbHVlKCkpLCByZXN1bHQudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSkgfTsKKyAg
ICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlT3Iobm9ybWFsSXRhbGljVmFsdWUoKSksIHJlc3Vs
dC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpIH07CiAgICAgfQogCiAgICAgQVNTRVJUKHZh
bHVlLmlzRm9udFN0eWxlUmFuZ2VWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCmluZGV4IDZhZTYyNjcxOTgzZWI3MGY3MTM5YjliZTVjMTc2YTA5MWJmY2Qw
YTcuLjA2ZmZiNjBlYTQ2ZWQxMThmMzJmNDY0ZjY0Yzk1ZmM0NGEzNTczMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtNzg3LDcgKzc4Nyw3IEBAIEV4Y2Vw
dGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSkgY29uCiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFs
dWUoVW5pdFR5cGUgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50
ZXJuYWwodW5pdFR5cGUpLnZhbHVlX29yKDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVy
bmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOwogfQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6
OmRvdWJsZVZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCAxMmNkYTU0NWQ3YmNjNzVkZWRiN2E3OTUzNTFiZDZmMDAzNjc0ZmMyLi42N2MzMGU0MTkxODIx
NDJjOWM0MWMwZGM1NDZhNmRmYWZmYjZlNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0
OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3QKICAgICBp
ZiAoIXN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKICAgICB0ZXh0
LmFwcGVuZCgnfScpOwotICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4
dC50b1N0cmluZygpLCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOworICAgIGF1dG8gaW5zZXJ0
UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxl
bmd0aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYzM1NGU5NzgyNzNiYTU2ZTJmZmI1NDdmZjM5MTgz
MzljZDBmY2NhZi4uYTAwZjE2NWI0ODM3M2NiYWUwNDQwMDYwY2EwMTIyYTFmZWFjZGE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKQEAgLTE4OSw4ICsxODksOCBAQCBSZWY8RE9NTWF0cml4
PiBET01NYXRyaXg6OnJvdGF0ZVNlbGYoZG91YmxlIHJvdFgsIE9wdGlvbmFsPGRvdWJsZT4gcm90
WSwgT3B0aW9uYQogICAgICAgICByb3RYID0gMDsKICAgICAgICAgcm90WSA9IDA7CiAgICAgfQot
ICAgIG1fbWF0cml4LnJvdGF0ZTNkKHJvdFgsIHJvdFkudmFsdWVfb3IoMCksIHJvdFoudmFsdWVf
b3IoMCkpOwotICAgIGlmIChyb3RYIHx8IHJvdFkudmFsdWVfb3IoMCkpCisgICAgbV9tYXRyaXgu
cm90YXRlM2Qocm90WCwgcm90WS52YWx1ZU9yKDApLCByb3RaLnZhbHVlT3IoMCkpOworICAgIGlm
IChyb3RYIHx8IHJvdFkudmFsdWVPcigwKSkKICAgICAgICAgbV9pczJEID0gZmFsc2U7CiAgICAg
cmV0dXJuICp0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAK
aW5kZXggY2M3ZjcyNjk4NTEzZWU4MzgwMzk4ODI3ZDkxOWI0OGY3NTMxMzM5NS4uMTM5OTZmYjU1
M2NlMWM2YThmNzJiYTk5ZTQ4NmRlMWE0OGRkNWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4UmVhZE9ubHkuY3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBET01NYXRyaXhSZWFkT25seTo6dmFsaWRhdGVBbmRGaXh1cChET01NYXRyaXgyREluaXQmIGlu
aXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJpbml0LmYgYW5kIGlu
aXQubTQyIGRvIG5vdCBtYXRjaCJfcyB9OwogCiAgICAgaWYgKCFpbml0Lm0xMSkKLSAgICAgICAg
aW5pdC5tMTEgPSBpbml0LmEudmFsdWVfb3IoMSk7CisgICAgICAgIGluaXQubTExID0gaW5pdC5h
LnZhbHVlT3IoMSk7CiAgICAgaWYgKCFpbml0Lm0xMikKLSAgICAgICAgaW5pdC5tMTIgPSBpbml0
LmIudmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTEyID0gaW5pdC5iLnZhbHVlT3IoMCk7CiAg
ICAgaWYgKCFpbml0Lm0yMSkKLSAgICAgICAgaW5pdC5tMjEgPSBpbml0LmMudmFsdWVfb3IoMCk7
CisgICAgICAgIGluaXQubTIxID0gaW5pdC5jLnZhbHVlT3IoMCk7CiAgICAgaWYgKCFpbml0Lm0y
MikKLSAgICAgICAgaW5pdC5tMjIgPSBpbml0LmQudmFsdWVfb3IoMSk7CisgICAgICAgIGluaXQu
bTIyID0gaW5pdC5kLnZhbHVlT3IoMSk7CiAgICAgaWYgKCFpbml0Lm00MSkKLSAgICAgICAgaW5p
dC5tNDEgPSBpbml0LmUudmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTQxID0gaW5pdC5lLnZh
bHVlT3IoMCk7CiAgICAgaWYgKCFpbml0Lm00MikKLSAgICAgICAgaW5pdC5tNDIgPSBpbml0LmYu
dmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTQyID0gaW5pdC5mLnZhbHVlT3IoMCk7CiAKICAg
ICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmlu
ZGV4IGM3ODUyZjAyOWQ4Mzg0MDlhYjRlNTNhYzAzZDEwMjlhNDhlOTQ4MzQuLjQ4ZTZjYWJhODli
Yjc2YTRiYTgxZGFkOTZiNTM2YTdkM2E2YzQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKQEAgLTExOTMsNyArMTE5Myw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwKICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRp
cmVjdGl2ZXMucmVzZXRWYWx1ZSA9IHZhbHVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
aXJlY3RpdmVzLmluY3JlbWVudFZhbHVlID0gc2F0dXJhdGVkQWRkaXRpb24oZGlyZWN0aXZlcy5p
bmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSwgdmFsdWUpOworICAgICAgICAgICAgZGlyZWN0aXZl
cy5pbmNyZW1lbnRWYWx1ZSA9IHNhdHVyYXRlZEFkZGl0aW9uKGRpcmVjdGl2ZXMuaW5jcmVtZW50
VmFsdWUudmFsdWVPcigwKSwgdmFsdWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggOGMzNTYyZWNmNTdmNTliMDhm
MjYzYWY5ODk0ZWRhYTg5NmUzZWU4Mi4uNmQyMWQyMGIxZGZjYzJmNTkzYmYyNmU2YmM2ZTAyYTZh
MTE3ZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJz
ZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRN
ZWRpYVF1ZXJ5KCkKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVs
LCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRo
ZQogICAgIC8vIG9sZCBwYXJzZXIuCiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKLSAgICBNZWRpYVF1ZXJ5IG1lZGlh
UXVlcnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5t
ZWRpYVR5cGUoKS52YWx1ZV9vcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVl
cnlEYXRhLmV4cHJlc3Npb25zKCkpIH07CisgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5IHsgbV9t
ZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCksIG1fbWVkaWFRdWVyeURhdGEubWVkaWFUeXBlKCku
dmFsdWVPcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJl
c3Npb25zKCkpIH07CiAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwogICAgIG1fcXVlcnlT
ZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShtZWRpYVF1ZXJ5KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDZkNWNkZGI4M2Y4ZWMyMGYwZDg1NmVmMTRiY2ExODI0ODAzN2Q0Y2UuLjhhMGZm
ZTEwYjQ1OTcxMjI3NGRlN2Q3MjQyODYwMjkwNzM3Y2Y5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFJlZmVy
cmVyUG9saWN5KFJlZmVycmVyUG9saWN5KTsKLSAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3kudmFsdWVfb3IoUmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsgfQorICAgIFJlZmVycmVyUG9saWN5IHJl
ZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeS52YWx1ZU9yKFJl
ZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggYjI2YzQxZjE4ZWE5MGYzMThlYTZjN2ZlYmQ5ZjE1ODAxYjY4MDIzOS4uNWZmMzAy
ZmJlNjUyNjU1ODZkNjIwZTI2ZTIzZmU0NzZiNDY1MmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcp
CiAvLyBGSVhNRSh3ZWJraXQub3JnL2IvMTYxNjExKTogVGFrZSBpbnRvIGFjY291bnQgb3JpZW50
YXRpb24vZGlyZWN0aW9uLgogaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVu
dChPcHRpb25hbDxTY3JvbGxMb2dpY2FsUG9zaXRpb24+IHBvc2l0aW9uLCBib29sIGlzVmVydGlj
YWwpCiB7Ci0gICAgc3dpdGNoIChwb3NpdGlvbi52YWx1ZV9vcihpc1ZlcnRpY2FsID8gU2Nyb2xs
TG9naWNhbFBvc2l0aW9uOjpTdGFydCA6IFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6TmVhcmVzdCkp
IHsKKyAgICBzd2l0Y2ggKHBvc2l0aW9uLnZhbHVlT3IoaXNWZXJ0aWNhbCA/IFNjcm9sbExvZ2lj
YWxQb3NpdGlvbjo6U3RhcnQgOiBTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CiAg
ICAgY2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0OgogICAgICAgICByZXR1cm4gaXNW
ZXJ0aWNhbCA/IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgOiBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduTGVmdEFsd2F5czsKICAgICBjYXNlIFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6Q2Vu
dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggYmEyN2FkMDZhN2RkZDExNzBk
NzU0MmI0YjI2MGRkOWI0ZWNhMDZmYi4uZDFjODdkZTVlNDk4ZDU5ZTFiMmE4NWM2OThjZWJiYTFi
MmViMWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlCiAgICAgYm9vbCBsaXN0ZW5lckNyZWF0ZWRGcm9tU2Ny
aXB0ID0gbGlzdGVuZXItPnR5cGUoKSA9PSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJU
eXBlICYmICFsaXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKTsKICAgICBhdXRvIGxpc3Rl
bmVyUmVmID0gbGlzdGVuZXIuY29weVJlZigpOwogCi0gICAgaWYgKCFlbnN1cmVFdmVudFRhcmdl
dERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIp
LCB7IG9wdGlvbnMuY2FwdHVyZSwgcGFzc2l2ZS52YWx1ZV9vcihmYWxzZSksIG9wdGlvbnMub25j
ZSB9KSkKKyAgICBpZiAoIWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAu
YWRkKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHsgb3B0aW9ucy5jYXB0dXJlLCBwYXNz
aXZlLnZhbHVlT3IoZmFsc2UpLCBvcHRpb25zLm9uY2UgfSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDg0NjI0OTUzNmViOWNhMmRiZDI2YWNkYjA0NzM4
MGZlMDJlNTNmZjguLjZmNzlhNzQ0MDFmMGQ5MmI1ZGE4ZjM5N2IyNDgzZTJjZTA2YWM5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTg1LDkgKzg1LDkgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBj
b25zdCBJbml0JiBpbml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAo
aW5pdC5zdWJ0cmVlKQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQu
YXR0cmlidXRlT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQorICAgIGlmIChpbml0LmF0dHJpYnV0
ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9s
ZFZhbHVlOwotICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxz
ZSkpCisgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQog
ICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiBhdHRyaWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KaW5kZXggZDQz
MWY3MjJlMjRhYWIzYmQxNzcyOGI0MzU4Yjc4Njk4Yjc4NmY0Yi4uZGEwMmNiMmM0Y2VmZjgzYWQ0
NTVmZmIyZGViYzY2Mjk5NGE3ZTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQpAQCAtNDYsOCArNDYs
OCBAQCBjb25zdCBTdHJpbmcmIEZvbnRDaGFuZ2VzOjpwbGF0Zm9ybUZvbnRGYW1pbHlOYW1lRm9y
Q1NTKCkgY29uc3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbnROYW1lRnJvbURlc2Ny
aXB0aW9uOwogCiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0
aW9uLnNldElzSXRhbGljKG1faXRhbGljLnZhbHVlX29yKGZhbHNlKSk7Ci0gICAgZGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB7IG1fYm9sZC52YWx1ZV9vcihmYWxzZSkg
PyA5MDAgOiA1MDAgfSk7CisgICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFsaWMudmFs
dWVPcihmYWxzZSkpOworICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFs
dWUgeyBtX2JvbGQudmFsdWVPcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7CiAgICAgaWYgKGF1dG8g
Zm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwg
bV9mb250RmFtaWx5KSkKICAgICAgICAgZm9udE5hbWVGcm9tRGVzY3JpcHRpb24gPSBhZG9wdENG
KENURm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LT5nZXRDVEZvbnQoKSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcAppbmRleCBmYzBmYTU3ZjBiZWRiOWQ3NTlhZjc5ZjQ1OGU1MDU2MDg0ODEy
OGQyLi5iNzNmY2RlNzlmNDYwNzkyYzkyNmMwNzVmYmFhZjY2NDhhNzI0MTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEJsb2JQcm9wZXJ0eUJhZyBj
b252ZXJ0UHJvcGVydHlCYWcoY29uc3QgRmlsZTo6UHJvcGVydHlCYWcmIGluaXRpYWxCYWcpCiBG
aWxlOjpGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAg
IDogQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJv
cGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQotICAgICwgbV9sYXN0TW9kaWZpZWRE
YXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlX29yKFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKKyAgICAsIG1fbGFzdE1v
ZGlmaWVkRGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmluZGV4IGNlYTFjZDMwOWNkYzM1Mjg3ZTg0
ZTBkZDA3MDU1ZmJiYTk3NGI0NDkuLmFmMDA5MTFlMDZlY2M1N2VkMzhhNDY4MzIyMjkzNTMyYzM1
YTZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCBFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPgogICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRv
a2VucygpOwogCiAgICAgaWYgKHRva2Vucy5jb250YWlucyh0b2tlbikpIHsKLSAgICAgICAgaWYg
KCFmb3JjZS52YWx1ZV9vcihmYWxzZSkpIHsKKyAgICAgICAgaWYgKCFmb3JjZS52YWx1ZU9yKGZh
bHNlKSkgewogICAgICAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKICAgICAgICAg
ICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDVm
NGQ5ZWZkYWQ1ZDNkZTA2MDFhMDZhMGZlMzBhYjIwZWUyZDZkM2YuLjgxM2Y1ZTA2MmRiMjViNTQz
MTlhY2QzMjU1OTliMDAwZjk1OWM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxPTGlz
dEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTE9MaXN0RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgaW50
IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnZhbHVlX29yKDEpOyB9
CisgICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnZhbHVl
T3IoMSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXJ0Rm9yQmluZGluZ3MoaW50
KTsKIAogICAgIC8vIEZJWE1FOiBUaGUgcmVhc29uIHN0YXJ0KCkgZG9lcyBub3QgdHJpZ2dlciBs
YXlvdXQgaXMgYmVjYXVzZSBpdCBpcyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKaW5kZXggNmIyZWUxODQ5ZTQ5ZWY1NzUzODZkZWRiMTVlZmRiNDU1Yzg0MTgzZi4uOWRiYmI0
ZmVlYzUxYTNiOTk0ZTE1YWQ2YmU2ODJmYTIzODJkZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8SW50UmVj
dD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhGb3JtYXR0aW5nKEludFNpemUgaW5wdXRTaQog
ICAgIC8vICAgIE90aGVyd2lzZSBsZXQgc291cmNlUmVjdGFuZ2xlIGJlIGEgcmVjdGFuZ2xlIHdo
b3NlIGNvcm5lcnMgYXJlIHRoZSBmb3VyIHBvaW50cwogICAgIC8vICAgICgwLDApLCAod2lkdGgg
b2YgaW5wdXQsIDApLCAod2lkdGggb2YgaW5wdXQsIGhlaWdodCBvZiBpbnB1dCksICgwLCBoZWln
aHQgb2YKICAgICAvLyAgICBpbnB1dCkuCi0gICAgYXV0byBzb3VyY2VSZWN0YW5nbGUgPSByZWN0
LnZhbHVlX29yKEludFJlY3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRTaXplLmhl
aWdodCgpIH0pOworICAgIGF1dG8gc291cmNlUmVjdGFuZ2xlID0gcmVjdC52YWx1ZU9yKEludFJl
Y3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRTaXplLmhlaWdodCgpIH0pOwogCiAg
ICAgLy8gNC4gQ2xpcCBzb3VyY2VSZWN0YW5nbGUgdG8gdGhlIGRpbWVuc2lvbnMgb2YgaW5wdXQu
CiAgICAgc291cmNlUmVjdGFuZ2xlLmludGVyc2VjdChJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXpl
LndpZHRoKCksIGlucHV0U2l6ZS5oZWlnaHQoKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggOWE5ZGU5YTc3MmE3MWViY2QyZGZiYjcxNmNh
OTI1NDljNDRjMDYwZi4uNzJlYTFhODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUGF0dGVybjo6c2V0VHJhbnNmb3Jt
KERPTU1hdHJpeDJESW5pdCYmIG1hdHJpeEluaXQpCiAgICAgaWYgKGNoZWNrVmFsaWQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VFeGNlcHRpb24oKTsK
IAotICAgIG1fcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHsgbWF0cml4SW5pdC5h
LnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmIudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuYy52YWx1
ZV9vcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmUudmFsdWVfb3Io
MCksIG1hdHJpeEluaXQuZi52YWx1ZV9vcigwKSB9KTsKKyAgICBtX3BhdHRlcm4tPnNldFBhdHRl
cm5TcGFjZVRyYW5zZm9ybSh7IG1hdHJpeEluaXQuYS52YWx1ZU9yKDEpLCBtYXRyaXhJbml0LmIu
dmFsdWVPcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlT3IoMCksIG1hdHJpeEluaXQuZC52YWx1ZU9y
KDEpLCBtYXRyaXhJbml0LmUudmFsdWVPcigwKSwgbWF0cml4SW5pdC5mLnZhbHVlT3IoMCkgfSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCAyMjg2ZDMy
MjJhYmQ3Y2YwZTgwZTEyMWQ4MGQ4NmVkYjYwY2Q1MmRjLi5kNDI2ZmFjNjEzMzlmZWMzYzEzZjRl
NzA2ZGFjZmFiZDUxODc5OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtOTE1LDcgKzkx
NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNl
dFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJiBtCiAgICAgaWYgKGNoZWNrVmFsaWQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VFeGNlcHRpb24oKTsK
IAotICAgIHNldFRyYW5zZm9ybShtYXRyaXhJbml0LmEudmFsdWVfb3IoMSksIG1hdHJpeEluaXQu
Yi52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmQudmFs
dWVfb3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5mLnZhbHVlX29y
KDApKTsKKyAgICBzZXRUcmFuc2Zvcm0obWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeElu
aXQuYi52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZh
bHVlT3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigw
KSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTIwNCw3ICsxMjA0LDcgQEAgYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0
aCYgcGF0aCwgZmxvYXQKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3Rh
dGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0
ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQoRmxvYXRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBw
YXRoLCBmbG8KICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChG
bG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxv
YXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQu
eCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0
aDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKaW5kZXggMjE1
YjdkM2JhZDJiODU0MzMxZjY0YjNmMWMwMzM0NWYyYzJjZTA1Ny4uMzg1ZTlkYWJmNWRjYmNhM2Jk
MjJmZWFhOTVmNzg0ZDJmNDc5NGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUGF0aDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhdGgyRDo6YWRkUGF0aChQ
YXRoMkQmIHBhdGgsIERPTU1hdHJpeDJESW5pdCYmIG1hdHJpeEluaXQpCiAgICAgaWYgKGNoZWNr
VmFsaWQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VF
eGNlcHRpb24oKTsKIAotICAgIG1fcGF0aC5hZGRQYXRoKHBhdGgucGF0aCgpLCB7IG1hdHJpeElu
aXQuYS52YWx1ZV9vcigxKSwgbWF0cml4SW5pdC5iLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmMu
dmFsdWVfb3IoMCksIG1hdHJpeEluaXQuZC52YWx1ZV9vcigxKSwgbWF0cml4SW5pdC5lLnZhbHVl
X29yKDApLCBtYXRyaXhJbml0LmYudmFsdWVfb3IoMCkgfSk7CisgICAgbV9wYXRoLmFkZFBhdGgo
cGF0aC5wYXRoKCksIHsgbWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeEluaXQuYi52YWx1
ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlT3IoMSks
IG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigwKSB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCmluZGV4IDliNjhjNGIwNWMzYjYzZWExZWZmNzFiMDFhZTliMTU5ZmJjZTY3ZDMu
LjUyYjBiY2I5YjIyYjQ4OGExMDEyMjE4Y2M2MjI3NzhmMDY3MmUzYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC01ODIsMTIgKzU4MiwxMiBA
QCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgWyZdIChDYW52YXNUZXh0QmFz
ZWxpbmUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCiAg
ICAgICAgICAgICBbJl0gKGNvbnN0IERPTU1hdHJpeDJESW5pdCYgdmFsdWUpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAg
ICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVlX29yKDEpKTsKLSAgICAg
ICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5iLnZhbHVlX29yKDApKTsKLSAgICAgICAg
ICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5jLnZhbHVlX29yKDApKTsKLSAgICAgICAgICAg
ICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5kLnZhbHVlX29yKDEpKTsKLSAgICAgICAgICAgICAg
ICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5lLnZhbHVlX29yKDApKTsKLSAgICAgICAgICAgICAgICBh
cnJheS0+YWRkSXRlbSh2YWx1ZS5mLnZhbHVlX29yKDApKTsKKyAgICAgICAgICAgICAgICBhcnJh
eS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVlT3IoMSkpOworICAgICAgICAgICAgICAgIGFycmF5LT5h
ZGRJdGVtKHZhbHVlLmIudmFsdWVPcigwKSk7CisgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0
ZW0odmFsdWUuYy52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2
YWx1ZS5kLnZhbHVlT3IoMSkpOworICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVl
LmUudmFsdWVPcigwKSk7CisgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuZi52
YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoYXJyYXkucHRyKCksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlczo6RE9NTWF0cml4KTsKICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICBbJl0gKGNvbnN0IEVsZW1lbnQqKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDg3NGYzODRjM2EzZjdjMTRjYzRh
YzM2YTJhMWYwOGE4YzU5ZWM4NjEuLmMwODBhNTZjNjg2MWYzZTM5ODk3OWE3YjEyM2Q1NjJiOGI5
MGY0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250
ZXh0TWVudShWZWN0b3I8SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpDb250ZXh0TWVudUl0ZW0+JiYK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdHlwZSA9IGl0ZW0udHlwZSA9PSAiY2hlY2tib3gi
ID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgICAgIGF1dG8gYWN0aW9u
ID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0
b21UYWcgKyBpdGVtLmlkLnZhbHVlX29yKDApKTsKKyAgICAgICAgYXV0byBhY3Rpb24gPSBzdGF0
aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyAr
IGl0ZW0uaWQudmFsdWVPcigwKSk7CiAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRlbSA9
IHsgdHlwZSwgYWN0aW9uLCBpdGVtLmxhYmVsIH07CiAgICAgICAgIGlmIChpdGVtLmVuYWJsZWQp
CiAgICAgICAgICAgICBtZW51SXRlbS5zZXRFbmFibGVkKCppdGVtLmVuYWJsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYjNjNTc2MjRlYjE1
ZjZmMmQwMzg0N2U4MTg0YzdkMGViODc2N2I5OS4uMTFlZmM0NjE4YjkxYWE4ZjYxZmYwMzI1Y2E3
NjQ4MGU0OGM5NTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0yMjQsMTYgKzIyNCwxNiBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiAgICAgICAgIGlmICgo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpIHx8IGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAvLyBtYXJn
aW4tbGVmdCArIGJvcmRlci1sZWZ0LXdpZHRoICsgcGFkZGluZy1sZWZ0ICsgd2lkdGggKyBwYWRk
aW5nLXJpZ2h0ICsgYm9yZGVyLXJpZ2h0LXdpZHRoICsgbWFyZ2luLXJpZ2h0ID0gd2lkdGggb2Yg
Y29udGFpbmluZyBibG9jawogICAgICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoZGlzcGxheUJveC5tYXJnaW5TdGFydCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0
KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmNv
bnRlbnRCb3hXaWR0aCgpCi0gICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94LnBhZGRpbmdSaWdo
dCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5ib3JkZXJSaWdodCgpICsgZGlzcGxheUJveC5t
YXJnaW5FbmQoKSA9PSBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgICAgICBBU1NFUlQo
ZGlzcGxheUJveC5tYXJnaW5TdGFydCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0KCkgKyBkaXNw
bGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3guY29udGVudEJveFdp
ZHRoKCkKKyAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVP
cigwKSArIGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKSArIGRpc3BsYXlCb3gubWFyZ2luRW5kKCkg
PT0gY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gMTAuNi40
IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAgIGlm
IChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNl
ZCgpKSB7CiAgICAgICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9yZGVyLXRvcC13aWR0
aCArIHBhZGRpbmctdG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBib3JkZXItYm90dG9t
LXdpZHRoICsgbWFyZ2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBjb250YWluaW5nIGJs
b2NrCiAgICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3guY29udGVudEJveEhlaWdodCgpOwotICAgICAgICAgICAgQVNTRVJUKGRp
c3BsYXlCb3gudG9wKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpICsgZGlzcGxheUJveC5i
b3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgZGlzcGxh
eUJveC5jb250ZW50Qm94SGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gucGFk
ZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5ib3JkZXJCb3R0b20oKSArIGRp
c3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgICAg
ICAgICAgQVNTRVJUKGRpc3BsYXlCb3gudG9wKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgp
ICsgZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVl
T3IoMCkgKyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hIZWlnaHQoKQorICAgICAgICAgICAgICAgICsg
ZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3guYm9yZGVy
Qm90dG9tKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkgPT0gY29udGFpbmluZ0Jsb2NrSGVp
Z2h0KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlMDNkODNkMDczODgwZjU5MjYy
OWM1NDk2NjU3NmUxYjM2YzIxMmM4Li5jMzM5Zjk3ODBmYzQwZWZmNjA4ZjkyNTc5Y2M0NzAwZDkx
MWU0ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0yODIsOCArMjgyLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9t
ZXQKICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBj
b21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5v
cm1hbCk7CiAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBtYXJn
aW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRpc3BsYXlCb3gucGFk
ZGluZ1RvcCgpLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGRpc3BsYXlC
b3gucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOworICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRp
c3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5nQm90dG9t
ID0gZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRl
clRvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJCb3R0b20gPSBk
aXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwogCkBAIC0zMDcsNDUgKzMwNyw0NSBAQCBWZXJ0aWNh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFj
ZWRWZXJ0aWNhbEdlb21ldAogICAgIGlmICghdG9wICYmICFoZWlnaHQgJiYgYm90dG9tKSB7CiAg
ICAgICAgIC8vICMxCiAgICAgICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5n
Q29udGV4dFJvb3QobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9y
ZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJn
aW5BZnRlci52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3Jl
LnZhbHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigw
KTsKICAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJnaW5CZWZvcmUg
KyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3Jk
ZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCF0
b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAgdG9wID0g
c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3RhdGUs
IGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9v
cigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9vcigwKTsKKyAg
ICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIG1h
cmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKICAgICAgICAgYm90dG9tID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsg
cGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1h
cmdpbkFmdGVyKTsgCiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQgJiYgIWJvdHRvbSAmJiB0b3Ap
IHsKICAgICAgICAgLy8gIzMKICAgICAgICAgaGVpZ2h0ID0gY29udGVudEhlaWdodEZvckZvcm1h
dHRpbmdDb250ZXh0Um9vdChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgbWFyZ2lu
QmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlX29yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9
IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5C
ZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1
ZU9yKDApOwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCAr
ICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBp
ZiAoIXRvcCAmJiBoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICM0Ci0gICAgICAgIG1h
cmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0
ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFy
Z2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIu
dmFsdWVPcigwKTsKICAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJn
aW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0
b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAg
ICAgaWYgKCFoZWlnaHQgJiYgdG9wICYmIGJvdHRvbSkgewogICAgICAgICAvLyAjNQotICAgICAg
ICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVfb3IoMCk7Ci0gICAgICAgIG1hcmdp
bkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVfb3IoMCk7CisgICAgICAgIG1hcmdpbkJlZm9yZSA9
IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFm
dGVyLnZhbHVlT3IoMCk7CiAgICAgICAgIGhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBwYWRkaW5n
Qm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7IAogICAgIH0K
IAogICAgIGlmICghYm90dG9tICYmIHRvcCAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAg
ICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlX29yKDApOwotICAgICAgICBt
YXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5CZWZv
cmUgPSBtYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJn
aW5BZnRlci52YWx1ZU9yKDApOwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWln
aHQgLSAoKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhl
aWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAg
ICB9CiAKQEAgLTQwMCwxMCArNDAwLDEwIEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAg
YXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsg
dXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBh
dXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQg
PSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5k
ID0gbWFyZ2luRW5kLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5
Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nUmlnaHQgPSBk
aXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgIGF1dG8gbm9uQ29tcHV0
ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgYXV0byBub25Db21w
dXRlZE1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOworICAgIGF1dG8gcGFkZGluZ0xl
ZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHBhZGRp
bmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKICAgICBhdXRv
IGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKICAgICBhdXRvIGJvcmRlclJp
Z2h0ID0gZGlzcGxheUJveC5ib3JkZXJSaWdodCgpOwogCkBAIC00MTEsOCArNDExLDggQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gSWYgYWxsIHRocmVlIG9mICdsZWZ0Jywg
J3dpZHRoJywgYW5kICdyaWdodCcgYXJlICdhdXRvJzogRmlyc3Qgc2V0IGFueSAnYXV0bycgdmFs
dWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLgogICAgICAgICAv
LyBUaGVuLCBpZiB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgZXN0YWJs
aXNoaW5nIHRoZSBzdGF0aWMtcG9zaXRpb24gY29udGFpbmluZyBibG9jayBpcyAnbHRyJyBzZXQg
J2xlZnQnIHRvIHRoZSBzdGF0aWMKICAgICAgICAgLy8gcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUg
bnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRoZSBzdGF0aWMg
cG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KLSAgICAgICAgbWFyZ2lu
U3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luRW5kID0gbWFy
Z2luRW5kLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZh
bHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOwogCiAg
ICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCkBAIC00NTksOCArNDU5LDggQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJn
aW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNrIHRoZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaXggcnVs
ZXMgdGhhdCBhcHBsaWVzLgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVl
X29yKDApOwotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7CisgICAg
ICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2lu
RW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1hcmdpblN0
YXJ0KTsKQEAgLTUzMCw4ICs1MzAsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIGF1
dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgdXNlZEhlaWdodCkuaGVpZ2h0OwogICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIHBhZGRp
bmdUb3AgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsKLSAgICBhdXRvIHBh
ZGRpbmdCb3R0b20gPSBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKKyAg
ICBhdXRvIHBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwor
ICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVl
T3IoMCk7CiAgICAgYXV0byBib3JkZXJUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpOwogICAg
IGF1dG8gYm9yZGVyQm90dG9tID0gZGlzcGxheUJveC5ib3JkZXJCb3R0b20oKTsKIApAQCAtNTQy
LDggKzU0Miw4IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAKICAgICBpZiAoIWJvdHRvbSkg
ewogICAgICAgICAvLyAjMgotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFs
dWVfb3IoMCk7Ci0gICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVfb3IoMCk7
CisgICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAg
ICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgaWYg
KCFtYXJnaW5CZWZvcmUgJiYgIW1hcmdpbkFmdGVyKSB7CkBAIC02MDIsMTEgKzYwMiwxMSBAQCBI
b3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZEhvcml6b250YWxHZW9tZQogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAg
YXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3Rh
cnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlX29y
KDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3Io
MCk7CisgICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVP
cigwKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3Io
MCk7CiAgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKLSAgICBhdXRvIHBhZGRpbmdMZWZ0
ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGlu
Z1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKKyAgICBhdXRv
IHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CisgICAg
YXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7
CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gZGlzcGxheUJveC5ib3JkZXJMZWZ0KCk7CiAgICAgYXV0
byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKTsKIApAQCAtNjIxLDggKzYy
MSw4IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAKICAgICBpZiAoIWxlZnQgfHwgIXJpZ2h0
KSB7CiAgICAgICAgIC8vICMyCi0gICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFs
dWVfb3IoMCk7IAotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7IAor
ICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7IAorICAgICAgICBt
YXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVPcigwKTsgCiAgICAgfQogCiAgICAgaWYgKCFtYXJn
aW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CkBAIC02OTcsOCArNjk3LDggQEAgSGVpZ2h0QW5kTWFy
Z2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBM
YXlvdXRTdGF0ZSYKICAgICBhdXRvIG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKICAgICAvLyAj
MQotICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICBtYXJn
aW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgIG1hcmdpbkJlZm9yZSA9IG1h
cmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFs
dWVPcigwKTsKICAgICAvLyAjMgogICAgIGlmICghaGVpZ2h0KSB7CiAgICAgICAgIEFTU0VSVChp
c0hlaWdodEF1dG8obGF5b3V0Qm94KSk7CkBAIC04NzMsMTQgKzg3MywxNCBAQCBXaWR0aEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4oY29uc3QgTAogICAgICAgICBpZiAocHJlY29tcHV0ZWRNYXJnaW5FbmQpCiAgICAgICAg
ICAgICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5FbmQudmFsdWUoKTsKICAgICAgICAgYXV0byBt
YXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIHJldHVybiBtYXJnaW5FbmQudmFsdWVfb3IoMF9s
dSk7CisgICAgICAgIHJldHVybiBtYXJnaW5FbmQudmFsdWVPcigwX2x1KTsKICAgICB9OwogCiAg
ICAgYXV0byBjb21wdXRlTWFyZ2luU3RhcnQgPSBbJl0oKSB7CiAgICAgICAgIGlmIChwcmVjb21w
dXRlZE1hcmdpblN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luU3Rh
cnQudmFsdWUoKTsKICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAg
ICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVfb3IoMF9sdSk7CisgICAgICAgIHJldHVybiBtYXJn
aW5TdGFydC52YWx1ZU9yKDBfbHUpOwogICAgIH07CiAKICAgICBhdXRvIHJlcGxhY2VkID0gbGF5
b3V0Qm94LnJlcGxhY2VkKCk7CkBAIC04ODgsOCArODg4LDggQEAgV2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNv
bnN0IEwKIAogICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlTWFyZ2luU3RhcnQoKTsKICAg
ICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVNYXJnaW5FbmQoKTsKLSAgICBhdXRvIG5vbkNvbXB1
dGVkTWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKTsKLSAgICBhdXRvIG5vbkNvbXB1
dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApOworICAgIGF1dG8gbm9uQ29tcHV0ZWRN
YXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBub25Db21wdXRlZE1h
cmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhl
ZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIAogICAg
IGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CkBAIC05MDEsNyAr
OTAxLDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwKICAgICB9IGVsc2UgaWYgKCghd2lkdGgg
JiYgaGVpZ2h0SXNBdXRvICYmICFyZXBsYWNlZC0+aGFzSW50cmluc2ljV2lkdGgoKSAmJiByZXBs
YWNlZC0+aGFzSW50cmluc2ljSGVpZ2h0KCkgJiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY1JhdGlv
KCkpCiAgICAgICAgIHx8ICghd2lkdGggJiYgaGVpZ2h0ICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5z
aWNSYXRpbygpKSkgewogICAgICAgICAvLyAjMgotICAgICAgICB3aWR0aCA9IGhlaWdodC52YWx1
ZV9vcihyZXBsYWNlZC0+aGFzSW50cmluc2ljSGVpZ2h0KCkpICogcmVwbGFjZWQtPmludHJpbnNp
Y1JhdGlvKCk7CisgICAgICAgIHdpZHRoID0gaGVpZ2h0LnZhbHVlT3IocmVwbGFjZWQtPmhhc0lu
dHJpbnNpY0hlaWdodCgpKSAqIHJlcGxhY2VkLT5pbnRyaW5zaWNSYXRpbygpOwogICAgIH0gZWxz
ZSBpZiAoIXdpZHRoICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljUmF0
aW8oKSAmJiAhcmVwbGFjZWQtPmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgIXJlcGxhY2VkLT5oYXNJ
bnRyaW5zaWNIZWlnaHQoKSkgewogICAgICAgICAvLyAjMwogICAgICAgICAvLyBGSVhNRTogdW5k
ZWZpbmVkIGJ1dCBzdXJlbHkgZG9hYmxlLgpAQCAtOTkwLDcgKzk5MCw3IEBAIExheW91dFNpemUg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZz
ZXQoY29uc3QgTGF5CiAgICAgQVNTRVJUKCFsZWZ0IHx8ICpsZWZ0ID09IC0qcmlnaHQpOwogCiAg
ICAgYXV0byB0b3BQb3NpdGlvbk9mZnNldCA9ICp0b3A7Ci0gICAgYXV0byBsZWZ0UG9zaXRpb25P
ZmZzZXQgPSBsZWZ0LnZhbHVlX29yKC0qcmlnaHQpOworICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zm
c2V0ID0gbGVmdC52YWx1ZU9yKC0qcmlnaHQpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gcG9zaXRpb25lZCBp
bmZsb3cgLT4gdG9wIG9mZnNldCgiIDw8IHRvcFBvc2l0aW9uT2Zmc2V0IDw8ICJweCkgbGVmdCBv
ZmZzZXQoIiA8PCBsZWZ0UG9zaXRpb25PZmZzZXQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5
b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgbGVmdFBvc2l0aW9uT2Zmc2V0LCB0b3BQb3Np
dGlvbk9mZnNldCB9OwpAQCAtMTAyNSw4ICsxMDI1LDggQEAgSG9yaXpvbnRhbE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmcKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBt
YXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDBfbHUpOwotICAgIGF1dG8gbWFyZ2luRW5k
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpLnZhbHVlX29yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KS52YWx1ZU9yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9s
dSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCBob3Jpem9udGFsIC0+IG1hcmdpbigiIDw8
IG1hcmdpblN0YXJ0IDw8ICJweCwgIiA8PCBtYXJnaW5FbmQgPDwgInB4KSAtPiBsYXlvdXRCb3g6
ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsgbWFyZ2luU3RhcnQsIG1hcmdpbkVuZCB9
OwpAQCAtMTAzNyw4ICsxMDM3LDggQEAgVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWQKICAgICBhdXRv
JiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBtYXJnaW5CZWZvcmUg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCkudmFsdWVfb3IoMF9sdSk7Ci0gICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpLnZhbHVlX29yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZh
bHVlT3IoMF9sdSk7CisgICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9s
dSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCB2ZXJ0aWNhbCAtPiBtYXJnaW4oIiA8PCBt
YXJnaW5CZWZvcmUgPDwgInB4LCAiIDw8IG1hcmdpbkFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94
OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJldHVybiB7IG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0
ZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCmluZGV4IGQxMGFiZTI3NjU1YWQ5ZDliOTM5ZWRhMTA4YzFhMTUzNGRjYjk4MjkuLmI0
ZjQ0YTgyNWVmM2FhNThhZDJiMzZhMGUyYWQyMTQ3NWYyZTg3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZO
ZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeAogICAgICAgICAgICAgYXV0byYgZGlzcGxheUJv
eCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jayk7
CiAKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRT
dGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5wYWRk
aW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkaXNwbGF5Qm94LnBhZGRp
bmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9
IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwogICAg
ICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyICs9
IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIHZlcnRpY2FsTWFyZ2luLmFmdGVyICsgdmVydGljYWxQ
YWRkaW5nICsgdmVydGljYWxCb3JkZXI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdp
blR5cGVzLmgKaW5kZXggZmU2OGYyOTc5YTU4MTAzMWNmZmE0ZWU4ZDA3ODJmOTMwM2YwMGQ2ZS4u
ODVmZmVkNjU5Njg2Nzg5M2Y3ZDZlN2RmNTg2NTI0ZDY4N2MzMTQ5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L01hcmdpblR5cGVzLmgKQEAgLTgwLDggKzgwLDggQEAgaW5saW5lIFZlcnRpY2FsTWFyZ2lu
OjpDb21wdXRlZFZhbHVlcyBWZXJ0aWNhbE1hcmdpbjo6dXNlZFZhbHVlcygpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2NvbGxhcHNlZCkKICAgICAgICAgcmV0dXJuIG1fbm9uQ29sbGFwc2VkOwotICAg
IHJldHVybiB7IG1fY29sbGFwc2VkLT5iZWZvcmUudmFsdWVfb3IobV9ub25Db2xsYXBzZWQuYmVm
b3JlKSwKLSAgICAgICAgbV9jb2xsYXBzZWQtPmFmdGVyLnZhbHVlX29yKG1fbm9uQ29sbGFwc2Vk
LmFmdGVyKSB9OworICAgIHJldHVybiB7IG1fY29sbGFwc2VkLT5iZWZvcmUudmFsdWVPcihtX25v
bkNvbGxhcHNlZC5iZWZvcmUpLAorICAgICAgICBtX2NvbGxhcHNlZC0+YWZ0ZXIudmFsdWVPciht
X25vbkNvbGxhcHNlZC5hZnRlcikgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDU2ZmFiNTUyM2I0OGNjZjI5MGIyZTA4OGJkYTgy
N2VjOTEyM2UzYWYuLmVlNDM4NzJlYWI2ZTUwMGJlOGFjNzJiMTVhZjkwMTBiZWViZjgxMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTYxLDEw
ICs2MSwxMCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKIAotICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpD
b21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVmb3Jl
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSwKLSAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZl
cnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApLAorICAg
ICAgICAgICAgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKSB9OyAKICAgICAgICAgYXV0byBjb2xsYXBzZWRN
YXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIH07Ci0gICAgICAgIGF1dG8gYm9yZGVy
QW5kUGFkZGluZ1RvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LnBhZGRp
bmdUb3AoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0g
ZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3Io
MCk7CiAKICAgICAgICAgYXV0byBoZWlnaHQgPSB1c2VkSGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1
ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRU
eXBlOjpOb3JtYWwpOwogICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtMTQzLDE5ICsxNDMsMTkgQEAg
V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4KICAgICAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVk
IH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAg
ICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5T
dGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgICAgIGF1dG8gbWFyZ2luRW5kID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwotICAgICAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFy
dC52YWx1ZV9vcigwKTsKLSAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVuZCA9IG1hcmdp
bkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0g
bWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVu
ZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOwogICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNw
bGF5Qm94LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlC
b3guYm9yZGVyUmlnaHQoKTsKLSAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gu
cGFkZGluZ0xlZnQoKS52YWx1ZV9vcigwKTsKLSAgICAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBk
aXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgICAgICBhdXRvIHBhZGRp
bmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1
dG8gcGFkZGluZ1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwog
CiAgICAgICAgIC8vICMxCiAgICAgICAgIGlmICh3aWR0aCkgewotICAgICAgICAgICAgYXV0byBo
b3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChtYXJnaW5T
dGFydC52YWx1ZV9vcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luRW5kLnZhbHVlX29yKDApKTsKKyAgICAg
ICAgICAgIGF1dG8gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAobWFyZ2luU3RhcnQudmFsdWVPcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luRW5kLnZhbHVlT3Io
MCkpOwogICAgICAgICAgICAgaWYgKGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApIHsKLSAg
ICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlX29yKDApOwotICAg
ICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAg
ICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgICAg
ICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtMTc3LDggKzE3Nyw4IEBAIFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAK
ICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewotICAgICAgICAgICAgbWFyZ2lu
U3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICAgICAgICAgIG1hcmdpbkVuZCA9
IG1hcmdpbkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2lu
U3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1
ZU9yKDApOwogICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFy
Z2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArICptYXJnaW5FbmQpOwogICAgICAgICB9CiAKQEAgLTMwOCwxMiArMzA4LDEyIEBA
IEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6CiAgICAgICAgIEFTU0VSVChjaGlsZEluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8mIHN0eWxlID0gY2hpbGQu
c3R5bGUoKTsKLSAgICAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9
IGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVfb3IoMCkKKyAgICAgICAgYXV0
byBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9IGZpeGVkVmFsdWUoc3R5bGUubWFy
Z2luU3RhcnQoKSkudmFsdWVPcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUu
Ym9yZGVyTGVmdFdpZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRp
bmdMZWZ0KCkpLnZhbHVlX29yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFk
ZGluZ1JpZ2h0KCkpLnZhbHVlX29yKDApCisgICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUu
cGFkZGluZ0xlZnQoKSkudmFsdWVPcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxl
LnBhZGRpbmdSaWdodCgpKS52YWx1ZU9yKDApCiAgICAgICAgICAgICArIExheW91dFVuaXQgeyBz
dHlsZS5ib3JkZXJSaWdodFdpZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxl
Lm1hcmdpbkVuZCgpKS52YWx1ZV9vcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHls
ZS5tYXJnaW5FbmQoKSkudmFsdWVPcigwKTsKIAogICAgICAgICBtaW5pbXVtSW50cmluc2ljV2lk
dGggPSBzdGQ6Om1heChtaW5pbXVtSW50cmluc2ljV2lkdGgsIGNoaWxkSW5zdHJpbnNpY1dpZHRo
Q29uc3RyYWludHMtPm1pbmltdW0gKyBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyk7
IAogICAgICAgICBtYXhpbXVtSW50cmluc2ljV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtSW50cmlu
c2ljV2lkdGgsIGNoaWxkSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMtPm1heGltdW0gKyBob3Jp
em9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHAKaW5kZXggZmI3MWI3YzA4MGZmM2U5OGRkYjNjYzQ5OWIwM2UwZWMw
OWRmNmRmZS4uNDYwNmY5ZGM2NjI4ZWUwM2YzMGM3YTk1ZjQzOWZiMTNlNzQwNzA5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hl
ZEhlaWdodChjb25zdCBMYXlvdXRTdGF0CiAgICAgYXV0byYgZG9jdW1lbnRCb3ggPSBsYXlvdXRC
b3guaXNEb2N1bWVudEJveCgpID8gbGF5b3V0Qm94IDogKmxheW91dEJveC5wYXJlbnQoKTsKICAg
ICBhdXRvJiBkb2N1bWVudEJveERpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGRvY3VtZW50Qm94KTsKICAgICBhdXRvIGRvY3VtZW50Qm94VmVydGljYWxCb3Jk
ZXJzID0gZG9jdW1lbnRCb3hEaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZG9jdW1lbnRCb3hEaXNw
bGF5Qm94LmJvcmRlckJvdHRvbSgpOwotICAgIGF1dG8gZG9jdW1lbnRCb3hWZXJ0aWNhbFBhZGRp
bmdzID0gZG9jdW1lbnRCb3hEaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGRv
Y3VtZW50Qm94RGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CisgICAgYXV0
byBkb2N1bWVudEJveFZlcnRpY2FsUGFkZGluZ3MgPSBkb2N1bWVudEJveERpc3BsYXlCb3gucGFk
ZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkb2N1bWVudEJveERpc3BsYXlCb3gucGFkZGluZ0JvdHRv
bSgpLnZhbHVlT3IoMCk7CiAKICAgICBhdXRvIHN0cmVjaGVkSGVpZ2h0ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkp
LmNvbnRlbnRCb3hIZWlnaHQoKTsKICAgICBzdHJlY2hlZEhlaWdodCAtPSBkb2N1bWVudEJveFZl
cnRpY2FsQm9yZGVycyArIGRvY3VtZW50Qm94VmVydGljYWxQYWRkaW5nczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IGZkZTA5NGIzYzU4
YTg1ODIzYjBkMjBiOWY2MGE4NzliZjgzMWIyMWEuLjU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRk
M2YxNGJiODc1ZDdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guaApAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRQb2lu
dCBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIHsgcmlnaHQoKSwgYm90dG9tKCkgfTsgfQog
CiAgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyB3aWR0aCgpLCBoZWlnaHQo
KSB9OyB9Ci0gICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQo
KSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRp
bmdSaWdodCgpLnZhbHVlX29yKDApICsgYm9yZGVyUmlnaHQoKTsgfQotICAgIExheW91dFVuaXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVf
b3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCkg
KyBib3JkZXJCb3R0b20oKTsgfQorICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94V2lk
dGgoKSArIHBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCkgKyBib3JkZXJSaWdodCgpOyB9CisgICAg
TGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKS52YWx1ZU9yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpLnZh
bHVlT3IoMCkgKyBib3JkZXJCb3R0b20oKTsgfQogICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHsgdG9wKCksIGxlZnQoKSwgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQogICAgIFJlY3QgcmVj
dFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxl
ZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5k
KCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KIApAQCAt
MTYxLDggKzE2MSw4IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5n
Qm90dG9tKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ1JpZ2h0KCkg
Y29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hUb3AoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsgfQotICAgIExheW91dFVuaXQg
Y29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wKCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKTsgfQorICAgIExh
eW91dFVuaXQgY29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBw
YWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hCb3R0
b20oKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94VG9wKCkgKyBjb250ZW50Qm94SGVpZ2h0KCk7
IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRl
bnRCb3hMZWZ0KCkgKyBjb250ZW50Qm94V2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgY29udGVu
dEJveEhlaWdodCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IGQ5ZGM4ZTZjM2RhNTExY2ZhZmE0ZjI5NGZhYzg0NGI4
NDczOGU5ZWMuLjcxZmMwNjA2NTIyNzgwZGJhZDIzYTk4ZjU5OTRhODUzOGNhMzJlMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAg
LTQ2NCw3ICs0NjQsNyBAQCB2b2lkIEl0ZXJhdG9yOjpzZXQoUG9zaXRpb25JbkNvbnRleHRSb290
IHZlcnRpY2FsUG9zaXRpb24pCiAKICAgICAgICAgYXV0byBpbmRleCA9IGZsb2F0aW5nVHlwZSA9
PSBGbG9hdDo6TGVmdCA/IG1fY3VycmVudC5tX2xlZnRJbmRleCA6IG1fY3VycmVudC5tX3JpZ2h0
SW5kZXg7CiAgICAgICAgIC8vIFN0YXJ0IGZyb20gdGhlIGVuZCBpZiB3ZSBkb24ndCBoYXZlIGN1
cnJlbnQgeWV0LgotICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVlX29yKG1fZmxvYXRzLnNpemUo
KSk7CisgICAgICAgIGluZGV4ID0gaW5kZXgudmFsdWVPcihtX2Zsb2F0cy5zaXplKCkpOwogICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaW5kZXggPSBwcmV2aW91c0Zsb2F0aW5n
SW5kZXgoZmxvYXRpbmdUeXBlLCBtX2Zsb2F0cywgKmluZGV4KTsKICAgICAgICAgICAgIGlmICgh
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNmY4NjI2NGVm
ZWZkMDMxNzEyYzAwOWZiMjhlYjQ5OGI0M2ZkM2IwYy4uZTIxYjg3NDA3Mjc1NmFkZTE2NGJiOGY3
MDYwNTc1OTgwNTA2OTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENv
bnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3QgSW5saW5lUnVuUHJvCiAgICAgbGluZS5hcHBl
bmRDb250ZW50KHJ1biwgcnVuU2l6ZSk7CiAKICAgICBpZiAocm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKLSAgICAgICAgR2VvbWV0cnk6OmNvbXB1
dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKGxpbmUsIHJ1biwgbGFzdFJ1blR5cGUudmFsdWVfb3Io
SW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6Tm9uV2hpdGVzcGFjZSkpOworICAgICAgICBH
ZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMobGluZSwgcnVuLCBsYXN0UnVu
VHlwZS52YWx1ZU9yKElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2Up
KTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVu
dChjb25zdCBJbmxpbmVSdW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0CkBAIC00
MTUsNyArNDE1LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4odW5zaWduZWQgZmlzdFJ1bkluZGUKICAgICAgICAgICAgIGZvciAo
YXV0byogYm94ID0gJmxheW91dEJveDsgYm94ICE9ICZyb290KCk7IGJveCA9IGJveC0+cGFyZW50
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWJveC0+aXNJbkZsb3dQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IG9m
ZnNldC52YWx1ZV9vcihMYXlvdXRTaXplKCkpICsgR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQ
b3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCAqYm94KTsKKyAgICAgICAgICAgICAgICBvZmZz
ZXQgPSBvZmZzZXQudmFsdWVPcihMYXlvdXRTaXplKCkpICsgR2VvbWV0cnk6OmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCAqYm94KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwZDY3M2U5MDkxYTRiMTljMTc1NGRmZjEzZTI3NDExOWU0
Y2FkZGE1Li4yZGJlNmFlODA2YTViYmQzMmRiMWI2MTA3MGJmNzI3NmYyZTM3MGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNz
ZWRUYXJnZXQsIEV2ZW50KgogICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1v
blZNKCk7CiAgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1lLT5p
c01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpVbmtub3duOwogCi0gICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVu
ZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5l
dmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFt
ZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHNob3VsZFNlbmRSZWZlcnJlciA9
PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVx
dWVzdCgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIHsgdXJsIH0sIHBhc3NlZFRhcmdldCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZ
ZXMsIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBp
bml0aWF0ZWRCeU1haW5GcmFtZSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkws
IGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5mbyksIHRyaWdnZXJpbmdFdmVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBi
YTE1Nzk5MTQxNDUyOGJkZmRkNDYwYjZlMzM3YmVkZWY1ZGY2MWRlLi41NDU0NGQ2YmI5ZWZjNTI0
YWQ5MDJiMWQ3ZmY0MzRkNzMyNDQzMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5h
dmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkgfSB9CiAgICAgLCBtX29y
aWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkgfQotICAgICwgbV9w
YWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZV9vcigwKSwg
ZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpLnZhbHVlX29yKDAp
KSA6IHN0ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9w
YWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKDApLCBk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkg
OiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDApIH0KIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ1NDJmMGJmNzU0OTU2MjcwMGE2YjYyYzFiY2Q1
MWY2ZGRlNDE0ZGIuLmE3ZTBhNWU2MDA4ZThjM2M3YWU2ZWUxODE4ZWQ1N2IwOTNhMzJjMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlvdXRSZWN0
PiByZWN0LCBUcmlnZ2VyCiAgICAgaWYgKG9sZFJlY3QuaGVpZ2h0KCkgIT0gbGF5b3V0Vmlld3Bv
cnRSZWN0KCkuaGVpZ2h0KCkpCiAgICAgICAgIGxheW91dFRyaWdnZXJpbmcgPSBUcmlnZ2VyTGF5
b3V0T3JOb3Q6OlllczsKIAotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiXG5GcmFtZVZpZXcgIiA8PCB0aGlzIDw8ICIgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJl
Y3QoKSAtIGNoYW5naW5nIG92ZXJyaWRlIGxheW91dCB2aWV3cG9ydCBmcm9tICIgPDwgb2xkUmVj
dCA8PCAiIHRvICIgPDwgbV9sYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdC52YWx1ZV9vcihMYXlv
dXRSZWN0KCkpIDw8ICIgbGF5b3V0VHJpZ2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09
IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVzID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBz
ZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0
IHZpZXdwb3J0IGZyb20gIiA8PCBvbGRSZWN0IDw8ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0
T3ZlcnJpZGVSZWN0LnZhbHVlT3IoTGF5b3V0UmVjdCgpKSA8PCAiIGxheW91dFRyaWdnZXJpbmcg
IiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcyA/ICJ5ZXMi
IDogIm5vIikpOwogCiAgICAgaWYgKG9sZFJlY3QgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkgJiYg
bGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcykKICAgICAgICAgc2V0
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KCk7CkBAIC00ODIzLDcgKzQ4MjMs
NyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3Qg
SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogZmxvYXQgRnJhbWVWaWV3Ojpkb2N1bWVudFRv
QWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QK
IHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3Jz
IGluIHBhZ2Vab29tRmFjdG9yKCkuIAotICAgIHJldHVybiBlZmZlY3RpdmVab29tLnZhbHVlX29y
KGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsK
KyAgICByZXR1cm4gZWZmZWN0aXZlWm9vbS52YWx1ZU9yKGZyYW1lKCkucGFnZVpvb21GYWN0b3Io
KSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAogZmxvYXQgRnJhbWVWaWV3Ojph
YnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9v
bSkgY29uc3QKQEAgLTUzNzAsMTYgKzUzNzAsMTYgQEAgSW50U2l6ZSBGcmFtZVZpZXc6OnZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogCiAgICAgaWYgKHVzZUZpeGVkTGF5
b3V0KCkpIHsKICAgICAgICAgYXV0byBmaXhlZExheW91dFNpemUgPSB0aGlzLT5maXhlZExheW91
dFNpemUoKTsKLSAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRo
LnZhbHVlX29yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKLSAgICAgICAgdmlld3BvcnRTaXpl
LmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IoZml4ZWRMYXlvdXRTaXplLmhl
aWdodCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRo
LnZhbHVlT3IoZml4ZWRMYXlvdXRTaXplLndpZHRoKCkpOworICAgICAgICB2aWV3cG9ydFNpemUu
aGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZU9yKGZpeGVkTGF5b3V0U2l6ZS5oZWln
aHQoKSk7CiAgICAgICAgIHJldHVybiB7ICp2aWV3cG9ydFNpemUud2lkdGgsICp2aWV3cG9ydFNp
emUuaGVpZ2h0IH07CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgdmFsdWUgcmV0dXJu
ZWQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoZSB2YWx1ZSBvZiB0aGUgb3ZlcmZsb3cKICAg
ICAvLyBwcm9wZXJ0eSBvbiB0aGUgcm9vdCBlbGVtZW50LgogICAgIGF1dG8gdmlzaWJsZUNvbnRl
bnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycyA9IHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Nj
cm9sbGJhcnMoKS5zaXplKCk7Ci0gICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXpl
LndpZHRoLnZhbHVlX29yKHZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lk
dGgoKSk7Ci0gICAgdmlld3BvcnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFs
dWVfb3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7Cisg
ICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRoLnZhbHVlT3IodmlzaWJs
ZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy53aWR0aCgpKTsKKyAgICB2aWV3cG9ydFNp
emUuaGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZU9yKHZpc2libGVDb250ZW50U2l6
ZUluY2x1ZGluZ1Njcm9sbGJhcnMuaGVpZ2h0KCkpOwogICAgIHJldHVybiB7ICp2aWV3cG9ydFNp
emUud2lkdGgsICp2aWV3cG9ydFNpemUuaGVpZ2h0IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGU3MjUxZWUxYTE1ZmUyZTFkODAzZmVjZTU5OGU0YzNiZjJjNjNiYTYuLjYzZDZlOTQ4NjJl
YTlkZjBmYmEwODRmNWNiMjZiZDQ2NzQ4MmQzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTEy
OCw3ICsxMTI4LDcgQEAgYm9vbCBQYWdlOjppc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdAog
dm9pZCBQYWdlOjpzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlv
bmFsPGJvb2w+IGlzRW5hYmxlZCkKIHsKICAgICBtX2xvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlk
ZUZvclRlc3RpbmcgPSBpc0VuYWJsZWQ7Ci0gICAgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKG1f
bG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGluZy52YWx1ZV9vcihmYWxzZSkpOwor
ICAgIGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShtX2xvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlk
ZUZvclRlc3RpbmcudmFsdWVPcihmYWxzZSkpOwogfQogCiB2b2lkIFBhZ2U6OnNldFRvcENvbnRl
bnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKaW5kZXggMTIzNjQ0MjQ1Mjc5NjJiODlmNDc4MGM1MWJjNmJhYTNhMzcw
NDQ1Ni4uMDVmOGIxOWRhZTU4NzlkMGNkZmRhN2M3NjQ5ZWNhMmI0NGMzOThhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBT
dHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCkpOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIocG9ydC52YWx1ZU9yKDApKTsKICAgICAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgK
aW5kZXggNTkyNTEwMjJhYTI4YWM1MGRkOGVlMmIzNjY5NzA3ZDA4OTRjYzU0My4uMjQ0MzcxZTIw
YjFhZGYxZWM1Y2UzNWI4MTllYWQ5NDc5NjMzZjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YUhhc2ggewogICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAg
ICAgICBkYXRhLnByb3RvY29sLmltcGwoKSA/IGRhdGEucHJvdG9jb2wuaW1wbCgpLT5oYXNoKCkg
OiAwLAogICAgICAgICAgICAgZGF0YS5ob3N0LmltcGwoKSA/IGRhdGEuaG9zdC5pbXBsKCktPmhh
c2goKSA6IDAsCi0gICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKKyAgICAgICAgICAg
IGRhdGEucG9ydC52YWx1ZU9yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdI
YXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggZTAxNDhhMmQwNWQ5
OWIwZGRkZjA2YTIzZDI0NmQ1MzQ1MmNiMmMxMy4uZjlhNTJmYTFmNDEzYTcxMmQ4YWVlODk1ODE4
ZjhmMzUxYWU5M2U3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5o
CkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2ggewogICAgICAgICB1
bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAgICAgICBvcmlnaW4tPnByb3RvY29sKCku
aW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAg
ICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9yaWdpbi0+aG9zdCgpLmltcGwoKS0+aGFzaCgp
IDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCisgICAgICAgICAg
ICBvcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCmlu
ZGV4IDFkMzZiOGVlYjBiZWMwNTJlNjEwMGQwZWRlYjMxMTMyNjMyNmU3MTEuLmNhOWNkOTY4NTBj
N2Y0NmJjMTYzNDliOTIwNWM4MWUwZGU4N2IxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTExNiw4ICsxMTYsOCBAQCBib29sIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIGNvbnRlbnRT
aXplKQogCiBib29sIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld0xheW91dFNpemUoY29u
c3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFj
dG9yLCBPcHRpb25hbDxkb3VibGU+JiYgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQogewot
ICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yLnZhbHVlX29yKG1fbGF5b3V0
U2l6ZVNjYWxlRmFjdG9yKTsKLSAgICBkb3VibGUgbmV3RWZmZWN0aXZlV2lkdGggPSBtaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgudmFsdWVfb3IobV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lk
dGgpOworICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yLnZhbHVlT3IobV9s
YXlvdXRTaXplU2NhbGVGYWN0b3IpOworICAgIGRvdWJsZSBuZXdFZmZlY3RpdmVXaWR0aCA9IG1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aC52YWx1ZU9yKG1fbWluaW11bUVmZmVjdGl2ZURldmlj
ZVdpZHRoKTsKICAgICBpZiAobV92aWV3TGF5b3V0U2l6ZSA9PSB2aWV3TGF5b3V0U2l6ZSAmJiBt
X2xheW91dFNpemVTY2FsZUZhY3RvciA9PSBuZXdTY2FsZUZhY3RvciAmJiBuZXdFZmZlY3RpdmVX
aWR0aCA9PSBtX21pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDFkYmJkNTZj
ZGZkZjZlNTFhZTBiNzFjNmIxMWNiOGUxMTVjOTRmNTUuLjA3OGY4OTdiYTlmYTYwMmZlYjYxZGU2
MTU4OTAyZTg4YmU4ZjBkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
CkBAIC0xODIsOCArMTgyLDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhj
b25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJl
cy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVl
OwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3
aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAv
LyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCi0g
ICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0
IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBk
ZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAg
ZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEw
MCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQg
aGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCBo
ZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJl
IGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMu
d2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xOTEsMTYg
KzE5MSwxNiBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmlu
ZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9h
dEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54
KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkg
PSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVS
ZWN0LnkoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYg
KGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKKyAg
ICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7
CiAgICAgICAgIGlmICghZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3Jl
ZW5BdmFpbGFibGVSZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0
aCkgLyAyOwogICAgICAgICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55
ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSAtIGhlaWdodCkgLyAyOwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xG
ZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOwotICAgIGZl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3Jv
bGwiKS52YWx1ZV9vcih0cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9v
bEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVh
dHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52
YWx1ZU9yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0
dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0cnVlKTsKKyAgICBmZWF0dXJlcy5z
dGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1
ZU9yKGZhbHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggOTBiZTk4NDBlY2M3NzA5
ZDgxZmUxOTI2M2JkOTA2Zjk4Mjk4OGJmMi4uM2E3NGY5NjkzNDg2OWQzM2Q2Yzk1MmMxMmQ2Njhl
ZjYzMDYwNDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0
ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAg
ICAgaWYgKGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlJlc3VtZU92ZXJyaWRlKSB7CiAg
ICAgICAgIGlmIChtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpMb29waW5nIHx8
IG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OkVuZGluZykgewogICAgICAgICAg
ICAgLy8gU3RhcnQgdGhlIGFuaW1hdGlvbgotICAgICAgICAgICAgc3RhcnRBbmltYXRpb24oYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAg
ICAgICAgICBzdGFydEFuaW1hdGlvbihiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3Rh
cnRUaW1lLnZhbHVlT3IoMCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMTMsNyArMzEzLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUo
QW5pbWF0aW9uU3RhdGVJbnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAg
IC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHdhaXRpbmcgZm9yIGEgc3RhcnQgcmVzcG9uc2UuIENh
bmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0LiBXaGVuIAogICAgICAgICAgICAgICAgIC8vIHdl
IHVucGF1c2UsIHdlIHdpbGwgYWN0IGFzIHRob3VnaCB0aGUgc3RhcnQgdGltZXIganVzdCBmaXJl
ZAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1l
KCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAgICAgICAgcGF1c2VB
bmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZU9y
KDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRl
ICVzIC0+IFBhdXNlZFdhaXRSZXNwb25zZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlv
blN0YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0
YXRlOjpQYXVzZWRXYWl0UmVzcG9uc2U7CiAgICAgICAgICAgICB9CkBAIC0zMzMsNyArMzMzLDcg
QEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJ
bnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1h
dGlvbiBhbmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lKCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5Bbmlt
YXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAg
ICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0
VGltZS52YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFu
aW1hdGlvblN0YXRlICVzIC0+IFBhdXNlZFJ1biIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1h
dGlvblN0YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlv
blN0YXRlOjpQYXVzZWRSdW47CiAgICAgICAgICAgICB9CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9p
ZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dCBp
bnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBh
bmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAgICAgICAg
cGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52
YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlv
blN0YXRlICVzIC0+IFBhdXNlZFJ1biIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0
YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRl
OjpQYXVzZWRSdW47CiAgICAgICAgICAgICB9CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBBbmlt
YXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dCBpbnB1dCwg
ZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09IEFuaW1hdGlvblN0YXRl
SW5wdXQ6OlBsYXlTdGF0ZVJ1bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUKHBhdXNlZCgpKTsK
ICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGltZXMKLSAgICAgICAgICAgIG1fc3RhcnRUaW1l
ID0gbV9zdGFydFRpbWUudmFsdWVfb3IoMCkgKyBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAt
IG1fcGF1c2VUaW1lLnZhbHVlX29yKDApOworICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBtX3N0
YXJ0VGltZS52YWx1ZU9yKDApICsgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3BhdXNl
VGltZS52YWx1ZU9yKDApOwogICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBXVEY6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIC8vIHdlIHdlcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0IHRpbWVyIHRv
IGZpcmUsIGdvIGJhY2sgYW5kIHdhaXQgYWdhaW4KQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEFu
aW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0IGlucHV0
LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVzCiAg
ICAgICAgICAgICAgICAgaWYgKG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlBh
dXNlZFJ1bikKLSAgICAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBtX3N0YXJ0VGltZS52
YWx1ZV9vcigwKSArIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9wYXVzZVRpbWUudmFs
dWVfb3IoMCk7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gbV9zdGFydFRpbWUu
dmFsdWVPcigwKSArIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9wYXVzZVRpbWUudmFs
dWVPcigwKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
cnRUaW1lID0gMDsKIApAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBk
YXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0
ZUlucHV0OjpTdGFydFRpbWVTZXQsIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0YXJ0ZWQgPSBz
dGFydEFuaW1hdGlvbihiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lLnZh
bHVlX29yKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RhcnRlZCA9IHN0YXJ0
QW5pbWF0aW9uKGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9zdGFydFRpbWUudmFsdWVP
cigwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5p
bWF0aW9uQ29udHJvbGxlcigpLmFkZFRvQW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWVSZXNw
b25zZSh0aGlzLCBzdGFydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1faXNBY2NlbGVy
YXRlZCA9IHN0YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0
ZSA9IEFuaW1hdGlvblN0YXRlOjpQYXVzZWRSdW47CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFt
X3N0YXJ0VGltZSk7CiAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBwYXJhbTsKLSAgICAg
ICAgICAgICAgICBtX3BhdXNlVGltZSA9IG1fcGF1c2VUaW1lLnZhbHVlX29yKDApICsgcGFyYW07
CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBtX3BhdXNlVGltZS52YWx1ZU9yKDApICsg
cGFyYW07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTQ5NCw3
ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRl
ZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9u
ID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKTsK
KyAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkg
LSBtX3N0YXJ0VGltZS52YWx1ZU9yKDApOwogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZW5z
dXJlIHRoYXQgZWxhcHNlZER1cmF0aW9uIGlzIG5ldmVyIDwgMC4gSWYgaXQgaXMsIHRoaXMgc3Vn
Z2VzdHMgdGhhdAogICAgIC8vIHdlIGhhZCBhIHJlY2FsY1N0eWxlKCkgb3V0c2lkZSBvZiBiZWdp
bkFuaW1hdGlvblVwZGF0ZSgpL2VuZEFuaW1hdGlvblVwZGF0ZSgpLgpAQCAtNjMxLDkgKzYzMSw5
IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBv
ZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiB2b2lkIEFuaW1hdGlvbkJhc2U6OmdldFRpbWVU
b05leHRFdmVudChTZWNvbmRzJiB0aW1lLCBib29sJiBpc0xvb3BpbmcpIGNvbnN0CiB7CiAgICAg
Ly8gRGVjaWRlIHdoZW4gdGhlIGVuZCBvciBsb29wIGV2ZW50IG5lZWRzIHRvIGZpcmUKLSAgICBj
b25zdCBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gc3RkOjptYXgoYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSwgMC4wKTsKKyAgICBjb25zdCBkb3Vi
bGUgZWxhcHNlZER1cmF0aW9uID0gc3RkOjptYXgoYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkg
LSBtX3N0YXJ0VGltZS52YWx1ZU9yKDApLCAwLjApOwogICAgIGRvdWJsZSBkdXJhdGlvbkxlZnQg
PSAwOwotICAgIGRvdWJsZSBuZXh0SXRlcmF0aW9uVGltZSA9IG1fdG90YWxEdXJhdGlvbi52YWx1
ZV9vcigwKTsKKyAgICBkb3VibGUgbmV4dEl0ZXJhdGlvblRpbWUgPSBtX3RvdGFsRHVyYXRpb24u
dmFsdWVPcigwKTsKIAogICAgIGlmICghbV90b3RhbER1cmF0aW9uIHx8IGVsYXBzZWREdXJhdGlv
biA8IG1fdG90YWxEdXJhdGlvbi52YWx1ZSgpKSB7CiAgICAgICAgIGR1cmF0aW9uTGVmdCA9IG1f
YW5pbWF0aW9uLT5kdXJhdGlvbigpID4gMCA/IChtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAtIGZt
b2QoZWxhcHNlZER1cmF0aW9uLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSkpIDogMDsKQEAgLTY3
NSw5ICs2NzUsOSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZShkb3VibGUgdCkK
IAogICAgIEFTU0VSVChtX3N0YXJ0VGltZSk7IC8vIElmIG1fc3RhcnRUaW1lIGlzIHplcm8sIHdl
IGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0aW1lLgogICAg
IGlmICh0IDw9IG1fYW5pbWF0aW9uLT5kZWxheSgpKQotICAgICAgICBtX3BhdXNlVGltZSA9IG1f
c3RhcnRUaW1lLnZhbHVlX29yKDApOworICAgICAgICBtX3BhdXNlVGltZSA9IG1fc3RhcnRUaW1l
LnZhbHVlT3IoMCk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdXNlVGltZSA9IG1fc3RhcnRUaW1l
LnZhbHVlX29yKDApICsgdCAtIG1fYW5pbWF0aW9uLT5kZWxheSgpOworICAgICAgICBtX3BhdXNl
VGltZSA9IG1fc3RhcnRUaW1lLnZhbHVlT3IoMCkgKyB0IC0gbV9hbmltYXRpb24tPmRlbGF5KCk7
CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBjb21wb3NpdGVkUmVuZGVyZXIoKSkKICAgICAg
ICAgcmVuZGVyZXItPnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNv
bmRzKG1fcGF1c2VUaW1lLnZhbHVlKCkpKTsKQEAgLTY5NSwxNiArNjk1LDE2IEBAIGRvdWJsZSBB
bmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKHBhdXNlZCgp
KSB7CiAgICAgICAgIGRvdWJsZSBkZWxheU9mZnNldCA9ICghbV9zdGFydFRpbWUgJiYgbV9hbmlt
YXRpb24tPmRlbGF5KCkgPCAwKSA/IG1fYW5pbWF0aW9uLT5kZWxheSgpIDogMDsKLSAgICAgICAg
cmV0dXJuIG1fcGF1c2VUaW1lLnZhbHVlX29yKDApIC0gbV9zdGFydFRpbWUudmFsdWVfb3IoMCkg
LSBkZWxheU9mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fcGF1c2VUaW1lLnZhbHVlT3IoMCkgLSBt
X3N0YXJ0VGltZS52YWx1ZU9yKDApIC0gZGVsYXlPZmZzZXQ7CiAgICAgfQogCiAgICAgaWYgKCFt
X3N0YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAocG9zdEFjdGl2ZSgpIHx8
IGZpbGxpbmdGb3J3YXJkcygpKQotICAgICAgICByZXR1cm4gbV90b3RhbER1cmF0aW9uLnZhbHVl
X29yKDApOworICAgICAgICByZXR1cm4gbV90b3RhbER1cmF0aW9uLnZhbHVlT3IoMCk7CiAKLSAg
ICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9v
cigwKTsKKyAgICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGlt
ZS52YWx1ZU9yKDApOwogfQogCiB2b2lkIEFuaW1hdGlvbkJhc2U6OnNldEVsYXBzZWRUaW1lKGRv
dWJsZSB0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAyNTBlNmQ2ODAyOGVlZjkxODExMjI1ZTM5
NTZiOGY5ZmNiYzY0NGU4Li5kYzFjZWFiM2FiMjA5NGE0YTYyN2Y1NjNkZjk4NzU3ZWI2MDEwNGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmlt
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgQ1NTQW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvblRpbWVyKFNldENoYW5nZWQgY2FsbFNl
dENoYW5nCiB7CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVRvTmV4dFNlcnZpY2UgPSB1cGRh
dGVBbmltYXRpb25zKGNhbGxTZXRDaGFuZ2VkKTsKIAotICAgIExPRyhBbmltYXRpb25zLCAidXBk
YXRlQW5pbWF0aW9uVGltZXI6IHRpbWVUb05leHRTZXJ2aWNlIGlzICUuMmYiLCB0aW1lVG9OZXh0
U2VydmljZS52YWx1ZV9vcihTZWNvbmRzIHsgLTEgfSkudmFsdWUoKSk7CisgICAgTE9HKEFuaW1h
dGlvbnMsICJ1cGRhdGVBbmltYXRpb25UaW1lcjogdGltZVRvTmV4dFNlcnZpY2UgaXMgJS4yZiIs
IHRpbWVUb05leHRTZXJ2aWNlLnZhbHVlT3IoU2Vjb25kcyB7IC0xIH0pLnZhbHVlKCkpOwogCiAg
ICAgLy8gSWYgd2UgZG9uJ3QgbmVlZCBzZXJ2aWNlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUg
dGltZXIgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcKICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJl
YWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVh
ZENvY29hLm1tCmluZGV4IGVmZDgzNmFmZDY4ZDMyMzk0ZmU1NDcyNzQ0OWQ2OGRiOWY0M2Q0ODYu
LjY5OGZiOGRlNjRkZWIxMWY0M2RjYTViMzE5OTlhNGVhMWJlZGIzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBA
IC0yNDksOCArMjQ5LDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybVRocmVh
ZEJvZHkoSlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYXRhJiBkYXQKICAgICBkYXRhLnRvdGFs
RXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAogICAgIGF1dG8gbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24g
PSBub3cgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCku
dmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
KTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IG5vdyArIHZtLT5oZWFwLmZ1
bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9m
TmV4dEVkZW5Db2xsZWN0aW9uID0gbm93ICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2so
KS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9
IG5vdyArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52
YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VV
c2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VV
c2FnZVRocmVhZExpbnV4LmNwcAppbmRleCBkY2FmYjZmOGFmZmVkYjk0YjU4YTc2MzlmYzAzYTM0
NjUwNjQxNGE1Li4xNTYyYTA4YzU3OTkxZGVkYWU3MTA2NmYwY2ZlYzM5YzgxOTg0ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFk
TGludXguY3BwCkBAIC0xNzAsOCArMTcwLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpw
bGF0Zm9ybVRocmVhZEJvZHkoSlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYXRhJiBkYXQKICAg
ICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAogICAg
IGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RWRl
bkNvbGxlY3Rpb24gPSBub3cgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1l
VW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpKTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IG5vdyAr
IHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9v
cihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAg
IGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gbm93ICsgdm0tPmhlYXAuZWRlbkFjdGl2
aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxs
Q29sbGVjdGlvbiA9IG5vdyArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVV
bnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IGY0NzlmOWJlYzljZTNkNjI2MTdiNzM5YWM1YTc4ZDUyZTYwZTg4ZGYuLjlhOWM5
NzY4NjEyNmYzMWM0ZGNhOTJlYzNhOTkzNTkwNGVjNTUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cApAQCAtMjIyLDEyICsyMjIsMTIgQEAgdW5zaWduZWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0aWFsR2wKICAgICAgICAg
ICAgICAgICBpZiAoY3Vyc29yUG9zaXRpb25JdGVyYXRvci5pc0JvdW5kYXJ5KGhpdEluZGV4KSkK
ICAgICAgICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gaGl0SW5kZXg7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLnByZWNlZGluZyhoaXRJbmRleCkudmFsdWVfb3IoMCk7CisgICAgICAgICAg
ICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IucHJlY2VkaW5n
KGhpdEluZGV4KS52YWx1ZU9yKDApOwogCiAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlUGFy
dGlhbEdseXBocykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhUZXh0UnVuLnN0
cmluZ0xvY2F0aW9uKCkgKyBjbHVzdGVyU3RhcnQ7CiAKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjbHVzdGVyRW5kID0gY3Vyc29yUG9zaXRpb25JdGVyYXRvci5mb2xsb3dpbmcoaGl0SW5kZXgp
LnZhbHVlX29yKHN0cmluZ0xlbmd0aCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2x1c3Rl
ckVuZCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IuZm9sbG93aW5nKGhpdEluZGV4KS52YWx1ZU9y
KHN0cmluZ0xlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBmbG9hdCBjbHVzdGVyV2lkdGg7CiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBzZWFyY2ggc3RvcHMgYXQgdGhlIGJvdW5kYXJp
ZXMgb2YgY29tcGxleFRleHRSdW4uIEluIHRoZW9yeSwgaXQgc2hvdWxkIGdvIG9uIGludG8gbmVp
Z2hib3JpbmcgQ29tcGxleFRleHRSdW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQ0MGQzYjliMjNkNzUwMmJmMTZlMjQwYTYwZjRjMzEwYjI4
YzE2ZmQuLmI2MzVhMTNjYzQ4ODQwZjA4ZTM3MWY3Yzg4MmNlZGJlMDAyMTVhNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAgICAgIGhhc2hlci5hZGQobV9z
aXplKTsKICAgICAgICAgaGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodCk7
CiAgICAgICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCk7Ci0gICAg
ICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3Jt
YWxJdGFsaWNWYWx1ZSgpKSk7CisgICAgICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVx
dWVzdC5zbG9wZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpKTsKICAgICAgICAgaGFzaGVy
LmFkZChtX2xvY2FsZS5leGlzdGluZ0hhc2goKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgZmxh
Z0l0ZW0gOiBtX2ZsYWdzKQogICAgICAgICAgICAgaGFzaGVyLmFkZChmbGFnSXRlbSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
MzQzMmRjYTYyZWQ5MmQwNjRkZTI1OTIzMGY4NjMwODg2ZjFjN2VjOC4uYjNiNjQ2ODFmYzQ2NmJh
NjlkY2M2M2Q0ZTk2YzQ1MDQxNGUzMTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwg
Y29uc3QgVGV4dFJ1biYKIAogZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewotICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBzdGFydFggPSBwb2ludC54KCkgKyBnbHlwaEJ1ZmZlckZv
clRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24s
IGdseXBoQnVmZmVyKTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZv
ciB0aGUgcnVuLiBHaXZlIHVwLgpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuCiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsK
KyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAg
ICBpZiAoY29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKICAgICAgICAgZHJhd0Vt
cGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KGNvbnRleHQsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IGRlc3RpbmF0aW9uKTsKICAgICBlbHNlCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4KIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0
bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29u
c3QKIHsKICAgICBBU1NFUlQoIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKTsKLSAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgCiAgICAgLy8g
RklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVu
cyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAw
MDUwCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CkBAIC01NDUs
NyArNTQ1LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWls
YWJsZShmbG9hdCYgd2lkdGgpIGNvbnN0CiAKIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAogewotICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKKyAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBpZiAo
Y29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKICAgICAgICAgcmV0dXJuIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgZnJvbSwgZGVz
dGluYXRpb24pOwogCkBAIC02MTksNyArNjE5LDcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZv
bnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUK
IAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBh
dGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJl
cy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKChlbmFibGVLZXJuaW5n
KCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlX29yKDApIHx8IHRvLnZhbHVl
X29yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKKyAgICBpZiAoKGVuYWJsZUtlcm5p
bmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20udmFsdWVPcigwKSB8fCB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAK
aW5kZXggMzU3YjQwMjNlZTA4ZGEwY2RlODk2ODJkOGRjYzc3OGUxYzhlZmUwMy4uNmU1ZjhiNDli
N2M0YTRhNzRiODllZTQwNjQzZjFjOGJkMTJkMjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgYXV0byBGb250U2VsZWN0aW9uQWxnb3JpdGhtOjpzdHJldGNoRGlz
dGFuY2UoQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcykgY29uc3QgLT4KIGF1dG8gRm9udFNlbGVj
dGlvbkFsZ29yaXRobTo6c3R5bGVEaXN0YW5jZShDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBj
b25zdCAtPiBEaXN0YW5jZVJlc3VsdAogewogICAgIGF1dG8gc2xvcGUgPSBjYXBhYmlsaXRpZXMu
c2xvcGU7Ci0gICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Quc2xvcGUudmFsdWVfb3Io
bm9ybWFsSXRhbGljVmFsdWUoKSk7CisgICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Qu
c2xvcGUudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc2xvcGUuaXNW
YWxpZCgpKTsKICAgICBpZiAoc2xvcGUuaW5jbHVkZXMocmVxdWVzdFNsb3BlKSkKICAgICAgICAg
cmV0dXJuIHsgRm9udFNlbGVjdGlvblZhbHVlKCksIHJlcXVlc3RTbG9wZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRo
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29y
aXRobS5oCmluZGV4IGFiNDcwNTdhMTRjMTc3OWU1OGZiOTcyMGUzOWFkMzhhMWI3NGQ3ZWMuLjZi
MTFiOWEzMTg4ZWM1YTQ5ZDUyMDkxYWU3MTNiZDFkNWYyNDhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGht
LmgKQEAgLTM1Myw3ICszNTMsNyBAQCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRm9udFNlbGVjdGlvblZhbHVlJiBmb250U2VsZQogCiBpbmxpbmUg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgT3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPiYgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUpCiB7Ci0gICAgdHMg
PDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUo
KSk7CisgICAgdHMgPDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVPcihub3JtYWxJ
dGFsaWNWYWx1ZSgpKTsKICAgICByZXR1cm4gdHM7CiB9CiAKQEAgLTQzMiwxNyArNDMyLDE3IEBA
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIHsKIAogICAgIGNvbnN0
ZXhwciBSYW5nZSBjb21wdXRlV2VpZ2h0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB3
ZWlnaHQudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxXZWlnaHRWYWx1ZSgpIH0pOworICAgICAgICBy
ZXR1cm4gd2VpZ2h0LnZhbHVlT3IoUmFuZ2UgeyBub3JtYWxXZWlnaHRWYWx1ZSgpIH0pOwogICAg
IH0KIAogICAgIGNvbnN0ZXhwciBSYW5nZSBjb21wdXRlV2lkdGgoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHdpZHRoLnZhbHVlX29yKFJhbmdlIHsgbm9ybWFsU3RyZXRjaFZhbHVlKCkg
fSk7CisgICAgICAgIHJldHVybiB3aWR0aC52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsU3RyZXRjaFZh
bHVlKCkgfSk7CiAgICAgfQogCiAgICAgY29uc3RleHByIFJhbmdlIGNvbXB1dGVTbG9wZSgpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gc2xvcGUudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxJ
dGFsaWNWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4gc2xvcGUudmFsdWVPcihSYW5nZSB7IG5v
cm1hbEl0YWxpY1ZhbHVlKCkgfSk7CiAgICAgfQogCiAgICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmlu
ZGV4IGZlMDQ5YTRiOGU2NzAzZDYxYmMxYWRiNTAwNjg4NWZjYzdlZDNmYTUuLmZkYzJiNzhiYzY1
YjBmYjYyOWE1NjRjMTAzZDE5ODRjZDI4NjVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zOTAsNyArMzkwLDcgQEAgSW50U2l6
ZSBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKICAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAh
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQ
b2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNoYWRvd2VkUmVjdCkpOwogICAg
ICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7Ci0gICAgICAgIGxheWVyUmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1
YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3Qg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQo
dHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGxheWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDE2NTY0NThjNDUzYWUzODRmMWMyZWM5ZDM1OGRkOWMzOGI4MTFmNTIuLjVk
NmE5MzdiODY2NGEzMWZjYzYyNzAwNzlmNmZjYTY3YjMyYzI1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg5LDcgKzg5
LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAg
ICAgICBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKIAogICAgIENhY2hlZFJlc291
cmNlTG9hZGVyKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7Ci0gICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291
cmNlKFdURk1vdmUocmVxdWVzdCkpLnZhbHVlX29yKG51bGxwdHIpIDogbnVsbHB0cjsKKyAgICBt
X3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShy
ZXF1ZXN0KSkudmFsdWVPcihudWxscHRyKSA6IG51bGxwdHI7CiAgICAgaWYgKG1fcmVzb3VyY2Up
CiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCA3YjkzNWJmMWIzMjY2NTg1NjdjODJlN2FhNGU5YjljZmY2
NjkyYzIwLi5jZjdkYzBjNGQ4OTZiNTU5MGMyMTBmMjlkYmY4ZTFjMTY5NTljMTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTIzNTAsNyArMjM1MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250
ZXh0JiBjCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdElt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwogICAgIEFm
ZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJsZWRWaWRlb1RyYWNrIHBy
ZWZlcnJlZFRyYW5zZm9ybV07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9
IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UmVjdChvdXRwdXRSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRSZWN0ID0g
dmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3Qob3V0cHV0UmVjdCk7CiAKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7
CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVj
dC5zaXplKCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCAxYjA3YjRlYjgwMjQwZWQ2ZDUwZDA3NzNiODc2M2Q0NGRhYjk3
ZDVmLi4yMzhhMmVhMzk1OGMzMWI2NmJmZDQ4NjdkZGFhZDhhNTg1ZDlhNTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xMTE5LDcgKzExMTksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDbwogICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLmdldCgpOwog
ICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChkZXN0UmVjdCk7Cisg
ICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChkZXN0UmVjdCk7CiAgICAgY29u
dGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJl
Y3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbQppbmRleCBhMmUwN2NmNmYzMjE3YjNhZGY4OTVjOTJiMDIzOTQ5NDI5NDU4
NWMxLi42NWNmYjI0YWU0MDA2ODZlZjA3MDgwZDU0MDlmZWRmODdjMmYxZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpA
QCAtMTE3Myw3ICsxMTczLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2ls
bFNlZWsoKQogCiBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxT
aXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsK
KyAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlT3IoRmxvYXRTaXplKCkpOwogfQogCiB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVz
KGludCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNmE1MTUyOTYyYTY0NjVlNjRmZTljMDU4
MTRlNmUyMzVlMTFlMjZhZi4uNjUwZWI2YzhlNTRhYjcyMjVlYTg5NDBjMWQ4MjEzYmVjZGIwZmQ5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMoY29uc3QgVmlzaWJsZUFuZENvdmVyYWdl
UmVjdHMmCiAgICAgYXV0byBib3VuZHMgPSBGbG9hdFJlY3QobV9ib3VuZHNPcmlnaW4sIHNpemUo
KSk7CiAgICAgaWYgKGF1dG8gZXh0ZW50ID0gYW5pbWF0aW9uRXh0ZW50KCkpIHsKICAgICAgICAg
Ly8gQWRqdXN0IHRoZSBhbmltYXRpb24gZXh0ZW50IHRvIG1hdGNoIHRoZSBjdXJyZW50IGFuaW1h
dGlvbiBwb3NpdGlvbi4KLSAgICAgICAgYm91bmRzID0gcmVjdHMuYW5pbWF0aW5nVHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5tYXBSZWN0KCpleHRl
bnQpOworICAgICAgICBib3VuZHMgPSByZWN0cy5hbmltYXRpbmdUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkubWFwUmVjdCgqZXh0ZW50KTsKICAgICB9
CiAKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0YWtlIHJlZmxlY3Rpb25zIGludG8gYWNjb3Vu
dCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBsYXllciBpbnRlcnNlY3RzIHRoZSBjb3Zl
cmFnZSByZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDUwYmRiNWY1ZjI1YTY3YjM2
ZmNjZTMyYzVhNGM2NTdhNjdiYzNiZTguLmUyNTgxNDFlOTlhZDI4YTU0MTRjNmE0NWRlODNiMjc5
ZTQ3Nzk2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTU5OCw3ICs1OTgsNyBAQCBS
ZXRhaW5QdHI8Q1RGb250UmVmPiBwcmVwYXJlUGxhdGZvcm1Gb250KENURm9udFJlZiBvcmlnaW5h
bEZvbnQsIGNvbnN0IEZvbnREZXNjcgogICAgIGlmIChhcHBseVdlaWdodFdpZHRoU2xvcGVWYXJp
YXRpb25zICYmICFmb250SXNTeXN0ZW1Gb250KG9yaWdpbmFsRm9udCkpIHsKICAgICAgICAgZmxv
YXQgd2VpZ2h0ID0gZm9udFNlbGVjdGlvblJlcXVlc3Qud2VpZ2h0OwogICAgICAgICBmbG9hdCB3
aWR0aCA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LndpZHRoOwotICAgICAgICBmbG9hdCBzbG9wZSA9
IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LnNsb3BlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkp
OworICAgICAgICBmbG9hdCBzbG9wZSA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LnNsb3BlLnZhbHVl
T3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgICAgIGlmIChhdXRvIHdlaWdodFZhbHVlID0g
Zm9udEZhY2VDYXBhYmlsaXRpZXMud2VpZ2h0KQogICAgICAgICAgICAgd2VpZ2h0ID0gc3RkOjpt
YXgoc3RkOjptaW4od2VpZ2h0LCBzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0VmFsdWUtPm1heGlt
dW0pKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdlaWdodFZhbHVlLT5taW5pbXVtKSk7CiAgICAgICAg
IGlmIChhdXRvIHdpZHRoVmFsdWUgPSBmb250RmFjZUNhcGFiaWxpdGllcy53aWR0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxl
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmNwcAppbmRleCA0ZDBkZWQ0ZTRiYjRlMTAyZTBmNTRkZmQwMzVmZTlkNGFjNTlmYWJh
Li44MjI3ODc5ZjU3ODZkZTYzNTA1NDM2ZjFiNDgwMTdjMGFkZDI4ZWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24o
VWludDhDbGFtcGVkQXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50aW5nRGF0YSYKICAgICBm
aWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQb2lu
dCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhPZlBp
eGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgZm9yIChpbnQgeSA9
IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50LnkoKSAr
IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAxZmU4Yjg4MWUxOTk4MDZiMTIy
ZGE1NmY3MGY4MGMzNWVhYWNkNjJhLi4wYmE0NzM5YTFkZTVkNDIxNjhmZWVkN2EwNWI4NjgyZDYw
NTdhOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBA
IGJvb2wgaW5pdGlhbGl6ZUdTdHJlYW1lcihPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4mJiBvcHRp
b25zKQogICAgICAgICBpc0dTdHJlYW1lckluaXRpYWxpemVkID0gZmFsc2U7CiAKICNpZiBFTkFC
TEUoVklERU8pIHx8IEVOQUJMRShXRUJfQVVESU8pCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHBh
cmFtZXRlcnMgPSBvcHRpb25zLnZhbHVlX29yKGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNv
bW1hbmRMaW5lKCkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbWV0ZXJzID0gb3B0aW9u
cy52YWx1ZU9yKGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1hbmRMaW5lKCkpOwogICAg
ICAgICBjaGFyKiogYXJndiA9IGdfbmV3MChjaGFyKiwgcGFyYW1ldGVycy5zaXplKCkgKyAyKTsK
ICAgICAgICAgaW50IGFyZ2MgPSBwYXJhbWV0ZXJzLnNpemUoKSArIDE7CiAgICAgICAgIGFyZ3Zb
MF0gPSBnX3N0cmR1cChnZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5kYXRhKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCAxOTYyOTdiZDg1Y2Q0MzY4MGQwZWQyNmJjMTE5NTQz
MTJlODAzOWFjLi44OTBkYTlkNjJiMzRmNzdjZWIzYjA0NzYwODY1OGVmZDA0ZDg0OTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWluCiAgICAgICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcmVwbGljYU9w
dGlvbnMob3B0aW9ucyk7CiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9ybQogICAgICAg
ICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2xheWVyVHJhbnNmb3Jtcy5j
b21iaW5lZCkKLSAgICAgICAgICAgIC5tdWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5l
ZC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAg
ICAgLm11bHRpcGx5KG1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJpbmVkLmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4o
cmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWluCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJl
cGxpY2FUcmFuc2Zvcm0oKQogewogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0
YXRlLnJlcGxpY2FMYXllci0+bV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQpCi0gICAgICAgIC5t
dWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pbnZlcnNlKCkudmFsdWVfb3IoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9y
bXMuY29tYmluZWQuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwog
fQogCiBzdGF0aWMgdm9pZCByZXNvbHZlT3ZlcmxhcHMoUmVnaW9uJiBuZXdSZWdpb24sIFJlZ2lv
biYgb3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uKQpAQCAtNjQ3LDkgKzY0
Nyw5IEBAIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyhNb25vdG9uaWNU
aW1lIHRpbWUpCiAgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6QXBwbGljYXRpb25SZXN1bHQg
YXBwbGljYXRpb25SZXN1bHRzOwogICAgIG1fYW5pbWF0aW9ucy5hcHBseShhcHBsaWNhdGlvblJl
c3VsdHMsIHRpbWUpOwogCi0gICAgbV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0gPSBh
cHBsaWNhdGlvblJlc3VsdHMudHJhbnNmb3JtLnZhbHVlX29yKG1fc3RhdGUudHJhbnNmb3JtKTsK
LSAgICBtX2N1cnJlbnRPcGFjaXR5ID0gYXBwbGljYXRpb25SZXN1bHRzLm9wYWNpdHkudmFsdWVf
b3IobV9zdGF0ZS5vcGFjaXR5KTsKLSAgICBtX2N1cnJlbnRGaWx0ZXJzID0gYXBwbGljYXRpb25S
ZXN1bHRzLmZpbHRlcnMudmFsdWVfb3IobV9zdGF0ZS5maWx0ZXJzKTsKKyAgICBtX2xheWVyVHJh
bnNmb3Jtcy5sb2NhbFRyYW5zZm9ybSA9IGFwcGxpY2F0aW9uUmVzdWx0cy50cmFuc2Zvcm0udmFs
dWVPcihtX3N0YXRlLnRyYW5zZm9ybSk7CisgICAgbV9jdXJyZW50T3BhY2l0eSA9IGFwcGxpY2F0
aW9uUmVzdWx0cy5vcGFjaXR5LnZhbHVlT3IobV9zdGF0ZS5vcGFjaXR5KTsKKyAgICBtX2N1cnJl
bnRGaWx0ZXJzID0gYXBwbGljYXRpb25SZXN1bHRzLmZpbHRlcnMudmFsdWVPcihtX3N0YXRlLmZp
bHRlcnMpOwogCiAgICAgcmV0dXJuIGFwcGxpY2F0aW9uUmVzdWx0cy5oYXNSdW5uaW5nQW5pbWF0
aW9uczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggMTVhZTQ2ZjYwZDcyNjRlMWFiNTdjNTgxOTM4YTViNDY1YmUz
ZWNmZi4uNDVmZjk1MTU2ZWI0YzNlNjg1YWRlNWE5MTJhNWNkZWZiYWFlNmUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTgyNSw3ICs4MjUsNyBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJh
bnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgLy8gUmV0dXJuIGEgcHJvamVjdGlvbiBvZiB0aGUg
dmlzaWJsZSByZWN0IChzdXJmYWNlIGNvb3JkaW5hdGVzKSBvbnRvIHRoZSBsYXllcidzIHBsYW5l
IChsYXllciBjb29yZGluYXRlcykuCiAgICAgLy8gVGhlIHJlc3VsdGluZyBxdWFkIG1pZ2h0IGJl
IHNxdWV3ZWQgYW5kIHRoZSB2aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlz
IHF1YWQsCiAgICAgLy8gc28gaXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhhbiB0aGUgcmVhbCB2
aXNpYmxlIGFyZWEgKGFuZCB0aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkgdGhlIGNvdmVyIHJl
Y3QgbXVsdGlwbGllcikuCi0gICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBt
X2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQobV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1f
bGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKSk7CiAgICAgRmxvYXRSZWN0IHJlY3QgPSBtX2NhY2hlZEludmVyc2VUcmFuc2Zv
cm0uY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChGbG9hdFF1YWQobV9jb29yZGluYXRvci0+
dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CiAgICAgY2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElz
SW5maW5pdGUocmVjdCwgc2l6ZSgpKTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChyZWN0
KTsKQEAgLTEwODksNyArMTA4OSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRD
aGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKICAgICBtX2xheWVyVHJhbnNm
b3JtLmNvbWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyPigqcGFyZW50KCkpLm1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWRGb3JDaGlsZHJl
bigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKLSAgICBtX2NhY2hlZEludmVyc2VUcmFu
c2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1f
bGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2Vk
IGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCiAgICAgc2V0TmVlZHNWaXNpYmxlUmVj
dEFkanVzdG1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggZjBlMmRhMzE5
M2M0ZTg5OTExZmY3ZmNiNmRiOGVhODQ2NDg3OTBlNy4uZTc2M2NjMTM5M2RiY2RlNjExMzIxMThm
ZmI0MzE5MWM2NDhlNDVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE3MCw3
ICsxNzAsNyBAQCBGbG9hdFBvaW50IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludChib29sKiB3
YXNDbGFtcGVkKSBjb25zdAogICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURp
cmVjdGlvbikKICAgICAgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFBvaW50
KHBvaW50KTsKIAotICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCku
dmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXND
bGFtcGVkKTsKKyAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZh
bHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFt
cGVkKTsKIH0KIAogRmxvYXRRdWFkIFRyYW5zZm9ybVN0YXRlOjptYXBwZWRRdWFkKGJvb2wqIHdh
c0NsYW1wZWQpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6
bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJv
b2wKICAgICBpZiAoZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAgICAg
ICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUXVhZChxdWFkKTsKIAotICAgIHF1
YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CisgICAgcXVhZCA9
IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOwogfQogCiB2b2lkIFRyYW5z
Zm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCwgYm9vbCogd2FzQ2xhbXBlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFRyYW5zZm9y
bVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCwgYm9vbCogdwogICAgICAgICB9CiAKICAgICB9IGVsc2UgewotICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VU
cmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwog
ICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclBvaW50ID0g
aW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxhbmFyUG9pbnQpOwogICAgICAg
ICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggMDIxMmJjOWYxYzdlMzExYjYxNjUzNGRlMTNl
YzkwMTQyNDg5ZWQ1OS4uZWYyNWU5ZjcxNzhlMzY4M2IzYmMyNDc3NWM5MGEwMjg4MWQ0YzYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFNlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdhbGxUaW1lIHJlc3BvbnNlVGltCiAgICAg
Ly8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90IHRlcnJpYmx5IGlt
cG9ydGFudCBpbiBwcmFjdGljZS4KICAgICBhdXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUo
KTsKICAgICBhdXRvIGFwcGFyZW50QWdlID0gZGF0ZVZhbHVlID8gc3RkOjptYXgoMF91cywgcmVz
cG9uc2VUaW1lIC0gKmRhdGVWYWx1ZSkgOiAwX3VzOwotICAgIGF1dG8gYWdlVmFsdWUgPSByZXNw
b25zZS5hZ2UoKS52YWx1ZV9vcigwX3VzKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2Uu
YWdlKCkudmFsdWVPcigwX3VzKTsKICAgICBhdXRvIGNvcnJlY3RlZEluaXRpYWxBZ2UgPSBzdGQ6
Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpOwogICAgIGF1dG8gcmVzaWRlbnRUaW1lID0gV2Fs
bFRpbWU6Om5vdygpIC0gcmVzcG9uc2VUaW1lOwogICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFs
QWdlICsgcmVzaWRlbnRUaW1lOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFNlY29uZHMgY29tcHV0ZUZy
ZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwKICAgICAgICAgcmV0dXJuICptYXhBZ2U7CiAKICAgICBhdXRvIGRhdGUgPSByZXNwb25z
ZS5kYXRlKCk7Ci0gICAgYXV0byBlZmZlY3RpdmVEYXRlID0gZGF0ZS52YWx1ZV9vcihyZXNwb25z
ZVRpbWUpOworICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRp
bWUpOwogICAgIGlmIChhdXRvIGV4cGlyZXMgPSByZXNwb25zZS5leHBpcmVzKCkpCiAgICAgICAg
IHJldHVybiAqZXhwaXJlcyAtIGVmZmVjdGl2ZURhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKaW5kZXgg
Yjk2NzNkZTk4NDEyOTNiNDc0YTlkYTRmYmMxNTg5ZjBkYzhjN2ZmMi4uODIyZThiMDZlZDQyNDgy
YjYxNmVlZWUwYzIyNWRmNWQ0Zjc0YzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgYm9vbCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6b25MaW5lKCkKIHsKICAgICBpZiAoIW1f
aXNPbkxpbmUpCiAgICAgICAgIHVwZGF0ZVN0YXRlKCk7Ci0gICAgcmV0dXJuIG1faXNPbkxpbmUu
dmFsdWVfb3IodHJ1ZSk7CisgICAgcmV0dXJuIG1faXNPbkxpbmUudmFsdWVPcih0cnVlKTsKIH0K
IAogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmNwcAppbmRleCBkZTI4ZDY3ZGQ0YjM4MjA4M2ZjY2I1NDNjZTcwZGI3OGY3Nzk3
ZTUyLi4zNWVjMTdjMThiOTAwZDU3M2M5Nzc3NmY5NzIwZTQ2ZjY1NGM5MGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMTk1LDggKzE5NSw4
IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGhpZ2hWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIExh
eW91dFVuaXQ6Om1heCgpOyB9CiAgICAgdm9pZCBjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2
YWxUeXBlJik7CiAKLSAgICBMYXlvdXRVbml0IG5leHRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXh0TG9naWNhbEJvdHRvbS52YWx1ZV9vcigwKTsgfQotICAgIExheW91dFVuaXQg
bmV4dFNoYXBlTG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNoYXBlTG9naWNh
bEJvdHRvbS52YWx1ZV9vcihuZXh0TG9naWNhbEJvdHRvbSgpKTsgfQorICAgIExheW91dFVuaXQg
bmV4dExvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX25leHRMb2dpY2FsQm90dG9tLnZh
bHVlT3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IG5leHRTaGFwZUxvZ2ljYWxCb3R0b20oKSBjb25z
dCB7IHJldHVybiBtX25leHRTaGFwZUxvZ2ljYWxCb3R0b20udmFsdWVPcihuZXh0TG9naWNhbEJv
dHRvbSgpKTsgfQogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8Y29uc3QgUmVuZGVyQmxvY2tGbG93
PiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRC
YXNlbGluZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2Vs
aW5lQWxpZ25tZW50LmNwcAppbmRleCAxZGJiM2E0YTFkMzAwODZmMTBjNmNjNmRmZmRlOWJjODEy
MTQzZWQ5Li4yOTBmYWNhMDQ5ZGNiNjNkY2EwZWFmNDkwZmY3NzY2YjFlYjgyODQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApA
QCAtNjQsNyArNjQsNyBAQCBMYXlvdXRVbml0IEdyaWRCYXNlbGluZUFsaWdubWVudDo6bG9naWNh
bEFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiBMYXlvdXRVbml0IEdyaWRC
YXNlbGluZUFsaWdubWVudDo6YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
R3JpZEF4aXMgYmFzZWxpbmVBeGlzKSBjb25zdAogewogICAgIExheW91dFVuaXQgbWFyZ2luID0g
aXNEZXNjZW50QmFzZWxpbmVGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IG1hcmdpblVu
ZGVyRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgOiBtYXJnaW5PdmVyRm9yQ2hpbGQoY2hp
bGQsIGJhc2VsaW5lQXhpcyk7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9C
YXNlbGluZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3IoLTEpIDogLTEpOworICAgIExheW91dFVuaXQgYmFzZWxpbmUo
aXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoLTEpIDogLTEpOwogICAgIC8vIFdlIHRh
a2UgYm9yZGVyLWJveCdzIHVuZGVyIGVkZ2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCiAgICAgaWYg
KGJhc2VsaW5lID09IC0xKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxCYXNlbGluZUF4aXMo
YmFzZWxpbmVBeGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRU
cmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5kZXggZjc1Mzc2YjM5MGJhYTM3ZWQyOWZlNDA1MmE3
YmFiZmVlMmE0ZjJhNi4uODhjNGY1OTU3YmNjZDg4ZjJhMDI4YTExZTQxMGJlMmUyODIwNjgxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29y
aXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBHcmlkVHJhY2s6OnNldEJhc2VTaXpl
KExheW91dFVuaXQgYmFzZVNpemUpCiAKIHZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdChM
YXlvdXRVbml0IGdyb3d0aExpbWl0KQogewotICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1p
dCA9PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jv
d3RoTGltaXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKKyAgICBtX2dyb3d0aExpbWl0ID0g
Z3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExp
bWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKICAgICBlbnN1cmVH
cm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBA
QCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEJhc2VTaXplKGNv
bnN0IEdyaWRUcmFja1NpemUmIHRyYWNrUwogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0
aCA9IGdyaWRMZW5ndGgubGVuZ3RoKCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVk
KCkpCi0gICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8
TGF5b3V0VW5pdD4oYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKSwgMCkpOworICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2
YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3Ro
LmlzTWluQ29udGVudCgpIHx8IHRyYWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlz
TWF4Q29udGVudCgpKTsKICAgICByZXR1cm4gMDsKQEAgLTIzMCw3ICsyMzAsNyBAQCBMYXlvdXRV
bml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0aExpbWl0KGNvbnN0IEdy
aWRUcmFja1NpemUmIHRyYQogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCA9IGdyaWRM
ZW5ndGgubGVuZ3RoKCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVkKCkpCi0gICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5p
dD4oYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKSwgMCkpOworICAgICAgICByZXR1cm4gdmFs
dWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWlsYWJsZVNw
YWNlKCkudmFsdWVPcigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3RoLmlzTWluQ29u
dGVudCgpIHx8IHRyYWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlzTWF4Q29udGVu
dCgpKTsKICAgICByZXR1cm4gaW5maW5pdHk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0
IEdyaWRTcGFuJiBzcGEKICAgICB9IGVsc2UgaWYgKHRyYWNrU2l6ZS5oYXNNYXhDb250ZW50T3JB
dXRvTWF4VHJhY2tCcmVhZHRoKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBncm93dGhMaW1pdCA9
IG1fc3RyYXRlZ3ktPm1heENvbnRlbnRGb3JDaGlsZChncmlkSXRlbSk7CiAgICAgICAgIGlmICh0
cmFja1NpemUuaXNGaXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6
bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNr
QnJlYWR0aCgpLmxlbmd0aCgpLCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApKSk7CisgICAg
ICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0
aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBhdmFpbGFibGVT
cGFjZSgpLnZhbHVlT3IoMCkpKTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoc3RkOjpt
YXgodHJhY2suZ3Jvd3RoTGltaXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBAIC00ODMs
OCArNDgzLDggQEAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNv
bnN0IEdyaWRUcmFjayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5m
aW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3Ro
UG90ZW50aWFsV2l0aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jv
d3RoUG90ZW50aWFsV2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0
cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsK
LSAgICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZh
bHVlX29yKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazFMaW1p
dCA9IHRyYWNrMS0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZU9yKHRyYWNrMS0+Z3Jvd3RoTGltaXQo
KSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAo
KS52YWx1ZU9yKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1p
dCAtIHRyYWNrMS0+YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXpl
KCkpOwogfQogCkBAIC01NjksNyArNTY5LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmQKICAg
ICAgICAgaWYgKG1heFRyYWNrU2l6ZS5pc0NvbnRlbnRTaXplZCgpIHx8IG1heFRyYWNrU2l6ZS5p
c0ZsZXgoKSB8fCBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byhtYXhUcmFja1NpemUsIGRpcmVj
dGlvbikpCiAgICAgICAgICAgICBncmlkQXJlYUlzSW5kZWZpbml0ZSA9IHRydWU7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGdyaWRBcmVhU2l6ZSArPSB2YWx1ZUZvckxlbmd0aChtYXhUcmFj
a1NpemUubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUudmFsdWVfb3IoMF9sdSkpOworICAgICAgICAg
ICAgZ3JpZEFyZWFTaXplICs9IHZhbHVlRm9yTGVuZ3RoKG1heFRyYWNrU2l6ZS5sZW5ndGgoKSwg
YXZhaWxhYmxlU2l6ZS52YWx1ZU9yKDBfbHUpKTsKICAgICB9CiAKICAgICBncmlkQXJlYVNpemUg
Kz0gbV9yZW5kZXJHcmlkLT5ndXR0ZXJzU2l6ZShtX2dyaWQsIGRpcmVjdGlvbiwgc3Bhbi5zdGFy
dExpbmUoKSwgc3Bhbi5pbnRlZ2VyU3BhbigpLCBhdmFpbGFibGVTaXplKTsKQEAgLTgxMCw3ICs4
MTAsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5OjptaW5T
aXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgICAgICAgICAgR3JpZFRyYWNrU2l6
ZSB0cmFja1NpemUgPSBtX2FsZ29yaXRobS5ncmlkVHJhY2tTaXplKGRpcmVjdGlvbigpLCB0cmFj
a1Bvc2l0aW9uKTsKICAgICAgICAgICAgIGlmICghdHJhY2tTaXplLmhhc0ZpeGVkTWF4VHJhY2tC
cmVhZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1pblNpemU7Ci0gICAgICAgICAgICBt
YXhCcmVhZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5s
ZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwX2x1KSk7CisgICAgICAgICAgICBt
YXhCcmVhZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5s
ZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDBfbHUpKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobWluU2l6ZSA+IG1heEJyZWFkdGgpIHsKICAgICAgICAgICAgIGF1dG8gbWFyZ2lu
QW5kQm9yZGVyQW5kUGFkZGluZyA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6Om1hcmdpbkxvZ2ljYWxT
aXplRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgZGlyZWN0aW9uKCksIGNoaWxkKTsKQEAgLTgzMSw3
ICs4MzEsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojpt
aW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgIGJvb2wgb3ZlcnJpZGVTaXpl
SGFzQ2hhbmdlZCA9IHVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24sIGdyaWRBcmVhU2l6ZSk7CiAgICAgbGF5
b3V0R3JpZEl0ZW1Gb3JNaW5TaXplQ29tcHV0YXRpb24oY2hpbGQsIG92ZXJyaWRlU2l6ZUhhc0No
YW5nZWQpOwogCi0gICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWlu
U2l6ZSwgY2hpbGRNaW5TaXplLCBXVEY6Om51bGxvcHQpLnZhbHVlX29yKDApICsgY2hpbGQubWFy
Z2luTG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpICsgYmFz
ZWxpbmVTaGltOworICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1p
blNpemUsIGNoaWxkTWluU2l6ZSwgV1RGOjpudWxsb3B0KS52YWx1ZU9yKDApICsgY2hpbGQubWFy
Z2luTG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpICsgYmFz
ZWxpbmVTaGltOwogfQogCiBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FuUGFydGlj
aXBhdGVJbkJhc2VsaW5lQWxpZ25tZW50KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRBeGlz
IGJhc2VsaW5lQXhpcykgY29uc3QKQEAgLTExMDEsNyArMTEwMSw3IEBAIHZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tTaXplcygpCiAgICAgVmVjdG9yPEdyaWRU
cmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7CiAgICAgY29uc3QgYm9vbCBo
YXNEZWZpbml0ZUZyZWVTcGFjZSA9ICEhYXZhaWxhYmxlU3BhY2UoKTsKICAgICBjb25zdCBib29s
IGluZGVmaW5pdGVIZWlnaHQgPSBtX2RpcmVjdGlvbiA9PSBGb3JSb3dzICYmICFtX3JlbmRlckdy
aWQtPmhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpOwotICAgIExheW91dFVuaXQgbWF4U2l6ZSA9
IHN0ZDo6bWF4KDBfbHUsIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOworICAgIExh
eW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVP
cigwX2x1KSk7CiAgICAgLy8gMS4gSW5pdGlhbGl6ZSBwZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMu
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFsbFRyYWNrcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gYWxsVHJhY2tzW2ldOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1BhaW50SW5mby5oCmluZGV4IDIzMjFkNGZhNjRjMWU1MjQ1ZGEyZjM1NDNiZTExMTIzNDM1
YTk5YmUuLjRlMWNmZWVlNjA5YTM0OWEwYTNkM2QxOTU0NGI1MTU4ZWRkOWE1ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBzdHJ1Y3QgUGFp
bnRJbmZvIHsKICAgICAgICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJl
Y3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0
KSk7CiAgICAgICAgIHJlY3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3Qu
bG9jYXRpb24oKSkpOwogICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVk
UmVjdC5zaXplKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IGFhNzM3ZTQ5MGE0ODg0ZjVhZTJmYzZmMDZlZTRmYTYwNmRmNTczZGYuLmE2NzExMTE2
NTllNTIxNTYyZmVmNzRkYjQ1NzQzZWY5YmJmZGRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC0yNzU0LDcgKzI3NTQsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaQogICAgICAgICBMYXlvdXRVbml0IGhlaWdodFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNr
TWluTWF4SGVpZ2h0KSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGludHJpbnNpY0hlaWdodCA9
IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQo
KTsKLSAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hl
aWdodCkudmFsdWVfb3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAgICAgaGVp
Z2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXpl
LCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZU9yKGNvbXB1
dGVkVmFsdWVzLm1fZXh0ZW50KTsKICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFp
bkxvZ2ljYWxIZWlnaHRCeU1pbk1heChoZWlnaHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBj
aGVjayBtaW4vbWF4IGhlaWdodCBhcmUgd2hlbiBhIGZpeGVkIGxlbmd0aCBoYXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAxNTBhYzA2NWFiZDg5M2Zj
YjcxZWMyMGYxY2YyNjMwNWY4YTk0ZWQ0Li5lNWNkZTQ5MDA2NTI5YTNhYTdjODM4OGNhY2M3MmNk
ZjY1MzJjMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvdW50ZXJQbGFuPiBwbGFuQ291
bnRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3QKICAgICB9CiAKICAg
ICBpZiAoZGlyZWN0aXZlcy5yZXNldFZhbHVlKQotICAgICAgICByZXR1cm4gQ291bnRlclBsYW4g
eyB0cnVlLCBzYXR1cmF0ZWRBZGRpdGlvbigqZGlyZWN0aXZlcy5yZXNldFZhbHVlLCBkaXJlY3Rp
dmVzLmluY3JlbWVudFZhbHVlLnZhbHVlX29yKDApKSB9OworICAgICAgICByZXR1cm4gQ291bnRl
clBsYW4geyB0cnVlLCBzYXR1cmF0ZWRBZGRpdGlvbigqZGlyZWN0aXZlcy5yZXNldFZhbHVlLCBk
aXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlT3IoMCkpIH07CiAgICAgaWYgKGRpcmVjdGl2
ZXMuaW5jcmVtZW50VmFsdWUpCiAgICAgICAgIHJldHVybiBDb3VudGVyUGxhbiB7IGZhbHNlLCAq
ZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZSB9OwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCmluZGV4IDM0ODNjYmEyYjRmZmY1OTQzOTJkMTRiYTkwMDJiNzAyNTFmNjk3
MmMuLmIzMTVlMDk0NTlkYzIxOGU1N2RjY2U2NWYzMjJhYzg3OTk4MzllZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAgICAg
ICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCb3hBbGlnbm1lbnQ6OkJhc2VsaW5lKSB7Ci0g
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwor
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2Vs
aW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwog
ICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBkZXNjZW50ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0
aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFzY2VudDsKIApAQCAtNTEwLDcgKzUxMCw3IEBAIHZvaWQg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRv
cCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgKGNvbnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+
aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkpIC8gMik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEJveEFsaWdubWVudDo6QmFzZWxpbmU6
IHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVC
YXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20o
KSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5l
QmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20o
KSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKICAgICAg
ICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgKG1heEFzY2VudCAtIGFz
Y2VudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA3OTQ5ZmJmMzQwN2Y0NjZmYTY2ZTUxMjBm
NDFhNmYwNGQyZWE5NzhlLi5iMzBmYzdmOTJmNzg2ZTk5NDNhOWE5NzA5ZTFkZWFhMjUzMDk0NzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
QEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29u
dGVudEJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbgogCiBpbnQgUmVuZGVy
RmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgaW50
IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOworICAgIGludCBiYXNlbGluZSA9
IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRl
bnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRpcmVj
dGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsKICAg
ICByZXR1cm4gYmFzZWxpbmUgKyBtYXJnaW5Bc2NlbnQ7CkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBi
b29sIFJlbmRlckZsZXhpYmxlQm94Ojp1cGRhdGVBdXRvTWFyZ2luc0luQ3Jvc3NBeGlzKFJlbmRl
ckJveCYgY2hpbGQsIExheW91dFVuaQogCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpt
YXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogewotICAgIExh
eW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjcm9z
c0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOworICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hp
bGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNo
aWxkKSk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxk
KGNoaWxkKTsKIH0KIApAQCAtMTA3NCwxMiArMTA3NCwxMiBAQCBMYXlvdXRVbml0IFJlbmRlckZs
ZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBj
aGlsZAogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IFdURjo6bnVsbG9wdDsK
ICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAgICAgICBtYXhFeHRl
bnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsK
LSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVf
b3IoY2hpbGRTaXplKSk7CisgICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwg
bWF4RXh0ZW50LnZhbHVlT3IoY2hpbGRTaXplKSk7CiAgICAgfQogCiAgICAgTGVuZ3RoIG1pbiA9
IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWluV2lkdGgoKSA6IGNoaWxkLnN0
eWxlKCkubWluSGVpZ2h0KCk7CiAgICAgaWYgKG1pbi5pc1NwZWNpZmllZE9ySW50cmluc2ljKCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWF4KDBfbHUsIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlX29yKGNo
aWxkU2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjptYXgo
MF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1pbiku
dmFsdWVPcihjaGlsZFNpemUpKSk7CiAgICAgCiAgICAgaWYgKCFpc0ZsZXhpYmxlQm94SW1wbCgp
ICYmIG1pbi5pc0F1dG8oKSAmJiBtYWluQXhpc092ZXJmbG93Rm9yQ2hpbGQoY2hpbGQpID09IE92
ZXJmbG93OjpWaXNpYmxlICYmICEoaXNDb2x1bW5GbG93KCkgJiYgaXM8UmVuZGVyRmxleGlibGVC
b3g+KGNoaWxkKSkpIHsKICAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHdlIGRvIG5vdCBoYW5k
bGUgbWluLWhlaWdodDogYXV0byBmb3IgbmVzdGVkCkBAIC0xMDg5LDE3ICsxMDg5LDE3IEBAIExh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChj
b25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgICAgIC8vIGNzcy1mbGV4Ym94IHNlY3Rpb24gNC41
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgbWluIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHZh
bGlkIGhlcmUsIHdlIG5lZWQgdG8gY29tZSB1cCB3aXRoIGEgbm9uIG9wdGlvbmFsIHZlcnNpb24g
b2YgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQgYW5kCiAgICAgICAgIC8vIGVuc3VyZSBp
dCdzIHZhbGlkIHRocm91Z2ggdGhlIHZpcnR1YWwgY2FsbHMgb2YgY29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcuCi0gICAgICAgIExheW91dFVuaXQgY29udGVudFNpemUg
PSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgTGVuZ3RoKE1p
bkNvbnRlbnQpKS52YWx1ZV9vcigwKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50U2l6ZSA9
IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTWlu
Q29udGVudCkpLnZhbHVlT3IoMCk7CiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsK
ICAgICAgICAgaWYgKGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYgY2hpbGQuaW50cmluc2ljU2l6
ZSgpLmhlaWdodCgpID4gMCkKICAgICAgICAgICAgIGNvbnRlbnRTaXplID0gYWRqdXN0Q2hpbGRT
aXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIGNvbnRlbnRTaXplKTsK
LSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZh
bHVlX29yKGNvbnRlbnRTaXplKSk7CisgICAgICAgIGNvbnRlbnRTaXplID0gc3RkOjptaW4oY29u
dGVudFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNvbnRlbnRTaXplKSk7CiAgICAgICAgIAogICAg
ICAgICBMZW5ndGggbWFpblNpemUgPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgp
LndpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdodCgpOwogICAgICAgICBpZiAobWFpbkF4aXNM
ZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBtYWluU2l6ZSkpIHsKLSAgICAgICAgICAgIExheW91dFVu
aXQgcmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxk
LCBNYWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWVfb3IoMCk7CisgICAgICAgICAg
ICBMYXlvdXRVbml0IHJlc29sdmVkTWFpblNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JD
aGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgbWFpblNpemUpLnZhbHVlT3IoMCk7CiAg
ICAgICAgICAgICBBU1NFUlQocmVzb2x2ZWRNYWluU2l6ZSA+PSAwKTsKLSAgICAgICAgICAgIExh
eW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4
dGVudC52YWx1ZV9vcihyZXNvbHZlZE1haW5TaXplKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFs
dWVPcihyZXNvbHZlZE1haW5TaXplKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hp
bGRTaXplLCBzdGQ6Om1pbihzcGVjaWZpZWRTaXplLCBjb250ZW50U2l6ZSkpOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAwNGJiMmI2Y2Jh
MjFhOWU5MWY0YTc5MzZlNzg5MTVhMGVjOTdlZWY0Li4zNWE2MTBiMjk5NzNjY2Q5ZTY4YzY1NGM4
YTQ1YmVkMGNjM2E1YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CkBAIC0zMTAsNyArMzEwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkR2FwKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW8KICAgICBpZiAoZ2Fw
TGVuZ3RoLmlzTm9ybWFsKCkpCiAgICAgICAgIHJldHVybiAwX2x1OwogCi0gICAgcmV0dXJuIHZh
bHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigw
KSk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxh
YmxlU2l6ZS52YWx1ZU9yKDApKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkR2Fw
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CkBAIC0xMjI2LDcgKzEy
MjYsNyBAQCBpbnQgUmVuZGVyR3JpZDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbgogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7CiAjZW5kaWYKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihz
eW50aGVzaXplZEJhc2VsaW5lRnJvbU1hcmdpbkJveCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAg
cmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJv
bU1hcmdpbkJveCgqdGhpcywgZGlyZWN0aW9uKSk7CiB9CiAKIE9wdGlvbmFsPGludD4gUmVuZGVy
R3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggYzI2ZTZiNzlmZDYxZjY2ZWYyNTg5ZDA5NmM2YTIzMGRjZjNj
OGQ0OS4uMGUyZTBmMTZiNDQ5MDAzNGYzYjlhZjdiNGMzZGJmZDUxMDM0YmMwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDU3LDcgKzQ0NTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsT2Zm
c2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRP
ZmZzZXRGb3JUaGlzTGF5ZXIpOwogICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvKHBhaW50aW5nSW5mbyk7CiAgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucm9v
dExheWVyID0gdGhpczsKLSAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgdHJhbnNmb3JtZWRQYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhl
bHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0
KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAg
dHJhbnNmb3JtZWRQYWludGluZ0luZm8uc3VicGl4ZWxPZmZzZXQgPSBhZGp1c3RlZFN1YnBpeGVs
T2Zmc2V0OwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJh
bnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogICAgIGNvbnRleHQuc2V0Q1RNKG9s
ZFRyYW5zZnJvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
aW5kZXggNjcwZTM3NDY1NWMxM2M1ZThiYWRkMjhmZTE4MjM3Y2QzODQ2ZjI2NC4uNjNhZGU3ZTIz
ZTQzNjdmY2VhYmUwMWY0NjY4M2RiMzJmZTgxYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIExheW91dFJlY3QgUmVu
ZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRp
b25hbE9mZnNlCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBQYWludEZ1bmN0aW9u
JiBwYWludEZ1bmN0aW9uKQogewogICAgIGludCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsK
LSAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RW
aXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJl
YS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOwogICAgIGludCBlbmRJbmRleCA9IGZpcnN0VmlzaWJs
ZUl0ZW0gKyBudW1WaXNpYmxlSXRlbXMoQ29uc2lkZXJQYWRkaW5nOjpZZXMpOwogICAgIGZvciAo
aW50IGkgPSBmaXJzdFZpc2libGVJdGVtOyBpIDwgbGlzdEl0ZW1zU2l6ZSAmJiBpIDwgZW5kSW5k
ZXg7ICsraSkKICAgICAgICAgcGFpbnRGdW5jdGlvbihwYWludEluZm8sIHBhaW50T2Zmc2V0LCBp
KTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBib29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFs
RWxlbWVudEF0TGlzdEluZGV4KGludCBpbmRleCkKIAogYm9vbCBSZW5kZXJMaXN0Qm94OjpsaXN0
SW5kZXhJc1Zpc2libGUoaW50IGluZGV4KQogewotICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRl
eE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhP
ZmZzZXQpOworICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUlu
c2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVuZElu
ZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhCiAg
ICAgICAgID8gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVh
LnZhbHVlKCkgKyBudW1iZXJPZlZpc2libGVJdGVtc0luUGFkZGluZ0JvdHRvbSgpCiAgICAgICAg
IDogbV9pbmRleE9mZnNldCArIG51bVZpc2libGVJdGVtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggZGJiOGFjNThhMWZk
ZThiNGFlMjY5ZDY1YjBkMTUxYjg4MmJkYzIyNy4uMjhkZmViMzEyNjRjMjBhODQ2ZDcyYzkzNWYz
MGY0MWY5OTIwNWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlv
dXRVbml0IGF2YWlsYWJsZUhlaWdodCA9IG11bHRpQ29sdW1uRmxvdygpLT5jb2x1bW5IZWlnaHRB
dmFpbGFibGUoKTsKICAgICBMYXlvdXRVbml0IG1heENvbHVtbkhlaWdodCA9IGF2YWlsYWJsZUhl
aWdodCA/IGF2YWlsYWJsZUhlaWdodCA6IFJlbmRlckZyYWdtZW50ZWRGbG93OjptYXhMb2dpY2Fs
SGVpZ2h0KCk7CiAgICAgaWYgKCFtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1Vu
ZGVmaW5lZCgpKQotICAgICAgICBtYXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5I
ZWlnaHQsIG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXpl
LCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgV1RGOjpudWxsb3B0KS52YWx1ZV9v
cihtYXhDb2x1bW5IZWlnaHQpKTsKKyAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4o
bWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIFdURjo6bnVsbG9w
dCkudmFsdWVPcihtYXhDb2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4gaGVpZ2h0QWRqdXN0ZWRG
b3JTZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMGIwMzYwNDI5MzkwMWIzMmNkMDU3N2NlMzU1N2NlNzVk
NGE3ZTI5NS4uOTlhZDhkYTQ4ZjI0ZDJmYzI1NjQ3NzRkMjUyNTQ3ZmRiZTAwMTA2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zMjIsOSArMzIyLDkgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0
ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdHlsZUxv
Z2ljYWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNlIGlmIChzdHlsZUxvZ2lj
YWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRl
UGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZV9vcigwKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2lj
YWxIZWlnaHQpLnZhbHVlT3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0Lmlz
SW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRl
bnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRl
ckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlX29yKDApOworICAgICAgICByZXR1
cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2Fs
SGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRk
aW5nKS52YWx1ZU9yKDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIDBfbHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCmluZGV4IDhkZDY2YTQ2YzEwYjQ1ZTBkZGE5ZGFiZmRlZjY2YmRhZTdjNWI3ODUu
LmY1YTBmZDBkMzEyNmNhYmNiY2M3YTdkNzNkZTAwNGE4ZjM3ZjQ1ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKCkgY29uc3QK
ICAgICAvLyA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9DUi1DU1MyMS0yMDA3MDcxOS90YWJs
ZXMuaHRtbCNoZWlnaHQtbGF5b3V0PjogVGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpcyB0aGUgYmFz
ZWxpbmUgb2YKICAgICAvLyB0aGUgZmlyc3QgaW4tZmxvdyBsaW5lIGJveCBpbiB0aGUgY2VsbCwg
b3IgdGhlIGZpcnN0IGluLWZsb3cgdGFibGUtcm93IGluIHRoZSBjZWxsLCB3aGljaGV2ZXIgY29t
ZXMgZmlyc3QuIElmIHRoZXJlCiAgICAgLy8gaXMgbm8gc3VjaCBsaW5lIGJveCBvciB0YWJsZS1y
b3csIHRoZSBiYXNlbGluZSBpcyB0aGUgYm90dG9tIG9mIGNvbnRlbnQgZWRnZSBvZiB0aGUgY2Vs
bCBib3guCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0dXJuIGZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjb250
ZW50TG9naWNhbEhlaWdodCgpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIG1hcmtDZWxsRGly
dHlXaGVuQ29sbGFwc2VkQm9yZGVyQ2hhbmdlcyhSZW5kZXJUYWJsZUNlbGwqIGNlbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDkx
MTkzMTI1NDljMWRjM2YwOTQwNmY5NmFmMDIxZTBiY2NjM2YxMDkuLmQxZGI5ZjI4NWY5OTYyODE0
ZjhiNzdiMjIxMGZlM2U4ZTNhNWM2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC04ODgsNyArODg4LDcgQEAgT3B0aW9uYWw8aW50
PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAg
Ly8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2VsaW5lCiAgICAgICAgIGlmIChj
ZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIGludCBj
YW5kaWRhdGUgPSByb3VuZFRvSW50KGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0ZSksIGNhbmRp
ZGF0ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5k
aWRhdGUpLCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNDMxYjhmZTczYjdiOGY0NjkyYjE0ZWIwZWI0ZTM5
ZTU1NzkxYTc2OC4uOGMxNzg4YTIzNzZkOTcyYzlmNTk2MGM3NGZiOGNkYjE4NmFiMmNmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTAwNCw3ICsxMDA0LDcg
QEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBs
ZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBo
T3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVfb3IoZ2x5cGhPdmVy
Zmxvdy5sZWZ0KTsKKyAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJm
bG93LnZhbHVlT3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3Bh
Y2luZyAmJiBsZW5ndGggPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAg
ICAgICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKQEAgLTE1MTAsMTMgKzE1MTAsMTMg
QEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAg
ICAgICByZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBp
dGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20o
KSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZV9vcihjdXJy
ZW50IC0gMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZU9y
KGN1cnJlbnQgLSAxKTsKIH0KIAogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFj
a3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0QnJlYWtJ
dGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUs
IG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFs
dWVfb3IoMCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZU9y
KDApOwogfQogCiBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QK
QEAgLTE1MjUsNyArMTUyNSw3IEBAIGludCBSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJy
ZW50KSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAKICAgICBDYWNoZWRUZXh0
QnJlYWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpD
YXJldCwgbnVsbEF0b20oKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhjdXJyZW50
KS52YWx1ZV9vcihjdXJyZW50ICsgMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhj
dXJyZW50KS52YWx1ZU9yKGN1cnJlbnQgKyAxKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Ojpjb21w
dXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3QKQEAgLTE1NDcsNyArMTU0Nyw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5z
aWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5n
Vmlldyh1bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHQoKS5sZW5ndGgoKSk7
CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlT3IodGV4dCgpLmxlbmd0aCgp
KTsKICAgICBBU1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlv
biA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5Njc2OTJlZTBhMmMzMzQ1N2Q3
Nzc3MzI0MjRlYzc5MWE0ZmNjZWFkLi5lOGRkODQ5ZjE2OTEyMmQyNTUzZDhiYzlmNTQ0ZGJkMTZi
NDE0OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMzQs
NyArMjM0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIGlmICghbmVlZHNMYXlv
dXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRl
UHVzaGVyKCp0aGlzLCB7IH0sIGZhbHNlLCBtX3BhZ2VMb2dpY2FsU2l6ZS52YWx1ZV9vcihMYXlv
dXRTaXplKCkpLmhlaWdodCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CisgICAgTGF5
b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCB7IH0sIGZhbHNlLCBtX3BhZ2VM
b2dpY2FsU2l6ZS52YWx1ZU9yKExheW91dFNpemUoKSkuaGVpZ2h0KCksIG1fcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkKTsKIAogICAgIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAKaW5kZXggYzllMzUxMzEzM2E3YTNlMGJiNjM0OWNhNWIzNGEzNWFmZDI5MTky
Zi4uOGUzNTZiNmI2OTY2NzBjZjU1NTZkMTkzYjYxNzUxZTQyZGQ1YzFkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbgogICAgIGlmIChsaW5l
UG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihSZW5kZXJC
bG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9u
LCBsaW5lUG9zaXRpb25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFs
dWVPcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGlu
ZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9CiAKICNpZiBFTkFCTEUoREVCVUdf
TUFUSF9MQVlPVVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMDQ4YzdlYzg4NTI4OGMxOTRkYWUyZDJkYjExMTBhOTcx
Y2M0ODJjYS4uMmQ0MzkzYjUyZGZmY2I4MjFiZmQ3Yzk0ODUxY2Q3NzlhMTllYjc0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aApAQCAtODAsNyArODAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBh
c2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQubG9naWNhbEhlaWdo
dCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihj
aGlsZC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRp
b24uY3BwCmluZGV4IGYxMmQzYWZlNmZjZmM4MjU3MDVjOWM0Yzk2ODQ3ZTE3YjRiMTBkMjEuLmQ0
ZTczMWEwOTBhMjJkYTZmNjFjYzMxMmZlMTYwODgyNTgwZjc4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCkBAIC04NSw3ICs4NSw3IEBA
IGludCBHcmlkUG9zaXRpb246OnNwYW5Qb3NpdGlvbigpIGNvbnN0CiAKIGludCBHcmlkUG9zaXRp
b246Om1heCgpCiB7Ci0gICAgcmV0dXJuIGdNYXhQb3NpdGlvbkZvclRlc3RpbmcudmFsdWVfb3Io
a0dyaWRNYXhQb3NpdGlvbik7CisgICAgcmV0dXJuIGdNYXhQb3NpdGlvbkZvclRlc3RpbmcudmFs
dWVPcihrR3JpZE1heFBvc2l0aW9uKTsKIH0KIAogaW50IEdyaWRQb3NpdGlvbjo6bWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zm
c2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNl
dC5oCmluZGV4IDgwN2U0ZGI4Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4MGFmOTI0OTkuLjM4ZWQ5
M2M5MWY2Y2I5ZjY0YzJjZjIwYjNjYmFmMDQyYjRhODFiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaApAQCAtNjgsNyAr
NjgsNyBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBsZW5ndGhPcihmbG9hdCBkZWZhdWx0VmFsdWUp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVfb3IoZGVmYXVsdFZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3Ro
ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKaW5kZXggY2JlMjcwYjExYzgzMzFhNDdmZTg4ZjhiYTVlMDFhN2FiODI2
MmJiOS4uOThiMzE1ZDY3NDQzZTU2YmE0MDRjMjUxMmVjMTI1YTQ1YTYwOGJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2lu
dElzSW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdB
cmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKaW5kZXggZGZiNGI4NzY2ZThkMzcwODIzNTBhYTdhNWMwMTUxZGVhNDU3ODU1Zi4uNTg1Yzdi
ZTc5N2VhYTRjYjIyZWUyMTRjMDEwYTc2NmY2OGY2YjQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0x
ODUsNyArMTg1LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFj
dGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
RmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0
UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgLy8gRWFybHkg
ZXhpdCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQgdmlld3BvcnQg
YXJlYQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSAm
JiAhbV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMGE1OGY4ZmQxYWQyNDk0ODNk
ZDUwZGJiZGIzOTFmZDdhZjk0ZjNlNC4uMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNj
NmUyMmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAg
IFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNW
R19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CiAg
ICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUp
IHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJ
blBhcmVudCk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBw
b3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA3Mzk4ZWYzMmIzODYwYzIzNjU1
NTQzNDRkZGZhMzA0MTJhNDhhODBhLi4yY2Y4NmUyNWY2MjZlZTJiZGUyNTg1OTY1OWZjMWUwNjY3
NmUwMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVj
dCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOwog
ICAgICAgICB0cmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsKLSAgICAg
ICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CisgICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAgICAgfQogCi0gICAg
cG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9p
bnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKIAogICAgIGZvciAo
Tm9kZSogY2hpbGROb2RlID0gY2xpcFBhdGhFbGVtZW50KCkuZmlyc3RDaGlsZCgpOyBjaGlsZE5v
ZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAppbmRleCAzNjQwNjkyMWJlODBkNzgxMzliZDY5YTUyMDUyMzYyNThkNzJhMDU0Li4xYjNlZjI0
Y2M5MmQyMDUyYTM0YWFkMjA4ODIzMzBlMWExMjNiODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAt
Mjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAKICAgICAgICAgSW1hZ2VC
dWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAg
ICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0o
ZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0
ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
IC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmls
dGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwogICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJz
b2x1dGVQYWludFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAppbmRleCBlMTUwMmVmNzViZWJmNjc3ZjYxN2M0MjE4NDQ1MGI2ODBmNzEw
MGE4Li5kZjBlZjZmNmYzZWQ4ZTNkNDIxMjk5NGE5ZTAzMzc2NDI1MTBjYjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTQwNSw3ICs0
MDUsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIC8vIFRlc3QgU1ZHIGNvbnRlbnQg
aWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhlIHZp
c3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRl
c3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJv
eFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmlld3Bv
cnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVudCkp
KSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0
UG9pbnQocG9pbnRJblBhcmVudCkpOworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBv
aW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmYTNiYzkx
NzBjMzUwM2I0MGE2YjEyY2IwNTE1Y2NkMzk1NTA0MDEzLi4zNGIwYWU3NWJkYzAwNTY1NzZkNTEz
ODAxODVlZmU2YmM3MmM3MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hh
cGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChw
b2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJl
YSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDYzN2Q4YzRmZDg0
NGE0NGZlZDk0OTJmZmM5ZTUxODhkMDcyM2IyOGQuLmM4MGU5NTZkNTVkOGRhNDgzNjhhNWRiNDY5
MThiM2I1NmE1MzNlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAg
ICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNT
dHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0
UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0
UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgICAgICAg
ICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2Fs
UG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA0OTViMTM0YmIzNmYwZGEwNDc0Y2M3MDliN2NkMTk2ZjU5OTZjN2ExLi5hYTkyZDYzNGVjZWY4
MGU5MDY4YTgxMTU3ODM3MDI4ZTZjNjFmM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxNiw3ICszMTYsNyBA
QCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJl
ZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdl
IHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9j
ZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdl
bGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBj
b250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0
KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCA5MDJlNTRjYjll
MjdhZGJlNDUwMmJlZTYyNzZiM2NkZmVjMDE2YjY1Li5kZmU4NzU1NzhhYWUwYjYyYzU4Yjc1ZGI5
NmVkZDc3N2JlYTFmNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZl
cnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2lu
ZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJp
bmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0g
Z2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQo
R2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2Us
IHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSks
IGNvZGVwb2ludHMpKTsKKyAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0
aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5
cGhCb3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOwogfQogCiB2
b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQy
MSw3ICsxNDIxLDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAgcHJvY2Vz
c0dseXBoRWxlbWVudChnbHlwaEVsZW1lbnQsICZnbHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9u
dGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgYm91
bmRpbmdCb3gpOwogICAgIH0KIAotICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1
ZV9vcihGbG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVl
T3IoRmxvYXRSZWN0KCkpOwogCiAgICAgYXBwZW5kTGlnYXR1cmVHbHlwaHMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKaW5kZXggMGM2M2EyMGFhMTI0MWNmOWE5Zjc0ZTNjNjEwMGFhNDU3OGJmZGEzNC4u
ZGYyODE5OWE2ZjQzYjgxMmNkOTk1MDNlOGVhODMzZjVkZGI4MTcxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24u
Y3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5kbGVVc2VyUHJvbXB0cyhG
dW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW4KIAogdm9pZCBT
ZXNzaW9uOjpoYW5kbGVVbmV4cGVjdGVkQWxlcnRPcGVuKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc3dpdGNoIChjYXBhYmlsaXRp
ZXMoKS51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKKyAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcygpLnVu
aGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlT3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRp
c21pc3NBbmROb3RpZnkpKSB7CiAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlz
bWlzczoKICAgICAgICAgZGlzbWlzc0FsZXJ0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgYnJlYWs7CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRl
RWxlbWVudExheW91dChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRM
YXkKIAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFu
ZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwotICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52
YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CisgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFt
ZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlT3IoZW1wdHlTdHJpbmco
KSkpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygibm9kZUhhbmRsZSJfcywgZWxlbWVudElE
KTsKICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJzY3JvbGxJbnRvVmlld0lmTmVlZGVkIl9z
LCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlNjcm9sbEludG9WaWV3SWZO
ZWVkZWQpKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImNvb3JkaW5hdGVTeXN0ZW0iX3Ms
IG9wdGlvbnMuY29udGFpbnMoRWxlbWVudExheW91dE9wdGlvbjo6VXNlVmlld3BvcnRDb29yZGlu
YXRlcykgPyAiTGF5b3V0Vmlld3BvcnQiX3MgOiAiUGFnZSJfcyk7CkBAIC0xNDk2LDcgKzE0OTYs
NyBAQCB2b2lkIFNlc3Npb246OnNlbGVjdE9wdGlvbkVsZW1lbnQoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogewogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+
IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNl
dFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwotICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3Ms
IG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CisgICAg
cGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdD
b250ZXh0LnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
Zygibm9kZUhhbmRsZSJfcywgZWxlbWVudElEKTsKICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJzZWxlY3RPcHRpb25FbGVtZW50Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9u
c2UpIHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKQEAgLTIwMDQsMTIgKzIwMDQs
MTIgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShj
b25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBj
b29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3Ry
aW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKLSAgICBjb29raWVPYmpl
Y3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3Ry
aW5nKCkpKTsKLSAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlY3VyZSJfcywgY29va2ll
LnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigi
aHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxzZSkpOworICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZU9yKCIvIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVPcihlbXB0eVN0cmluZygpKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1
cmUiX3MsIGNvb2tpZS5zZWN1cmUudmFsdWVPcihmYWxzZSkpOworICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZU9yKGZhbHNlKSk7
CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGly
eSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBp
cnkudmFsdWVfb3IoMCkpOworICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9z
LCBjb29raWUuZXhwaXJ5LnZhbHVlT3IoMCkpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9
CiAKQEAgLTI0NjYsNyArMjQ2Niw3IEBAIHZvaWQgU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0
aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQsIE9wdGlvbmFsPGJvb2w+IHNjcm9sbEluCiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVIYW5kbGUiX3MsIGVsZW1lbnRJRC52YWx1
ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbigi
Y2xpcFRvVmlld3BvcnQiX3MsIHRydWUpOwotICAgICAgICBpZiAoc2Nyb2xsSW50b1ZpZXcudmFs
dWVfb3IoZmFsc2UpKQorICAgICAgICBpZiAoc2Nyb2xsSW50b1ZpZXcudmFsdWVPcihmYWxzZSkp
CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkIl9zLCB0cnVlKTsKICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgidGFr
ZVNjcmVlbnNob3QiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IGYwNGY0ZmRlYTgw
YTZhYjNjNmNkYzg0YjJlOWYxNDZkMjcxNzE1NzMuLmU1MjY4ODJjM2FlM2ExM2NiN2FhNzhhMWU5
OGIxNTg5NDdiMDQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAt
MjY4LDcgKzI2OCw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c2VuZFJlc3BvbnNlKEZ1bmN0
aW9uPHZvaWQgKEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UmCiAgICAgICAgIC8vIExldCBi
b2R5IGJlIGEgbmV3IEpTT04gT2JqZWN0IGluaXRpYWxpc2VkIHdpdGggdGhlIGZvbGxvd2luZyBw
cm9wZXJ0aWVzOiAiZXJyb3IiLCAibWVzc2FnZSIsICJzdGFja3RyYWNlIi4KICAgICAgICAgYXV0
byBlcnJvck9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGVycm9yT2Jq
ZWN0LT5zZXRTdHJpbmcoImVycm9yIl9zLCByZXN1bHQuZXJyb3JTdHJpbmcoKSk7Ci0gICAgICAg
IGVycm9yT2JqZWN0LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIHJlc3VsdC5lcnJvck1lc3NhZ2Uo
KS52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgIGVycm9yT2JqZWN0LT5zZXRTdHJp
bmcoIm1lc3NhZ2UiX3MsIHJlc3VsdC5lcnJvck1lc3NhZ2UoKS52YWx1ZU9yKGVtcHR5U3RyaW5n
KCkpKTsKICAgICAgICAgZXJyb3JPYmplY3QtPnNldFN0cmluZygic3RhY2t0cmFjZSJfcywgZW1w
dHlTdHJpbmcoKSk7CiAgICAgICAgIC8vIElmIHRoZSBlcnJvciBkYXRhIGRpY3Rpb25hcnkgY29u
dGFpbnMgYW55IGVudHJpZXMsIHNldCB0aGUgImRhdGEiIGZpZWxkIG9uIGJvZHkgdG8gYSBuZXcg
SlNPTiBPYmplY3QgcG9wdWxhdGVkIHdpdGggdGhlIGRpY3Rpb25hcnkuCiAgICAgICAgIGlmIChh
dXRvJiBhZGRpdGlvbmFsRGF0YSA9IHJlc3VsdC5hZGRpdGlvbmFsRXJyb3JEYXRhKCkpCkBAIC02
OTUsMTIgKzY5NSwxMiBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVj
dG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgcmVz
dWx0T2JqZWN0LT5zZXRTdHJpbmcoInNlc3Npb25JZCJfcywgbV9zZXNzaW9uLT5pZCgpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGNhcGFiaWxpdGllc09iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjYXBhYmlsaXRpZXMg
PSBtX3Nlc3Npb24tPmNhcGFiaWxpdGllcygpOwotICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoImJyb3dzZXJOYW1lIl9zLCBjYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUu
dmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwotICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXRpZXMuYnJvd3NlclZlcnNp
b24udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwotICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBsYXRmb3JtTmFtZSJfcywgY2FwYWJpbGl0aWVzLnBsYXRmb3JtTmFt
ZS52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldEJvb2xlYW4oImFjY2VwdEluc2VjdXJlQ2VydHMiX3MsIGNhcGFiaWxpdGllcy5hY2Nl
cHRJbnNlY3VyZUNlcnRzLnZhbHVlX29yKGZhbHNlKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRX
aW5kb3dSZWN0LnZhbHVlX29yKHRydWUpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0
aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2
aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgeworICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoImJyb3dzZXJOYW1lIl9zLCBjYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUudmFs
dWVPcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygiYnJvd3NlclZlcnNpb24iX3MsIGNhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbi52
YWx1ZU9yKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJwbGF0Zm9ybU5hbWUiX3MsIGNhcGFiaWxpdGllcy5wbGF0Zm9ybU5hbWUudmFs
dWVPcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dEJvb2xlYW4oImFjY2VwdEluc2VjdXJlQ2VydHMiX3MsIGNhcGFiaWxpdGllcy5hY2NlcHRJbnNl
Y3VyZUNlcnRzLnZhbHVlT3IoZmFsc2UpKTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdpbmRvd1Jl
Y3QudmFsdWVPcih0cnVlKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhh
bmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZU9yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNt
aXNzQW5kTm90aWZ5KSkgewogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzczoKICAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVh
dGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgeworICAgICAgICAgICAgc3dp
dGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKFBhZ2VMb2FkU3RyYXRl
Z3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9uZToK
ICAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRT
dHJhdGVneSJfcywgIm5vbmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggNWU2
YmU3NGI4ZGE2ZDRiOTM2MDM3OTBjYTRhZDE3NmQxZjY2MmM2Ni4uZDA3NTM5YjU4YmUyZTYwYWUw
YzAwNTRkMjM2YmRiZDVhNGZiZTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTc2LDUgKzc2LDUgQEAgV0tTdHJpbmdS
ZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlP
cmlnaW4pCiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJp
dHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBs
KHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5wb3J0KCkudmFsdWVPcigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCA0Y2ViYTg4MGJk
ZDg3ZmFmOWM1ZTQxYWMwNzFmNGVmZGNmZjYwNDU4Li5kYWQxYzA1YzA2MTU4ZWU1MjVhM2U5NTdh
ZjAyM2I2MzZhM2QyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJs
ZWRCeUNsaWVudC52YWx1ZV9vcihtX2NsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9j
ZXNzUHJld2FybWluZyk7CisgICAgICAgIHJldHVybiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkQnlDbGllbnQudmFsdWVPcihtX2NsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0
aWNQcm9jZXNzUHJld2FybWluZyk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9j
ZXNzV2FybWluZ1NldEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJv
Y2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7IH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xpZW50LnZhbHVlX29y
KG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAg
ICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUNsaWVudC52YWx1ZU9y
KG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKICAg
ICB9CiAgICAgdm9pZCBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oYm9vbCBzd2FwcykgeyBt
X3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQgPSBzd2FwczsgfQogICAgIHZvaWQg
c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZlYXR1cmVzKGJvb2wg
c3dhcHMpIHsgbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJpbWVudGFsRmVhdHVy
ZXMgPSBzd2FwczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTZWN1cml0eU9yaWdpbi5tbQppbmRleCBiNzExMmNlZTE3YmRjYzI2OWJjOWY5ZTI3MWQy
NDAyZGEyMTY2ODIyLi5jNTU0M2EyMGI3MWU4Yzk3NmUyMTIyYjliNGJlYTQ4YjM3NTFmYzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9y
aWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0
eU9yaWdpbi5tbQpAQCAtNTgsNyArNTgsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNJ
bnRlZ2VyKXBvcnQKIHsKLSAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpLnBvcnQoKS52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggZDI4
N2ZkOTViZGM3OWJjOTQ4NmMzZWQ0ZjgzNmU2ZWMwMDMyMDNlYy4uOWFkOTNmYjZiNDE5Y2VjMmM0
MTQwNTZlYjAwYmQxNWJhOTI0ZmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTk0Niw3
ICs5NDYsNyBAQCAtICh2b2lkKV9zZXRDUFVMaW1pdDooZG91YmxlKWNwdUxpbWl0CiAKIC0gKGRv
dWJsZSlfY3B1TGltaXQKIHsKLSAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5jcHVMaW1p
dCgpLnZhbHVlX29yKDApOworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmNwdUxpbWl0
KCkudmFsdWVPcigwKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCBlNGQwNjVmOTE4YjM1MjA4MThkOTA2Mzc2ZmZjYTc3NjY5M2ZjMjkxLi4yZTA3
ODlkNDMwMWY4YTg4MTU5ZThiZWUwMzA2N2MxNTZhYTJmNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3Bw
CkBAIC0yMTcsNyArMjE3LDcgQEAgZ3VpbnQxNiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9w
b3J0KFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwob3JpZ2luLCAwKTsKIAotICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLT5w
b3J0KCkudmFsdWVfb3IoMCk7CisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4tPnBv
cnQoKS52YWx1ZU9yKDApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZDdkMGE2ZDQ5ODQwYWY3
MTI0MDkwYjViMjg0NThjMGIwMmNlNjE3ZC4uZDVmZGRhYjY1NjE4MDc1YTU1MTg2MmEwNTViOWJh
ZDMzN2JkNWQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTgxMyw3ICs4MTMsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBHZAogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdC
YXNlLT5wcml2OwogICAgIEFTU0VSVCghcHJpdi0+ZGlhbG9nKTsKICAgICBpZiAocGhhc2UpCi0g
ICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2
ZW50KGV2ZW50LCBwaGFzZS52YWx1ZSgpLCBtb21lbnR1bS52YWx1ZV9vcihXZWJXaGVlbEV2ZW50
OjpQaGFzZTo6UGhhc2VOb25lKSkpOworICAgICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdo
ZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldmVudCwgcGhhc2UudmFsdWUoKSwgbW9tZW50
dW0udmFsdWVPcihXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lKSkpOwogICAgIGVsc2UK
ICAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVs
RXZlbnQoZXZlbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAppbmRleCBkYmU4
Mzk3MjA5ZGExNjhkYjExOWJhZjQ2MGM1ZjJkOGI2OTVmZjNmLi4wNTkwYzU3YjI5N2RmNjM5ZDg0
NjViNjRkNWU4NzJmMDRiMzQ0NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIFNlY29uZHMgU2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1
cmF0aW9uKCkgY29uc3QKICAgICAvLyBUaGUgImNvbXB1dGUgdGhlIHRpY2sgZHVyYXRpb24iIGFs
Z29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgogICAgIFNlY29uZHMgcmVzdWx0
OwogICAgIGZvciAoYXV0byYgZW50cnkgOiBzdGF0ZXMpCi0gICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25kLmR1cmF0aW9uLnZhbHVlX29yKFNlY29uZHMoMCkpKTsK
KyAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBlbnRyeS5zZWNvbmQuZHVyYXRpb24u
dmFsdWVPcihTZWNvbmRzKDApKSk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1
OSw3ICsyNTksNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklu
cHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgICAgICBldmVudERpc3Bh
dGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaW11
bGF0ZWRJbnB1dFNvdXJjZVR5cGU6Ok1vdXNlOiB7Ci0gICAgICAgIHJlc29sdmVMb2NhdGlvbihh
LmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9y
aWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBb
dGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9u
YWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNv
bHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxv
Y2F0aW9uLCBiLm9yaWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5v
ZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUo
ZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0
aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmlu
aXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsNyBA
QCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9T
dGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgICAgICAgICAgfSBlbHNlIGlmIChhLmxvY2F0
aW9uICE9IGIubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coQXV0b21hdGlvbiwgIlNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcgTW91c2VNb3ZlIGZvciB0cmFu
c2l0aW9uIHRvICVkLiVkIiwgdGhpcywgbV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291cmNlU3Rh
dGVJbmRleCk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJw
b2xhdGUgbW91c2Vtb3ZlcyBwZXIgdGhlICJwZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0
aG0gKMKnMTcuNCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KLSAgICAgICAgICAgICAgICBtX2NsaWVu
dC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpNb3Zl
LCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZV9vcihNb3VzZUJ1dHRvbjo6Tm9CdXR0b24pLCBi
LmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91
c2VJbnRlcmFjdGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVPcihNb3VzZUJ1
dHRvbjo6Tm9CdXR0b24pLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBldmVudERp
c3BhdGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDM3MGIyMWVkNmRhMDMyMzJhYWNhZWI4MjA0ZmNiNjU3YWU2YjY5MGEuLjU3
ZGY1ZjNlMDMxODEwM2M0MmZiOWRjOWQwZGRiMTc3OGI4NmEwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0
V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGhhbmRsZSwKICAgICAg
ICAgdGhpcy0+cmVzdG9yZVdpbmRvd0ZvclBhZ2Uod2ViUGFnZSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHBhZ2UgPSBXVEZNb3ZlKHBhZ2UpLCB3aWR0aCwgaGVpZ2h0LCB4LCB5XSgp
IG11dGFibGUgewogICAgICAgICAgICAgYXV0byYgd2ViUGFnZSA9ICpwYWdlOwogICAgICAgICAg
ICAgd2ViUGFnZS5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcGFnZSA9IFdURk1vdmUocGFnZSksIHdpZHRoLCBoZWlnaHQsIHgsIHldKFdl
YkNvcmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgbmV3RnJhbWUgPSBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29y
ZTo6RmxvYXRQb2ludCh4LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS54KCkpLCB5
LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS55KCkpKSwgV2ViQ29yZTo6RmxvYXRT
aXplKHdpZHRoLnZhbHVlX29yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLndpZHRoKCkpLCBoZWlnaHQu
dmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5zaXplKCkuaGVpZ2h0KCkpKSk7CisgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNv
cmU6OkZsb2F0UG9pbnQoeC52YWx1ZU9yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS54KCkpLCB5
LnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLnkoKSkpLCBXZWJDb3JlOjpGbG9hdFNp
emUod2lkdGgudmFsdWVPcihvcmlnaW5hbEZyYW1lLnNpemUoKS53aWR0aCgpKSwgaGVpZ2h0LnZh
bHVlT3Iob3JpZ2luYWxGcmFtZS5zaXplKCkuaGVpZ2h0KCkpKSk7CiAgICAgICAgICAgICAgICAg
aWYgKG5ld0ZyYW1lICE9IG9yaWdpbmFsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHBhZ2Ut
PnNldFdpbmRvd0ZyYW1lKG5ld0ZyYW1lKTsKICAgICAgICAgICAgICAgICAKQEAgLTE4MzQsNyAr
MTgzNCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNl
cXVlbmNlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zCiAgICAgICAgICAgICBTdHJpbmcgcHJl
c3NlZEJ1dHRvblN0cmluZzsKICAgICAgICAgICAgIGlmIChzdGF0ZU9iamVjdC0+Z2V0U3RyaW5n
KCJwcmVzc2VkQnV0dG9uIl9zLCBwcmVzc2VkQnV0dG9uU3RyaW5nKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gcHJvdG9jb2xCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246Ok1vdXNlQnV0dG9uPihwcmVzc2VkQnV0dG9uU3RyaW5nKTsKLSAgICAgICAgICAg
ICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBwcm90b2NvbE1vdXNlQnV0dG9u
VG9XZWJNb3VzZUV2ZW50QnV0dG9uKHByb3RvY29sQnV0dG9uLnZhbHVlX29yKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lKSk7CisgICAgICAgICAgICAg
ICAgc291cmNlU3RhdGUucHJlc3NlZE1vdXNlQnV0dG9uID0gcHJvdG9jb2xNb3VzZUJ1dHRvblRv
V2ViTW91c2VFdmVudEJ1dHRvbihwcm90b2NvbEJ1dHRvbi52YWx1ZU9yKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uOjpOb25lKSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFj
cm9zLmgKaW5kZXggMzQ4N2ZhOTE1MmYwNDI4YTYwYTJlMjdhOTY5NzVkNjQ4MGE3NDMwNi4uOTNh
ZjVhYmM3MDhiZDU5OGYwZjQwYmNjMjk0ODUyYTM3MDUyOTdhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25NYWNyb3MuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBlcnJvck5hbWVBbmREZXRh
aWxzU2VwYXJhdG9yICI7IgogCiAvLyBNYWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJyb3IgbmFt
ZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBWQUxJREFU
RURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCisj
ZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZh
bHVlT3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRl
cm5hbEVycm9yKQogCiAvLyBJZiB0aGUgZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRoZXNl
IG1hY3JvcywgaXQgd2lsbCBiZSBhIGNvbXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUgU1RSSU5H
X0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjplcnJvck5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDg2MjA2YmFjOWRiYWNhZDY0MWMwOTJmODMyNGZkNmRmMDJlYjkyZGYuLjcyNjg4M2IzY2Y4MGY0
OGYyZGJmYTU2M2ZjOWJmN2M1NWQ1NzAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAKIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIE9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7
IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2Vydmlj
ZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQudmFsdWVfb3IoUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgfSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2
aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCBiNGUyMzk5NGFkZmM2MDg2NzI1
NDQ2YzViNjE3ZGI4MWJkMTBiNjczLi43M2Y1NWE0ODM1ZjEyODgzMWJjMzI4OGM4YWQyNTQzNzA1
NzhjMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW5pdFRpbWVPdXRUaW1lcihjb25z
dCBPcHRpb25hbDx1bnNpZ25lZD4mIHRpbWVPdXRJbk0KIHsKICAgICB1c2luZyBuYW1lc3BhY2Ug
QXV0aGVudGljYXRvck1hbmFnZXJJbnRlcm5hbDsKIAotICAgIHVuc2lnbmVkIHRpbWVPdXRJbk1z
VmFsdWUgPSBzdGQ6Om1pbihtYXhUaW1lT3V0VmFsdWUsIHRpbWVPdXRJbk1zLnZhbHVlX29yKG1h
eFRpbWVPdXRWYWx1ZSkpOworICAgIHVuc2lnbmVkIHRpbWVPdXRJbk1zVmFsdWUgPSBzdGQ6Om1p
bihtYXhUaW1lT3V0VmFsdWUsIHRpbWVPdXRJbk1zLnZhbHVlT3IobWF4VGltZU91dFZhbHVlKSk7
CiAgICAgLy8gRklYTUUoMTkyMDYxKQogICAgIExPR19FUlJPUigiU3RhcnQgdGltZXIuICVkIiwg
dGltZU91dEluTXNWYWx1ZSk7CiAgICAgbV9yZXF1ZXN0VGltZU91dFRpbWVyLnN0YXJ0T25lU2hv
dChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHRpbWVPdXRJbk1zVmFsdWUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRiMDEyNTJlYmI4ZmU5MjdjNWFh
ZjRjNTcwZGE4ZTQ1NWY4ZWNiNmQuLmFiNjFmYzI0MTY2Y2I2ZTRlZDhhZDUxNTU0ZGU2NWQzNGFh
ZDdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzA1
Niw3ICszMDU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1c3RvbURldmljZVNjYWxlRmFj
dG9yLnZhbHVlX29yKG1faW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBt
X2N1c3RvbURldmljZVNjYWxlRmFjdG9yLnZhbHVlT3IobV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZh
Y3Rvcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21EZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCBjdXN0b21TY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggY2E1MTA0ODg1YTQ2Y2VmMzAxZWU2YWIxZjM2YmVjODFlM2RlNjJjYi4uYTE1
OGIxZjcyMWVlMmIwZDliMWU0YmQzZmQ0MmIwOWU2ZjUxMzM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNjksNyArMTE2OSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCk7CiAKICAgICB2
b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwotICAgIFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52
YWx1ZV9vcihXZWJDb3JlOjpJbnRTaXplKCkpOyB9CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzLnZhbHVlT3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBm
cmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCmlu
ZGV4IGE2YjFjOTEzNmE3MDJjODMzNTI3OWQ2ZDUyZmNmNzBiN2RjNjYwZDkuLmU3NDYwMWNkMDk1
ZDc3MjRjMTZiMmU0NTI0MWRmNzZmNTgyMjMzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcApAQCAtNjksNyArNjksNyBA
QCB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjpzZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRl
eCkKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNp
Z25lZD4gaXRlbUluZGV4KQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBpdGVtSW5kZXgudmFsdWVfb3IobV9zZWxl
Y3RlZEl0ZW0udmFsdWVfb3IoLTEpKSk7CisgICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRG
b3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVlT3IobV9zZWxlY3RlZEl0ZW0udmFsdWVP
cigtMSkpKTsKIH0KIAogYm9vbCBXZWJQb3B1cE1lbnVQcm94eUd0azo6YWN0aXZhdGVJdGVtQXRQ
YXRoKEd0a1RyZWVQYXRoKiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAppbmRleCAwMWM2MDY5YTc1ODJi
ZTBmODg5YWZhYzA0NGZjZmE3MmU1ZTNkZjVhLi5lYTZjMzc3N2U1MDEzNmNjYTU4NmMzNzQwYzdj
YTRiMjk2NmU5OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVn
YWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMjg0LDggKzI4NCw4IEBAIHN0YXRp
YyB2b2lkIGVuY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50cnlEYXRhRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgSFRUUEJvCiAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAKICAgICAgICAg
ZW5jb2RlciA8PCBlbGVtZW50LmZpbGVTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50
LmZpbGVMZW5ndGgudmFsdWVfb3IoLTEpOwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVM
ZW5ndGgudmFsdWVPcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3IoV2FsbFRpbWU6Om5hbigpKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBIVFRQQm9keTo6RWxl
bWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxNjIzYjIwMDkwOGJlMjBhMjZkOTBm
MjEwMmEwYTg1ZTY2N2EzMzc5Li4zYTQwZDIwNmEwMWViZDk2MTVhMDIwODYyMWJmZjZhNTU4NDFm
MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVk
UmVzb3UKICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1l
TG9hZGVyKCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFy
YW1ldGVycyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlX29yKDApOwotICAgIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlX29y
KDApOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5w
YWdlSUQoKS52YWx1ZU9yKDApOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJh
bWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8gc2Vzc2lvbklEID0gZnJhbWVM
b2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU4ODg0NTc0MGE4OGM2NmIzMWRmN2Uy
ZTRjZDUyNjhhY2ExYzUxMmMuLmMzOThlYmUxOTk1ZTQ2ODAyN2JkYWNjZDJhYjQ5MjkyZDg5OGQ1
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0
RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogSW50UG9p
bnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMo
cG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJldHVybiBtX3Jv
b3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiBtX3Jv
b3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAgICAgCiBJbnRQb2lu
dCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdApAQCAtMTMxNSw3ICsxMzE1LDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJv
dW5kc09uU2NyZWVuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAgIEZs
b2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAgIEZs
b2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3Vu
ZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBSZWN0KGJvdW5kcyk7CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihl
bmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIApAQCAtMTMy
NSw3ICsxMzI1LDcgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9zaXplID0gcGx1Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zv
cm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9S
b290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAg
ICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cAppbmRleCBmMjgzYzcyODYzMGVkNGU0MjRkNmQwYmRkNGUyODA2ZTI4MjM0ODAyLi40MDBkODMy
NWVkZWU1N2M4ZjQ1YzY2OGY1OTFmM2VlZjBkZDFmMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4g
dG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAg
ICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZp
bGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOworICAgICAgICAg
ICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZp
bGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCA5ZjkxNzMxZjQzYmZiMTEyMjQ3NTdlZmIxMDE3ZTQ2MjVjMTQ4ZjdmLi5jODdiNjU5
NTNkN2RjMGQwZjU0NjcyN2JlYjRkNWJjZDQyYWRkYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjk5Miw3ICsyOTky
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAgICAgIG1fb2xkZXN0Tm9uU3Rh
YmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1RpbWVzdGFtcCA9IG9sZGVzdFRpbWVzdGFtcDsK
ICAgICB9CiAKLSAgICBmbG9hdCBzY2FsZVRvVXNlID0gc2NhbGVGcm9tVUlQcm9jZXNzLnZhbHVl
X29yKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIGZsb2F0IHNjYWxlVG9Vc2UgPSBz
Y2FsZUZyb21VSVByb2Nlc3MudmFsdWVPcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAg
ICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mby5leHBvc2VkQ29udGVudFJlY3QoKTsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRFeHBvc2Vk
Q29udGVudFJlY3QgPSBhZGp1c3RFeHBvc2VkUmVjdEZvck5ld1NjYWxlKGV4cG9zZWRDb250ZW50
UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5zY2FsZSgpLCBzY2FsZVRvVXNlKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkQ29udGVudFJlY3QoYWRqdXN0ZWRFeHBvc2Vk
Q29udGVudFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd3BlL0NvbXBvc2l0aW5nTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93cGUvQ29tcG9zaXRpbmdNYW5hZ2VyLmNwcAppbmRleCA5ZmIwMTA0ZGVlNzA2MTY1
NDU4NDZhMmYyMWFlMTY3Y2Y2ODJlNWJhLi5kNTE1YTBiNThlYjgyMTgzYzYwMTc2YzcwM2UyMjQx
YWUyZjhhODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
cGUvQ29tcG9zaXRpbmdNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93cGUvQ29tcG9zaXRpbmdNYW5hZ2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lk
IENvbXBvc2l0aW5nTWFuYWdlcjo6ZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJQYWdlJiB3ZWJQYWdl
KQogCiBpbnQgQ29tcG9zaXRpbmdNYW5hZ2VyOjpyZWxlYXNlQ29ubmVjdGlvbkZkKCkKIHsKLSAg
ICBpbnQgZmQgPSBtX2Nvbm5lY3Rpb25GZC52YWx1ZV9vcigtMSk7CisgICAgaW50IGZkID0gbV9j
b25uZWN0aW9uRmQudmFsdWVPcigtMSk7CiAgICAgbV9jb25uZWN0aW9uRmQgPSBXVEY6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGZkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCAwNjdmNTZj
ZGUzOTQyYzJlYTcxYjFmNGI1MmY4NzFhNWQ0NjEzY2M1Li5iNjY5NDhhMTliNTM4ZmQxMzcxNDU5
NGUwYzBkZTcyMjc4MGI0ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtODgsNyArODgs
NyBAQCAtIChOU1N0cmluZyAqKXN0cmluZ1ZhbHVlCiAKIC0gKHVuc2lnbmVkIHNob3J0KXBvcnQK
IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KS0+cG9ydCgpLnZhbHVlX29yKDApOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVPcigwKTsKIH0KIAogLy8gRklYTUU6
IE92ZXJyaWRpbmcgaXNFcXVhbDogd2l0aG91dCBvdmVycmlkaW5nIGhhc2ggd2lsbCBjYXVzZSB0
cm91YmxlIGlmIHRoaXMgZXZlciBnb2VzIGludG8gYW4gTlNTZXQgb3IgaXMgdGhlIGtleSBpbiBh
biBOU0RpY3Rpb25hcnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZiMWZjYTdkMGI0Nzc3ZjBjZDA2MDAyNDZhMTAwMC4u
NTdjYTgwZTE3M2RkOWI1MzI1ZjkyZjM0OWZhODk0ZDFhZTY0MjY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoX091dF8gdW5zaWduZWQgc2hvcnQqIHJl
c3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAg
ICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCk7CisgICAgKnJl
c3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApOwogCiAgICAgcmV0dXJu
IFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZDA2OTM5M2MzNDMyMTc5YWY3NDk0ZmQ0NWM5NjVmMGUxZTlhZGZmZS4uMWVhZDM0NGUz
YmY5NDIwZjA5YzlkYjcwNmU0NjA2MGU3YWFkNDdhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTEyLTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvbmFsOjp2
YWx1ZU9yKCkgaW5zdGVhZCBvZiBPcHRpb25hbDo6dmFsdWVfb3IoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyOTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjaGVja1VSTCk6CisKIDIwMTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICB3dGYvT3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92
ZS1hc3NpZ25tZW50IG9wZXJhdG9yIHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1v
dmVkIGZyb20KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBh
cnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCmlu
ZGV4IGY4MDg1ZDAyZGZlOTJhZWRlZGFkY2U1ZTU3Yjk0MWY2Y2Q3MWEyZDAuLmZiOWZlNjRlMzgy
M2U1NDVjMTJmMTljMWNhMDBiMDM3ZWY1ZjQxNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVVJMUGFyc2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMs
IFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMu
cG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQs
IHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwg
dXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnko
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZl
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJs
LnBvcnQoKS52YWx1ZV9vcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0
KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVy
bC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwg
dXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVl
cnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1Jl
bGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEo
cGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CisgICAgRVhQRUNUX0VRKHBh
cnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3
LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKaW5k
ZXggZjg5Mjg1M2QyOGIwMGE0NzVhNTJjNTRhZGRlOWNiNzgzZDM3MGYxMS4uZjZjM2RlYTNiM2Nk
OTZhYzcyZDkyNTgxMDQ3MzYzZjY1MjdmOTg4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnMKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3Io
MCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51
c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVy
bC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7
Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOworICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFn
bWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357839</attachid>
            <date>2018-12-20 11:39:04 -0800</date>
            <delta_ts>2018-12-20 12:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192933-20181220113900.patch</filename>
            <type>text/plain</type>
            <size>224225</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDE3NTMzYzgwNDE5NTljYTM1YTIzNzlhMzE4ODhjMGEwYTQ1MjVjLi4xMDdhZmQwMzU1NjhjNTdk
NWQxMjQzMGIzNjgxYWMwZGU5ODliMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZh
bHVlX29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dEdsaWIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6
OnNldHVwKToKKyAgICAgICAgKiBwYXJzZXIvU291cmNlQ29kZUtleS5oOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlS2V5OjpTb3VyY2VDb2RlS2V5KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmspOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0b3IgYW5kIG1vdmUt
YXNzaWdubWVudCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1ZSBiZWluZyBtb3Zl
ZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDY0ZGRiZDQzZTI4YWNiYTI3Mjk3MWU5ZjM1OGUyYjY0NDRhNWJjMmUuLjg3
NDA5OTFiNzYxODRhN2UzYTYwYjQyNGExOGYxYTVmZmRkYmJiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFkIG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9P
cHRpb25hbC5oOgorICAgICAgICAoV1RGOjpPcHRpb25hbDxUOjp2YWx1ZU9yIGNvbnN0KToKKwog
MjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0
Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0
b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUgdmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDJhYjkxMWZkZjdjYjM0NDZlNTZhZmE4ZjQ5ZmRiY2NkNTM4NTkzNTYuLjhlMDU3NmYyZmMw
NmNjNmExMDcyMjE0ZDRmNzYyZGZkMmIyYjk2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOTYg
QEAKKzIwMTgtMTItMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uYWw6OnZhbHVlT3IoKSBpbnN0ZWFkIG9mIE9wdGlvbmFsOjp2YWx1ZV9vcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5MzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6
Omhhc2ggY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2Vu
ZGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3Fs
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL1ZSRnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZSRnJhbWVEYXRhOjp1cGRhdGUpOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRp
b246OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52
YWxpZGF0ZURPTUV2ZW50cyk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFj
dGlvbnMpOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGF1c2VUYXNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
OjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpp
bXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJT
QUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAg
ICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleVJTQTo6aW1wb3J0SndrKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUFFU19HQ01NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y291bnRlclRvQ1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjYWxjdWxhdGVJdGFsaWNSYW5nZSk6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6YWRkUnVsZSk6CisgICAgICAgICogY3NzL0RP
TU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXg6OnJvdGF0ZVNlbGYpOgor
ICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01NYXRyaXhSZWFkT25seTo6dmFsaWRhdGVBbmRGaXh1cCk6CisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ291bnRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVl
cnkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlZmVycmVyUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Njcm9sbEFsaWdubWVudCk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2hh
bmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNTUyBjb25zdCk6CisgICAgICAgICogZmls
ZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAq
IGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6
dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0hUTUxPTGlzdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyb3BwZWRTb3VyY2VSZWN0
YW5nbGVXaXRoRm9ybWF0dGluZyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omlz
UG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvUGF0aDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGgyRDo6YWRkUGF0aCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4
dE1lbnUpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29u
c3RyYWludHNBZnRlckxheW91dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXBsaWNhdGVkQ2FzZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2lu
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZSk6CisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RD
b250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9NYXJnaW5U
eXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpWZXJ0aWNhbE1hcmdpbjo6dXNlZFZh
bHVlcyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbnN0cmlu
c2ljV2lkdGhDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQpOgorICAg
ICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Y29u
dGVudEJveFRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmNvbnRl
bnRCb3hMZWZ0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okl0ZXJhdG9yOjpzZXQpOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVu
ZENvbnRlbnRUb0xpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4gY29uc3QpOgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGluZyk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGFI
YXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZp
Z3VyYXRpb246OnNldFZpZXdMYXlvdXRTaXplKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjpnZXRUaW1lVG9OZXh0RXZlbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZnJlZXplQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25UaW1lcik6CisgICAg
ICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybVRocmVhZEJvZHkpOgorICAgICAg
ICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtVGhyZWFkQm9keSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OmRyYXdUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlz
cGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNlbGVj
dGlvbkFsZ29yaXRobTo6c3R5bGVEaXN0YW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzOjpjb21wdXRlV2VpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM6OmNvbXB1dGVXaWR0aCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOjpjb21wdXRlU2xv
cGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXBhcmVQbGF0Zm9ybUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVy
YnVsZW5jZTo6ZmlsbFJlZ2lvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzeW5jQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlz
aWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6Om1hcFF1YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpvbkxpbmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmlu
ZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyOjpuZXh0TG9naWNhbEJvdHRvbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXI6Om5l
eHRTaGFwZUxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFz
ZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25t
ZW50Ojphc2NlbnRGb3JDaGlsZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdy
b3d0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
aW5pdGlhbEJhc2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0aExpbWl0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2l6ZVRyYWNrVG9GaXROb25TcGFubmluZ0l0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFy
ZWFCcmVhZHRoRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pblNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxpemVUcmFja1NpemVzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dEluZm86OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpi
YXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlk
R2FwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6
Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHls
ZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2Vs
bEJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJz
dExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRP
ZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2Nr
OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6
YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjptYXgpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VW5kZXJsaW5lT2Zmc2V0OjpsZW5ndGhPciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Q29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9k
ZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJv
Y2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisKIDIwMTgtMTItMTkgIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBH
VEsgYnVpbGQgYWZ0ZXIgcjIzOTQxMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAwZjgxYzE2MWEwNzczZDli
NWFmYjJkOTkyYzEzNjRmZTA1NWE5ODg1Li4yN2Y1MjViNzQ2OGZkMzY5YjczNmFmMThjNzRkZDU4
M2VmYmJhOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTEyLTIwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvbmFsOjp2
YWx1ZU9yKCkgaW5zdGVhZCBvZiBPcHRpb25hbDo6dmFsdWVfb3IoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyOTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkRyaXZlcjo6U2Vzc2lvbjo6aGFuZGxlVW5leHBlY3RlZEFsZXJ0T3Blbik6CisgICAgICAg
IChXZWJEcml2ZXI6OlNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJEcml2
ZXI6OmJ1aWx0QXV0b21hdGlvbkNvb2tpZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246
OnRha2VTY3JlZW5zaG90KToKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6c2VuZFJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbik6CisKIDIw
MTgtMTItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3dGYv
T3B0aW9uYWwuaDogbW92ZS1jb25zdHJ1Y3RvciBhbmQgbW92ZS1hc3NpZ25tZW50IG9wZXJhdG9y
IHNob3VsZCBkaXNlbmdhZ2UgdGhlIHZhbHVlIGJlaW5nIG1vdmVkIGZyb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
M2YyN2E5NjVjYzZjM2UyZDI3MjliZGY1MDZlNjI5ZTUyNjdhODgyNS4uYTAzZjU0YjgxNDNhYjc1
NDNkMTAxZGFjNDgwM2NmODE5ZjYwYWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAx
OC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBP
cHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZhbHVlX29yKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjkzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkdldFBv
cnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tOgor
ICAgICAgICAoLVtXS1NlY3VyaXR5T3JpZ2luIHBvcnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX2NwdUxpbWl0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X3BvcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXRLZXlGcmFtZTo6bWF4aW11bUR1cmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0
cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbml0VGltZU91
dFRpbWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eUd0azo6YWN0aXZhdGVJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuY29k
ZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmll
dyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93
cGUvQ29tcG9zaXRpbmdNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdN
YW5hZ2VyOjpyZWxlYXNlQ29ubmVjdGlvbkZkKToKKwogMjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0
cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUg
dmFsdWUgYmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGVi
MWQxMTAwODg1ODQzZDAyZjQ0NjFiODIxNzVjNTEyNjBkYTVhOTguLjZmNTBiMjc3ZGQzODc3ZmU1
YjI2NzliOWFlY2U5YmFhMDg1YTZiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6
OnZhbHVlX29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dl
YlNlY3VyaXR5T3JpZ2luIHBvcnRdKToKKwogMjAxOC0xMi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIHd0Zi9PcHRpb25hbC5oOiBtb3ZlLWNvbnN0cnVjdG9y
IGFuZCBtb3ZlLWFzc2lnbm1lbnQgb3BlcmF0b3Igc2hvdWxkIGRpc2VuZ2FnZSB0aGUgdmFsdWUg
YmVpbmcgbW92ZWQgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGY2YzEyNmI3
MjEzNzMzOTcyN2IyNmYzMzlmMDk4YjI3M2ZiZWZjZDcuLjViNmEyOTkzNTVmZTc0NmRjNDU3ODE2
NTU1YzMyMGI4OWQ2YjFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBPcHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZhbHVl
X29yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjkzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQp
OgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0b3IgYW5kIG1vdmUtYXNzaWdubWVudCBv
cGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1ZSBiZWluZyBtb3ZlZCBmcm9tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCmluZGV4
IDg3MjE1YzMzYWU1OTIzYzE1YTVjZDRkZTZmMmMzODlmYjIyYjE1NDguLjJmYWZhMTIxMWJjZmRk
NDdjMWY2MDQwMWE2YTMzMzM2ZDNhYzhjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29h
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
LCBib29sIGF1dG9tYXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRp
ZmllcigpLnZhbHVlX29yKDApOworICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0aGlz
LT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKTsKICAgICAKICAgICByZWYoKTsKICAgICBk
aXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0R2xpYi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldEdsaWIuY3BwCmluZGV4IDNiNWM2ODE1NTVhMGJmZmYyMDNmNjk3ZTQ5ODUy
MjgyMGFkOWZlNWQuLjVkZGU4ODgwOWIyNTQxZjMzMmEyMDVkZWMwYWRkZjVlZTUwM2NjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0R2xpYi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRHbGliLmNwcApA
QCAtNDksNyArNDksNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9v
bCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgIGlmICghbV90YXJn
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCk7CisgICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwog
CiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xBbGxvd2VkKCkp
IHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJn
ZXRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
S2V5LmgKaW5kZXggMmIwM2FhNTAyODczMDUwMzJlMWIyZTRhMGQwNjU4Njk5YjU3NTJiNS4uYThl
NjAzYzI2YTBiNjAzNjJhMDJkZWFjMDUxNjE2OWQ1NzU1ODAyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fZmxhZ3MoY29kZVR5cGUsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCBkZWJ1Z2dlck1vZGUsIHR5cGVQcm9maWxlckVuYWJsZWQsIGNvbnRy
b2xGbG93UHJvZmlsZXJFbmFibGVkKQotICAgICAgICAgICAgLCBtX2Z1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24oZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbi52YWx1ZV9vcigtMSkpCisgICAgICAgICAgICAsIG1fZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLnZhbHVlT3IoLTEpKQogICAgICAgICAgICAgLCBtX2hhc2goc291cmNlQ29kZS5oYXNo
KCkgXiBtX2ZsYWdzLmJpdHMoKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGM1NzA4YmNiYTRhNThhMDgwM2Y2NDI5YzJmNzU4M2M5ZGIyNzI1N2MuLjJkYzBhZTcxZmFlMzdk
MmZiMWEyNTE2YWU2YmNjYjliZjA3OTczNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTQxMiw3
ICs0MTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iagogCiAgICAgYm9vbCBoYXNTdGFydCA9
ICEhbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CiAgICAgaWYgKGhh
c1N0YXJ0KSB7Ci0gICAgICAgIGF1dG8gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJ
bmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZS52YWx1ZV9vcigwKTsKKyAgICAgICAg
YXV0byBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1vZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVu
Y3Rpb25JbmRleFNwYWNlLnZhbHVlT3IoMCk7CiAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4
U3BhY2Uoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UpOwogICAgICAgICBjb25zdCBXYXNtOjpTaWdu
YXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0
dXJlSW5kZXgpOwogICAgICAgICAvLyBUaGUgc3RhcnQgZnVuY3Rpb24gbXVzdCBub3QgdGFrZSBh
bnkgYXJndW1lbnRzIG9yIHJldHVybiBhbnl0aGluZy4gVGhpcyBpcyBlbmZvcmNlZCBieSB0aGUg
cGFyc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9X
VEYvd3RmL09wdGlvbmFsLmgKaW5kZXggYTYwNWJlMDE5NDZhMGVjOWIwZjUyMTlmYjBmMGQwNjUy
ZjAzZmJiYS4uNmQ0ZTI0MjZiNzQ1ZDkyN2I1YjRlNjZkZDU1YmEzYzY4ZGJkNDc4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25hbC5oCkBAIC01NTcsMjYgKzU1NywxMiBAQCBwdWJsaWM6CiAgICAgcmV0dXJuICp0aGlzID8g
Kip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxW
Pih2KSk7CiAgIH0KIAotICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuCi0gIHRlbXBsYXRlIDxjbGFz
cyBWPgotICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QmCi0gIHsKLSAgICByZXR1
cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhw
cl9mb3J3YXJkPFY+KHYpKTsKLSAgfQotCiAgIHRlbXBsYXRlIDxjbGFzcyBWPgogICBPUFRJT05B
TF9NVVRBQkxFX0NPTlNURVhQUiBUIHZhbHVlT3IoViYmIHYpICYmCiAgIHsKICAgICByZXR1cm4g
KnRoaXMgPyBkZXRhaWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4o
KnRoaXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNv
bnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKICAgfQogCi0gIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4K
LSAgdGVtcGxhdGUgPGNsYXNzIFY+Ci0gIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQgdmFs
dWVfb3IoViYmIHYpICYmCi0gIHsKLSAgICByZXR1cm4gKnRoaXMgPyBkZXRhaWxfOjpjb25zdGV4
cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRhaW5lZF92YWwoKSkg
OiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsK
LSAgfQotCiAjIGVsc2UKIAogICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KQEAgLTU4NSwxMyArNTcxLDYg
QEAgcHVibGljOgogICAgIHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8
VD4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOwogICB9CiAKLSAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KLSAgY29uc3RleHByIFQgdmFsdWVf
b3IoViYmIHYpIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxf
Ojpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKLSAgfQotCiAj
IGVuZGlmCiAKICAgLy8gMjAuNi4zLjYsIG1vZGlmaWVycwpAQCAtNjk5LDcgKzY3OCw3IEBAIHB1
YmxpYzoKICAgfQogCiAgIHRlbXBsYXRlIDxjbGFzcyBWPgotICBjb25zdGV4cHIgdHlwZW5hbWUg
c3RkOjpkZWNheTxUPjo6dHlwZSB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgY29uc3RleHByIHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUgdmFsdWVPcihWJiYgdikgY29uc3QKICAgewogICAg
IHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8dHlwZW5hbWUgc3RkOjpk
ZWNheTxUPjo6dHlwZT4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOwogICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCAxNTZk
MDg2MDJjNDRkOTNiNTVlZmM1ZmVhYTdlNDkyYzY0MDk4ZjFhLi5lYTQ0ZDVmOGUxNDk4NzQ2N2Q2
ZjJlOTEyODQ3YmMxODVlZDcwMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQoVVJMJiYgdmFsaWRhdGlvblVSTCkKIAogc3RhdGlj
IFJlZjxQYXltZW50QWRkcmVzcz4gY29udmVydChjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0
JiBjb250YWN0KQogewotICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNvbnRhY3Qu
Y291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29yKFZlY3RvcjxTdHJpbmc+
KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29udGFj
dC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCksIGNv
bnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7CisgICAgcmV0dXJuIFBh
eW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwgY29udGFjdC5hZGRyZXNz
TGluZXMudmFsdWVPcihWZWN0b3I8U3RyaW5nPigpKSwgY29udGFjdC5hZG1pbmlzdHJhdGl2ZUFy
ZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxpdHksIGNvbnRhY3QucG9zdGFs
Q29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXplZE5hbWUsIGNvbnRhY3Qu
cGhvbmVOdW1iZXIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25z
dCBQYXltZW50JiBwYXltZW50KQogICAgIEFTU0VSVCghbV9pc1VwZGF0aW5nKTsKIAogICAgIGF1
dG8gYXBwbGVQYXlQYXltZW50ID0gcGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKCkp
OwotICAgIGF1dG8gc2hpcHBpbmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29u
dGFjdC52YWx1ZV9vcihBcHBsZVBheVBheW1lbnRDb250YWN0KCkpOworICAgIGF1dG8gc2hpcHBp
bmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdC52YWx1ZU9yKEFwcGxl
UGF5UGF5bWVudENvbnRhY3QoKSk7CiAgICAgYXV0byBkZXRhaWxzRnVuY3Rpb24gPSBbYXBwbGVQ
YXlQYXltZW50ID0gV1RGTW92ZShhcHBsZVBheVBheW1lbnQpXShKU0M6OkV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlKSB7CiAgICAgICAgIHJldHVybiB0b0pTRGljdGlvbmFyeShleGVjU3RhdGUsIGFwcGxl
UGF5UGF5bWVudCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCAzOTJhMzdjNjM2YTg1
NjNhODY1ODAwNjA1ZmIwOWIyOTA4ZGY1NTJhLi40YmVhOWEwMDg0YmVlNjg3MzI5OGRkMzRiZWEz
N2EwNGVhYTY5ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWkKIAogICAgICAgICAgICAgICAgIC8vIDguOS41LiBSdW4gdGhl
IFVwZGF0ZSBFeHBpcmF0aW9uIGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIGV4
cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgICAgICAvLyBUaGlzIG11c3QgYmUgcnVuLCBhbmQg
TmFOIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBDRE0gaW5zdGFuY2UgZG9lc24ndCBwcm92
aWRlIG9uZS4KLSAgICAgICAgICAgICAgICB1cGRhdGVFeHBpcmF0aW9uKGV4cGlyYXRpb24udmFs
dWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkpOworICAgICAg
ICAgICAgICAgIHVwZGF0ZUV4cGlyYXRpb24oZXhwaXJhdGlvbi52YWx1ZU9yKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpKTsKIAogICAgICAgICAgICAgICAgIC8vIDgu
OS42LiBJZiBtZXNzYWdlIGlzIG5vdCBudWxsLCBydW4gdGhlIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2
ZW50IGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIG1lc3NhZ2UgdHlwZSBhbmQg
bWVzc2FnZS4KICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5k
ZXggZjQyYTlmOWQ4MDE0ZDg3MWQ3M2ViOTU4ODE5MGNjMGJiYjhiN2MxMy4uZTZlYjRiZjA3MWIx
ZjY0YmJkZDZhZGFmMTFmNWRmNDdiNmUwYjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVQcm90b2NvbEhhc2gg
PSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLnByb3RvY29sKTsKICAgICAgICAg
dW5zaWduZWQgbWFpbkZyYW1lSG9zdEhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1l
T3JpZ2luLmhvc3QpOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzhdID0g
eyBuYW1lSGFzaCwgc2Vzc2lvbklESGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hv
c3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1ZV9vcigwKSwgbWFpbkZyYW1lUHJvdG9j
b2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZV9v
cigwKSB9OworICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbOF0gPSB7IG5hbWVIYXNoLCBzZXNz
aW9uSURIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3Blbmlu
Z09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1l
SG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVPcigwKSB9OwogICAgICAgICBy
ZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29k
ZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAppbmRleCA5NzRjNTM0NzlhOTMzNzc2YWUxZmY5YjVhZmNiYWM3MWMzMDhmYWZl
Li5lYTFmODQ5NzY0NzhjMjg3NDdkNzY3ZTViNGM3Y2M2YjUxMjFmMDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNzksNyArNzks
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIGlmICh2ZXJzaW9uICYmICF2ZXJzaW9u
LnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0
b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhIHZlcnNpb24gb2YgMCJfcyB9OwogCi0gICAgcmV0dXJu
IG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLnZhbHVlX29yKDApKTsKKyAgICBy
ZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVPcigwKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3Blbklu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdWludDY0X3QgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGI1OTM3YzcyOTQ0NGUwOTFl
NmY3NzI3MDI5OTM2ODM0YjYwOGNmMTYuLjZhN2YxNDZjYTFjNGQ3ZTUxNWExNTQ4NTFkZjliZDM3
YTA1M2QxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgTWVkaWFT
dHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxNZWRpYVRyYWNrQ29u
c3RyYWludHM+JiBjCiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX3Byb21p
c2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLT5tX3Byb21pc2UtPnJl
c29sdmUoKTsKLSAgICAgICAgd2Vha1RoaXMtPm1fY29uc3RyYWludHMgPSBjb25zdHJhaW50cy52
YWx1ZV9vcihNZWRpYVRyYWNrQ29uc3RyYWludHMgeyB9KTsKKyAgICAgICAgd2Vha1RoaXMtPm1f
Y29uc3RyYWludHMgPSBjb25zdHJhaW50cy52YWx1ZU9yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7
IH0pOwogICAgIH07CiAgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlh
Q29uc3RyYWludHMoY29uc3RyYWludHMpLCBXVEZNb3ZlKHN1Y2Nlc3NIYW5kbGVyKSwgV1RGTW92
ZShmYWlsdXJlSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggM2YyNmU2NWU1ODcyY2JjYWQ5YmQy
ODMwNjk0Yzk3ZGY4YjM2ZmE1NC4uNTNkZGMxMmEyMzk3YTBkMTYyODMxNTc4YjM0ZDFhNzIxODAz
NzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZTZW5kZXIuY3BwCkBAIC03OSw4ICs3OSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RU
TUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8aW50PiBkdXJhdGlv
CiAgICAgaWYgKGludGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAudmFsdWUoKSA8IG1pbkludGVy
VG9uZUdhcE1zKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAot
ICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbi52YWx1ZV9vcihkZWZhdWx0VG9uZUR1cmF0aW9uTXMp
OwotICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlX29yKGRlZmF1bHRJbnRl
clRvbmVHYXBNcyk7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVsdFRv
bmVEdXJhdGlvbk1zKTsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZU9y
KGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4
RXJyb3IgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTk3Nzk4MDY3ZGJiZDhkNGQ5N2RmYzg1ZWIxNjUw
ZDUyM2M4MzdlYy4uNTA5MWM4MzQxYWRjZDkxYWEwMjAxOTdhNGE5Yzg0NmIyZWRhY2I2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBl
bHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhv
cml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZh
bHVlX29yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
Y2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3Vt
ZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNl
LT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvVlJGcmFtZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKaW5kZXgg
YjIxNWI1NWZjNmMwMzFiMDdkNjljNzJkNWZhMGQ5ZTVlYmE3MWMwYy4uYTdjN2RiOWQ2MzAwN2Yx
YjA0M2ZmYTM3YmM1NzhjZmI3NGFkM2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9WUkZyYW1lRGF0YS5jcHAKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIFZSRnJhbWVEYXRh
Ojp1cGRhdGUoY29uc3QgVlJQbGF0Zm9ybVRyYWNraW5nSW5mbyYgdHJhY2tpbmdJbmZvLCBjb25z
dCBWUkV5ZQogICAgIG1fdGltZXN0YW1wID0gdHJhY2tpbmdJbmZvLnRpbWVzdGFtcDsKICAgICBt
X3Bvc2UtPnVwZGF0ZSh0cmFja2luZ0luZm8pOwogCi0gICAgYXV0byByb3RhdGlvbk1hdHJpeCA9
IHJvdGF0aW9uTWF0cml4RnJvbVF1YXRlcm5pb24odHJhY2tpbmdJbmZvLm9yaWVudGF0aW9uLnZh
bHVlX29yKFZSUGxhdGZvcm1UcmFja2luZ0luZm86OlF1YXRlcm5pb24oMCwgMCwgMCwgMSkpKTsK
LSAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24gPSB0cmFja2luZ0luZm8ucG9zaXRpb24udmFsdWVf
b3IoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKKyAgICBhdXRvIHJvdGF0aW9uTWF0cml4ID0gcm90
YXRpb25NYXRyaXhGcm9tUXVhdGVybmlvbih0cmFja2luZ0luZm8ub3JpZW50YXRpb24udmFsdWVP
cihWUlBsYXRmb3JtVHJhY2tpbmdJbmZvOjpRdWF0ZXJuaW9uKDAsIDAsIDAsIDEpKSk7CisgICAg
RmxvYXRQb2ludDNEIHBvc2l0aW9uID0gdHJhY2tpbmdJbmZvLnBvc2l0aW9uLnZhbHVlT3IoRmxv
YXRQb2ludDNEKDAsIDAsIDApKTsKICAgICByb3RhdGlvbk1hdHJpeC50cmFuc2xhdGUzZCgtcG9z
aXRpb24ueCgpLCAtcG9zaXRpb24ueSgpLCAtcG9zaXRpb24ueigpKTsKIAogICAgIG1fbGVmdFZp
ZXdNYXRyaXggPSByb3RhdGlvbk1hdHJpeDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IGZjYmEyNWNiZWM1ZjAxZTVkN2M0YzBiZGNkNTI3
ZGU5MmE2NDY5YWQuLjYyNWQ0ZjBmNTc0MDU5OWY0MmNiZmNhMzJmNzAzNDM4NzlmOTBlZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAt
NDYwLDcgKzQ2MCw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICAgICAg
YXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gcHJldmlvdXNseVJ1bm5pbmdUcmFu
c2l0aW9uLT50YXJnZXRTdHlsZSgpOwogICAgICAgICAgICAgICAgIGRvdWJsZSB0cmFuc2Zvcm1l
ZFByb2dyZXNzID0gMTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZWZmZWN0ID0gcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkKLSAgICAgICAgICAgICAgICAgICAgdHJh
bnNmb3JtZWRQcm9ncmVzcyA9IGVmZmVjdC0+aXRlcmF0aW9uUHJvZ3Jlc3MoKS52YWx1ZV9vcih0
cmFuc2Zvcm1lZFByb2dyZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRQcm9n
cmVzcyA9IGVmZmVjdC0+aXRlcmF0aW9uUHJvZ3Jlc3MoKS52YWx1ZU9yKHRyYW5zZm9ybWVkUHJv
Z3Jlc3MpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA9
IHN0ZDo6bWF4KHN0ZDo6bWluKCgodHJhbnNmb3JtZWRQcm9ncmVzcyAqIHByZXZpb3VzbHlSdW5u
aW5nVHJhbnNpdGlvbi0+cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcigpKSArICgxIC0gcHJldmlv
dXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5yZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkpKSwgMS4w
KSwgMC4wKTsKICAgICAgICAgICAgICAgICBhdXRvIGRlbGF5ID0gbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLT5kZWxheSgpIDwgMCA/IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5k
ZWxheSgpKSAqIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgOiBTZWNvbmRzKG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSk7CiAgICAgICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9
IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVyc2lu
Z1Nob3J0ZW5pbmdGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAwYzIwYzUyODdjYjUzYTIwZTkwYTNhOGIzMjJlNGQy
MTIyNmU3ZTg4Li43NmM4M2I0MmU0Mjg5NjczZGFhOTQwMGRiNDljZTQ4NjAyNjExZGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAK
QEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpjYW5jZWwoKQog
ewogICAgIGF1dG8gY2FuY2VsYXRpb25UaW1lID0gMF9zOwogICAgIGlmIChhdXRvIGFuaW1hdGlv
bkVmZmVjdCA9IGVmZmVjdCgpKQotICAgICAgICBjYW5jZWxhdGlvblRpbWUgPSBhbmltYXRpb25F
ZmZlY3QtPmFjdGl2ZVRpbWUoKS52YWx1ZV9vcigwX3MpOworICAgICAgICBjYW5jZWxhdGlvblRp
bWUgPSBhbmltYXRpb25FZmZlY3QtPmFjdGl2ZVRpbWUoKS52YWx1ZU9yKDBfcyk7CiAKICAgICBX
ZWJBbmltYXRpb246OmNhbmNlbCgpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyhTZWNvbmRzIGVsYXBzZWRUaW1lKQog
ICAgIGlmIChpc1BlbmRpbmcgJiYgbV93YXNQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGl0ZXJhdGlvbiA9IGFuaW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+Y3Vy
cmVudEl0ZXJhdGlvbigpLnZhbHVlX29yKDApIDogMDsKKyAgICBhdXRvIGl0ZXJhdGlvbiA9IGFu
aW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+Y3VycmVudEl0ZXJhdGlvbigpLnZhbHVl
T3IoMCkgOiAwOwogICAgIGF1dG8gY3VycmVudFBoYXNlID0gYW5pbWF0aW9uRWZmZWN0ID8gYW5p
bWF0aW9uRWZmZWN0LT5waGFzZSgpIDogcGhhc2VXaXRob3V0RWZmZWN0KCk7CiAKICAgICBib29s
IHdhc0FjdGl2ZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3Q6OlBoYXNlOjpB
Y3RpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRl
eCAxZTY0NjJkM2I4YTI5ZGIxOTc5YmJjYzVkNTYzZDJjMTc2ZWIwYzg4Li4xM2RiY2QwZmQxMzM5
NzljOTIzNTFjZmIwNDYwZDk4MjExYTczMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29tcHV0ZU1pc3NpbmdLZXlmcmFtZU9mZnNldHMoVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQ
YXJzZWRLZQogICAgIC8vIHRoYXQgYSBrZXlmcmFtZSBoYXNuJ3QgaGFkIGEgY29tcHV0ZWQgb2Zm
c2V0IGJ5IGNoZWNraW5nIGlmIGl0IGhhcyBhIG51bGwgb2Zmc2V0IGFuZCBhIDAgY29tcHV0ZWRP
ZmZzZXQsIHNpbmNlIHRoZSBmaXJzdAogICAgIC8vIGtleWZyYW1lIHdpbGwgYWxyZWFkeSBoYXZl
IGEgMCBjb21wdXRlZE9mZnNldC4KICAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDoga2V5ZnJhbWVz
KQotICAgICAgICBrZXlmcmFtZS5jb21wdXRlZE9mZnNldCA9IGtleWZyYW1lLm9mZnNldC52YWx1
ZV9vcigwKTsKKyAgICAgICAga2V5ZnJhbWUuY29tcHV0ZWRPZmZzZXQgPSBrZXlmcmFtZS5vZmZz
ZXQudmFsdWVPcigwKTsKIAogICAgIC8vIDIuIElmIGtleWZyYW1lcyBjb250YWlucyBtb3JlIHRo
YW4gb25lIGtleWZyYW1lIGFuZCB0aGUgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IG9mIHRoZSBm
aXJzdCBrZXlmcmFtZSBpbiBrZXlmcmFtZXMgaXMgbnVsbCwKICAgICAvLyAgICBzZXQgdGhlIGNv
bXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiB0aGUgZmlyc3Qga2V5ZnJhbWUgdG8gMC4KQEAgLTEz
MTQsNyArMTMxNCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9ucygpCiAgICAgYXV0byogY29tcG9zaXRlZFJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKTsKIAogICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSBj
b2RlIHdlIHVzZSBhIGRlZmF1bHQgb2YgMHMgZm9yIGFuIHVucmVzb2x2ZWQgY3VycmVudCB0aW1l
IHNpbmNlIGZvciBhIFN0b3AgYWN0aW9uIHRoYXQgaXMgYWNjZXB0YWJsZS4KLSAgICBhdXRvIHRp
bWVPZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRpbWUoKS52YWx1ZV9vcigwX3MpLnNlY29u
ZHMoKSAtIGRlbGF5KCkuc2Vjb25kcygpOworICAgIGF1dG8gdGltZU9mZnNldCA9IGFuaW1hdGlv
bigpLT5jdXJyZW50VGltZSgpLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkgLSBkZWxheSgpLnNlY29u
ZHMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogcGVuZGluZ0FjY2VsZXJhdGVk
QWN0aW9ucykgewogICAgICAgICBzd2l0Y2ggKGFjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA2N2U5ODEyZGY0MWQxMWE3ZjJiYTM0MzhlZjVm
N2U4MDBkYjFiMmNiLi4zMzhjY2EzZGEzY2NjYTRjZjg0NTY5NTNjNDY4YmJhNjQ4OThiZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtOTE3LDcgKzkx
Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAv
LyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRpbmcgcmVhZHlUaW1lIHZhbHVlIGNhbiBiZSBudWxs
LiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMrKzE3IGFuZAogICAgICAgICAvLyBDKysxNCBidWls
ZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3MgT3B0aW9uYWwpIGFuZCBhdm9pZCBudWxsIE9wdGlv
bmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAgLy8gYnkgZGVmYXVsdGluZyB0byBhIFNlY29uZHMo
MCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2
MTg5LgotICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZV9vcigwX3Mp
OworICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZU9yKDBfcyk7CiAg
ICAgICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAgIG5ld1N0YXJ0VGltZSAtPSBt
X2hvbGRUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZTsKICAgICAgICAgLy8gMy4gU2V0IHRo
ZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiB0byBuZXcgc3RhcnQgdGltZS4KQEAgLTkyOCw3ICs5
MjgsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1BsYXlUYXNrKCkKICAgICB9IGVs
c2UgaWYgKG1fc3RhcnRUaW1lICYmIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSkgewogICAgICAgICAv
LyBJZiBhbmltYXRpb24ncyBzdGFydCB0aW1lIGlzIHJlc29sdmVkIGFuZCBhbmltYXRpb24gaGFz
IGEgcGVuZGluZyBwbGF5YmFjayByYXRlLAogICAgICAgICAvLyAxLiBMZXQgY3VycmVudCB0aW1l
IHRvIG1hdGNoIGJlIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyAocmVhZHkgdGltZSAtIHN0YXJ0
IHRpbWUpIMOXIHBsYXliYWNrIHJhdGUgZm9yIGFuaW1hdGlvbi4KLSAgICAgICAgYXV0byBjdXJy
ZW50VGltZVRvTWF0Y2ggPSAocmVhZHlUaW1lLnZhbHVlX29yKDBfcykgLSBtX3N0YXJ0VGltZS52
YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lVG9NYXRj
aCA9IChyZWFkeVRpbWUudmFsdWVPcigwX3MpIC0gbV9zdGFydFRpbWUudmFsdWUoKSkgKiBtX3Bs
YXliYWNrUmF0ZTsKICAgICAgICAgLy8gMi4gQXBwbHkgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0
ZSBvbiBhbmltYXRpb24uCiAgICAgICAgIGFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpOwogICAg
ICAgICAvLyAzLiBJZiBhbmltYXRpb24ncyBwbGF5YmFjayByYXRlIGlzIHplcm8sIGxldCBhbmlt
YXRpb24ncyBob2xkIHRpbWUgYmUgY3VycmVudCB0aW1lIHRvIG1hdGNoLgpAQCAtOTM2LDcgKzkz
Niw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAg
ICAgbV9ob2xkVGltZSA9IGN1cnJlbnRUaW1lVG9NYXRjaDsKICAgICAgICAgLy8gNC4gTGV0IG5l
dyBzdGFydCB0aW1lIGJlIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyByZWFkeSB0aW1lIC0gY3Vy
cmVudCB0aW1lIHRvIG1hdGNoIC8gcGxheWJhY2sgcmF0ZSBmb3IgYW5pbWF0aW9uLgogICAgICAg
ICAvLyBJZiB0aGUgcGxheWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgbmV3IHN0YXJ0IHRpbWUgYmUg
c2ltcGx5IHJlYWR5IHRpbWUuCi0gICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1l
LnZhbHVlX29yKDBfcyk7CisgICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1lLnZh
bHVlT3IoMF9zKTsKICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgbmV3
U3RhcnRUaW1lIC09IGN1cnJlbnRUaW1lVG9NYXRjaCAvIG1fcGxheWJhY2tSYXRlOwogICAgICAg
ICAvLyA1LiBTZXQgdGhlIHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9uIHRvIG5ldyBzdGFydCB0aW1l
LgpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQYXVz
ZVRhc2soKQogICAgICAgICAvLyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRpbmcgcmVhZHlUaW1l
IHZhbHVlIGNhbiBiZSBudWxsLiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMrKzE3IGFuZAogICAg
ICAgICAvLyBDKysxNCBidWlsZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3MgT3B0aW9uYWwpIGFu
ZCBhdm9pZCBudWxsIE9wdGlvbmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAgLy8gYnkgZGVmYXVs
dGluZyB0byBhIFNlY29uZHMoMCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2MTg5LgotICAgICAgICBtX2hvbGRUaW1lID0gKHJlYWR5VGltZS52
YWx1ZV9vcigwX3MpIC0gYW5pbWF0aW9uU3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1Jh
dGU7CisgICAgICAgIG1faG9sZFRpbWUgPSAocmVhZHlUaW1lLnZhbHVlT3IoMF9zKSAtIGFuaW1h
dGlvblN0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOwogICAgIH0KIAogICAgIC8v
IDMuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgb24gYW5pbWF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggOTk5ODEwODViNTUwNWM3NDVjOTc1YTZkOTdhYmM1OGNlYWUxYzVmOS4uNzJmZjdjYTVj
OTRiNTAyYWYzNzE5NjcyMmI4ZGMzMzE1OTQ5NWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjYyLDcgKzEy
NjIsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShmaWxlLnVybCgpKTsKICAgICAgICAgd3Jp
dGUoZmlsZS50eXBlKCkpOwogICAgICAgICB3cml0ZShmaWxlLm5hbWUoKSk7Ci0gICAgICAgIHdy
aXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oZmlsZS5sYXN0TW9kaWZpZWRPdmVycmlkZSgpLnZhbHVl
X29yKC0xKSkpOworICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGZpbGUubGFzdE1v
ZGlmaWVkT3ZlcnJpZGUoKS52YWx1ZU9yKC0xKSkpOwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCAwMmIyMTcxMWU3ZmJlNGJmZjI0YWQyODE2MGUz
NTMxNmE2ZmQ3MWYyLi40YmZiNGVmYjhlMDU3YWI2ZDk3ZGEyMTFjYjhjN2E5OTdiOTY0OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhN
QUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRl
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlI
TUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1
ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmIGRhdGEsIGNvbnMKICAgICBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gcmVzdWx0OwogICAgIHN3
aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAg
cmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52
YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcoaG1hY1BhcmFtZXRlcnMubGVuZ3Ro
LnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6
Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewogICAgICAgICBhdXRv
IGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGNv
bnN0IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRh
JiYgZGF0YSwgY29ucwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1h
Y1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGht
YWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+
KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlw
dC5jcHAKaW5kZXggM2NjYzFlNmRjNTA4NjUwZjI2NzU1YWEwN2RhZDE2ZmE4NTZlZmQyYS4uZmZi
YzkzYzkxZTk1YmMwOWEwZGNlNTdhZDdkZTUxNTlhNDZlNmRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRl
eHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGtleS5rZXkoKSwgcGFyYW1l
dGVycy5pdlZlY3RvcigpLCBwbGFpblRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0
b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBs
YWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRh
Z0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRw
dXQpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0CiAKIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1E
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkK
IHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJz
Lml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3Io
KSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1
dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhl
clRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdM
ZW5ndGgudmFsdWVPcigwKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0Ny
eXB0LmNwcAppbmRleCBjNjQyY2E2OGYzZmVmZTE2NTVmNzliNGJhNTg0ZWMzMDc3YzVmYjI2Li5k
ZmM1YmE0ZDliZTBkZmU5ZGEyMjU0ZmUyODU1ODMzNTFkOTI1NDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0zMTMs
NyArMzEzLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtp
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFs
dWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlB1YmxpYywgcGxhdGZvcm1LZXkucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFz
aC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlw
dG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVz
YWdlcykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBr
Y3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtNDA4LDcgKzQw
OCw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBl
OjpQcml2YXRlLCBwbGF0Zm9ybUtleS5yZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZh
bHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhw
b3J0U3BraSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlSU0EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNB
LmNwcAppbmRleCA3M2RlNTFhZWIyMTRlMTY0ZTE3ZmQ1MGFmODBmNDM4ZGZiMzliYmZhLi5lYzA2
NzczYzQ0OWE3NDQ3NzZmZjYzNzJiZmEzMTRhYjJjYjcwY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVmUHRyPENy
eXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBhbGdvcml0aG0KICAgICAgICAgLy8gaW1wb3J0IHB1YmxpYyBrZXkKICAgICAgICAgYXV0
byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVi
bGljKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpKTsKICAgICAgICAgLy8gTm90
aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xk
ZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0
LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZh
bHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHVibGlj
S2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJldHVybiBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIC8vIGltcG9ydCBwcml2YXRlIGtleQpAQCAtNjgs
NyArNjgsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgIGlmIChrZXlEYXRhLnAuaXNO
dWxsKCkgJiYga2V5RGF0YS5xLmlzTnVsbCgpICYmIGtleURhdGEuZHAuaXNOdWxsKCkgJiYga2V5
RGF0YS5kcC5pc051bGwoKSAmJiBrZXlEYXRhLnFpLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8g
cHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2
YXRlKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVF
eHBvbmVudCkpOwogICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZl
Y3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhh
c2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnBy
aXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKICAgICBp
ZiAoa2V5RGF0YS5wLmlzTnVsbCgpIHx8IGtleURhdGEucS5pc051bGwoKSB8fCBrZXlEYXRhLmRw
LmlzTnVsbCgpIHx8IGtleURhdGEuZHEuaXNOdWxsKCkgfHwga2V5RGF0YS5xaS5pc051bGwoKSkK
QEAgLTg4LDcgKzg4LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBv
cnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICBpZiAoIWtleURh
dGEub3RoKSB7CiAgICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUobW9k
dWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1v
dmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIHsgfSk7CiAgICAg
ICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBh
IHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdU
Rjo6bnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFz
aCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAg
cmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVu
dHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIFZlY3RvcjxDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvczsKQEAgLTEwNSw3ICsxMDUs
NyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogCiAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9u
ZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25h
bERhdGEoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCksIFdURk1vdmUocHJpdmF0
ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJ
bmZvKSwgV1RGTW92ZShvdGhlclByaW1lSW5mb3MpKTsKICAgICAvLyBOb3RpY2U6IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxk
IG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgcmV0dXJu
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBl
eHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxn
b3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAK
IEpzb25XZWJLZXkgQ3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHAK
aW5kZXggZTI2OGZmNWVlYzk3NzM3Yjc3OWM0ZWIxYzFhZDMwZGRiOTk2ZDk5Ny4uOTIzNDQxNTE4
ZTdiOTlhN2E4N2NiODMxNzA1MmM3ODU0MGUwYWJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwCkBAIC03Miwx
MiArNzIsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjeXB0QUVT
X0dDTShjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb24KIAogRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlB
RVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgcmV0dXJu
IGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRl
eHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5n
dGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICByZXR1cm4gZW5jcnlwdEFFU19HQ00ocGFyYW1ldGVy
cy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFs
RGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CiB9CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCks
IGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3Rvcigp
LCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOworICAgIHJldHVybiBkZWN5
cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBjaXBoZXJUZXh0LCBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZh
bHVlT3IoMCkgLyA4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IDNhYTcwMWQzMTQ3MjM3
MTc0ODU0MjllZTQ3ODhiYmJmOWMzZDAyNzQuLjExYTdjOTE2YjYxMmZkNjMzOWJkZTM3YjIyY2Nl
MjU5YWI2YTk3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
S2V5UlNBTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKQEAgLTM2Myw3ICszNjMsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9L
ZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUg
YW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVi
bGljS2V5LCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
cnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIGNjUHVibGljS2V5
LCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRTcGtpKCkgY29uc3QKQEAgLTQyMCw3ICs0MjAsNyBAQCBS
ZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNl
aG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVs
bG9wdC4KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBo
YXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBD
cnlwdG9LZXlUeXBlOjpQcml2YXRlLCBjY1ByaXZhdGVLZXksIGV4dHJhY3RhYmxlLCB1c2FnZXMp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNo
LnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0
b0tleVR5cGU6OlByaXZhdGUsIGNjUHJpdmF0ZUtleSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwog
fQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtj
czgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCA3YjI2ZTNhZGFjNWZiZDYxMzIyYzYyNmY2OWI0M2QyODJlZjQz
NTYxLi4xZDA5YzhhNjcxYTM2OTliZmQ5MDAxNTQ4MmZmNjVlYjcyZGQ5NTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
MTk1MSw3ICsxOTUxLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHAKICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvJiBr
ZXlWYWx1ZSA6ICptYXApIHsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShrZXlWYWx1ZS5rZXksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0g
ICAgICAgIGRvdWJsZSBudW1iZXIgPSAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJ
bmNyZW1lbnQgPyBrZXlWYWx1ZS52YWx1ZS5pbmNyZW1lbnRWYWx1ZSA6IGtleVZhbHVlLnZhbHVl
LnJlc2V0VmFsdWUpLnZhbHVlX29yKDApOworICAgICAgICBkb3VibGUgbnVtYmVyID0gKHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8ga2V5VmFsdWUudmFsdWUuaW5j
cmVtZW50VmFsdWUgOiBrZXlWYWx1ZS52YWx1ZS5yZXNldFZhbHVlKS52YWx1ZU9yKDApOwogICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKG51bWJlciwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGlz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA1NGE0MDQ4MGFhZjFmMTFiNjA0
ZDcwYWNlM2Q2OWUwNzUxNGMzOTBkLi4wZWNhNTFiM2RiNmVmM2FmMTE3N2IzNGQ1Zjk3ZmJkMjYw
NTRlZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZUl0YWxpY1JhbmdlKENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNGb250U3R5bGVWYWx1ZSgpKSB7CiAgICAgICAg
IGF1dG8gcmVzdWx0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJv
bVZhbHVlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlX29yKG5vcm1hbEl0
YWxpY1ZhbHVlKCkpLCByZXN1bHQudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSkgfTsKKyAg
ICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlT3Iobm9ybWFsSXRhbGljVmFsdWUoKSksIHJlc3Vs
dC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpIH07CiAgICAgfQogCiAgICAgQVNTRVJUKHZh
bHVlLmlzRm9udFN0eWxlUmFuZ2VWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCmluZGV4IDZhZTYyNjcxOTgzZWI3MGY3MTM5YjliZTVjMTc2YTA5MWJmY2Qw
YTcuLjA2ZmZiNjBlYTQ2ZWQxMThmMzJmNDY0ZjY0Yzk1ZmM0NGEzNTczMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtNzg3LDcgKzc4Nyw3IEBAIEV4Y2Vw
dGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSkgY29uCiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFs
dWUoVW5pdFR5cGUgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50
ZXJuYWwodW5pdFR5cGUpLnZhbHVlX29yKDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVy
bmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOwogfQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6
OmRvdWJsZVZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCAxMmNkYTU0NWQ3YmNjNzVkZWRiN2E3OTUzNTFiZDZmMDAzNjc0ZmMyLi42N2MzMGU0MTkxODIx
NDJjOWM0MWMwZGM1NDZhNmRmYWZmYjZlNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0
OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3QKICAgICBp
ZiAoIXN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKICAgICB0ZXh0
LmFwcGVuZCgnfScpOwotICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4
dC50b1N0cmluZygpLCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOworICAgIGF1dG8gaW5zZXJ0
UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxl
bmd0aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYzM1NGU5NzgyNzNiYTU2ZTJmZmI1NDdmZjM5MTgz
MzljZDBmY2NhZi4uYTAwZjE2NWI0ODM3M2NiYWUwNDQwMDYwY2EwMTIyYTFmZWFjZGE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKQEAgLTE4OSw4ICsxODksOCBAQCBSZWY8RE9NTWF0cml4
PiBET01NYXRyaXg6OnJvdGF0ZVNlbGYoZG91YmxlIHJvdFgsIE9wdGlvbmFsPGRvdWJsZT4gcm90
WSwgT3B0aW9uYQogICAgICAgICByb3RYID0gMDsKICAgICAgICAgcm90WSA9IDA7CiAgICAgfQot
ICAgIG1fbWF0cml4LnJvdGF0ZTNkKHJvdFgsIHJvdFkudmFsdWVfb3IoMCksIHJvdFoudmFsdWVf
b3IoMCkpOwotICAgIGlmIChyb3RYIHx8IHJvdFkudmFsdWVfb3IoMCkpCisgICAgbV9tYXRyaXgu
cm90YXRlM2Qocm90WCwgcm90WS52YWx1ZU9yKDApLCByb3RaLnZhbHVlT3IoMCkpOworICAgIGlm
IChyb3RYIHx8IHJvdFkudmFsdWVPcigwKSkKICAgICAgICAgbV9pczJEID0gZmFsc2U7CiAgICAg
cmV0dXJuICp0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAK
aW5kZXggY2M3ZjcyNjk4NTEzZWU4MzgwMzk4ODI3ZDkxOWI0OGY3NTMxMzM5NS4uMTM5OTZmYjU1
M2NlMWM2YThmNzJiYTk5ZTQ4NmRlMWE0OGRkNWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4UmVhZE9ubHkuY3BwCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBET01NYXRyaXhSZWFkT25seTo6dmFsaWRhdGVBbmRGaXh1cChET01NYXRyaXgyREluaXQmIGlu
aXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJpbml0LmYgYW5kIGlu
aXQubTQyIGRvIG5vdCBtYXRjaCJfcyB9OwogCiAgICAgaWYgKCFpbml0Lm0xMSkKLSAgICAgICAg
aW5pdC5tMTEgPSBpbml0LmEudmFsdWVfb3IoMSk7CisgICAgICAgIGluaXQubTExID0gaW5pdC5h
LnZhbHVlT3IoMSk7CiAgICAgaWYgKCFpbml0Lm0xMikKLSAgICAgICAgaW5pdC5tMTIgPSBpbml0
LmIudmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTEyID0gaW5pdC5iLnZhbHVlT3IoMCk7CiAg
ICAgaWYgKCFpbml0Lm0yMSkKLSAgICAgICAgaW5pdC5tMjEgPSBpbml0LmMudmFsdWVfb3IoMCk7
CisgICAgICAgIGluaXQubTIxID0gaW5pdC5jLnZhbHVlT3IoMCk7CiAgICAgaWYgKCFpbml0Lm0y
MikKLSAgICAgICAgaW5pdC5tMjIgPSBpbml0LmQudmFsdWVfb3IoMSk7CisgICAgICAgIGluaXQu
bTIyID0gaW5pdC5kLnZhbHVlT3IoMSk7CiAgICAgaWYgKCFpbml0Lm00MSkKLSAgICAgICAgaW5p
dC5tNDEgPSBpbml0LmUudmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTQxID0gaW5pdC5lLnZh
bHVlT3IoMCk7CiAgICAgaWYgKCFpbml0Lm00MikKLSAgICAgICAgaW5pdC5tNDIgPSBpbml0LmYu
dmFsdWVfb3IoMCk7CisgICAgICAgIGluaXQubTQyID0gaW5pdC5mLnZhbHVlT3IoMCk7CiAKICAg
ICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmlu
ZGV4IGM3ODUyZjAyOWQ4Mzg0MDlhYjRlNTNhYzAzZDEwMjlhNDhlOTQ4MzQuLjQ4ZTZjYWJhODli
Yjc2YTRiYTgxZGFkOTZiNTM2YTdkM2E2YzQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKQEAgLTExOTMsNyArMTE5Myw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwKICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRp
cmVjdGl2ZXMucmVzZXRWYWx1ZSA9IHZhbHVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
aXJlY3RpdmVzLmluY3JlbWVudFZhbHVlID0gc2F0dXJhdGVkQWRkaXRpb24oZGlyZWN0aXZlcy5p
bmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSwgdmFsdWUpOworICAgICAgICAgICAgZGlyZWN0aXZl
cy5pbmNyZW1lbnRWYWx1ZSA9IHNhdHVyYXRlZEFkZGl0aW9uKGRpcmVjdGl2ZXMuaW5jcmVtZW50
VmFsdWUudmFsdWVPcigwKSwgdmFsdWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggOGMzNTYyZWNmNTdmNTliMDhm
MjYzYWY5ODk0ZWRhYTg5NmUzZWU4Mi4uNmQyMWQyMGIxZGZjYzJmNTkzYmYyNmU2YmM2ZTAyYTZh
MTE3ZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJz
ZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRN
ZWRpYVF1ZXJ5KCkKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVs
LCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRo
ZQogICAgIC8vIG9sZCBwYXJzZXIuCiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKLSAgICBNZWRpYVF1ZXJ5IG1lZGlh
UXVlcnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5t
ZWRpYVR5cGUoKS52YWx1ZV9vcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVl
cnlEYXRhLmV4cHJlc3Npb25zKCkpIH07CisgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5IHsgbV9t
ZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCksIG1fbWVkaWFRdWVyeURhdGEubWVkaWFUeXBlKCku
dmFsdWVPcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJl
c3Npb25zKCkpIH07CiAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwogICAgIG1fcXVlcnlT
ZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShtZWRpYVF1ZXJ5KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDZkNWNkZGI4M2Y4ZWMyMGYwZDg1NmVmMTRiY2ExODI0ODAzN2Q0Y2UuLjhhMGZm
ZTEwYjQ1OTcxMjI3NGRlN2Q3MjQyODYwMjkwNzM3Y2Y5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFJlZmVy
cmVyUG9saWN5KFJlZmVycmVyUG9saWN5KTsKLSAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3kudmFsdWVfb3IoUmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsgfQorICAgIFJlZmVycmVyUG9saWN5IHJl
ZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeS52YWx1ZU9yKFJl
ZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggYjI2YzQxZjE4ZWE5MGYzMThlYTZjN2ZlYmQ5ZjE1ODAxYjY4MDIzOS4uNWZmMzAy
ZmJlNjUyNjU1ODZkNjIwZTI2ZTIzZmU0NzZiNDY1MmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcp
CiAvLyBGSVhNRSh3ZWJraXQub3JnL2IvMTYxNjExKTogVGFrZSBpbnRvIGFjY291bnQgb3JpZW50
YXRpb24vZGlyZWN0aW9uLgogaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVu
dChPcHRpb25hbDxTY3JvbGxMb2dpY2FsUG9zaXRpb24+IHBvc2l0aW9uLCBib29sIGlzVmVydGlj
YWwpCiB7Ci0gICAgc3dpdGNoIChwb3NpdGlvbi52YWx1ZV9vcihpc1ZlcnRpY2FsID8gU2Nyb2xs
TG9naWNhbFBvc2l0aW9uOjpTdGFydCA6IFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6TmVhcmVzdCkp
IHsKKyAgICBzd2l0Y2ggKHBvc2l0aW9uLnZhbHVlT3IoaXNWZXJ0aWNhbCA/IFNjcm9sbExvZ2lj
YWxQb3NpdGlvbjo6U3RhcnQgOiBTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CiAg
ICAgY2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0OgogICAgICAgICByZXR1cm4gaXNW
ZXJ0aWNhbCA/IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgOiBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduTGVmdEFsd2F5czsKICAgICBjYXNlIFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6Q2Vu
dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggYmEyN2FkMDZhN2RkZDExNzBk
NzU0MmI0YjI2MGRkOWI0ZWNhMDZmYi4uZDFjODdkZTVlNDk4ZDU5ZTFiMmE4NWM2OThjZWJiYTFi
MmViMWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlCiAgICAgYm9vbCBsaXN0ZW5lckNyZWF0ZWRGcm9tU2Ny
aXB0ID0gbGlzdGVuZXItPnR5cGUoKSA9PSBFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXJU
eXBlICYmICFsaXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKTsKICAgICBhdXRvIGxpc3Rl
bmVyUmVmID0gbGlzdGVuZXIuY29weVJlZigpOwogCi0gICAgaWYgKCFlbnN1cmVFdmVudFRhcmdl
dERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIp
LCB7IG9wdGlvbnMuY2FwdHVyZSwgcGFzc2l2ZS52YWx1ZV9vcihmYWxzZSksIG9wdGlvbnMub25j
ZSB9KSkKKyAgICBpZiAoIWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAu
YWRkKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHsgb3B0aW9ucy5jYXB0dXJlLCBwYXNz
aXZlLnZhbHVlT3IoZmFsc2UpLCBvcHRpb25zLm9uY2UgfSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDg0NjI0OTUzNmViOWNhMmRiZDI2YWNkYjA0NzM4
MGZlMDJlNTNmZjguLjZmNzlhNzQ0MDFmMGQ5MmI1ZGE4ZjM5N2IyNDgzZTJjZTA2YWM5YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTg1LDkgKzg1LDkgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBj
b25zdCBJbml0JiBpbml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAo
aW5pdC5zdWJ0cmVlKQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQu
YXR0cmlidXRlT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQorICAgIGlmIChpbml0LmF0dHJpYnV0
ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9s
ZFZhbHVlOwotICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxz
ZSkpCisgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQog
ICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiBhdHRyaWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KaW5kZXggZDQz
MWY3MjJlMjRhYWIzYmQxNzcyOGI0MzU4Yjc4Njk4Yjc4NmY0Yi4uZGEwMmNiMmM0Y2VmZjgzYWQ0
NTVmZmIyZGViYzY2Mjk5NGE3ZTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQpAQCAtNDYsOCArNDYs
OCBAQCBjb25zdCBTdHJpbmcmIEZvbnRDaGFuZ2VzOjpwbGF0Zm9ybUZvbnRGYW1pbHlOYW1lRm9y
Q1NTKCkgY29uc3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvbnROYW1lRnJvbURlc2Ny
aXB0aW9uOwogCiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0
aW9uLnNldElzSXRhbGljKG1faXRhbGljLnZhbHVlX29yKGZhbHNlKSk7Ci0gICAgZGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB7IG1fYm9sZC52YWx1ZV9vcihmYWxzZSkg
PyA5MDAgOiA1MDAgfSk7CisgICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFsaWMudmFs
dWVPcihmYWxzZSkpOworICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFs
dWUgeyBtX2JvbGQudmFsdWVPcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7CiAgICAgaWYgKGF1dG8g
Zm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwg
bV9mb250RmFtaWx5KSkKICAgICAgICAgZm9udE5hbWVGcm9tRGVzY3JpcHRpb24gPSBhZG9wdENG
KENURm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LT5nZXRDVEZvbnQoKSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmNwcAppbmRleCBmYzBmYTU3ZjBiZWRiOWQ3NTlhZjc5ZjQ1OGU1MDU2MDg0ODEy
OGQyLi5iNzNmY2RlNzlmNDYwNzkyYzkyNmMwNzVmYmFhZjY2NDhhNzI0MTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEJsb2JQcm9wZXJ0eUJhZyBj
b252ZXJ0UHJvcGVydHlCYWcoY29uc3QgRmlsZTo6UHJvcGVydHlCYWcmIGluaXRpYWxCYWcpCiBG
aWxlOjpGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAg
IDogQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJv
cGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQotICAgICwgbV9sYXN0TW9kaWZpZWRE
YXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlX29yKFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKKyAgICAsIG1fbGFzdE1v
ZGlmaWVkRGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmluZGV4IGNlYTFjZDMwOWNkYzM1Mjg3ZTg0
ZTBkZDA3MDU1ZmJiYTk3NGI0NDkuLmFmMDA5MTFlMDZlY2M1N2VkMzhhNDY4MzIyMjkzNTMyYzM1
YTZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCBFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPgogICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRv
a2VucygpOwogCiAgICAgaWYgKHRva2Vucy5jb250YWlucyh0b2tlbikpIHsKLSAgICAgICAgaWYg
KCFmb3JjZS52YWx1ZV9vcihmYWxzZSkpIHsKKyAgICAgICAgaWYgKCFmb3JjZS52YWx1ZU9yKGZh
bHNlKSkgewogICAgICAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKICAgICAgICAg
ICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDVm
NGQ5ZWZkYWQ1ZDNkZTA2MDFhMDZhMGZlMzBhYjIwZWUyZDZkM2YuLjgxM2Y1ZTA2MmRiMjViNTQz
MTlhY2QzMjU1OTliMDAwZjk1OWM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxl
bWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxPTGlz
dEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTE9MaXN0RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgaW50
IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnZhbHVlX29yKDEpOyB9
CisgICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnZhbHVl
T3IoMSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXJ0Rm9yQmluZGluZ3MoaW50
KTsKIAogICAgIC8vIEZJWE1FOiBUaGUgcmVhc29uIHN0YXJ0KCkgZG9lcyBub3QgdHJpZ2dlciBs
YXlvdXQgaXMgYmVjYXVzZSBpdCBpcyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKaW5kZXggNmIyZWUxODQ5ZTQ5ZWY1NzUzODZkZWRiMTVlZmRiNDU1Yzg0MTgzZi4uOWRiYmI0
ZmVlYzUxYTNiOTk0ZTE1YWQ2YmU2ODJmYTIzODJkZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8SW50UmVj
dD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhGb3JtYXR0aW5nKEludFNpemUgaW5wdXRTaQog
ICAgIC8vICAgIE90aGVyd2lzZSBsZXQgc291cmNlUmVjdGFuZ2xlIGJlIGEgcmVjdGFuZ2xlIHdo
b3NlIGNvcm5lcnMgYXJlIHRoZSBmb3VyIHBvaW50cwogICAgIC8vICAgICgwLDApLCAod2lkdGgg
b2YgaW5wdXQsIDApLCAod2lkdGggb2YgaW5wdXQsIGhlaWdodCBvZiBpbnB1dCksICgwLCBoZWln
aHQgb2YKICAgICAvLyAgICBpbnB1dCkuCi0gICAgYXV0byBzb3VyY2VSZWN0YW5nbGUgPSByZWN0
LnZhbHVlX29yKEludFJlY3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRTaXplLmhl
aWdodCgpIH0pOworICAgIGF1dG8gc291cmNlUmVjdGFuZ2xlID0gcmVjdC52YWx1ZU9yKEludFJl
Y3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRTaXplLmhlaWdodCgpIH0pOwogCiAg
ICAgLy8gNC4gQ2xpcCBzb3VyY2VSZWN0YW5nbGUgdG8gdGhlIGRpbWVuc2lvbnMgb2YgaW5wdXQu
CiAgICAgc291cmNlUmVjdGFuZ2xlLmludGVyc2VjdChJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXpl
LndpZHRoKCksIGlucHV0U2l6ZS5oZWlnaHQoKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggOWE5ZGU5YTc3MmE3MWViY2QyZGZiYjcxNmNh
OTI1NDljNDRjMDYwZi4uNzJlYTFhODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUGF0dGVybjo6c2V0VHJhbnNmb3Jt
KERPTU1hdHJpeDJESW5pdCYmIG1hdHJpeEluaXQpCiAgICAgaWYgKGNoZWNrVmFsaWQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VFeGNlcHRpb24oKTsK
IAotICAgIG1fcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHsgbWF0cml4SW5pdC5h
LnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmIudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuYy52YWx1
ZV9vcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmUudmFsdWVfb3Io
MCksIG1hdHJpeEluaXQuZi52YWx1ZV9vcigwKSB9KTsKKyAgICBtX3BhdHRlcm4tPnNldFBhdHRl
cm5TcGFjZVRyYW5zZm9ybSh7IG1hdHJpeEluaXQuYS52YWx1ZU9yKDEpLCBtYXRyaXhJbml0LmIu
dmFsdWVPcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlT3IoMCksIG1hdHJpeEluaXQuZC52YWx1ZU9y
KDEpLCBtYXRyaXhJbml0LmUudmFsdWVPcigwKSwgbWF0cml4SW5pdC5mLnZhbHVlT3IoMCkgfSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCAyMjg2ZDMy
MjJhYmQ3Y2YwZTgwZTEyMWQ4MGQ4NmVkYjYwY2Q1MmRjLi5kNDI2ZmFjNjEzMzlmZWMzYzEzZjRl
NzA2ZGFjZmFiZDUxODc5OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtOTE1LDcgKzkx
NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNl
dFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJiBtCiAgICAgaWYgKGNoZWNrVmFsaWQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VFeGNlcHRpb24oKTsK
IAotICAgIHNldFRyYW5zZm9ybShtYXRyaXhJbml0LmEudmFsdWVfb3IoMSksIG1hdHJpeEluaXQu
Yi52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmQudmFs
dWVfb3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5mLnZhbHVlX29y
KDApKTsKKyAgICBzZXRUcmFuc2Zvcm0obWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeElu
aXQuYi52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZh
bHVlT3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigw
KSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTIwNCw3ICsxMjA0LDcgQEAgYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0
aCYgcGF0aCwgZmxvYXQKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3Rh
dGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0
ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQoRmxvYXRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBw
YXRoLCBmbG8KICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChG
bG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxv
YXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQu
eCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0
aDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKaW5kZXggMjE1
YjdkM2JhZDJiODU0MzMxZjY0YjNmMWMwMzM0NWYyYzJjZTA1Ny4uMzg1ZTlkYWJmNWRjYmNhM2Jk
MjJmZWFhOTVmNzg0ZDJmNDc5NGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUGF0aDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhdGgyRDo6YWRkUGF0aChQ
YXRoMkQmIHBhdGgsIERPTU1hdHJpeDJESW5pdCYmIG1hdHJpeEluaXQpCiAgICAgaWYgKGNoZWNr
VmFsaWQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGVja1ZhbGlkLnJlbGVhc2VF
eGNlcHRpb24oKTsKIAotICAgIG1fcGF0aC5hZGRQYXRoKHBhdGgucGF0aCgpLCB7IG1hdHJpeElu
aXQuYS52YWx1ZV9vcigxKSwgbWF0cml4SW5pdC5iLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmMu
dmFsdWVfb3IoMCksIG1hdHJpeEluaXQuZC52YWx1ZV9vcigxKSwgbWF0cml4SW5pdC5lLnZhbHVl
X29yKDApLCBtYXRyaXhJbml0LmYudmFsdWVfb3IoMCkgfSk7CisgICAgbV9wYXRoLmFkZFBhdGgo
cGF0aC5wYXRoKCksIHsgbWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeEluaXQuYi52YWx1
ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlT3IoMSks
IG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigwKSB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwCmluZGV4IDliNjhjNGIwNWMzYjYzZWExZWZmNzFiMDFhZTliMTU5ZmJjZTY3ZDMu
LjUyYjBiY2I5YjIyYjQ4OGExMDEyMjE4Y2M2MjI3NzhmMDY3MmUzYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC01ODIsMTIgKzU4MiwxMiBA
QCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgWyZdIChDYW52YXNUZXh0QmFz
ZWxpbmUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCiAg
ICAgICAgICAgICBbJl0gKGNvbnN0IERPTU1hdHJpeDJESW5pdCYgdmFsdWUpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAg
ICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVlX29yKDEpKTsKLSAgICAg
ICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5iLnZhbHVlX29yKDApKTsKLSAgICAgICAg
ICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5jLnZhbHVlX29yKDApKTsKLSAgICAgICAgICAg
ICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5kLnZhbHVlX29yKDEpKTsKLSAgICAgICAgICAgICAg
ICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5lLnZhbHVlX29yKDApKTsKLSAgICAgICAgICAgICAgICBh
cnJheS0+YWRkSXRlbSh2YWx1ZS5mLnZhbHVlX29yKDApKTsKKyAgICAgICAgICAgICAgICBhcnJh
eS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVlT3IoMSkpOworICAgICAgICAgICAgICAgIGFycmF5LT5h
ZGRJdGVtKHZhbHVlLmIudmFsdWVPcigwKSk7CisgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0
ZW0odmFsdWUuYy52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2
YWx1ZS5kLnZhbHVlT3IoMSkpOworICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVl
LmUudmFsdWVPcigwKSk7CisgICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuZi52
YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoYXJyYXkucHRyKCksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlczo6RE9NTWF0cml4KTsKICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICBbJl0gKGNvbnN0IEVsZW1lbnQqKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDg3NGYzODRjM2EzZjdjMTRjYzRh
YzM2YTJhMWYwOGE4YzU5ZWM4NjEuLmMwODBhNTZjNjg2MWYzZTM5ODk3OWE3YjEyM2Q1NjJiOGI5
MGY0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250
ZXh0TWVudShWZWN0b3I8SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpDb250ZXh0TWVudUl0ZW0+JiYK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdHlwZSA9IGl0ZW0udHlwZSA9PSAiY2hlY2tib3gi
ID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgICAgIGF1dG8gYWN0aW9u
ID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0
b21UYWcgKyBpdGVtLmlkLnZhbHVlX29yKDApKTsKKyAgICAgICAgYXV0byBhY3Rpb24gPSBzdGF0
aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyAr
IGl0ZW0uaWQudmFsdWVPcigwKSk7CiAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRlbSA9
IHsgdHlwZSwgYWN0aW9uLCBpdGVtLmxhYmVsIH07CiAgICAgICAgIGlmIChpdGVtLmVuYWJsZWQp
CiAgICAgICAgICAgICBtZW51SXRlbS5zZXRFbmFibGVkKCppdGVtLmVuYWJsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYjNjNTc2MjRlYjE1
ZjZmMmQwMzg0N2U4MTg0YzdkMGViODc2N2I5OS4uMTFlZmM0NjE4YjkxYWE4ZjYxZmYwMzI1Y2E3
NjQ4MGU0OGM5NTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0yMjQsMTYgKzIyNCwxNiBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiAgICAgICAgIGlmICgo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpIHx8IGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAvLyBtYXJn
aW4tbGVmdCArIGJvcmRlci1sZWZ0LXdpZHRoICsgcGFkZGluZy1sZWZ0ICsgd2lkdGggKyBwYWRk
aW5nLXJpZ2h0ICsgYm9yZGVyLXJpZ2h0LXdpZHRoICsgbWFyZ2luLXJpZ2h0ID0gd2lkdGggb2Yg
Y29udGFpbmluZyBibG9jawogICAgICAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoZGlzcGxheUJveC5tYXJnaW5TdGFydCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0
KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmNv
bnRlbnRCb3hXaWR0aCgpCi0gICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94LnBhZGRpbmdSaWdo
dCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5ib3JkZXJSaWdodCgpICsgZGlzcGxheUJveC5t
YXJnaW5FbmQoKSA9PSBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgICAgICBBU1NFUlQo
ZGlzcGxheUJveC5tYXJnaW5TdGFydCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0KCkgKyBkaXNw
bGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3guY29udGVudEJveFdp
ZHRoKCkKKyAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVP
cigwKSArIGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKSArIGRpc3BsYXlCb3gubWFyZ2luRW5kKCkg
PT0gY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gMTAuNi40
IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAgIGlm
IChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNl
ZCgpKSB7CiAgICAgICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9yZGVyLXRvcC13aWR0
aCArIHBhZGRpbmctdG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBib3JkZXItYm90dG9t
LXdpZHRoICsgbWFyZ2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBjb250YWluaW5nIGJs
b2NrCiAgICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3guY29udGVudEJveEhlaWdodCgpOwotICAgICAgICAgICAgQVNTRVJUKGRp
c3BsYXlCb3gudG9wKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgpICsgZGlzcGxheUJveC5i
b3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgZGlzcGxh
eUJveC5jb250ZW50Qm94SGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gucGFk
ZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5ib3JkZXJCb3R0b20oKSArIGRp
c3BsYXlCb3gubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgICAg
ICAgICAgQVNTRVJUKGRpc3BsYXlCb3gudG9wKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkJlZm9yZSgp
ICsgZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVl
T3IoMCkgKyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hIZWlnaHQoKQorICAgICAgICAgICAgICAgICsg
ZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKSArIGRpc3BsYXlCb3guYm9yZGVy
Qm90dG9tKCkgKyBkaXNwbGF5Qm94Lm1hcmdpbkFmdGVyKCkgPT0gY29udGFpbmluZ0Jsb2NrSGVp
Z2h0KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBlMDNkODNkMDczODgwZjU5MjYy
OWM1NDk2NjU3NmUxYjM2YzIxMmM4Li5jMzM5Zjk3ODBmYzQwZWZmNjA4ZjkyNTc5Y2M0NzAwZDkx
MWU0ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0yODIsOCArMjgyLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9t
ZXQKICAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBj
b21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5v
cm1hbCk7CiAgICAgYXV0byBtYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBtYXJn
aW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRpc3BsYXlCb3gucGFk
ZGluZ1RvcCgpLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGRpc3BsYXlC
b3gucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOworICAgIGF1dG8gcGFkZGluZ1RvcCA9IGRp
c3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5nQm90dG9t
ID0gZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRl
clRvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJCb3R0b20gPSBk
aXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwogCkBAIC0zMDcsNDUgKzMwNyw0NSBAQCBWZXJ0aWNh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFj
ZWRWZXJ0aWNhbEdlb21ldAogICAgIGlmICghdG9wICYmICFoZWlnaHQgJiYgYm90dG9tKSB7CiAg
ICAgICAgIC8vICMxCiAgICAgICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5n
Q29udGV4dFJvb3QobGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9y
ZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJn
aW5BZnRlci52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3Jl
LnZhbHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigw
KTsKICAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJnaW5CZWZvcmUg
KyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3Jk
ZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYgKCF0
b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAgdG9wID0g
c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0U3RhdGUs
IGxheW91dEJveCk7Ci0gICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9v
cigwKTsKLSAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9vcigwKTsKKyAg
ICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIG1h
cmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKICAgICAgICAgYm90dG9tID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqbWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsg
cGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1h
cmdpbkFmdGVyKTsgCiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQgJiYgIWJvdHRvbSAmJiB0b3Ap
IHsKICAgICAgICAgLy8gIzMKICAgICAgICAgaGVpZ2h0ID0gY29udGVudEhlaWdodEZvckZvcm1h
dHRpbmdDb250ZXh0Um9vdChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgbWFyZ2lu
QmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlX29yKDApOwotICAgICAgICBtYXJnaW5BZnRlciA9
IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5C
ZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJnaW5BZnRlci52YWx1
ZU9yKDApOwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCAr
ICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAgICB9CiAKICAgICBp
ZiAoIXRvcCAmJiBoZWlnaHQgJiYgYm90dG9tKSB7CiAgICAgICAgIC8vICM0Ci0gICAgICAgIG1h
cmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luQWZ0
ZXIgPSBtYXJnaW5BZnRlci52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luQmVmb3JlID0gbWFy
Z2luQmVmb3JlLnZhbHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIu
dmFsdWVPcigwKTsKICAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCptYXJn
aW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0
b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAg
ICAgaWYgKCFoZWlnaHQgJiYgdG9wICYmIGJvdHRvbSkgewogICAgICAgICAvLyAjNQotICAgICAg
ICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFsdWVfb3IoMCk7Ci0gICAgICAgIG1hcmdp
bkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVfb3IoMCk7CisgICAgICAgIG1hcmdpbkJlZm9yZSA9
IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAgICBtYXJnaW5BZnRlciA9IG1hcmdpbkFm
dGVyLnZhbHVlT3IoMCk7CiAgICAgICAgIGhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgKm1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBwYWRkaW5n
Qm90dG9tICsgYm9yZGVyQm90dG9tICsgKm1hcmdpbkFmdGVyICsgKmJvdHRvbSk7IAogICAgIH0K
IAogICAgIGlmICghYm90dG9tICYmIHRvcCAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAg
ICAgICAgbWFyZ2luQmVmb3JlID0gbWFyZ2luQmVmb3JlLnZhbHVlX29yKDApOwotICAgICAgICBt
YXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5CZWZv
cmUgPSBtYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2luQWZ0ZXIgPSBtYXJn
aW5BZnRlci52YWx1ZU9yKDApOwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWln
aHQgLSAoKnRvcCArICptYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhl
aWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqbWFyZ2luQWZ0ZXIpOyAKICAg
ICB9CiAKQEAgLTQwMCwxMCArNDAwLDEwIEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlCiAgICAg
YXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsg
dXNlZFdpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBh
dXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQg
PSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5k
ID0gbWFyZ2luRW5kLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNwbGF5
Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nUmlnaHQgPSBk
aXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgIGF1dG8gbm9uQ29tcHV0
ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgYXV0byBub25Db21w
dXRlZE1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOworICAgIGF1dG8gcGFkZGluZ0xl
ZnQgPSBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHBhZGRp
bmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKICAgICBhdXRv
IGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKICAgICBhdXRvIGJvcmRlclJp
Z2h0ID0gZGlzcGxheUJveC5ib3JkZXJSaWdodCgpOwogCkBAIC00MTEsOCArNDExLDggQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gSWYgYWxsIHRocmVlIG9mICdsZWZ0Jywg
J3dpZHRoJywgYW5kICdyaWdodCcgYXJlICdhdXRvJzogRmlyc3Qgc2V0IGFueSAnYXV0bycgdmFs
dWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLgogICAgICAgICAv
LyBUaGVuLCBpZiB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgZXN0YWJs
aXNoaW5nIHRoZSBzdGF0aWMtcG9zaXRpb24gY29udGFpbmluZyBibG9jayBpcyAnbHRyJyBzZXQg
J2xlZnQnIHRvIHRoZSBzdGF0aWMKICAgICAgICAgLy8gcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUg
bnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRoZSBzdGF0aWMg
cG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KLSAgICAgICAgbWFyZ2lu
U3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICAgICAgbWFyZ2luRW5kID0gbWFy
Z2luRW5kLnZhbHVlX29yKDApOworICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZh
bHVlT3IoMCk7CisgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOwogCiAg
ICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCkBAIC00NTksOCArNDU5LDggQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJn
aW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNrIHRoZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaXggcnVs
ZXMgdGhhdCBhcHBsaWVzLgotICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVl
X29yKDApOwotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7CisgICAg
ICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgbWFyZ2lu
RW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1hcmdpblN0
YXJ0KTsKQEAgLTUzMCw4ICs1MzAsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIGF1
dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgdXNlZEhlaWdodCkuaGVpZ2h0OwogICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gbWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBhdXRvIHBhZGRp
bmdUb3AgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsKLSAgICBhdXRvIHBh
ZGRpbmdCb3R0b20gPSBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKKyAg
ICBhdXRvIHBhZGRpbmdUb3AgPSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwor
ICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVl
T3IoMCk7CiAgICAgYXV0byBib3JkZXJUb3AgPSBkaXNwbGF5Qm94LmJvcmRlclRvcCgpOwogICAg
IGF1dG8gYm9yZGVyQm90dG9tID0gZGlzcGxheUJveC5ib3JkZXJCb3R0b20oKTsKIApAQCAtNTQy
LDggKzU0Miw4IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAKICAgICBpZiAoIWJvdHRvbSkg
ewogICAgICAgICAvLyAjMgotICAgICAgICBtYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmUudmFs
dWVfb3IoMCk7Ci0gICAgICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFsdWVfb3IoMCk7
CisgICAgICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgICAg
ICBtYXJnaW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7CiAgICAgfQogCiAgICAgaWYg
KCFtYXJnaW5CZWZvcmUgJiYgIW1hcmdpbkFmdGVyKSB7CkBAIC02MDIsMTEgKzYwMiwxMSBAQCBI
b3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZEhvcml6b250YWxHZW9tZQogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAg
YXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3Rh
cnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
OwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlX29y
KDApOwotICAgIGF1dG8gbm9uQ29tcHV0ZWRNYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3Io
MCk7CisgICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFsdWVP
cigwKTsKKyAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3Io
MCk7CiAgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKLSAgICBhdXRvIHBhZGRpbmdMZWZ0
ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOwotICAgIGF1dG8gcGFkZGlu
Z1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKKyAgICBhdXRv
IHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CisgICAg
YXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7
CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gZGlzcGxheUJveC5ib3JkZXJMZWZ0KCk7CiAgICAgYXV0
byBib3JkZXJSaWdodCA9IGRpc3BsYXlCb3guYm9yZGVyUmlnaHQoKTsKIApAQCAtNjIxLDggKzYy
MSw4IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAKICAgICBpZiAoIWxlZnQgfHwgIXJpZ2h0
KSB7CiAgICAgICAgIC8vICMyCi0gICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2luU3RhcnQudmFs
dWVfb3IoMCk7IAotICAgICAgICBtYXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVfb3IoMCk7IAor
ICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7IAorICAgICAgICBt
YXJnaW5FbmQgPSBtYXJnaW5FbmQudmFsdWVPcigwKTsgCiAgICAgfQogCiAgICAgaWYgKCFtYXJn
aW5TdGFydCAmJiAhbWFyZ2luRW5kKSB7CkBAIC02OTcsOCArNjk3LDggQEAgSGVpZ2h0QW5kTWFy
Z2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBM
YXlvdXRTdGF0ZSYKICAgICBhdXRvIG1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKICAgICAvLyAj
MQotICAgIG1hcmdpbkJlZm9yZSA9IG1hcmdpbkJlZm9yZS52YWx1ZV9vcigwKTsKLSAgICBtYXJn
aW5BZnRlciA9IG1hcmdpbkFmdGVyLnZhbHVlX29yKDApOworICAgIG1hcmdpbkJlZm9yZSA9IG1h
cmdpbkJlZm9yZS52YWx1ZU9yKDApOworICAgIG1hcmdpbkFmdGVyID0gbWFyZ2luQWZ0ZXIudmFs
dWVPcigwKTsKICAgICAvLyAjMgogICAgIGlmICghaGVpZ2h0KSB7CiAgICAgICAgIEFTU0VSVChp
c0hlaWdodEF1dG8obGF5b3V0Qm94KSk7CkBAIC04NzMsMTQgKzg3MywxNCBAQCBXaWR0aEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4oY29uc3QgTAogICAgICAgICBpZiAocHJlY29tcHV0ZWRNYXJnaW5FbmQpCiAgICAgICAg
ICAgICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5FbmQudmFsdWUoKTsKICAgICAgICAgYXV0byBt
YXJnaW5FbmQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgICAgIHJldHVybiBtYXJnaW5FbmQudmFsdWVfb3IoMF9s
dSk7CisgICAgICAgIHJldHVybiBtYXJnaW5FbmQudmFsdWVPcigwX2x1KTsKICAgICB9OwogCiAg
ICAgYXV0byBjb21wdXRlTWFyZ2luU3RhcnQgPSBbJl0oKSB7CiAgICAgICAgIGlmIChwcmVjb21w
dXRlZE1hcmdpblN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luU3Rh
cnQudmFsdWUoKTsKICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgICAg
ICByZXR1cm4gbWFyZ2luU3RhcnQudmFsdWVfb3IoMF9sdSk7CisgICAgICAgIHJldHVybiBtYXJn
aW5TdGFydC52YWx1ZU9yKDBfbHUpOwogICAgIH07CiAKICAgICBhdXRvIHJlcGxhY2VkID0gbGF5
b3V0Qm94LnJlcGxhY2VkKCk7CkBAIC04ODgsOCArODg4LDggQEAgV2lkdGhBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNv
bnN0IEwKIAogICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRlTWFyZ2luU3RhcnQoKTsKICAg
ICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVNYXJnaW5FbmQoKTsKLSAgICBhdXRvIG5vbkNvbXB1
dGVkTWFyZ2luU3RhcnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKTsKLSAgICBhdXRvIG5vbkNvbXB1
dGVkTWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApOworICAgIGF1dG8gbm9uQ29tcHV0ZWRN
YXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBub25Db21wdXRlZE1h
cmdpbkVuZCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1ZSgpLCBGaXhl
ZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIAogICAg
IGF1dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CkBAIC05MDEsNyAr
OTAxLDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEwKICAgICB9IGVsc2UgaWYgKCghd2lkdGgg
JiYgaGVpZ2h0SXNBdXRvICYmICFyZXBsYWNlZC0+aGFzSW50cmluc2ljV2lkdGgoKSAmJiByZXBs
YWNlZC0+aGFzSW50cmluc2ljSGVpZ2h0KCkgJiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY1JhdGlv
KCkpCiAgICAgICAgIHx8ICghd2lkdGggJiYgaGVpZ2h0ICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5z
aWNSYXRpbygpKSkgewogICAgICAgICAvLyAjMgotICAgICAgICB3aWR0aCA9IGhlaWdodC52YWx1
ZV9vcihyZXBsYWNlZC0+aGFzSW50cmluc2ljSGVpZ2h0KCkpICogcmVwbGFjZWQtPmludHJpbnNp
Y1JhdGlvKCk7CisgICAgICAgIHdpZHRoID0gaGVpZ2h0LnZhbHVlT3IocmVwbGFjZWQtPmhhc0lu
dHJpbnNpY0hlaWdodCgpKSAqIHJlcGxhY2VkLT5pbnRyaW5zaWNSYXRpbygpOwogICAgIH0gZWxz
ZSBpZiAoIXdpZHRoICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljUmF0
aW8oKSAmJiAhcmVwbGFjZWQtPmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgIXJlcGxhY2VkLT5oYXNJ
bnRyaW5zaWNIZWlnaHQoKSkgewogICAgICAgICAvLyAjMwogICAgICAgICAvLyBGSVhNRTogdW5k
ZWZpbmVkIGJ1dCBzdXJlbHkgZG9hYmxlLgpAQCAtOTkwLDcgKzk5MCw3IEBAIExheW91dFNpemUg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZz
ZXQoY29uc3QgTGF5CiAgICAgQVNTRVJUKCFsZWZ0IHx8ICpsZWZ0ID09IC0qcmlnaHQpOwogCiAg
ICAgYXV0byB0b3BQb3NpdGlvbk9mZnNldCA9ICp0b3A7Ci0gICAgYXV0byBsZWZ0UG9zaXRpb25P
ZmZzZXQgPSBsZWZ0LnZhbHVlX29yKC0qcmlnaHQpOworICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zm
c2V0ID0gbGVmdC52YWx1ZU9yKC0qcmlnaHQpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gcG9zaXRpb25lZCBp
bmZsb3cgLT4gdG9wIG9mZnNldCgiIDw8IHRvcFBvc2l0aW9uT2Zmc2V0IDw8ICJweCkgbGVmdCBv
ZmZzZXQoIiA8PCBsZWZ0UG9zaXRpb25PZmZzZXQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5
b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIHsgbGVmdFBvc2l0aW9uT2Zmc2V0LCB0b3BQb3Np
dGlvbk9mZnNldCB9OwpAQCAtMTAyNSw4ICsxMDI1LDggQEAgSG9yaXpvbnRhbE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1h
cmcKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBt
YXJnaW5TdGFydCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luU3RhcnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDBfbHUpOwotICAgIGF1dG8gbWFyZ2luRW5k
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpLnZhbHVlX29yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblN0YXJ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KS52YWx1ZU9yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luRW5kID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9s
dSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCBob3Jpem9udGFsIC0+IG1hcmdpbigiIDw8
IG1hcmdpblN0YXJ0IDw8ICJweCwgIiA8PCBtYXJnaW5FbmQgPDwgInB4KSAtPiBsYXlvdXRCb3g6
ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIHsgbWFyZ2luU3RhcnQsIG1hcmdpbkVuZCB9
OwpAQCAtMTAzNyw4ICsxMDM3LDggQEAgVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWQKICAgICBhdXRv
JiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBtYXJnaW5CZWZvcmUg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9yZSgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCkudmFsdWVfb3IoMF9sdSk7Ci0gICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpLnZhbHVlX29yKDBfbHUpOworICAgIGF1dG8gbWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZh
bHVlT3IoMF9sdSk7CisgICAgYXV0byBtYXJnaW5BZnRlciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMF9s
dSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW01hcmdpbl0gLT4gbm9uIGNvbGxhcHNlZCB2ZXJ0aWNhbCAtPiBtYXJnaW4oIiA8PCBt
YXJnaW5CZWZvcmUgPDwgInB4LCAiIDw8IG1hcmdpbkFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94
OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJldHVybiB7IG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0
ZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCmluZGV4IGQxMGFiZTI3NjU1YWQ5ZDliOTM5ZWRhMTA4YzFhMTUzNGRjYjk4MjkuLmI0
ZjQ0YTgyNWVmM2FhNThhZDJiMzZhMGUyYWQyMTQ3NWYyZTg3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmhlaWdodFZhbHVlT2ZO
ZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeAogICAgICAgICAgICAgYXV0byYgZGlzcGxheUJv
eCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jayk7
CiAKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRT
dGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC5wYWRk
aW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkaXNwbGF5Qm94LnBhZGRp
bmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9
IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwogICAg
ICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyICs9
IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIHZlcnRpY2FsTWFyZ2luLmFmdGVyICsgdmVydGljYWxQ
YWRkaW5nICsgdmVydGljYWxCb3JkZXI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdp
blR5cGVzLmgKaW5kZXggZmU2OGYyOTc5YTU4MTAzMWNmZmE0ZWU4ZDA3ODJmOTMwM2YwMGQ2ZS4u
ODVmZmVkNjU5Njg2Nzg5M2Y3ZDZlN2RmNTg2NTI0ZDY4N2MzMTQ5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L01hcmdpblR5cGVzLmgKQEAgLTgwLDggKzgwLDggQEAgaW5saW5lIFZlcnRpY2FsTWFyZ2lu
OjpDb21wdXRlZFZhbHVlcyBWZXJ0aWNhbE1hcmdpbjo6dXNlZFZhbHVlcygpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2NvbGxhcHNlZCkKICAgICAgICAgcmV0dXJuIG1fbm9uQ29sbGFwc2VkOwotICAg
IHJldHVybiB7IG1fY29sbGFwc2VkLT5iZWZvcmUudmFsdWVfb3IobV9ub25Db2xsYXBzZWQuYmVm
b3JlKSwKLSAgICAgICAgbV9jb2xsYXBzZWQtPmFmdGVyLnZhbHVlX29yKG1fbm9uQ29sbGFwc2Vk
LmFmdGVyKSB9OworICAgIHJldHVybiB7IG1fY29sbGFwc2VkLT5iZWZvcmUudmFsdWVPcihtX25v
bkNvbGxhcHNlZC5iZWZvcmUpLAorICAgICAgICBtX2NvbGxhcHNlZC0+YWZ0ZXIudmFsdWVPciht
X25vbkNvbGxhcHNlZC5hZnRlcikgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDU2ZmFiNTUyM2I0OGNjZjI5MGIyZTA4OGJkYTgy
N2VjOTEyM2UzYWYuLmVlNDM4NzJlYWI2ZTUwMGJlOGFjNzJiMTVhZjkwMTBiZWViZjgxMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTYxLDEw
ICs2MSwxMCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0
Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICAgICAgYXV0byYg
ZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKIAotICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpD
b21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQmVmb3Jl
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcigwKSwKLSAgICAgICAgICAgIGNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFZl
cnRpY2FsTWFyZ2luOjpDb21wdXRlZFZhbHVlcyB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApLAorICAg
ICAgICAgICAgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKSB9OyAKICAgICAgICAgYXV0byBjb2xsYXBzZWRN
YXJnaW4gPSBWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIHsgTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJlZm9yZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwgTWFyZ2luQ29sbGFwc2U6Om1h
cmdpbkFmdGVyKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpIH07Ci0gICAgICAgIGF1dG8gYm9yZGVy
QW5kUGFkZGluZ1RvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LnBhZGRp
bmdUb3AoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0g
ZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3Io
MCk7CiAKICAgICAgICAgYXV0byBoZWlnaHQgPSB1c2VkSGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1
ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRU
eXBlOjpOb3JtYWwpOwogICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtMTQzLDE5ICsxNDMsMTkgQEAg
V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkV2lkdGhBbmRNYXJnaW4KICAgICAgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8odXNlZFdpZHRoID8gTGVuZ3RoIHsgdXNlZFdpZHRoLnZhbHVlKCksIEZpeGVk
IH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAg
ICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5T
dGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgICAgIGF1dG8gbWFyZ2luRW5kID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5FbmQoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwotICAgICAgICBhdXRvIG5vbkNvbXB1dGVkTWFyZ2luU3RhcnQgPSBtYXJnaW5TdGFy
dC52YWx1ZV9vcigwKTsKLSAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVuZCA9IG1hcmdp
bkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpblN0YXJ0ID0g
bWFyZ2luU3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBub25Db21wdXRlZE1hcmdpbkVu
ZCA9IG1hcmdpbkVuZC52YWx1ZU9yKDApOwogICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNw
bGF5Qm94LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGRpc3BsYXlC
b3guYm9yZGVyUmlnaHQoKTsKLSAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gu
cGFkZGluZ0xlZnQoKS52YWx1ZV9vcigwKTsKLSAgICAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBk
aXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgICAgICBhdXRvIHBhZGRp
bmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1
dG8gcGFkZGluZ1JpZ2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwog
CiAgICAgICAgIC8vICMxCiAgICAgICAgIGlmICh3aWR0aCkgewotICAgICAgICAgICAgYXV0byBo
b3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChtYXJnaW5T
dGFydC52YWx1ZV9vcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luRW5kLnZhbHVlX29yKDApKTsKKyAgICAg
ICAgICAgIGF1dG8gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAobWFyZ2luU3RhcnQudmFsdWVPcigwKSArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCAr
ICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luRW5kLnZhbHVlT3Io
MCkpOwogICAgICAgICAgICAgaWYgKGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApIHsKLSAg
ICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlX29yKDApOwotICAg
ICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAg
ICAgICAgICBtYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0LnZhbHVlT3IoMCk7CisgICAgICAgICAg
ICAgICAgbWFyZ2luRW5kID0gbWFyZ2luRW5kLnZhbHVlT3IoMCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtMTc3LDggKzE3Nyw4IEBAIFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luCiAK
ICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewotICAgICAgICAgICAgbWFyZ2lu
U3RhcnQgPSBtYXJnaW5TdGFydC52YWx1ZV9vcigwKTsKLSAgICAgICAgICAgIG1hcmdpbkVuZCA9
IG1hcmdpbkVuZC52YWx1ZV9vcigwKTsKKyAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbWFyZ2lu
U3RhcnQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1hcmdpbkVuZC52YWx1
ZU9yKDApOwogICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbWFy
Z2luU3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArICptYXJnaW5FbmQpOwogICAgICAgICB9CiAKQEAgLTMwOCwxMiArMzA4LDEyIEBA
IEZvcm1hdHRpbmdDb250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6CiAgICAgICAgIEFTU0VSVChjaGlsZEluc3RyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKTsKICAgICAgICAgCiAgICAgICAgIGF1dG8mIHN0eWxlID0gY2hpbGQu
c3R5bGUoKTsKLSAgICAgICAgYXV0byBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9
IGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVfb3IoMCkKKyAgICAgICAgYXV0
byBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9IGZpeGVkVmFsdWUoc3R5bGUubWFy
Z2luU3RhcnQoKSkudmFsdWVPcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUu
Ym9yZGVyTGVmdFdpZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRp
bmdMZWZ0KCkpLnZhbHVlX29yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFk
ZGluZ1JpZ2h0KCkpLnZhbHVlX29yKDApCisgICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUu
cGFkZGluZ0xlZnQoKSkudmFsdWVPcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxl
LnBhZGRpbmdSaWdodCgpKS52YWx1ZU9yKDApCiAgICAgICAgICAgICArIExheW91dFVuaXQgeyBz
dHlsZS5ib3JkZXJSaWdodFdpZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxl
Lm1hcmdpbkVuZCgpKS52YWx1ZV9vcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHls
ZS5tYXJnaW5FbmQoKSkudmFsdWVPcigwKTsKIAogICAgICAgICBtaW5pbXVtSW50cmluc2ljV2lk
dGggPSBzdGQ6Om1heChtaW5pbXVtSW50cmluc2ljV2lkdGgsIGNoaWxkSW5zdHJpbnNpY1dpZHRo
Q29uc3RyYWludHMtPm1pbmltdW0gKyBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyk7
IAogICAgICAgICBtYXhpbXVtSW50cmluc2ljV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtSW50cmlu
c2ljV2lkdGgsIGNoaWxkSW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMtPm1heGltdW0gKyBob3Jp
em9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZyk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHAKaW5kZXggZmI3MWI3YzA4MGZmM2U5OGRkYjNjYzQ5OWIwM2UwZWMw
OWRmNmRmZS4uNDYwNmY5ZGM2NjI4ZWUwM2YzMGM3YTk1ZjQzOWZiMTNlNzQwNzA5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnN0cmV0Y2hl
ZEhlaWdodChjb25zdCBMYXlvdXRTdGF0CiAgICAgYXV0byYgZG9jdW1lbnRCb3ggPSBsYXlvdXRC
b3guaXNEb2N1bWVudEJveCgpID8gbGF5b3V0Qm94IDogKmxheW91dEJveC5wYXJlbnQoKTsKICAg
ICBhdXRvJiBkb2N1bWVudEJveERpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGRvY3VtZW50Qm94KTsKICAgICBhdXRvIGRvY3VtZW50Qm94VmVydGljYWxCb3Jk
ZXJzID0gZG9jdW1lbnRCb3hEaXNwbGF5Qm94LmJvcmRlclRvcCgpICsgZG9jdW1lbnRCb3hEaXNw
bGF5Qm94LmJvcmRlckJvdHRvbSgpOwotICAgIGF1dG8gZG9jdW1lbnRCb3hWZXJ0aWNhbFBhZGRp
bmdzID0gZG9jdW1lbnRCb3hEaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGRv
Y3VtZW50Qm94RGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CisgICAgYXV0
byBkb2N1bWVudEJveFZlcnRpY2FsUGFkZGluZ3MgPSBkb2N1bWVudEJveERpc3BsYXlCb3gucGFk
ZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkb2N1bWVudEJveERpc3BsYXlCb3gucGFkZGluZ0JvdHRv
bSgpLnZhbHVlT3IoMCk7CiAKICAgICBhdXRvIHN0cmVjaGVkSGVpZ2h0ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkp
LmNvbnRlbnRCb3hIZWlnaHQoKTsKICAgICBzdHJlY2hlZEhlaWdodCAtPSBkb2N1bWVudEJveFZl
cnRpY2FsQm9yZGVycyArIGRvY3VtZW50Qm94VmVydGljYWxQYWRkaW5nczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCmluZGV4IGZkZTA5NGIzYzU4
YTg1ODIzYjBkMjBiOWY2MGE4NzliZjgzMWIyMWEuLjU2MzkyZjQ3ZWU3OWUzMGQzZjBlMjE4OTRk
M2YxNGJiODc1ZDdlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guaApAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRQb2lu
dCBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIHsgcmlnaHQoKSwgYm90dG9tKCkgfTsgfQog
CiAgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyB3aWR0aCgpLCBoZWlnaHQo
KSB9OyB9Ci0gICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQo
KSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRp
bmdSaWdodCgpLnZhbHVlX29yKDApICsgYm9yZGVyUmlnaHQoKTsgfQotICAgIExheW91dFVuaXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVf
b3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCkg
KyBib3JkZXJCb3R0b20oKTsgfQorICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94V2lk
dGgoKSArIHBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCkgKyBib3JkZXJSaWdodCgpOyB9CisgICAg
TGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKS52YWx1ZU9yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpLnZh
bHVlT3IoMCkgKyBib3JkZXJCb3R0b20oKTsgfQogICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIHsgdG9wKCksIGxlZnQoKSwgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQogICAgIFJlY3QgcmVj
dFdpdGhNYXJnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcCgpIC0gbWFyZ2luQmVmb3JlKCksIGxl
ZnQoKSAtIG1hcmdpblN0YXJ0KCksIG1hcmdpblN0YXJ0KCkgKyB3aWR0aCgpICsgbWFyZ2luRW5k
KCksIG1hcmdpbkJlZm9yZSgpICsgaGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpIH07IH0KIApAQCAt
MTYxLDggKzE2MSw4IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5n
Qm90dG9tKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcGFkZGluZ1JpZ2h0KCkg
Y29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hUb3AoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsgfQotICAgIExheW91dFVuaXQg
Y29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wKCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKTsgfQorICAgIExh
eW91dFVuaXQgY29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBw
YWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hCb3R0
b20oKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94VG9wKCkgKyBjb250ZW50Qm94SGVpZ2h0KCk7
IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRl
bnRCb3hMZWZ0KCkgKyBjb250ZW50Qm94V2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgY29udGVu
dEJveEhlaWdodCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwCmluZGV4IGQ5ZGM4ZTZjM2RhNTExY2ZhZmE0ZjI5NGZhYzg0NGI4
NDczOGU5ZWMuLjcxZmMwNjA2NTIyNzgwZGJhZDIzYTk4ZjU5OTRhODUzOGNhMzJlMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAg
LTQ2NCw3ICs0NjQsNyBAQCB2b2lkIEl0ZXJhdG9yOjpzZXQoUG9zaXRpb25JbkNvbnRleHRSb290
IHZlcnRpY2FsUG9zaXRpb24pCiAKICAgICAgICAgYXV0byBpbmRleCA9IGZsb2F0aW5nVHlwZSA9
PSBGbG9hdDo6TGVmdCA/IG1fY3VycmVudC5tX2xlZnRJbmRleCA6IG1fY3VycmVudC5tX3JpZ2h0
SW5kZXg7CiAgICAgICAgIC8vIFN0YXJ0IGZyb20gdGhlIGVuZCBpZiB3ZSBkb24ndCBoYXZlIGN1
cnJlbnQgeWV0LgotICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVlX29yKG1fZmxvYXRzLnNpemUo
KSk7CisgICAgICAgIGluZGV4ID0gaW5kZXgudmFsdWVPcihtX2Zsb2F0cy5zaXplKCkpOwogICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaW5kZXggPSBwcmV2aW91c0Zsb2F0aW5n
SW5kZXgoZmxvYXRpbmdUeXBlLCBtX2Zsb2F0cywgKmluZGV4KTsKICAgICAgICAgICAgIGlmICgh
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNmY4NjI2NGVm
ZWZkMDMxNzEyYzAwOWZiMjhlYjQ5OGI0M2ZkM2IwYy4uZTIxYjg3NDA3Mjc1NmFkZTE2NGJiOGY3
MDYwNTc1OTgwNTA2OTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmFwcGVuZENv
bnRlbnRUb0xpbmUoTGluZSYgbGluZSwgY29uc3QgSW5saW5lUnVuUHJvCiAgICAgbGluZS5hcHBl
bmRDb250ZW50KHJ1biwgcnVuU2l6ZSk7CiAKICAgICBpZiAocm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKLSAgICAgICAgR2VvbWV0cnk6OmNvbXB1
dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKGxpbmUsIHJ1biwgbGFzdFJ1blR5cGUudmFsdWVfb3Io
SW5saW5lUnVuUHJvdmlkZXI6OlJ1bjo6VHlwZTo6Tm9uV2hpdGVzcGFjZSkpOworICAgICAgICBH
ZW9tZXRyeTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMobGluZSwgcnVuLCBsYXN0UnVu
VHlwZS52YWx1ZU9yKElubGluZVJ1blByb3ZpZGVyOjpSdW46OlR5cGU6Ok5vbldoaXRlc3BhY2Up
KTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVu
dChjb25zdCBJbmxpbmVSdW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0CkBAIC00
MTUsNyArNDE1LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4odW5zaWduZWQgZmlzdFJ1bkluZGUKICAgICAgICAgICAgIGZvciAo
YXV0byogYm94ID0gJmxheW91dEJveDsgYm94ICE9ICZyb290KCk7IGJveCA9IGJveC0+cGFyZW50
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWJveC0+aXNJbkZsb3dQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IG9m
ZnNldC52YWx1ZV9vcihMYXlvdXRTaXplKCkpICsgR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQ
b3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCAqYm94KTsKKyAgICAgICAgICAgICAgICBvZmZz
ZXQgPSBvZmZzZXQudmFsdWVPcihMYXlvdXRTaXplKCkpICsgR2VvbWV0cnk6OmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCAqYm94KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwZDY3M2U5MDkxYTRiMTljMTc1NGRmZjEzZTI3NDExOWU0
Y2FkZGE1Li4yZGJlNmFlODA2YTViYmQzMmRiMWI2MTA3MGJmNzI3NmYyZTM3MGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNz
ZWRUYXJnZXQsIEV2ZW50KgogICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1v
blZNKCk7CiAgICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1lLT5p
c01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpVbmtub3duOwogCi0gICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVu
ZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5l
dmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJh
bWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFt
ZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHNob3VsZFNlbmRSZWZlcnJlciA9
PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVx
dWVzdCgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIHsgdXJsIH0sIHBhc3NlZFRhcmdldCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZ
ZXMsIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBp
bml0aWF0ZWRCeU1haW5GcmFtZSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkws
IGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5mbyksIHRyaWdnZXJpbmdFdmVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCBi
YTE1Nzk5MTQxNDUyOGJkZmRkNDYwYjZlMzM3YmVkZWY1ZGY2MWRlLi41NDU0NGQ2YmI5ZWZjNTI0
YWQ5MDJiMWQ3ZmY0MzRkNzMyNDQzMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5h
dmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkgfSB9CiAgICAgLCBtX29y
aWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSkgfQotICAgICwgbV9w
YWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZV9vcigwKSwg
ZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpLnZhbHVlX29yKDAp
KSA6IHN0ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9w
YWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKDApLCBk
b2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkg
OiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDApIH0KIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDQ1NDJmMGJmNzU0OTU2MjcwMGE2YjYyYzFiY2Q1
MWY2ZGRlNDE0ZGIuLmE3ZTBhNWU2MDA4ZThjM2M3YWU2ZWUxODE4ZWQ1N2IwOTNhMzJjMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlvdXRSZWN0
PiByZWN0LCBUcmlnZ2VyCiAgICAgaWYgKG9sZFJlY3QuaGVpZ2h0KCkgIT0gbGF5b3V0Vmlld3Bv
cnRSZWN0KCkuaGVpZ2h0KCkpCiAgICAgICAgIGxheW91dFRyaWdnZXJpbmcgPSBUcmlnZ2VyTGF5
b3V0T3JOb3Q6OlllczsKIAotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiXG5GcmFtZVZpZXcgIiA8PCB0aGlzIDw8ICIgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJl
Y3QoKSAtIGNoYW5naW5nIG92ZXJyaWRlIGxheW91dCB2aWV3cG9ydCBmcm9tICIgPDwgb2xkUmVj
dCA8PCAiIHRvICIgPDwgbV9sYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdC52YWx1ZV9vcihMYXlv
dXRSZWN0KCkpIDw8ICIgbGF5b3V0VHJpZ2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09
IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVzID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBz
ZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0
IHZpZXdwb3J0IGZyb20gIiA8PCBvbGRSZWN0IDw8ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0
T3ZlcnJpZGVSZWN0LnZhbHVlT3IoTGF5b3V0UmVjdCgpKSA8PCAiIGxheW91dFRyaWdnZXJpbmcg
IiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcyA/ICJ5ZXMi
IDogIm5vIikpOwogCiAgICAgaWYgKG9sZFJlY3QgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkgJiYg
bGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcykKICAgICAgICAgc2V0
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KCk7CkBAIC00ODIzLDcgKzQ4MjMs
NyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3Qg
SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogZmxvYXQgRnJhbWVWaWV3Ojpkb2N1bWVudFRv
QWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QK
IHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3NlZCwgaXQgYWxyZWFkeSBmYWN0b3Jz
IGluIHBhZ2Vab29tRmFjdG9yKCkuIAotICAgIHJldHVybiBlZmZlY3RpdmVab29tLnZhbHVlX29y
KGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsK
KyAgICByZXR1cm4gZWZmZWN0aXZlWm9vbS52YWx1ZU9yKGZyYW1lKCkucGFnZVpvb21GYWN0b3Io
KSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAogZmxvYXQgRnJhbWVWaWV3Ojph
YnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9v
bSkgY29uc3QKQEAgLTUzNzAsMTYgKzUzNzAsMTYgQEAgSW50U2l6ZSBGcmFtZVZpZXc6OnZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogCiAgICAgaWYgKHVzZUZpeGVkTGF5
b3V0KCkpIHsKICAgICAgICAgYXV0byBmaXhlZExheW91dFNpemUgPSB0aGlzLT5maXhlZExheW91
dFNpemUoKTsKLSAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRo
LnZhbHVlX29yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKLSAgICAgICAgdmlld3BvcnRTaXpl
LmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IoZml4ZWRMYXlvdXRTaXplLmhl
aWdodCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRo
LnZhbHVlT3IoZml4ZWRMYXlvdXRTaXplLndpZHRoKCkpOworICAgICAgICB2aWV3cG9ydFNpemUu
aGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZU9yKGZpeGVkTGF5b3V0U2l6ZS5oZWln
aHQoKSk7CiAgICAgICAgIHJldHVybiB7ICp2aWV3cG9ydFNpemUud2lkdGgsICp2aWV3cG9ydFNp
emUuaGVpZ2h0IH07CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgdmFsdWUgcmV0dXJu
ZWQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoZSB2YWx1ZSBvZiB0aGUgb3ZlcmZsb3cKICAg
ICAvLyBwcm9wZXJ0eSBvbiB0aGUgcm9vdCBlbGVtZW50LgogICAgIGF1dG8gdmlzaWJsZUNvbnRl
bnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycyA9IHZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Nj
cm9sbGJhcnMoKS5zaXplKCk7Ci0gICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXpl
LndpZHRoLnZhbHVlX29yKHZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lk
dGgoKSk7Ci0gICAgdmlld3BvcnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFs
dWVfb3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7Cisg
ICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRoLnZhbHVlT3IodmlzaWJs
ZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy53aWR0aCgpKTsKKyAgICB2aWV3cG9ydFNp
emUuaGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZU9yKHZpc2libGVDb250ZW50U2l6
ZUluY2x1ZGluZ1Njcm9sbGJhcnMuaGVpZ2h0KCkpOwogICAgIHJldHVybiB7ICp2aWV3cG9ydFNp
emUud2lkdGgsICp2aWV3cG9ydFNpemUuaGVpZ2h0IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGU3MjUxZWUxYTE1ZmUyZTFkODAzZmVjZTU5OGU0YzNiZjJjNjNiYTYuLjYzZDZlOTQ4NjJl
YTlkZjBmYmEwODRmNWNiMjZiZDQ2NzQ4MmQzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTEy
OCw3ICsxMTI4LDcgQEAgYm9vbCBQYWdlOjppc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdAog
dm9pZCBQYWdlOjpzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlv
bmFsPGJvb2w+IGlzRW5hYmxlZCkKIHsKICAgICBtX2xvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlk
ZUZvclRlc3RpbmcgPSBpc0VuYWJsZWQ7Ci0gICAgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKG1f
bG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRlRm9yVGVzdGluZy52YWx1ZV9vcihmYWxzZSkpOwor
ICAgIGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShtX2xvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlk
ZUZvclRlc3RpbmcudmFsdWVPcihmYWxzZSkpOwogfQogCiB2b2lkIFBhZ2U6OnNldFRvcENvbnRl
bnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKaW5kZXggMTIzNjQ0MjQ1Mjc5NjJiODlmNDc4MGM1MWJjNmJhYTNhMzcw
NDQ1Ni4uMDVmOGIxOWRhZTU4NzlkMGNkZmRhN2M3NjQ5ZWNhMmI0NGMzOThhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCBT
dHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCkpOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmROdW1iZXIocG9ydC52YWx1ZU9yKDApKTsKICAgICAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgK
aW5kZXggNTkyNTEwMjJhYTI4YWM1MGRkOGVlMmIzNjY5NzA3ZDA4OTRjYzU0My4uMjQ0MzcxZTIw
YjFhZGYxZWM1Y2UzNWI4MTllYWQ5NDc5NjMzZjg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YUhhc2ggewogICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAg
ICAgICBkYXRhLnByb3RvY29sLmltcGwoKSA/IGRhdGEucHJvdG9jb2wuaW1wbCgpLT5oYXNoKCkg
OiAwLAogICAgICAgICAgICAgZGF0YS5ob3N0LmltcGwoKSA/IGRhdGEuaG9zdC5pbXBsKCktPmhh
c2goKSA6IDAsCi0gICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKKyAgICAgICAgICAg
IGRhdGEucG9ydC52YWx1ZU9yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdI
YXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggZTAxNDhhMmQwNWQ5
OWIwZGRkZjA2YTIzZDI0NmQ1MzQ1MmNiMmMxMy4uZjlhNTJmYTFmNDEzYTcxMmQ4YWVlODk1ODE4
ZjhmMzUxYWU5M2U3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5o
CkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2ggewogICAgICAgICB1
bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAgICAgICBvcmlnaW4tPnByb3RvY29sKCku
aW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAg
ICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9yaWdpbi0+aG9zdCgpLmltcGwoKS0+aGFzaCgp
IDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCisgICAgICAgICAg
ICBvcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCmlu
ZGV4IDFkMzZiOGVlYjBiZWMwNTJlNjEwMGQwZWRlYjMxMTMyNjMyNmU3MTEuLmNhOWNkOTY4NTBj
N2Y0NmJjMTYzNDliOTIwNWM4MWUwZGU4N2IxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKQEAgLTExNiw4ICsxMTYsOCBAQCBib29sIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIGNvbnRlbnRT
aXplKQogCiBib29sIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld0xheW91dFNpemUoY29u
c3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgT3B0aW9uYWw8ZG91YmxlPiYmIHNjYWxlRmFj
dG9yLCBPcHRpb25hbDxkb3VibGU+JiYgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKQogewot
ICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yLnZhbHVlX29yKG1fbGF5b3V0
U2l6ZVNjYWxlRmFjdG9yKTsKLSAgICBkb3VibGUgbmV3RWZmZWN0aXZlV2lkdGggPSBtaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgudmFsdWVfb3IobV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lk
dGgpOworICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yLnZhbHVlT3IobV9s
YXlvdXRTaXplU2NhbGVGYWN0b3IpOworICAgIGRvdWJsZSBuZXdFZmZlY3RpdmVXaWR0aCA9IG1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aC52YWx1ZU9yKG1fbWluaW11bUVmZmVjdGl2ZURldmlj
ZVdpZHRoKTsKICAgICBpZiAobV92aWV3TGF5b3V0U2l6ZSA9PSB2aWV3TGF5b3V0U2l6ZSAmJiBt
X2xheW91dFNpemVTY2FsZUZhY3RvciA9PSBuZXdTY2FsZUZhY3RvciAmJiBuZXdFZmZlY3RpdmVX
aWR0aCA9PSBtX21pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDFkYmJkNTZj
ZGZkZjZlNTFhZTBiNzFjNmIxMWNiOGUxMTVjOTRmNTUuLjA3OGY4OTdiYTlmYTYwMmZlYjYxZGU2
MTU4OTAyZTg4YmU4ZjBkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93
RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
CkBAIC0xODIsOCArMTgyLDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhj
b25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJl
cy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVl
OwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3
aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAv
LyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCi0g
ICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0
IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBk
ZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAg
ZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEw
MCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQg
aGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCBo
ZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJl
IGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMu
d2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xOTEsMTYg
KzE5MSwxNiBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmlu
ZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9h
dEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54
KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkg
PSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVS
ZWN0LnkoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYg
KGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKKyAg
ICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7
CiAgICAgICAgIGlmICghZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3Jl
ZW5BdmFpbGFibGVSZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0
aCkgLyAyOwogICAgICAgICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55
ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSAtIGhlaWdodCkgLyAyOwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xG
ZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOwotICAgIGZl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3Jv
bGwiKS52YWx1ZV9vcih0cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9v
bEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVh
dHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52
YWx1ZU9yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0
dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0cnVlKTsKKyAgICBmZWF0dXJlcy5z
dGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1
ZU9yKGZhbHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggOTBiZTk4NDBlY2M3NzA5
ZDgxZmUxOTI2M2JkOTA2Zjk4Mjk4OGJmMi4uM2E3NGY5NjkzNDg2OWQzM2Q2Yzk1MmMxMmQ2Njhl
ZjYzMDYwNDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0
ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAg
ICAgaWYgKGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlJlc3VtZU92ZXJyaWRlKSB7CiAg
ICAgICAgIGlmIChtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpMb29waW5nIHx8
IG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OkVuZGluZykgewogICAgICAgICAg
ICAgLy8gU3RhcnQgdGhlIGFuaW1hdGlvbgotICAgICAgICAgICAgc3RhcnRBbmltYXRpb24oYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAg
ICAgICAgICBzdGFydEFuaW1hdGlvbihiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3Rh
cnRUaW1lLnZhbHVlT3IoMCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMTMsNyArMzEzLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUo
QW5pbWF0aW9uU3RhdGVJbnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAg
IC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHdhaXRpbmcgZm9yIGEgc3RhcnQgcmVzcG9uc2UuIENh
bmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0LiBXaGVuIAogICAgICAgICAgICAgICAgIC8vIHdl
IHVucGF1c2UsIHdlIHdpbGwgYWN0IGFzIHRob3VnaCB0aGUgc3RhcnQgdGltZXIganVzdCBmaXJl
ZAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1l
KCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAgICAgICAgcGF1c2VB
bmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZU9y
KDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRl
ICVzIC0+IFBhdXNlZFdhaXRSZXNwb25zZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlv
blN0YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0
YXRlOjpQYXVzZWRXYWl0UmVzcG9uc2U7CiAgICAgICAgICAgICB9CkBAIC0zMzMsNyArMzMzLDcg
QEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJ
bnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1h
dGlvbiBhbmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lKCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5Bbmlt
YXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAg
ICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0
VGltZS52YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFu
aW1hdGlvblN0YXRlICVzIC0+IFBhdXNlZFJ1biIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1h
dGlvblN0YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlv
blN0YXRlOjpQYXVzZWRSdW47CiAgICAgICAgICAgICB9CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9p
ZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dCBp
bnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBh
bmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKCk7Ci0gICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSk7CisgICAgICAgICAgICAgICAg
cGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52
YWx1ZU9yKDApKTsKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlv
blN0YXRlICVzIC0+IFBhdXNlZFJ1biIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0
YXRlKSk7CiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRl
OjpQYXVzZWRSdW47CiAgICAgICAgICAgICB9CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBBbmlt
YXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dCBpbnB1dCwg
ZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09IEFuaW1hdGlvblN0YXRl
SW5wdXQ6OlBsYXlTdGF0ZVJ1bm5pbmcpOwogICAgICAgICAgICAgQVNTRVJUKHBhdXNlZCgpKTsK
ICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGltZXMKLSAgICAgICAgICAgIG1fc3RhcnRUaW1l
ID0gbV9zdGFydFRpbWUudmFsdWVfb3IoMCkgKyBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAt
IG1fcGF1c2VUaW1lLnZhbHVlX29yKDApOworICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBtX3N0
YXJ0VGltZS52YWx1ZU9yKDApICsgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3BhdXNl
VGltZS52YWx1ZU9yKDApOwogICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBXVEY6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIC8vIHdlIHdlcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0IHRpbWVyIHRv
IGZpcmUsIGdvIGJhY2sgYW5kIHdhaXQgYWdhaW4KQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEFu
aW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0IGlucHV0
LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVzCiAg
ICAgICAgICAgICAgICAgaWYgKG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlBh
dXNlZFJ1bikKLSAgICAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBtX3N0YXJ0VGltZS52
YWx1ZV9vcigwKSArIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9wYXVzZVRpbWUudmFs
dWVfb3IoMCk7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gbV9zdGFydFRpbWUu
dmFsdWVPcigwKSArIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9wYXVzZVRpbWUudmFs
dWVPcigwKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
cnRUaW1lID0gMDsKIApAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBk
YXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0
ZUlucHV0OjpTdGFydFRpbWVTZXQsIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0YXJ0ZWQgPSBz
dGFydEFuaW1hdGlvbihiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lLnZh
bHVlX29yKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RhcnRlZCA9IHN0YXJ0
QW5pbWF0aW9uKGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpIC0gbV9zdGFydFRpbWUudmFsdWVP
cigwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5p
bWF0aW9uQ29udHJvbGxlcigpLmFkZFRvQW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWVSZXNw
b25zZSh0aGlzLCBzdGFydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1faXNBY2NlbGVy
YXRlZCA9IHN0YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0
ZSA9IEFuaW1hdGlvblN0YXRlOjpQYXVzZWRSdW47CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFt
X3N0YXJ0VGltZSk7CiAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBwYXJhbTsKLSAgICAg
ICAgICAgICAgICBtX3BhdXNlVGltZSA9IG1fcGF1c2VUaW1lLnZhbHVlX29yKDApICsgcGFyYW07
CisgICAgICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSBtX3BhdXNlVGltZS52YWx1ZU9yKDApICsg
cGFyYW07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTQ5NCw3
ICs0OTQsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRl
ZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9u
ID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKTsK
KyAgICBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkg
LSBtX3N0YXJ0VGltZS52YWx1ZU9yKDApOwogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZW5z
dXJlIHRoYXQgZWxhcHNlZER1cmF0aW9uIGlzIG5ldmVyIDwgMC4gSWYgaXQgaXMsIHRoaXMgc3Vn
Z2VzdHMgdGhhdAogICAgIC8vIHdlIGhhZCBhIHJlY2FsY1N0eWxlKCkgb3V0c2lkZSBvZiBiZWdp
bkFuaW1hdGlvblVwZGF0ZSgpL2VuZEFuaW1hdGlvblVwZGF0ZSgpLgpAQCAtNjMxLDkgKzYzMSw5
IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRvdWJsZSBv
ZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiB2b2lkIEFuaW1hdGlvbkJhc2U6OmdldFRpbWVU
b05leHRFdmVudChTZWNvbmRzJiB0aW1lLCBib29sJiBpc0xvb3BpbmcpIGNvbnN0CiB7CiAgICAg
Ly8gRGVjaWRlIHdoZW4gdGhlIGVuZCBvciBsb29wIGV2ZW50IG5lZWRzIHRvIGZpcmUKLSAgICBj
b25zdCBkb3VibGUgZWxhcHNlZER1cmF0aW9uID0gc3RkOjptYXgoYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9vcigwKSwgMC4wKTsKKyAgICBjb25zdCBkb3Vi
bGUgZWxhcHNlZER1cmF0aW9uID0gc3RkOjptYXgoYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkg
LSBtX3N0YXJ0VGltZS52YWx1ZU9yKDApLCAwLjApOwogICAgIGRvdWJsZSBkdXJhdGlvbkxlZnQg
PSAwOwotICAgIGRvdWJsZSBuZXh0SXRlcmF0aW9uVGltZSA9IG1fdG90YWxEdXJhdGlvbi52YWx1
ZV9vcigwKTsKKyAgICBkb3VibGUgbmV4dEl0ZXJhdGlvblRpbWUgPSBtX3RvdGFsRHVyYXRpb24u
dmFsdWVPcigwKTsKIAogICAgIGlmICghbV90b3RhbER1cmF0aW9uIHx8IGVsYXBzZWREdXJhdGlv
biA8IG1fdG90YWxEdXJhdGlvbi52YWx1ZSgpKSB7CiAgICAgICAgIGR1cmF0aW9uTGVmdCA9IG1f
YW5pbWF0aW9uLT5kdXJhdGlvbigpID4gMCA/IChtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSAtIGZt
b2QoZWxhcHNlZER1cmF0aW9uLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSkpIDogMDsKQEAgLTY3
NSw5ICs2NzUsOSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZShkb3VibGUgdCkK
IAogICAgIEFTU0VSVChtX3N0YXJ0VGltZSk7IC8vIElmIG1fc3RhcnRUaW1lIGlzIHplcm8sIHdl
IGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0aW1lLgogICAg
IGlmICh0IDw9IG1fYW5pbWF0aW9uLT5kZWxheSgpKQotICAgICAgICBtX3BhdXNlVGltZSA9IG1f
c3RhcnRUaW1lLnZhbHVlX29yKDApOworICAgICAgICBtX3BhdXNlVGltZSA9IG1fc3RhcnRUaW1l
LnZhbHVlT3IoMCk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdXNlVGltZSA9IG1fc3RhcnRUaW1l
LnZhbHVlX29yKDApICsgdCAtIG1fYW5pbWF0aW9uLT5kZWxheSgpOworICAgICAgICBtX3BhdXNl
VGltZSA9IG1fc3RhcnRUaW1lLnZhbHVlT3IoMCkgKyB0IC0gbV9hbmltYXRpb24tPmRlbGF5KCk7
CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBjb21wb3NpdGVkUmVuZGVyZXIoKSkKICAgICAg
ICAgcmVuZGVyZXItPnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNv
bmRzKG1fcGF1c2VUaW1lLnZhbHVlKCkpKTsKQEAgLTY5NSwxNiArNjk1LDE2IEBAIGRvdWJsZSBB
bmltYXRpb25CYXNlOjpnZXRFbGFwc2VkVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKHBhdXNlZCgp
KSB7CiAgICAgICAgIGRvdWJsZSBkZWxheU9mZnNldCA9ICghbV9zdGFydFRpbWUgJiYgbV9hbmlt
YXRpb24tPmRlbGF5KCkgPCAwKSA/IG1fYW5pbWF0aW9uLT5kZWxheSgpIDogMDsKLSAgICAgICAg
cmV0dXJuIG1fcGF1c2VUaW1lLnZhbHVlX29yKDApIC0gbV9zdGFydFRpbWUudmFsdWVfb3IoMCkg
LSBkZWxheU9mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fcGF1c2VUaW1lLnZhbHVlT3IoMCkgLSBt
X3N0YXJ0VGltZS52YWx1ZU9yKDApIC0gZGVsYXlPZmZzZXQ7CiAgICAgfQogCiAgICAgaWYgKCFt
X3N0YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAocG9zdEFjdGl2ZSgpIHx8
IGZpbGxpbmdGb3J3YXJkcygpKQotICAgICAgICByZXR1cm4gbV90b3RhbER1cmF0aW9uLnZhbHVl
X29yKDApOworICAgICAgICByZXR1cm4gbV90b3RhbER1cmF0aW9uLnZhbHVlT3IoMCk7CiAKLSAg
ICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZS52YWx1ZV9v
cigwKTsKKyAgICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGlt
ZS52YWx1ZU9yKDApOwogfQogCiB2b2lkIEFuaW1hdGlvbkJhc2U6OnNldEVsYXBzZWRUaW1lKGRv
dWJsZSB0aW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAyNTBlNmQ2ODAyOGVlZjkxODExMjI1ZTM5
NTZiOGY5ZmNiYzY0NGU4Li5kYzFjZWFiM2FiMjA5NGE0YTYyN2Y1NjNkZjk4NzU3ZWI2MDEwNGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmlt
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgQ1NTQW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvblRpbWVyKFNldENoYW5nZWQgY2FsbFNl
dENoYW5nCiB7CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gdGltZVRvTmV4dFNlcnZpY2UgPSB1cGRh
dGVBbmltYXRpb25zKGNhbGxTZXRDaGFuZ2VkKTsKIAotICAgIExPRyhBbmltYXRpb25zLCAidXBk
YXRlQW5pbWF0aW9uVGltZXI6IHRpbWVUb05leHRTZXJ2aWNlIGlzICUuMmYiLCB0aW1lVG9OZXh0
U2VydmljZS52YWx1ZV9vcihTZWNvbmRzIHsgLTEgfSkudmFsdWUoKSk7CisgICAgTE9HKEFuaW1h
dGlvbnMsICJ1cGRhdGVBbmltYXRpb25UaW1lcjogdGltZVRvTmV4dFNlcnZpY2UgaXMgJS4yZiIs
IHRpbWVUb05leHRTZXJ2aWNlLnZhbHVlT3IoU2Vjb25kcyB7IC0xIH0pLnZhbHVlKCkpOwogCiAg
ICAgLy8gSWYgd2UgZG9uJ3QgbmVlZCBzZXJ2aWNlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUg
dGltZXIgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcKICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJl
YWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVh
ZENvY29hLm1tCmluZGV4IGVmZDgzNmFmZDY4ZDMyMzk0ZmU1NDcyNzQ0OWQ2OGRiOWY0M2Q0ODYu
LjY5OGZiOGRlNjRkZWIxMWY0M2RjYTViMzE5OTlhNGVhMWJlZGIzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBA
IC0yNDksOCArMjQ5LDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybVRocmVh
ZEJvZHkoSlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYXRhJiBkYXQKICAgICBkYXRhLnRvdGFs
RXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAogICAgIGF1dG8gbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24g
PSBub3cgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCku
dmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
KTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IG5vdyArIHZtLT5oZWFwLmZ1
bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9m
TmV4dEVkZW5Db2xsZWN0aW9uID0gbm93ICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2so
KS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9
IG5vdyArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52
YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VV
c2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VV
c2FnZVRocmVhZExpbnV4LmNwcAppbmRleCBkY2FmYjZmOGFmZmVkYjk0YjU4YTc2MzlmYzAzYTM0
NjUwNjQxNGE1Li4xNTYyYTA4YzU3OTkxZGVkYWU3MTA2NmYwY2ZlYzM5YzgxOTg0ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFk
TGludXguY3BwCkBAIC0xNzAsOCArMTcwLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpw
bGF0Zm9ybVRocmVhZEJvZHkoSlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYXRhJiBkYXQKICAg
ICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAogICAg
IGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RWRl
bkNvbGxlY3Rpb24gPSBub3cgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1l
VW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpKTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IG5vdyAr
IHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9v
cihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAg
IGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gbm93ICsgdm0tPmhlYXAuZWRlbkFjdGl2
aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxs
Q29sbGVjdGlvbiA9IG5vdyArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVV
bnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IGY0NzlmOWJlYzljZTNkNjI2MTdiNzM5YWM1YTc4ZDUyZTYwZTg4ZGYuLjlhOWM5
NzY4NjEyNmYzMWM0ZGNhOTJlYzNhOTkzNTkwNGVjNTUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cApAQCAtMjIyLDEyICsyMjIsMTIgQEAgdW5zaWduZWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0aWFsR2wKICAgICAgICAg
ICAgICAgICBpZiAoY3Vyc29yUG9zaXRpb25JdGVyYXRvci5pc0JvdW5kYXJ5KGhpdEluZGV4KSkK
ICAgICAgICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gaGl0SW5kZXg7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLnByZWNlZGluZyhoaXRJbmRleCkudmFsdWVfb3IoMCk7CisgICAgICAgICAg
ICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IucHJlY2VkaW5n
KGhpdEluZGV4KS52YWx1ZU9yKDApOwogCiAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlUGFy
dGlhbEdseXBocykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhUZXh0UnVuLnN0
cmluZ0xvY2F0aW9uKCkgKyBjbHVzdGVyU3RhcnQ7CiAKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjbHVzdGVyRW5kID0gY3Vyc29yUG9zaXRpb25JdGVyYXRvci5mb2xsb3dpbmcoaGl0SW5kZXgp
LnZhbHVlX29yKHN0cmluZ0xlbmd0aCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2x1c3Rl
ckVuZCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IuZm9sbG93aW5nKGhpdEluZGV4KS52YWx1ZU9y
KHN0cmluZ0xlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBmbG9hdCBjbHVzdGVyV2lkdGg7CiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBzZWFyY2ggc3RvcHMgYXQgdGhlIGJvdW5kYXJp
ZXMgb2YgY29tcGxleFRleHRSdW4uIEluIHRoZW9yeSwgaXQgc2hvdWxkIGdvIG9uIGludG8gbmVp
Z2hib3JpbmcgQ29tcGxleFRleHRSdW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQ0MGQzYjliMjNkNzUwMmJmMTZlMjQwYTYwZjRjMzEwYjI4
YzE2ZmQuLmI2MzVhMTNjYzQ4ODQwZjA4ZTM3MWY3Yzg4MmNlZGJlMDAyMTVhNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAgICAgIGhhc2hlci5hZGQobV9z
aXplKTsKICAgICAgICAgaGFzaGVyLmFkZChtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodCk7
CiAgICAgICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aCk7Ci0gICAg
ICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3Jt
YWxJdGFsaWNWYWx1ZSgpKSk7CisgICAgICAgIGhhc2hlci5hZGQobV9mb250U2VsZWN0aW9uUmVx
dWVzdC5zbG9wZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpKTsKICAgICAgICAgaGFzaGVy
LmFkZChtX2xvY2FsZS5leGlzdGluZ0hhc2goKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgZmxh
Z0l0ZW0gOiBtX2ZsYWdzKQogICAgICAgICAgICAgaGFzaGVyLmFkZChmbGFnSXRlbSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
MzQzMmRjYTYyZWQ5MmQwNjRkZTI1OTIzMGY4NjMwODg2ZjFjN2VjOC4uYjNiNjQ2ODFmYzQ2NmJh
NjlkY2M2M2Q0ZTk2YzQ1MDQxNGUzMTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjpnbHlwaEJ1ZmZlckZvclRleHRSdW4oQ29kZVBhdGggY29kZVBhdGhUb1VzZSwg
Y29uc3QgVGV4dFJ1biYKIAogZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewotICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBzdGFydFggPSBwb2ludC54KCkgKyBnbHlwaEJ1ZmZlckZv
clRleHRSdW4oY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24s
IGdseXBoQnVmZmVyKTsKICAgICAvLyBXZSBjb3VsZG4ndCBnZW5lcmF0ZSBhbnkgZ2x5cGhzIGZv
ciB0aGUgcnVuLiBHaXZlIHVwLgpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuCiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsK
KyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAg
ICBpZiAoY29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKICAgICAgICAgZHJhd0Vt
cGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KGNvbnRleHQsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IGRlc3RpbmF0aW9uKTsKICAgICBlbHNlCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4KIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0
bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29u
c3QKIHsKICAgICBBU1NFUlQoIWNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKTsKLSAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAgICAgCiAgICAgLy8g
RklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVu
cyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAw
MDUwCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CkBAIC01NDUs
NyArNTQ1LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWls
YWJsZShmbG9hdCYgd2lkdGgpIGNvbnN0CiAKIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAogewotICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKKyAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKICAgICBpZiAo
Y29kZVBhdGgocnVuLCBmcm9tLCB0bykgIT0gQ29tcGxleCkKICAgICAgICAgcmV0dXJuIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgZnJvbSwgZGVz
dGluYXRpb24pOwogCkBAIC02MTksNyArNjE5LDcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZv
bnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUK
IAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBh
dGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJl
cy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKChlbmFibGVLZXJuaW5n
KCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlX29yKDApIHx8IHRvLnZhbHVl
X29yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKKyAgICBpZiAoKGVuYWJsZUtlcm5p
bmcoKSB8fCByZXF1aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20udmFsdWVPcigwKSB8fCB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIENvbXBs
ZXg7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAK
aW5kZXggMzU3YjQwMjNlZTA4ZGEwY2RlODk2ODJkOGRjYzc3OGUxYzhlZmUwMy4uNmU1ZjhiNDli
N2M0YTRhNzRiODllZTQwNjQzZjFjOGJkMTJkMjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgYXV0byBGb250U2VsZWN0aW9uQWxnb3JpdGhtOjpzdHJldGNoRGlz
dGFuY2UoQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcykgY29uc3QgLT4KIGF1dG8gRm9udFNlbGVj
dGlvbkFsZ29yaXRobTo6c3R5bGVEaXN0YW5jZShDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBj
b25zdCAtPiBEaXN0YW5jZVJlc3VsdAogewogICAgIGF1dG8gc2xvcGUgPSBjYXBhYmlsaXRpZXMu
c2xvcGU7Ci0gICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Quc2xvcGUudmFsdWVfb3Io
bm9ybWFsSXRhbGljVmFsdWUoKSk7CisgICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Qu
c2xvcGUudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc2xvcGUuaXNW
YWxpZCgpKTsKICAgICBpZiAoc2xvcGUuaW5jbHVkZXMocmVxdWVzdFNsb3BlKSkKICAgICAgICAg
cmV0dXJuIHsgRm9udFNlbGVjdGlvblZhbHVlKCksIHJlcXVlc3RTbG9wZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRo
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29y
aXRobS5oCmluZGV4IGFiNDcwNTdhMTRjMTc3OWU1OGZiOTcyMGUzOWFkMzhhMWI3NGQ3ZWMuLjZi
MTFiOWEzMTg4ZWM1YTQ5ZDUyMDkxYWU3MTNiZDFkNWYyNDhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGht
LmgKQEAgLTM1Myw3ICszNTMsNyBAQCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRm9udFNlbGVjdGlvblZhbHVlJiBmb250U2VsZQogCiBpbmxpbmUg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgT3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPiYgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUpCiB7Ci0gICAgdHMg
PDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUo
KSk7CisgICAgdHMgPDwgb3B0aW9uYWxGb250U2VsZWN0aW9uVmFsdWUudmFsdWVPcihub3JtYWxJ
dGFsaWNWYWx1ZSgpKTsKICAgICByZXR1cm4gdHM7CiB9CiAKQEAgLTQzMiwxNyArNDMyLDE3IEBA
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIHsKIAogICAgIGNvbnN0
ZXhwciBSYW5nZSBjb21wdXRlV2VpZ2h0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB3
ZWlnaHQudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxXZWlnaHRWYWx1ZSgpIH0pOworICAgICAgICBy
ZXR1cm4gd2VpZ2h0LnZhbHVlT3IoUmFuZ2UgeyBub3JtYWxXZWlnaHRWYWx1ZSgpIH0pOwogICAg
IH0KIAogICAgIGNvbnN0ZXhwciBSYW5nZSBjb21wdXRlV2lkdGgoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHdpZHRoLnZhbHVlX29yKFJhbmdlIHsgbm9ybWFsU3RyZXRjaFZhbHVlKCkg
fSk7CisgICAgICAgIHJldHVybiB3aWR0aC52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsU3RyZXRjaFZh
bHVlKCkgfSk7CiAgICAgfQogCiAgICAgY29uc3RleHByIFJhbmdlIGNvbXB1dGVTbG9wZSgpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gc2xvcGUudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxJ
dGFsaWNWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4gc2xvcGUudmFsdWVPcihSYW5nZSB7IG5v
cm1hbEl0YWxpY1ZhbHVlKCkgfSk7CiAgICAgfQogCiAgICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmlu
ZGV4IGZlMDQ5YTRiOGU2NzAzZDYxYmMxYWRiNTAwNjg4NWZjYzdlZDNmYTUuLmZkYzJiNzhiYzY1
YjBmYjYyOWE1NjRjMTAzZDE5ODRjZDI4NjVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0zOTAsNyArMzkwLDcgQEAgSW50U2l6
ZSBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwKICAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAh
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQ
b2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNoYWRvd2VkUmVjdCkpOwogICAg
ICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7Ci0gICAgICAgIGxheWVyUmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1
YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3Qg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQo
dHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGxheWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggN2I5MzViZjFiMzI2NjU4NTY3YzgyZTdh
YTRlOWI5Y2ZmNjY5MmMyMC4uY2Y3ZGMwYzRkODk2YjU1OTBjMjEwZjI5ZGJmOGUxYzE2OTU5YzEw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzUwLDcgKzIzNTAsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCYgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0
aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkp
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSBbZmlyc3RFbmFibGVkVmlk
ZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91
dHB1dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0
cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBSZWN0KG91dHB1dFJlY3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9U
cmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgp
LCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggMWIwN2I0ZWI4MDI0MGVkNmQ1MGQwNzczYjg3
NjNkNDRkYWI5N2Q1Zi4uMjM4YTJlYTM5NThjMzFiNjZiZmQ0ODY3ZGRhYWQ4YTU4NWQ5YTUzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ28KICAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFn
ZS5nZXQoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChp
bWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlk
ZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5t
ZWRpYVNhbXBsZSk7Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1Ry
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVz
dFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYTJlMDdjZjZmMzIxN2IzYWRmODk1YzkyYjAy
Mzk0OTQyOTQ1ODVjMS4uNjVjZmIyNGFlNDAwNjg2ZWYwNzA4MGQ1NDA5ZmVkZjg3YzJmMWY3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OndpbGxTZWVrKCkKIAogRmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9h
dFNpemUoKSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZU9yKEZsb2F0U2l6ZSgpKTsK
IH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JN
b3JlU2FtcGxlcyhpbnQgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDZhNTE1Mjk2MmE2NDY1
ZTY0ZmU5YzA1ODE0ZTZlMjM1ZTExZTI2YWYuLjY1MGViNmM4ZTU0YWI3MjI1ZWE4OTQwYzFkODIx
M2JlY2RiMGZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzKGNvbnN0IFZpc2libGVB
bmRDb3ZlcmFnZVJlY3RzJgogICAgIGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KG1fYm91bmRzT3Jp
Z2luLCBzaXplKCkpOwogICAgIGlmIChhdXRvIGV4dGVudCA9IGFuaW1hdGlvbkV4dGVudCgpKSB7
CiAgICAgICAgIC8vIEFkanVzdCB0aGUgYW5pbWF0aW9uIGV4dGVudCB0byBtYXRjaCB0aGUgY3Vy
cmVudCBhbmltYXRpb24gcG9zaXRpb24uCi0gICAgICAgIGJvdW5kcyA9IHJlY3RzLmFuaW1hdGlu
Z1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkubWFw
UmVjdCgqZXh0ZW50KTsKKyAgICAgICAgYm91bmRzID0gcmVjdHMuYW5pbWF0aW5nVHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLm1hcFJlY3QoKmV4dGVu
dCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0aW9ucyBp
bnRvIGFjY291bnQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50ZXJzZWN0
cyB0aGUgY292ZXJhZ2UgcmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA1MGJkYjVm
NWYyNWE2N2IzNmZjY2UzMmM1YTRjNjU3YTY3YmMzYmU4Li5lMjU4MTQxZTk5YWQyOGE1NDE0YzZh
NDVkZTgzYjI3OWU0Nzc5NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC01OTgsNyAr
NTk4LDcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRmb3JtRm9udChDVEZvbnRS
ZWYgb3JpZ2luYWxGb250LCBjb25zdCBGb250RGVzY3IKICAgICBpZiAoYXBwbHlXZWlnaHRXaWR0
aFNsb3BlVmFyaWF0aW9ucyAmJiAhZm9udElzU3lzdGVtRm9udChvcmlnaW5hbEZvbnQpKSB7CiAg
ICAgICAgIGZsb2F0IHdlaWdodCA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodDsKICAgICAg
ICAgZmxvYXQgd2lkdGggPSBmb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aDsKLSAgICAgICAgZmxv
YXQgc2xvcGUgPSBmb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3JtYWxJdGFs
aWNWYWx1ZSgpKTsKKyAgICAgICAgZmxvYXQgc2xvcGUgPSBmb250U2VsZWN0aW9uUmVxdWVzdC5z
bG9wZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOwogICAgICAgICBpZiAoYXV0byB3ZWln
aHRWYWx1ZSA9IGZvbnRGYWNlQ2FwYWJpbGl0aWVzLndlaWdodCkKICAgICAgICAgICAgIHdlaWdo
dCA9IHN0ZDo6bWF4KHN0ZDo6bWluKHdlaWdodCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdlaWdodFZh
bHVlLT5tYXhpbXVtKSksIHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHRWYWx1ZS0+bWluaW11bSkp
OwogICAgICAgICBpZiAoYXV0byB3aWR0aFZhbHVlID0gZm9udEZhY2VDYXBhYmlsaXRpZXMud2lk
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggNGQwZGVkNGU0YmI0ZTEwMmUwZjU0ZGZkMDM1ZmU5
ZDRhYzU5ZmFiYS4uODIyNzg3OWY1Nzg2ZGU2MzUwNTQzNmYxYjQ4MDE3YzBhZGQyOGVmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpm
aWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0Rh
dGEmCiAgICAgZmlsdGVyUmVnaW9uLnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwogICAg
IEZsb2F0UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVnaW9uLnkoKSArIHN0YXJ0WSk7CiAgICAgaW50
IGluZGV4T2ZQaXhlbENoYW5uZWwgPSBzdGFydFkgKiAoZmlsdGVyUmVnaW9uLndpZHRoKCkgPDwg
Mik7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5hYnNv
bHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7Cisg
ICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIGZv
ciAoaW50IHkgPSBzdGFydFk7IHkgPCBlbmRZOyArK3kpIHsKICAgICAgICAgcG9pbnQuc2V0WShw
b2ludC55KCkgKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMWZlOGI4ODFl
MTk5ODA2YjEyMmRhNTZmNzBmODBjMzVlYWFjZDYyYS4uMGJhNDczOWExZGU1ZDQyMTY4ZmVlZDdh
MDViODY4MmQ2MDU3YThiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTIyMyw3
ICsyMjMsNyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+JiYgb3B0aW9ucykKICAgICAgICAgaXNHU3RyZWFtZXJJbml0aWFsaXplZCA9IGZhbHNlOwog
CiAjaWYgRU5BQkxFKFZJREVPKSB8fCBFTkFCTEUoV0VCX0FVRElPKQotICAgICAgICBWZWN0b3I8
U3RyaW5nPiBwYXJhbWV0ZXJzID0gb3B0aW9ucy52YWx1ZV9vcihleHRyYWN0R1N0cmVhbWVyT3B0
aW9uc0Zyb21Db21tYW5kTGluZSgpKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1ldGVy
cyA9IG9wdGlvbnMudmFsdWVPcihleHRyYWN0R1N0cmVhbWVyT3B0aW9uc0Zyb21Db21tYW5kTGlu
ZSgpKTsKICAgICAgICAgY2hhcioqIGFyZ3YgPSBnX25ldzAoY2hhciosIHBhcmFtZXRlcnMuc2l6
ZSgpICsgMik7CiAgICAgICAgIGludCBhcmdjID0gcGFyYW1ldGVycy5zaXplKCkgKyAxOwogICAg
ICAgICBhcmd2WzBdID0gZ19zdHJkdXAoZ2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMTk2Mjk3YmQ4NWNkNDM2ODBkMGVk
MjZiYzExOTU0MzEyZTgwMzlhYy4uODkwZGE5ZDYyYjM0Zjc3Y2ViM2IwNDc2MDg2NThlZmQwNGQ4
NDk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbgogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwogICAgICAgICByZXBsaWNhT3B0aW9ucy50cmFuc2Zv
cm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9sYXllclRy
YW5zZm9ybXMuY29tYmluZWQpCi0gICAgICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9y
bXMuY29tYmluZWQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsK
KyAgICAgICAgICAgIC5tdWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pbnZlcnNl
KCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAgICAgIHBhaW50U2VsZkFu
ZENoaWxkcmVuKHJlcGxpY2FPcHRpb25zKTsKICAgICB9CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbgogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBl
ckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJpbmVkKQot
ICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJzZSgpLnZh
bHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICAgICAgLm11bHRpcGx5KG1fbGF5
ZXJUcmFuc2Zvcm1zLmNvbWJpbmVkLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKFJlZ2lvbiYgbmV3UmVn
aW9uLCBSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbikKQEAg
LTY0Nyw5ICs2NDcsOSBAQCBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c3luY0FuaW1hdGlvbnMo
TW9ub3RvbmljVGltZSB0aW1lKQogICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb246OkFwcGxpY2F0
aW9uUmVzdWx0IGFwcGxpY2F0aW9uUmVzdWx0czsKICAgICBtX2FuaW1hdGlvbnMuYXBwbHkoYXBw
bGljYXRpb25SZXN1bHRzLCB0aW1lKTsKIAotICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJh
bnNmb3JtID0gYXBwbGljYXRpb25SZXN1bHRzLnRyYW5zZm9ybS52YWx1ZV9vcihtX3N0YXRlLnRy
YW5zZm9ybSk7Ci0gICAgbV9jdXJyZW50T3BhY2l0eSA9IGFwcGxpY2F0aW9uUmVzdWx0cy5vcGFj
aXR5LnZhbHVlX29yKG1fc3RhdGUub3BhY2l0eSk7Ci0gICAgbV9jdXJyZW50RmlsdGVycyA9IGFw
cGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlX29yKG1fc3RhdGUuZmlsdGVycyk7CisgICAg
bV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0gPSBhcHBsaWNhdGlvblJlc3VsdHMudHJh
bnNmb3JtLnZhbHVlT3IobV9zdGF0ZS50cmFuc2Zvcm0pOworICAgIG1fY3VycmVudE9wYWNpdHkg
PSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1ZU9yKG1fc3RhdGUub3BhY2l0eSk7Cisg
ICAgbV9jdXJyZW50RmlsdGVycyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlT3Io
bV9zdGF0ZS5maWx0ZXJzKTsKIAogICAgIHJldHVybiBhcHBsaWNhdGlvblJlc3VsdHMuaGFzUnVu
bmluZ0FuaW1hdGlvbnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDE1YWU0NmY2MGQ3MjY0ZTFhYjU3YzU4MTkz
OGE1YjQ2NWJlM2VjZmYuLjQ1ZmY5NTE1NmViNGMzZTY4NWFkZTVhOTEyYTVjZGVmYmFhZTZlMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC04MjUsNyArODI1LDcgQEAgSW50UmVjdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIC8vIFJldHVybiBhIHByb2plY3Rp
b24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29yZGluYXRlcykgb250byB0aGUgbGF5
ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAgIC8vIFRoZSByZXN1bHRpbmcgcXVh
ZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0IGlzIHRoZSBib3VuZGluZyBi
b3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNwcmVhZCBmdXJ0aGVyIHRoYW4g
dGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1vcmUgYW1wbGlmaWVkIGJ5IHRo
ZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VSVChtX2NhY2hlZEludmVyc2VUcmFu
c2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5z
Zm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJbnZl
cnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fY29v
cmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAgIGNsYW1wVG9Db250ZW50c1Jl
Y3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAgICAgcmV0dXJuIGVuY2xvc2luZ0lu
dFJlY3QocmVjdCk7CkBAIC0xMDg5LDcgKzEwODksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fbGF5ZXJUcmFu
c2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7CiAgICAgbV9s
YXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnQoKSA/IGRvd25jYXN0PENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVk
Rm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCi0gICAgbV9jYWNoZWRJ
bnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52
YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBtX2NhY2hlZEludmVyc2VUcmFu
c2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3JtIHdp
bGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0LgogICAgIHNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4
IGYwZTJkYTMxOTNjNGU4OTkxMWZmN2ZjYjZkYjhlYTg0NjQ4NzkwZTcuLmU3NjNjYzEzOTNkYmNk
ZTYxMTMyMTE4ZmZiNDMxOTFjNjQ4ZTQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUG9p
bnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlU
cmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
LT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+
aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChw
b2ludCwgd2FzQ2xhbXBlZCk7CisgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmlu
dmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChwb2lu
dCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVh
ZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgVHJhbnNm
b3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBib29sCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlv
bikKICAgICAgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFF1YWQocXVhZCk7
CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOwor
ICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVkKTsKIH0KIAog
dm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgfQogCiAgICAgfSBlbHNlIHsKLSAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVl
X29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQpCiAgICAgICAgICAgICBtX2xhc3RQbGFu
YXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVjdFBvaW50KG1fbGFzdFBsYW5hclBvaW50
KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDAyMTJiYzlmMWM3ZTMxMWI2
MTY1MzRkZTEzZWM5MDE0MjQ4OWVkNTkuLmVmMjVlOWY3MTc4ZTM2ODNiM2JjMjQ3NzVjOTBhMDI4
ODFkNGM2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBTZWNvbmRzIGNvbXB1dGVDdXJy
ZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSByZXNwb25z
ZVRpbQogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0aGF0IGlzIG5vdCB0
ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAgYXV0byBkYXRlVmFsdWUgPSByZXNw
b25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9IGRhdGVWYWx1ZSA/IHN0ZDo6bWF4
KDBfdXMsIHJlc3BvbnNlVGltZSAtICpkYXRlVmFsdWUpIDogMF91czsKLSAgICBhdXRvIGFnZVZh
bHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVfb3IoMF91cyk7CisgICAgYXV0byBhZ2VWYWx1ZSA9
IHJlc3BvbnNlLmFnZSgpLnZhbHVlT3IoMF91cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFs
QWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50
VGltZSA9IFdhbGxUaW1lOjpub3coKSAtIHJlc3BvbnNlVGltZTsKICAgICByZXR1cm4gY29ycmVj
dGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBTZWNvbmRz
IGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsCiAgICAgICAgIHJldHVybiAqbWF4QWdlOwogCiAgICAgYXV0byBkYXRl
ID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVf
b3IocmVzcG9uc2VUaW1lKTsKKyAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVlT3Io
cmVzcG9uc2VUaW1lKTsKICAgICBpZiAoYXV0byBleHBpcmVzID0gcmVzcG9uc2UuZXhwaXJlcygp
KQogICAgICAgICByZXR1cm4gKmV4cGlyZXMgLSBlZmZlY3RpdmVEYXRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwCmluZGV4IGI5NjczZGU5ODQxMjkzYjQ3NGE5ZGE0ZmJjMTU4OWYwZGM4YzdmZjIuLjgyMmU4
YjA2ZWQ0MjQ4MmI2MTZlZWVlMGMyMjVkZjVkNGY3NGM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIGJvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgpCiB7CiAg
ICAgaWYgKCFtX2lzT25MaW5lKQogICAgICAgICB1cGRhdGVTdGF0ZSgpOwotICAgIHJldHVybiBt
X2lzT25MaW5lLnZhbHVlX29yKHRydWUpOworICAgIHJldHVybiBtX2lzT25MaW5lLnZhbHVlT3Io
dHJ1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggZGUyOGQ2N2RkNGIzODIwODNmY2NiNTQzY2U3
MGRiNzhmNzc5N2U1Mi4uMzVlYzE3YzE4YjkwMGQ1NzNjOTc3NzZmOTcyMGU0NmY2NTRjOTBiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTE5
NSw4ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBoaWdoVmFsdWUoKSBjb25zdCB7
IHJldHVybiBMYXlvdXRVbml0OjptYXgoKTsgfQogICAgIHZvaWQgY29sbGVjdElmTmVlZGVkKGNv
bnN0IEludGVydmFsVHlwZSYpOwogCi0gICAgTGF5b3V0VW5pdCBuZXh0TG9naWNhbEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmV4dExvZ2ljYWxCb3R0b20udmFsdWVfb3IoMCk7IH0KLSAgICBM
YXlvdXRVbml0IG5leHRTaGFwZUxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX25leHRT
aGFwZUxvZ2ljYWxCb3R0b20udmFsdWVfb3IobmV4dExvZ2ljYWxCb3R0b20oKSk7IH0KKyAgICBM
YXlvdXRVbml0IG5leHRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0TG9naWNh
bEJvdHRvbS52YWx1ZU9yKDApOyB9CisgICAgTGF5b3V0VW5pdCBuZXh0U2hhcGVMb2dpY2FsQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2hhcGVMb2dpY2FsQm90dG9tLnZhbHVlT3IobmV4
dExvZ2ljYWxCb3R0b20oKSk7IH0KIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPGNvbnN0IFJlbmRl
ckJsb2NrRmxvdz4gbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggMWRiYjNhNGExZDMwMDg2ZjEwYzZjYzZk
ZmZkZTliYzgxMjE0M2VkOS4uMjkwZmFjYTA0OWRjYjYzZGNhMGVhZjQ5MGZmNzc2NmIxZWI4Mjg0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1l
bnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5b3V0
VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0
IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykg
PyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3ZlckZv
ckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQ
YXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGls
ZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKC0xKSA6IC0xKTsKKyAgICBMYXlvdXRVbml0
IGJhc2VsaW5lKGlzUGFyYWxsZWxUb0Jhc2VsaW5lQXhpc0ZvckNoaWxkKGNoaWxkLCBiYXNlbGlu
ZUF4aXMpID8gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKC0xKSA6IC0xKTsKICAg
ICAvLyBXZSB0YWtlIGJvcmRlci1ib3gncyB1bmRlciBlZGdlIGlmIG5vIHZhbGlkIGJhc2VsaW5l
LgogICAgIGlmIChiYXNlbGluZSA9PSAtMSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFz
ZWxpbmVBeGlzKGJhc2VsaW5lQXhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGY3NTM3NmIzOTBiYWEzN2Vk
MjlmZTQwNTJhN2JhYmZlZTJhNGYyYTYuLjg4YzRmNTk1N2JjY2Q4OGYyYTAyOGExMWU0MTBiZTJl
MjgyMDY4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgR3JpZFRyYWNrOjpz
ZXRCYXNlU2l6ZShMYXlvdXRVbml0IGJhc2VTaXplKQogCiB2b2lkIEdyaWRUcmFjazo6c2V0R3Jv
d3RoTGltaXQoTGF5b3V0VW5pdCBncm93dGhMaW1pdCkKIHsKLSAgICBtX2dyb3d0aExpbWl0ID0g
Z3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExp
bWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CisgICAgbV9ncm93
dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1p
bihncm93dGhMaW1pdCwgbV9ncm93dGhMaW1pdENhcC52YWx1ZU9yKGdyb3d0aExpbWl0KSk7CiAg
ICAgZW5zdXJlR3Jvd3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogfQogCkBAIC0yMTYs
NyArMjE2LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxC
YXNlU2l6ZShjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1MKIAogICAgIGNvbnN0IExlbmd0aCYg
dHJhY2tMZW5ndGggPSBncmlkTGVuZ3RoLmxlbmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5p
c1NwZWNpZmllZCgpKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgs
IHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCksIDApKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHRyYWNrTGVuZ3RoLCBzdGQ6Om1heDxMYXlv
dXRVbml0PihhdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0
cmFja0xlbmd0aC5pc01pbkNvbnRlbnQoKSB8fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFj
a0xlbmd0aC5pc01heENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIDA7CkBAIC0yMzAsNyArMjMwLDcg
QEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxHcm93dGhMaW1p
dChjb25zdCBHcmlkVHJhY2tTaXplJiB0cmEKIAogICAgIGNvbnN0IExlbmd0aCYgdHJhY2tMZW5n
dGggPSBncmlkTGVuZ3RoLmxlbmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5pc1NwZWNpZmll
ZCgpKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4
PExheW91dFVuaXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCksIDApKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHRyYWNrTGVuZ3RoLCBzdGQ6Om1heDxMYXlvdXRVbml0Pihh
dmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0cmFja0xlbmd0
aC5pc01pbkNvbnRlbnQoKSB8fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFja0xlbmd0aC5p
c01heENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIGluZmluaXR5OwpAQCAtMjU0LDcgKzI1NCw3IEBA
IHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5n
SXRlbShjb25zdCBHcmlkU3BhbiYgc3BhCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4
Q29udGVudE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jv
d3RoTGltaXQgPSBtX3N0cmF0ZWd5LT5tYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0pOwogICAg
ICAgICBpZiAodHJhY2tTaXplLmlzRml0Q29udGVudCgpKQotICAgICAgICAgICAgZ3Jvd3RoTGlt
aXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENv
bnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigw
KSkpOworICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFs
dWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwg
YXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExp
bWl0KHN0ZDo6bWF4KHRyYWNrLmdyb3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQog
fQpAQCAtNDgzLDggKzQ4Myw4IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBv
dGVudGlhbChjb25zdCBHcmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAgICAgaWYgKHRy
YWNrMUhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFjazJIYXNJbmZp
bml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0cmFjazJIYXNJ
bmZpbml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRVbml0IHRyYWNr
MUxpbWl0ID0gdHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMS0+Z3Jvd3Ro
TGltaXQoKSk7Ci0gICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGlt
aXRDYXAoKS52YWx1ZV9vcih0cmFjazItPmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQg
dHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdy
b3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0
aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAgIHJldHVybiAo
dHJhY2sxTGltaXQgLSB0cmFjazEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0IC0gdHJhY2sy
LT5iYXNlU2l6ZSgpKTsKIH0KIApAQCAtNTY5LDcgKzU2OSw3IEBAIExheW91dFVuaXQgR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JDaGlsZChjb25z
dCBSZW5kCiAgICAgICAgIGlmIChtYXhUcmFja1NpemUuaXNDb250ZW50U2l6ZWQoKSB8fCBtYXhU
cmFja1NpemUuaXNGbGV4KCkgfHwgaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8obWF4VHJhY2tT
aXplLCBkaXJlY3Rpb24pKQogICAgICAgICAgICAgZ3JpZEFyZWFJc0luZGVmaW5pdGUgPSB0cnVl
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBncmlkQXJlYVNpemUgKz0gdmFsdWVGb3JMZW5n
dGgobWF4VHJhY2tTaXplLmxlbmd0aCgpLCBhdmFpbGFibGVTaXplLnZhbHVlX29yKDBfbHUpKTsK
KyAgICAgICAgICAgIGdyaWRBcmVhU2l6ZSArPSB2YWx1ZUZvckxlbmd0aChtYXhUcmFja1NpemUu
bGVuZ3RoKCksIGF2YWlsYWJsZVNpemUudmFsdWVPcigwX2x1KSk7CiAgICAgfQogCiAgICAgZ3Jp
ZEFyZWFTaXplICs9IG1fcmVuZGVyR3JpZC0+Z3V0dGVyc1NpemUobV9ncmlkLCBkaXJlY3Rpb24s
IHNwYW4uc3RhcnRMaW5lKCksIHNwYW4uaW50ZWdlclNwYW4oKSwgYXZhaWxhYmxlU2l6ZSk7CkBA
IC04MTAsNyArODEwLDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJh
dGVneTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAgICAgICAgICAgIEdy
aWRUcmFja1NpemUgdHJhY2tTaXplID0gbV9hbGdvcml0aG0uZ3JpZFRyYWNrU2l6ZShkaXJlY3Rp
b24oKSwgdHJhY2tQb3NpdGlvbik7CiAgICAgICAgICAgICBpZiAoIXRyYWNrU2l6ZS5oYXNGaXhl
ZE1heFRyYWNrQnJlYWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBtaW5TaXplOwotICAg
ICAgICAgICAgbWF4QnJlYWR0aCArPSB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUubWF4VHJhY2tC
cmVhZHRoKCkubGVuZ3RoKCksIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOworICAg
ICAgICAgICAgbWF4QnJlYWR0aCArPSB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUubWF4VHJhY2tC
cmVhZHRoKCkubGVuZ3RoKCksIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwX2x1KSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG1pblNpemUgPiBtYXhCcmVhZHRoKSB7CiAgICAgICAgICAgICBh
dXRvIG1hcmdpbkFuZEJvcmRlckFuZFBhZGRpbmcgPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjptYXJn
aW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGRpcmVjdGlvbigpLCBjaGlsZCk7
CkBAIC04MzEsNyArODMxLDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1T
dHJhdGVneTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAgICBib29sIG92
ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgPSB1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBncmlkQXJlYVNpemUp
OwogICAgIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKGNoaWxkLCBvdmVycmlk
ZVNpemVIYXNDaGFuZ2VkKTsKIAotICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgV1RGOjpudWxsb3B0KS52YWx1ZV9vcigwKSAr
IGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWln
aHQoKSArIGJhc2VsaW5lU2hpbTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWln
aHRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIFdURjo6bnVsbG9wdCkudmFsdWVPcigwKSAr
IGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWln
aHQoKSArIGJhc2VsaW5lU2hpbTsKIH0KIAogYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmNhblBhcnRpY2lwYXRlSW5CYXNlbGluZUFsaWdubWVudChjb25zdCBSZW5kZXJCb3gmIGNoaWxk
LCBHcmlkQXhpcyBiYXNlbGluZUF4aXMpIGNvbnN0CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lk
IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKQogICAgIFZl
Y3RvcjxHcmlkVHJhY2s+JiBhbGxUcmFja3MgPSB0cmFja3MobV9kaXJlY3Rpb24pOwogICAgIGNv
bnN0IGJvb2wgaGFzRGVmaW5pdGVGcmVlU3BhY2UgPSAhIWF2YWlsYWJsZVNwYWNlKCk7CiAgICAg
Y29uc3QgYm9vbCBpbmRlZmluaXRlSGVpZ2h0ID0gbV9kaXJlY3Rpb24gPT0gRm9yUm93cyAmJiAh
bV9yZW5kZXJHcmlkLT5oYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICBMYXlvdXRVbml0
IG1heFNpemUgPSBzdGQ6Om1heCgwX2x1LCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDBfbHUp
KTsKKyAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heCgwX2x1LCBhdmFpbGFibGVTcGFj
ZSgpLnZhbHVlT3IoMF9sdSkpOwogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sg
dmFyaWFibGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhbGxUcmFja3Muc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9IGFsbFRyYWNrc1tpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCAyMzIxZDRmYTY0YzFlNTI0NWRhMmYzNTQz
YmUxMTEyMzQzNWE5OWJlLi40ZTFjZmVlZTYwOWEzNDlhMGEzZDNkMTk1NDRiNTE1OGVkZDlhNWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxU
b0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChyZWN0KSk7CisgICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRv
QW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFJlY3QocmVjdCkpOwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5m
b3JtZWRSZWN0LmxvY2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUo
dHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBhYTczN2U0OTBhNDg4NGY1YWUyZmM2ZjA2ZWU0ZmE2MDZkZjU3M2Rm
Li5hNjcxMTExNjU5ZTUyMTU2MmZlZjc0ZGI0NTc0M2VmOWJiZmRkY2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMjc1NCw3ICsyNzU0LDcgQEAgUmVuZGVyQm94
OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbmkKICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAg
IGlmIChjaGVja01pbk1heEhlaWdodCkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBpbnRyaW5z
aWNIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBp
bnRyaW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICAg
ICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJl
ZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFs
dWVPcihjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQg
PSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoaGVpZ2h0UmVzdWx0LCBpbnRyaW5zaWNI
ZWlnaHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhlIG9ubHkgdGltZXMg
d2UgZG9uJ3QgY2hlY2sgbWluL21heCBoZWlnaHQgYXJlIHdoZW4gYSBmaXhlZCBsZW5ndGggaGFz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggMTUwYWMw
NjVhYmQ4OTNmY2I3MWVjMjBmMWNmMjYzMDVmOGE5NGVkNC4uZTVjZGU0OTAwNjUyOWEzYWE3Yzgz
ODhjYWNjNzJjZGY2NTMyYzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb3VudGVyUGxh
bj4gcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21pY1N0CiAg
ICAgfQogCiAgICAgaWYgKGRpcmVjdGl2ZXMucmVzZXRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENv
dW50ZXJQbGFuIHsgdHJ1ZSwgc2F0dXJhdGVkQWRkaXRpb24oKmRpcmVjdGl2ZXMucmVzZXRWYWx1
ZSwgZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSkgfTsKKyAgICAgICAgcmV0
dXJuIENvdW50ZXJQbGFuIHsgdHJ1ZSwgc2F0dXJhdGVkQWRkaXRpb24oKmRpcmVjdGl2ZXMucmVz
ZXRWYWx1ZSwgZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZU9yKDApKSB9OwogICAgIGlm
IChkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlKQogICAgICAgICByZXR1cm4gQ291bnRlclBsYW4g
eyBmYWxzZSwgKmRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgfTsKICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAzNDgzY2JhMmI0ZmZmNTk0MzkyZDE0YmE5MDAy
YjcwMjUxZjY5NzJjLi5iMzE1ZTA5NDU5ZGMyMThlNTdkY2NlNjVmMzIyYWM4Nzk5ODM5ZWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikK
IAogICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBoZWlnaHQgYW5kIG92ZXJmbG93IGhlaWdodC4K
ICAgICAgICAgICAgIGlmIChzdHlsZSgpLmJveEFsaWduKCkgPT0gQm94QWxpZ25tZW50OjpCYXNl
bGluZSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJv
dHRvbSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJv
dHRvbSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwog
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkgKyBj
aGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUxMCw3ICs1MTAs
NyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJv
eChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxk
LT5tYXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250ZW50SGVpZ2h0KCkg
LSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpKSAvIDIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBCb3hBbGlnbm1lbnQ6
OkJhc2VsaW5lOiB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+
Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFy
Z2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQt
PmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFy
Z2luQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9w
KCk7CiAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIChtYXhB
c2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNzk0OWZiZjM0MDdmNDY2
ZmE2NmU1MTIwZjQxYTZmMDRkMmVhOTc4ZS4uYjMwZmM3ZjkyZjc4NmU5OTQzYTlhOTcwOWUxZGVh
YTI1MzA5NDczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUNvbnRlbnRCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb24KIAog
aW50IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAog
ewotICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhl
c2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKKyAgICBpbnQg
YmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Ioc3ludGhlc2l6ZWRCYXNlbGlu
ZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKIAogICAgIGludCBtYXJnaW5Bc2Nl
bnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJp
Z2h0KCk7CiAgICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNjZW50OwpAQCAtMTAzNiw3ICsx
MDM2LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdpbnNJbkNyb3Nz
QXhpcyhSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkKIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkK
IHsKLSAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFs
dWVfb3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICBMYXlvdXRVbml0IGFz
Y2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjcm9zc0F4aXNFeHRlbnRG
b3JDaGlsZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBmbG93QXdhcmVNYXJnaW5CZWZv
cmVGb3JDaGlsZChjaGlsZCk7CiB9CiAKQEAgLTEwNzQsMTIgKzEwNzQsMTIgQEAgTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNvbnN0IFJl
bmRlckJveCYgY2hpbGQKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhFeHRlbnQgPSBXVEY6
Om51bGxvcHQ7CiAgICAgaWYgKG1heC5pc1NwZWNpZmllZE9ySW50cmluc2ljKCkpIHsKICAgICAg
ICAgbWF4RXh0ZW50ID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1heFNp
emUsIG1heCk7Ci0gICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0
ZW50LnZhbHVlX29yKGNoaWxkU2l6ZSkpOworICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihj
aGlsZFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNoaWxkU2l6ZSkpOwogICAgIH0KIAogICAgIExl
bmd0aCBtaW4gPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLm1pbldpZHRoKCkg
OiBjaGlsZC5zdHlsZSgpLm1pbkhlaWdodCgpOwogICAgIGlmIChtaW4uaXNTcGVjaWZpZWRPcklu
dHJpbnNpYygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1heCgw
X2x1LCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52
YWx1ZV9vcihjaGlsZFNpemUpKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUs
IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5T
aXplLCBtaW4pLnZhbHVlT3IoY2hpbGRTaXplKSkpOwogICAgIAogICAgIGlmICghaXNGbGV4aWJs
ZUJveEltcGwoKSAmJiBtaW4uaXNBdXRvKCkgJiYgbWFpbkF4aXNPdmVyZmxvd0ZvckNoaWxkKGNo
aWxkKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSAmJiAhKGlzQ29sdW1uRmxvdygpICYmIGlzPFJlbmRl
ckZsZXhpYmxlQm94PihjaGlsZCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93LCB3ZSBk
byBub3QgaGFuZGxlIG1pbi1oZWlnaHQ6IGF1dG8gZm9yIG5lc3RlZApAQCAtMTA4OSwxNyArMTA4
OSwxNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JN
aW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAgICAgICAvLyBjc3MtZmxleGJveCBz
ZWN0aW9uIDQuNQogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIG1pbiB2YWx1ZSBpcyBleHBlY3Rl
ZCB0byBiZSB2YWxpZCBoZXJlLCB3ZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIG5vbiBvcHRpb25h
bCB2ZXJzaW9uIG9mIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkIGFuZAogICAgICAgICAv
LyBlbnN1cmUgaXQncyB2YWxpZCB0aHJvdWdoIHRoZSB2aXJ0dWFsIGNhbGxzIG9mIGNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nLgotICAgICAgICBMYXlvdXRVbml0IGNv
bnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUs
IExlbmd0aChNaW5Db250ZW50KSkudmFsdWVfb3IoMCk7CisgICAgICAgIExheW91dFVuaXQgY29u
dGVudFNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwg
TGVuZ3RoKE1pbkNvbnRlbnQpKS52YWx1ZU9yKDApOwogICAgICAgICBBU1NFUlQoY29udGVudFNp
emUgPj0gMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNBc3BlY3RSYXRpbygpICYmIGNoaWxkLmlu
dHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+IDApCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGFk
anVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNoaWxkLCBjb250
ZW50U2l6ZSk7Ci0gICAgICAgIGNvbnRlbnRTaXplID0gc3RkOjptaW4oY29udGVudFNpemUsIG1h
eEV4dGVudC52YWx1ZV9vcihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0
ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjb250ZW50U2l6ZSkpOwogICAg
ICAgICAKICAgICAgICAgTGVuZ3RoIG1haW5TaXplID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hp
bGQuc3R5bGUoKS53aWR0aCgpIDogY2hpbGQuc3R5bGUoKS5oZWlnaHQoKTsKICAgICAgICAgaWYg
KG1haW5BeGlzTGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwgbWFpblNpemUpKSB7Ci0gICAgICAgICAg
ICBMYXlvdXRVbml0IHJlc29sdmVkTWFpblNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JD
aGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgbWFpblNpemUpLnZhbHVlX29yKDApOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZlZE1haW5TaXplID0gY29tcHV0ZU1haW5BeGlz
RXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIG1haW5TaXplKS52YWx1
ZU9yKDApOwogICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVkTWFpblNpemUgPj0gMCk7Ci0gICAg
ICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5T
aXplLCBtYXhFeHRlbnQudmFsdWVfb3IocmVzb2x2ZWRNYWluU2l6ZSkpOworICAgICAgICAgICAg
TGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4
RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6ZSkpOwogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjptaW4oc3BlY2lmaWVkU2l6ZSwgY29udGVudFNpemUpKTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXgg
MDRiYjJiNmNiYTIxYTllOTFmNGE3OTM2ZTc4OTE1YTBlYzk3ZWVmNC4uMzVhNjEwYjI5OTczY2Nk
OWU2OGM2NTRjOGE0NWJlZDBjYzNhNWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3Jp
ZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvCiAg
ICAgaWYgKGdhcExlbmd0aC5pc05vcm1hbCgpKQogICAgICAgICByZXR1cm4gMF9sdTsKIAotICAg
IHJldHVybiB2YWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUu
dmFsdWVfb3IoMCkpOworICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3Ro
KCksIGF2YWlsYWJsZVNpemUudmFsdWVPcigwKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyR3Jp
ZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdApAQCAt
MTIyNiw3ICsxMjI2LDcgQEAgaW50IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKG1vZGUpOwogI2VuZGlmCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVfb3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21NYXJnaW5Cb3goKnRoaXMsIGRpcmVjdGlv
bikpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Ioc3ludGhlc2l6ZWRC
YXNlbGluZUZyb21NYXJnaW5Cb3goKnRoaXMsIGRpcmVjdGlvbikpOwogfQogCiBPcHRpb25hbDxp
bnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMyNmU2Yjc5ZmQ2MWY2NmVmMjU4OWQwOTZj
NmEyMzBkY2YzYzhkNDkuLjBlMmUwZjE2YjQ0OTAwMzRmM2I5YWY3YjRjM2RiZmQ1MTAzNGJjMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDQ1Nyw3ICs0
NDU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIExheW91dFNpemUgYWRqdXN0ZWRT
dWJwaXhlbE9mZnNldCA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91dFNpemUoZGV2aWNlUGl4
ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKICAgICBMYXllclBhaW50aW5nSW5mbyB0cmFu
c2Zvcm1lZFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogICAgIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvLnJvb3RMYXllciA9IHRoaXM7Ci0gICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHRyYW5zZm9y
bWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRv
RGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3Rv
cikpOwogICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0ID0gYWRqdXN0
ZWRTdWJwaXhlbE9mZnNldDsKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNv
bnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKICAgICBjb250ZXh0
LnNldENUTShvbGRUcmFuc2Zyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCmluZGV4IDY3MGUzNzQ2NTVjMTNjNWU4YmFkZDI4ZmUxODIzN2NkMzg0NmYyNjQu
LjYzYWRlN2UyM2U0MzY3ZmNlYWJlMDFmNDY2ODNkYjMyZmU4MWFkNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGluZ0JveFJlY3QoY29uc3QgTGF5b3V0UG9p
bnQmIGFkZGl0aW9uYWxPZmZzZQogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0oUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgUGFp
bnRGdW5jdGlvbiYgcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0ZW1zU2l6ZSA9IG51
bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CisgICAg
aW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFk
ZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBm
aXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJsZUl0ZW1zKENvbnNpZGVyUGFkZGluZzo6WWVzKTsK
ICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNpYmxlSXRlbTsgaSA8IGxpc3RJdGVtc1NpemUgJiYg
aSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAgIHBhaW50RnVuY3Rpb24ocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCwgaSk7CkBAIC02MjEsNyArNjIxLDcgQEAgYm9vbCBSZW5kZXJMaXN0Qm94OjpzY3Jv
bGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpCiAKIGJvb2wgUmVuZGVyTGlz
dEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCkKIHsKLSAgICBpbnQgZmlyc3RJbmRl
eCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9v
cihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0Vmlz
aWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOwogICAg
IGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90
dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5n
Qm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBhZGRpbmdCb3R0b20o
KQogICAgICAgICA6IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IGRi
YjhhYzU4YTFmZGU4YjRhZTI2OWQ2NWIwZDE1MWI4ODJiZGMyMjcuLjI4ZGZlYjMxMjY0YzIwYTg0
NmQ3MmM5MzVmMzBmNDFmOTkyMDVjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIExheW91dFVu
aXQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0
CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVIZWlnaHQgPSBtdWx0aUNvbHVtbkZsb3coKS0+Y29s
dW1uSGVpZ2h0QXZhaWxhYmxlKCk7CiAgICAgTGF5b3V0VW5pdCBtYXhDb2x1bW5IZWlnaHQgPSBh
dmFpbGFibGVIZWlnaHQgPyBhdmFpbGFibGVIZWlnaHQgOiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6
bWF4TG9naWNhbEhlaWdodCgpOwogICAgIGlmICghbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVp
Z2h0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4o
bWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIFdURjo6bnVsbG9w
dCkudmFsdWVfb3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVtbkhlaWdodCA9
IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBX
VEY6Om51bGxvcHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CiAgICAgcmV0dXJuIGhlaWdo
dEFkanVzdGVkRm9yU2V0T2Zmc2V0KG1heENvbHVtbkhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDBiMDM2MDQyOTM5MDFiMzJjZDA1Nzdj
ZTM1NTdjZTc1ZDRhN2UyOTUuLjk5YWQ4ZGE0OGYyNGQyZmMyNTY0Nzc0ZDI1MjU0N2ZkYmUwMDEw
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMzIyLDkg
KzMyMiw5IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWln
aHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0IExlbmd0aCYKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gc3R5bGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCkgLSBib3JkZXJzOwogICAgIH0gZWxzZSBpZiAo
c3R5bGVMb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1
cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFs
dWVfb3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQo
c3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZU9yKDApOwogICAgIGVsc2UgaWYgKHN0eWxlTG9naWNh
bEhlaWdodC5pc0ludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0
KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZV9vcigwKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0
eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9y
ZGVyQW5kUGFkZGluZykudmFsdWVPcigwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiAwX2x1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCA4ZGQ2NmE0NmMxMGI0NWUwZGRhOWRhYmZkZWY2NmJk
YWU3YzViNzg1Li5mNWEwZmQwZDMxMjZjYWJjYmNjN2E3ZDczZGUwMDRhOGYzN2Y0NTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNDEwLDcg
KzQxMCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlv
bigpIGNvbnN0CiAgICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1ItQ1NTMjEtMjAw
NzA3MTkvdGFibGVzLmh0bWwjaGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGluZSBvZiBhIGNlbGwg
aXMgdGhlIGJhc2VsaW5lIG9mCiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cgbGluZSBib3ggaW4g
dGhlIGNlbGwsIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2VsbCwgd2hp
Y2hldmVyIGNvbWVzIGZpcnN0LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1Y2ggbGluZSBib3gg
b3IgdGFibGUtcm93LCB0aGUgYmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBjb250ZW50IGVkZ2Ug
b2YgdGhlIGNlbGwgYm94LgotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29y
KGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAg
IHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9y
ZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrQ2VsbERpcnR5V2hlbkNvbGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVyVGFibGVDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAppbmRleCA5MTE5MzEyNTQ5YzFkYzNmMDk0MDZmOTZhZjAyMWUwYmNjYzNmMTA5Li5kMWRiOWYy
ODVmOTk2MjgxNGY4Yjc3YjIyMTBmZTNlOGUzYTVjNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtODg4LDcgKzg4OCw3IEBAIE9w
dGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiAgICAgICAgIC8vIE9ubHkgY2VsbHMgd2l0aCBjb250ZW50IGhhdmUgYSBiYXNlbGluZQogICAg
ICAgICBpZiAoY2VsbCAmJiBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAg
ICAgICBpbnQgY2FuZGlkYXRlID0gcm91bmRUb0ludChjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxs
LT5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgp
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZV9vcihjYW5kaWRh
dGUpLCBjYW5kaWRhdGUpOworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZh
bHVlT3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDQzMWI4ZmU3M2I3YjhmNDY5MmIx
NGViMGViNGUzOWU1NTc5MWE3NjguLjhjMTc4OGEyMzc2ZDk3MmM5ZjU5NjBjNzRmYjhjZGIxODZh
YjJjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEwMDQs
NyArMTAwNCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVlX29y
KGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlw
aExlZnRPdmVyZmxvdy52YWx1ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKICAgICBpZiAoKG5l
ZWRzV29yZFNwYWNpbmcgJiYgbGVuZ3RoID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJz
dFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CkBAIC0xNTEwLDEz
ICsxNTEwLDEzIEBAIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldChpbnQgY3VycmVudCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCiAgICAgQ2FjaGVkVGV4dEJyZWFr
SXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQs
IG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFs
dWVfb3IoY3VycmVudCAtIDEpOworICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVu
dCkudmFsdWVPcihjdXJyZW50IC0gMSk7CiB9CiAKIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09m
ZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgQ2FjaGVk
VGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9k
ZTo6RGVsZXRlLCBudWxsQXRvbSgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1
cnJlbnQpLnZhbHVlX29yKDApOworICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVu
dCkudmFsdWVPcigwKTsKIH0KIAogaW50IFJlbmRlclRleHQ6Om5leHRPZmZzZXQoaW50IGN1cnJl
bnQpIGNvbnN0CkBAIC0xNTI1LDcgKzE1MjUsNyBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNl
dChpbnQgY3VycmVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAg
Q2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRv
cjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5mb2xsb3dp
bmcoY3VycmVudCkudmFsdWVfb3IoY3VycmVudCArIDEpOworICAgIHJldHVybiBpdGVyYXRvci5m
b2xsb3dpbmcoY3VycmVudCkudmFsdWVPcihjdXJyZW50ICsgMSk7CiB9CiAKIGJvb2wgUmVuZGVy
VGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CkBAIC0xNTQ3LDcg
KzE1NDcsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hh
cmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRl
eHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBj
b25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0KCku
bGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9yKHRleHQo
KS5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQo
ZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggOTY3NjkyZWUw
YTJjMzM0NTdkNzc3NzMyNDI0ZWM3OTFhNGZjY2VhZC4uZThkZDg0OWYxNjkxMjJkMjU1M2Q4YmM5
ZjU0NGRiZDE2YjQxNDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBpZiAo
IW5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFN0YXRlTWFpbnRh
aW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9wYWdlTG9naWNhbFNpemUudmFs
dWVfb3IoTGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQp
OworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxz
ZSwgbV9wYWdlTG9naWNhbFNpemUudmFsdWVPcihMYXlvdXRTaXplKCkpLmhlaWdodCgpLCBtX3Bh
Z2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IGM5ZTM1MTMxMzNhN2EzZTBiYjYzNDljYTViMzRh
MzVhZmQyOTE5MmYuLjhlMzU2YjZiNjk2NjcwY2Y1NTU2ZDE5M2I2MTc1MWU0MmRkNWMxZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgaW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW4KICAg
ICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVf
b3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUs
IGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNl
bGluZSgpLnZhbHVlT3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBl
LCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOwogfQogCiAjaWYgRU5B
QkxFKERFQlVHX01BVEhfTEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDA0OGM3ZWM4ODUyODhjMTk0ZGFlMmQy
ZGIxMTEwYTk3MWNjNDgyY2EuLjJkNDM5M2I1MmRmZmNiODIxYmZkN2M5NDg1MWNkNzc5YTE5ZWI3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIExh
eW91dFVuaXQgYXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLmxv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKICAgICB2b2lkIGxheW91
dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdo
dCA9IDBfbHUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uLmNwcAppbmRleCBmMTJkM2FmZTZmY2ZjODI1NzA1YzljNGM5Njg0N2UxN2I0
YjEwZDIxLi5kNGU3MzFhMDkwYTIyZGE2ZjYxY2MzMTJmZTE2MDg4MjU4MGY3ODUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtODUs
NyArODUsNyBAQCBpbnQgR3JpZFBvc2l0aW9uOjpzcGFuUG9zaXRpb24oKSBjb25zdAogCiBpbnQg
R3JpZFBvc2l0aW9uOjptYXgoKQogewotICAgIHJldHVybiBnTWF4UG9zaXRpb25Gb3JUZXN0aW5n
LnZhbHVlX29yKGtHcmlkTWF4UG9zaXRpb24pOworICAgIHJldHVybiBnTWF4UG9zaXRpb25Gb3JU
ZXN0aW5nLnZhbHVlT3Ioa0dyaWRNYXhQb3NpdGlvbik7CiB9CiAKIGludCBHcmlkUG9zaXRpb246
Om1pbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVu
ZGVybGluZU9mZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRl
cmxpbmVPZmZzZXQuaAppbmRleCA4MDdlNGRiOGI3OTg4NDNmMzM3NTM2Zjk1ZTg4OGM3ODBhZjky
NDk5Li4zOGVkOTNjOTFmNmNiOWY2NGMyY2YyMGIzY2JhZjA0MmI0YTgxYjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgZmxvYXQgbGVuZ3RoT3IoZmxvYXQgZGVm
YXVsdFZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZhbHVlX29y
KGRlZmF1bHRWYWx1ZSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aC52YWx1ZU9yKGRlZmF1bHRW
YWx1ZSk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRVbmRlcmxpbmVP
ZmZzZXQmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGNiZTI3MGIxMWM4MzMxYTQ3ZmU4OGY4YmE1
ZTAxYTdhYjgyNjJiYjkuLjk4YjMxNWQ2NzQ0M2U1NmJhNDA0YzI1MTJlYzEyNWE0NWE2MDhiZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAogICAg
IGlmICghcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJ
bkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCmluZGV4IGRmYjRiODc2NmU4ZDM3MDgyMzUwYWE3YTVjMDE1MWRlYTQ1Nzg1
NWYuLjU4NWM3YmU3OTdlYWE0Y2IyMmVlMjE0YzAxMGE3NjZmNjhmNmI0MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgaWYg
KGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
KyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAg
IC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBjbGlwcGVk
IHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRl
bigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDBhNThmOGZk
MWFkMjQ5NDgzZGQ1MGRiYmRiMzkxZmQ3YWY5NGYzZTQuLjJjNmYzMTc4ZWViMjZjN2IyYzBkOTVh
ZTEwOGI3ZWZjYzZlMjJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFn
ZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hp
dFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZl
bnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZp
c2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVp
cmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2Nh
bFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogICAgICAgICAgICAgCiAgICAgICAgIGlmICghU1ZH
UmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggNzM5OGVmMzJi
Mzg2MGMyMzY1NTU0MzQ0ZGRmYTMwNDEyYTQ4YTgwYS4uMmNmODZlMjVmNjI2ZWUyYmRlMjU4NTk2
NTlmYzFlMDY2NzZlMDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMjY4LDEwICsyNjgsMTAg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25z
dCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC5sb2Nh
dGlvbigpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9iamVjdEJvdW5kaW5nQm94LnNpemUo
KSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogICAg
IH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9y
bSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQp
OworICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAK
ICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQo
KTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggMzY0MDY5MjFiZTgwZDc4MTM5YmQ2OWE1MjA1MjM2MjU4ZDcyYTA1
NC4uMWIzZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpw
b3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAg
ICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVz
dWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+
Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jb25j
YXRDVE0oZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgo
KSwgMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIGxhc3RF
ZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZTE1MDJlZjc1YmViZjY3N2Y2MTdjNDIxODQ0
NTBiNjgwZjcxMDBhOC4uZGYwZWY2ZjZmM2VkOGUzZDQyMTI5OTRhOWUwMzM3NjQyNTEwY2I1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBA
IC00MDUsNyArNDA1LDcgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICAvLyBUZXN0IFNW
RyBjb250ZW50IGlmIHRoZSBwb2ludCBpcyBpbiBvdXIgY29udGVudCBib3ggb3IgaXQgaXMgaW5z
aWRlIHRoZSB2aXN1YWxPdmVyZmxvd1JlY3QgYW5kIHRoZSBvdmVyZmxvdyBpcyB2aXNpYmxlLgog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBpbnRlcnNlY3Rpb24gd2hlbiByZWN0LWJh
c2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IG5vZGVBdEZsb2F0UG9pbnQuCiAgICAgaWYg
KGNvbnRlbnRCb3hSZWN0KCkuY29udGFpbnMocG9pbnRJbkJvcmRlckJveCkgfHwgKCFzaG91bGRB
cHBseVZpZXdwb3J0Q2xpcCgpICYmIHZpc3VhbE92ZXJmbG93UmVjdCgpLmNvbnRhaW5zKHBvaW50
SW5QYXJlbnQpKSkgewotICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKIAogICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbm9k
ZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRlc3RzIHlldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5k
ZXggZmEzYmM5MTcwYzM1MDNiNDBhNmIxMmNiMDUxNWNjZDM5NTUwNDAxMy4uMzRiMGFlNzViZGMw
MDU2NTc2ZDUxMzgwMTg1ZWZlNmJjNzJjNzA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTM2OCw3ICszNjgsNyBAQCBib29sIFJl
bmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3Jv
dW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9s
b2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5D
bGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA2
MzdkOGM0ZmQ4NDRhNDRmZWQ5NDkyZmZjOWU1MTg4ZDA3MjNiMjhkLi5jODBlOTU2ZDU1ZDhkYTQ4
MzY4YTVkYjQ2OTE4YjNiNTZhNTMzZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCBib29sIFJlbmRlclNW
R1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxl
KSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0
eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAg
ICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxs
KCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICAgICAg
RmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAog
ICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0
aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggNDk1YjEzNGJiMzZmMGRhMDQ3NGNjNzA5YjdjZDE5NmY1OTk2YzdhMS4uYWE5
MmQ2MzRlY2VmODBlOTA2OGE4MTE1NzgzNzAyOGU2YzYxZjNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmkKIAogICAgIC8vIFRoZSBtYXNrIGlt
YWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFz
IHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1h
c2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBz
cGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgIGNvbnRleHQuY29uY2F0
Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRl
VGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXgg
OTAyZTU0Y2I5ZTI3YWRiZTQ1MDJiZWU2Mjc2YjNjZGZlYzAxNmI2NS4uZGZlODc1NTc4YWFlMGI2
MmM1OGI3NWRiOTZlZGQ3NzdiZWExZjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5
cGhPck1pc3NpbmcKICAgICBpZiAoZ2x5cGhCb3VuZGluZ0JveCkKICAgICAgICAgbV9taW5SaWdo
dFNpZGVCZWFyaW5nID0gc3RkOjptaW4obV9taW5SaWdodFNpZGVCZWFyaW5nLCBob3Jpem9udGFs
QWR2YW5jZSAtIGdseXBoQm91bmRpbmdCb3gudmFsdWUoKS5tYXhYKCkpOwogCi0gICAgbV9nbHlw
aHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250
YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxv
YXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShX
VEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFk
dmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMp
KTsKIH0KIAogdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhz
KCkKQEAgLTE0MjEsNyArMTQyMSw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZG
b250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAgICAgICAg
ICAgIHByb2Nlc3NHbHlwaEVsZW1lbnQoZ2x5cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50LCBkZWZh
dWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNvZGVBdHRy
aWJ1dGUsIGJvdW5kaW5nQm94KTsKICAgICB9CiAKLSAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRp
bmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGlu
Z0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKTsKIAogICAgIGFwcGVuZExpZ2F0dXJlR2x5cGhzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDBjNjNhMjBhYTEyNDFjZjlhOWY3NGUzYzYxMDBhYTQ1
NzhiZmRhMzQuLmRmMjgxOTlhNmY0M2I4MTJjZDk5NTAzZThlYTgzM2Y1ZGRiODE3MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNl
clByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
CiAKIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVW5leHBlY3RlZEFsZXJ0T3BlbihGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHN3aXRjaCAo
Y2FwYWJpbGl0aWVzKCkudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CisgICAgc3dpdGNoIChjYXBhYmls
aXRpZXMoKS51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZU9yKFVuaGFuZGxlZFByb21wdEJl
aGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3I6OkRpc21pc3M6CiAgICAgICAgIGRpc21pc3NBbGVydChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgU2Vzc2lv
bjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIE9wdGlvblNl
dDxFbGVtZW50TGF5CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5n
Q29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2lu
Z0NvbnRleHQudmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOworICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1ZU9yKGVt
cHR5U3RyaW5nKCkpKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVIYW5kbGUiX3Ms
IGVsZW1lbnRJRCk7CiAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbigic2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCJfcywgb3B0aW9ucy5jb250YWlucyhFbGVtZW50TGF5b3V0T3B0aW9uOjpTY3JvbGxJ
bnRvVmlld0lmTmVlZGVkKSk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJjb29yZGluYXRl
U3lzdGVtIl9zLCBvcHRpb25zLmNvbnRhaW5zKEVsZW1lbnRMYXlvdXRPcHRpb246OlVzZVZpZXdw
b3J0Q29vcmRpbmF0ZXMpID8gIkxheW91dFZpZXdwb3J0Il9zIDogIlBhZ2UiX3MpOwpAQCAtMTQ5
Niw3ICsxNDk2LDcgQEAgdm9pZCBTZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KIHsKICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJy
b3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKLSAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZyYW1l
SGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWVfb3IoZW1wdHlTdHJpbmco
KSkpOworICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVu
dEJyb3dzaW5nQ29udGV4dC52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoIm5vZGVIYW5kbGUiX3MsIGVsZW1lbnRJRCk7CiAgICAgbV9ob3N0LT5zZW5k
Q29tbWFuZFRvQmFja2VuZCgic2VsZWN0T3B0aW9uRWxlbWVudCJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25z
ZSYmIHJlc3BvbnNlKSB7CiAgICAgICAgIGlmIChyZXNwb25zZS5pc0Vycm9yKSB7CkBAIC0yMDA0
LDEyICsyMDA0LDEyIEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9tYXRp
b25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgUmVmUHRyPEpTT046
Ok9iamVjdD4gY29va2llT2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBjb29r
aWVPYmplY3QtPnNldFN0cmluZygibmFtZSJfcywgY29va2llLm5hbWUpOwogICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJ2YWx1ZSJfcywgY29va2llLnZhbHVlKTsKLSAgICBjb29raWVPYmpl
Y3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iKSk7Ci0gICAg
Y29va2llT2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9v
cihlbXB0eVN0cmluZygpKSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUi
X3MsIGNvb2tpZS5zZWN1cmUudmFsdWVfb3IoZmFsc2UpKTsKLSAgICBjb29raWVPYmplY3QtPnNl
dEJvb2xlYW4oImh0dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsK
KyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVP
cigiLyIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUu
ZG9tYWluLnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOworICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9v
bGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlT3IoZmFsc2UpKTsKKyAgICBjb29r
aWVPYmplY3QtPnNldEJvb2xlYW4oImh0dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVP
cihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNv
b2tpZS5leHBpcnkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBj
b29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKKyAgICBjb29raWVPYmplY3QtPnNldERvdWJsZSgi
ZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1ZU9yKDApKTsKICAgICByZXR1cm4gY29va2ll
T2JqZWN0OwogfQogCkBAIC0yNDY2LDcgKzI0NjYsNyBAQCB2b2lkIFNlc3Npb246OnRha2VTY3Jl
ZW5zaG90KE9wdGlvbmFsPFN0cmluZz4gZWxlbWVudElELCBPcHRpb25hbDxib29sPiBzY3JvbGxJ
bgogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJub2RlSGFuZGxlIl9zLCBlbGVt
ZW50SUQudmFsdWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dEJvb2xlYW4oImNsaXBUb1ZpZXdwb3J0Il9zLCB0cnVlKTsKLSAgICAgICAgaWYgKHNjcm9sbElu
dG9WaWV3LnZhbHVlX29yKGZhbHNlKSkKKyAgICAgICAgaWYgKHNjcm9sbEludG9WaWV3LnZhbHVl
T3IoZmFsc2UpKQogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0Qm9vbGVhbigic2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCJfcywgdHJ1ZSk7CiAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0Jh
Y2tlbmQoInRha2VTY3JlZW5zaG90Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJl
c3BvbnNlT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCBm
MDRmNGZkZWE4MGE2YWIzYzZjZGM4NGIyZTlmMTQ2ZDI3MTcxNTczLi5lNTI2ODgyYzNhZTNhMTNj
YjdhYTc4YTFlOThiMTU4OTQ3YjA0NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dl
YkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OnNlbmRSZXNw
b25zZShGdW5jdGlvbjx2b2lkIChIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlJgogICAgICAg
ICAvLyBMZXQgYm9keSBiZSBhIG5ldyBKU09OIE9iamVjdCBpbml0aWFsaXNlZCB3aXRoIHRoZSBm
b2xsb3dpbmcgcHJvcGVydGllczogImVycm9yIiwgIm1lc3NhZ2UiLCAic3RhY2t0cmFjZSIuCiAg
ICAgICAgIGF1dG8gZXJyb3JPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBlcnJvck9iamVjdC0+c2V0U3RyaW5nKCJlcnJvciJfcywgcmVzdWx0LmVycm9yU3RyaW5nKCkp
OwotICAgICAgICBlcnJvck9iamVjdC0+c2V0U3RyaW5nKCJtZXNzYWdlIl9zLCByZXN1bHQuZXJy
b3JNZXNzYWdlKCkudmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBlcnJvck9iamVj
dC0+c2V0U3RyaW5nKCJtZXNzYWdlIl9zLCByZXN1bHQuZXJyb3JNZXNzYWdlKCkudmFsdWVPcihl
bXB0eVN0cmluZygpKSk7CiAgICAgICAgIGVycm9yT2JqZWN0LT5zZXRTdHJpbmcoInN0YWNrdHJh
Y2UiX3MsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAvLyBJZiB0aGUgZXJyb3IgZGF0YSBkaWN0
aW9uYXJ5IGNvbnRhaW5zIGFueSBlbnRyaWVzLCBzZXQgdGhlICJkYXRhIiBmaWVsZCBvbiBib2R5
IHRvIGEgbmV3IEpTT04gT2JqZWN0IHBvcHVsYXRlZCB3aXRoIHRoZSBkaWN0aW9uYXJ5LgogICAg
ICAgICBpZiAoYXV0byYgYWRkaXRpb25hbERhdGEgPSByZXN1bHQuYWRkaXRpb25hbEVycm9yRGF0
YSgpKQpAQCAtNjk1LDEyICs2OTUsMTIgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVT
ZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAg
ICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKCJzZXNzaW9uSWQiX3MsIG1fc2Vzc2lvbi0+
aWQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBjYXBhYmlsaXRpZXNPYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgY2Fw
YWJpbGl0aWVzID0gbV9zZXNzaW9uLT5jYXBhYmlsaXRpZXMoKTsKLSAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJicm93c2VyTmFtZSJfcywgY2FwYWJpbGl0aWVzLmJy
b3dzZXJOYW1lLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKLSAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywgY2FwYWJpbGl0aWVzLmJy
b3dzZXJWZXJzaW9uLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKLSAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwbGF0Zm9ybU5hbWUiX3MsIGNhcGFiaWxpdGllcy5w
bGF0Zm9ybU5hbWUudmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwotICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJhY2NlcHRJbnNlY3VyZUNlcnRzIl9zLCBjYXBhYmls
aXRpZXMuYWNjZXB0SW5zZWN1cmVDZXJ0cy52YWx1ZV9vcihmYWxzZSkpOwotICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmls
aXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKKyAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJicm93c2VyTmFtZSJfcywgY2FwYWJpbGl0aWVzLmJyb3dz
ZXJOYW1lLnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOworICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXRpZXMuYnJvd3Nl
clZlcnNpb24udmFsdWVPcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygicGxhdGZvcm1OYW1lIl9zLCBjYXBhYmlsaXRpZXMucGxhdGZv
cm1OYW1lLnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOworICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJhY2NlcHRJbnNlY3VyZUNlcnRzIl9zLCBjYXBhYmlsaXRpZXMu
YWNjZXB0SW5zZWN1cmVDZXJ0cy52YWx1ZU9yKGZhbHNlKSk7CisgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5z
ZXRXaW5kb3dSZWN0LnZhbHVlT3IodHJ1ZSkpOworICAgICAgICAgICAgc3dpdGNoIChjYXBhYmls
aXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVPcihVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I6OkRpc21pc3M6CiAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgV2ViRHJpdmVyU2Vy
dmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xp
c3QsIHN0CiAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdl
TG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihQYWdl
TG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRl
Z3k6Ok5vbmU6CiAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVm
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3Bw
CmluZGV4IDVlNmJlNzRiOGRhNmQ0YjkzNjAzNzkwY2E0YWQxNzZkMWY2NjJjNjYuLmQwNzUzOWI1
OGJlMmU2MGFlMGMwMDU0ZDIzNmJkYmQ1YTRmYmU3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCkBAIC03Niw1ICs3Niw1IEBA
IFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVm
IHNlY3VyaXR5T3JpZ2luKQogCiB1bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9y
dChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVl
X29yKDApOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3Vy
aXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXgg
NGNlYmE4ODBiZGQ4N2ZhZjljNWU0MWFjMDcxZjRlZmRjZmY2MDQ1OC4uZGFkMWMwNWMwNjE1OGVl
NTI1YTNlOTU3YWYwMjNiNjM2YTNkMjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFi
bGVkKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzQXV0b21hdGljUHJvY2Vzc1dh
cm1pbmdFbmFibGVkQnlDbGllbnQudmFsdWVfb3IobV9jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0
b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcpOworICAgICAgICByZXR1cm4gbV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50LnZhbHVlT3IobV9jbGllbnRXb3VsZEJlbmVmaXRG
cm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcpOwogICAgIH0KIAogICAgIGJvb2wgd2FzQXV0
b21hdGljUHJvY2Vzc1dhcm1pbmdTZXRCeUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pc0F1
dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OyB9CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUNsaWVu
dC52YWx1ZV9vcihtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0
dXJlcyk7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGll
bnQudmFsdWVPcihtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0
dXJlcyk7CiAgICAgfQogICAgIHZvaWQgc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKGJvb2wg
c3dhcHMpIHsgbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xpZW50ID0gc3dhcHM7IH0K
ICAgICB2b2lkIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0
dXJlcyhib29sIHN3YXBzKSB7IG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1l
bnRhbEZlYXR1cmVzID0gc3dhcHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggYjcxMTJjZWUxN2JkY2MyNjli
YzlmOWUyNzFkMjQwMmRhMjE2NjgyMi4uYzU1NDNhMjBiNzFlOGM5NzZlMjEyMmI5YjRiZWE0OGIz
NzUxZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcgKilob3N0
CiAKIC0gKE5TSW50ZWdlcilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2Vj
dXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9y
aWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVPcigwKTsKIH0KIAogI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CmluZGV4IGQyODdmZDk1YmRjNzliYzk0ODZjM2VkNGY4MzZlNmVjMDAzMjAzZWMuLjlhZDkzZmI2
YjQxOWNlYzJjNDE0MDU2ZWIwMGJkMTViYTkyNGZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CkBAIC05NDYsNyArOTQ2LDcgQEAgLSAodm9pZClfc2V0Q1BVTGltaXQ6KGRvdWJsZSljcHVMaW1p
dAogCiAtIChkb3VibGUpX2NwdUxpbWl0CiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlv
bi0+Y3B1TGltaXQoKS52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9u
LT5jcHVMaW1pdCgpLnZhbHVlT3IoMCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKaW5kZXggZTRkMDY1ZjkxOGIzNTIwODE4ZDkwNjM3NmZmY2E3NzY2OTNm
YzI5MS4uMmUwNzg5ZDQzMDFmOGE4ODE1OWU4YmVlMDMwNjdjMTU2YWEyZjc3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIGd1aW50MTYgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfcG9ydChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgMCk7CiAKLSAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApOworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luLT5wb3J0KCkudmFsdWVPcigwKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGQ3ZDBh
NmQ0OTg0MGFmNzEyNDA5MGI1YjI4NDU4YzBiMDJjZTYxN2QuLmQ1ZmRkYWI2NTYxODA3NWE1NTE4
NjJhMDU1YjliYWQzMzdiZDVkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC04MTMsNyArODEzLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSwgR2QKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBBU1NFUlQoIXByaXYtPmRpYWxvZyk7CiAgICAgaWYg
KHBoYXNlKQotICAgICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZl
V2ViV2hlZWxFdmVudChldmVudCwgcGhhc2UudmFsdWUoKSwgbW9tZW50dW0udmFsdWVfb3IoV2Vi
V2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZSkpKTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5
LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHBoYXNlLnZhbHVl
KCksIG1vbWVudHVtLnZhbHVlT3IoV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZSkpKTsK
ICAgICBlbHNlCiAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRp
dmVXZWJXaGVlbEV2ZW50KGV2ZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAK
aW5kZXggZGJlODM5NzIwOWRhMTY4ZGIxMTliYWY0NjBjNWYyZDhiNjk1ZmYzZi4uMDU5MGM1N2Iy
OTdkZjYzOWQ4NDY1YjY0ZDVlODcyZjA0YjM0NDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBTZWNvbmRzIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6
Om1heGltdW1EdXJhdGlvbigpIGNvbnN0CiAgICAgLy8gVGhlICJjb21wdXRlIHRoZSB0aWNrIGR1
cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRjaGluZyBBY3Rpb25zKS4KICAgICBTZWNv
bmRzIHJlc3VsdDsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogc3RhdGVzKQotICAgICAgICByZXN1
bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNlY29uZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNv
bmRzKDApKSk7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25k
LmR1cmF0aW9uLnZhbHVlT3IoU2Vjb25kcygwKSkpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRy
YW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAgICAg
ZXZlbnREaXNwYXRjaEZpbmlzaGVkKFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlOjpNb3VzZTogewotICAgICAgICByZXNvbHZl
TG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2Nh
dGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9k
ZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShl
dmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRp
b24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVPcihXZWJDb3JlOjpJbnRQb2lu
dCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVPcihNb3VzZU1vdmVPcmlnaW46OlZpZXdw
b3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQg
PSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1
dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoYS5sb2NhdGlvbiAhPSBiLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICAgTE9HKEF1dG9t
YXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBdOiBzaW11bGF0aW5nIE1vdXNlTW92
ZSBmb3IgdHJhbnNpdGlvbiB0byAlZC4lZCIsIHRoaXMsIG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1
dFNvdXJjZVN0YXRlSW5kZXgpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMg
bm90IGludGVycG9sYXRlIG1vdXNlbW92ZXMgcGVyIHRoZSAicGVyZm9ybSBhIHBvaW50ZXIgbW92
ZSIgYWxnb3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCi0gICAgICAgICAgICAg
ICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFj
dGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5v
QnV0dG9uKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbiht
X3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVl
T3IoTW91c2VCdXR0b246Ok5vQnV0dG9uKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKFdURjo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCAzNzBiMjFlZDZkYTAzMjMyYWFjYWViODIwNGZjYjY1N2Fl
NmI2OTBhLi41N2RmNWYzZTAzMTgxMDNjNDJmYjlkYzlkMGRkYjE3NzhiODZhMGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5k
bGUsCiAgICAgICAgIHRoaXMtPnJlc3RvcmVXaW5kb3dGb3JQYWdlKHdlYlBhZ2UsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92ZShwYWdlKSwgd2lkdGgsIGhlaWdo
dCwgeCwgeV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8mIHdlYlBhZ2UgPSAqcGFnZTsK
ICAgICAgICAgICAgIHdlYlBhZ2UuZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJhY2soW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBXVEZNb3ZlKHBhZ2UpLCB3aWR0aCwgaGVpZ2h0
LCB4LCB5XShXZWJDb3JlOjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29yZTo6RmxvYXRS
ZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoeC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLmxvY2F0aW9u
KCkueCgpKSwgeS52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLmxvY2F0aW9uKCkueSgpKSksIFdlYkNv
cmU6OkZsb2F0U2l6ZSh3aWR0aC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLnNpemUoKS53aWR0aCgp
KSwgaGVpZ2h0LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLmhlaWdodCgpKSkpOworICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNvcmU6OkZsb2F0
UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVPcihvcmlnaW5hbEZyYW1lLmxvY2F0aW9u
KCkueCgpKSwgeS52YWx1ZU9yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS55KCkpKSwgV2ViQ29y
ZTo6RmxvYXRTaXplKHdpZHRoLnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5zaXplKCkud2lkdGgoKSks
IGhlaWdodC52YWx1ZU9yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLmhlaWdodCgpKSkpOwogICAgICAg
ICAgICAgICAgIGlmIChuZXdGcmFtZSAhPSBvcmlnaW5hbEZyYW1lKQogICAgICAgICAgICAgICAg
ICAgICBwYWdlLT5zZXRXaW5kb3dGcmFtZShuZXdGcmFtZSk7CiAgICAgICAgICAgICAgICAgCkBA
IC0xODM0LDcgKzE4MzQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50
ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29ucwogICAgICAgICAgICAg
U3RyaW5nIHByZXNzZWRCdXR0b25TdHJpbmc7CiAgICAgICAgICAgICBpZiAoc3RhdGVPYmplY3Qt
PmdldFN0cmluZygicHJlc3NlZEJ1dHRvbiJfcywgcHJlc3NlZEJ1dHRvblN0cmluZykpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIHByb3RvY29sQnV0dG9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4ocHJlc3NlZEJ1dHRvblN0cmluZyk7Ci0g
ICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1vdXNlQnV0dG9uID0gcHJvdG9jb2xN
b3VzZUJ1dHRvblRvV2ViTW91c2VFdmVudEJ1dHRvbihwcm90b2NvbEJ1dHRvbi52YWx1ZV9vcihJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZSkpOworICAg
ICAgICAgICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRNb3VzZUJ1dHRvbiA9IHByb3RvY29sTW91
c2VCdXR0b25Ub1dlYk1vdXNlRXZlbnRCdXR0b24ocHJvdG9jb2xCdXR0b24udmFsdWVPcihJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbjo6Tm9uZSkpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luU3RyaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbk1hY3Jvcy5oCmluZGV4IDM0ODdmYTkxNTJmMDQyOGE2MGEyZTI3YTk2OTc1ZDY0ODBh
NzQzMDYuLjkzYWY1YWJjNzA4YmQ1OThmMGY0MGJjYzI5NDg1MmEzNzA1Mjk3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25NYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNkZWZpbmUgZXJyb3JO
YW1lQW5kRGV0YWlsc1NlcGFyYXRvciAiOyIKIAogLy8gTWFrZSBzdXJlIHRoZSBwcmVkZWZpbmVk
IGVycm9yIG5hbWUgaXMgdmFsaWQsIG90aGVyd2lzZSB1c2UgSW50ZXJuYWxFcnJvci4KLSNkZWZp
bmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVf
b3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5h
bEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9y
U3RyaW5nKS52YWx1ZU9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZTo6SW50ZXJuYWxFcnJvcikKIAogLy8gSWYgdGhlIGVycm9yIG5hbWUgaXMgaW5jb3JyZWN0
IGZvciB0aGVzZSBtYWNyb3MsIGl0IHdpbGwgYmUgYSBjb21waWxlLXRpbWUgZXJyb3IuCiAjZGVm
aW5lIFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9yTmFtZSkgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6ZXJyb3JOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA4NjIwNmJhYzlkYmFjYWQ2NDFjMDkyZjgzMjRmZDZkZjAyZWI5MmRmLi43MjY4
ODNiM2NmODBmNDhmMmRiZmE1NjNmYzliZjdjNTVkNTcwMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlv
bnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBPcHRp
b25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgp
LCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBpbml0aWFsU2Vzc2lvbklELnZhbHVlX29y
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElE
KCksIG1fc2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQudmFsdWVP
cihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9LCAwKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggYjRlMjM5OTRh
ZGZjNjA4NjcyNTQ0NmM1YjYxN2RiODFiZDEwYjY3My4uNzNmNTVhNDgzNWYxMjg4MzFiYzMyODhj
OGFkMjU0MzcwNTc4YzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApA
QCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmluaXRUaW1lT3V0
VGltZXIoY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+JiB0aW1lT3V0SW5NCiB7CiAgICAgdXNpbmcg
bmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JNYW5hZ2VySW50ZXJuYWw7CiAKLSAgICB1bnNpZ25lZCB0
aW1lT3V0SW5Nc1ZhbHVlID0gc3RkOjptaW4obWF4VGltZU91dFZhbHVlLCB0aW1lT3V0SW5Ncy52
YWx1ZV9vcihtYXhUaW1lT3V0VmFsdWUpKTsKKyAgICB1bnNpZ25lZCB0aW1lT3V0SW5Nc1ZhbHVl
ID0gc3RkOjptaW4obWF4VGltZU91dFZhbHVlLCB0aW1lT3V0SW5Ncy52YWx1ZU9yKG1heFRpbWVP
dXRWYWx1ZSkpOwogICAgIC8vIEZJWE1FKDE5MjA2MSkKICAgICBMT0dfRVJST1IoIlN0YXJ0IHRp
bWVyLiAlZCIsIHRpbWVPdXRJbk1zVmFsdWUpOwogICAgIG1fcmVxdWVzdFRpbWVPdXRUaW1lci5z
dGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyh0aW1lT3V0SW5Nc1ZhbHVlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0YjAxMjUyZWJi
OGZlOTI3YzVhYWY0YzU3MGRhOGU0NTVmOGVjYjZkLi5hYjYxZmMyNDE2NmNiNmU0ZWQ4YWQ1MTU1
NGRlNjVkMzRhYWQ3Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTMwNTYsNyArMzA1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogCiBmbG9hdCBXZWJQYWdlUHJv
eHk6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jdXN0b21EZXZp
Y2VTY2FsZUZhY3Rvci52YWx1ZV9vcihtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKTsKKyAg
ICByZXR1cm4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3Rvci52YWx1ZU9yKG1faW50cmluc2ljRGV2
aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tRGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQgY3VzdG9tU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGNhNTEwNDg4NWE0NmNlZjMwMWVlNmFiMWYzNmJlYzgxZTNk
ZTYyY2IuLmExNThiMWY3MjFlZTJiMGQ5YjFlNGJkM2ZkNDJiMDllNmY1MTMzNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTY5LDcgKzExNjksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wp
OwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMudmFsdWVfb3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQorICAgIFdlYkNvcmU6Oklu
dFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52YWx1ZU9yKFdlYkNvcmU6OkludFNpemUo
KSk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHko
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5
R3RrLmNwcAppbmRleCBhNmIxYzkxMzZhNzAyYzgzMzUyNzlkNmQ1MmZjZjcwYjdkYzY2MGQ5Li5l
NzQ2MDFjZDA5NWQ3NzI0YzE2YjJlNDUyNDFkZjc2ZjU4MjIzMzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2VsZWN0SXRlbSh1bnNpZ25l
ZCBpdGVtSW5kZXgpCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0
aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
IG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVl
X29yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlX29yKC0xKSkpOworICAgICAgICBtX2NsaWVudC0+dmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRleC52YWx1ZU9yKG1fc2VsZWN0ZWRJ
dGVtLnZhbHVlT3IoLTEpKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2
YXRlSXRlbUF0UGF0aChHdGtUcmVlUGF0aCogcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggMDFj
NjA2OWE3NTgyYmUwZjg4OWFmYWMwNDRmY2ZhNzJlNWUzZGY1YS4uZWE2YzM3NzdlNTAxMzZjY2E1
ODZjMzc0MGM3Y2E0YjI5NjZlOTk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTI4NCw4ICsyODQs
OCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YUVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEhUVFBCbwogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwog
CiAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIg
PDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKC0xKTsKLSAgICAgICAgZW5jb2RlciA8PCBl
bGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoV2FsbFRpbWU6Om5h
bigpKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCk7CisgICAgICAgIGVuY29kZXIgPDwgZWxl
bWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoLTEpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQu
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKFdhbGxUaW1lOjpuYW4oKSkuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSFRU
UEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMTYyM2IyMDA5MDhi
ZTIwYTI2ZDkwZjIxMDJhMGE4NWU2NjdhMzM3OS4uM2E0MGQyMDZhMDFlYmQ5NjE1YTAyMDg2MjFi
ZmY2YTU1ODQxZjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU2LDggKzE1Niw4IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIsIENhY2hlZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxv
YWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpU
cmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZV9vcigwKTsKLSAg
ICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQo
KS52YWx1ZV9vcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2Fk
ZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwogICAgIHRyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRvIHNlc3Npb25J
RCA9IGZyYW1lTG9hZGVyQ2xpZW50LnNlc3Npb25JRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlODg4NDU3NDBhODhj
NjZiMzFkZjdlMmU0Y2Q1MjY4YWNhMWM1MTJjLi5jMzk4ZWJlMTk5NWU0NjgwMjdiZGFjY2QyYWI0
OTI5MmQ4OThkNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTEyODYsNyArMTI4Niw3IEBAIEludFBvaW50IFBERlBsdWdp
bjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29u
c3QKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNv
b3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICBy
ZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICBy
ZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogICAg
IAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVJvb3RWaWV3VG9QREZWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTEzMTUsNyArMTMxNSw3IEBAIEludFJlY3QgUERG
UGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgp
KTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdU
b1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFJlY3QoYm91bmRzKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRz
VG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9
CiAKQEAgLTEzMjUsNyArMTMyNSw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5n
ZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290Vmlld1RvUGx1
Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9
IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6cGx1Z2luU2l6
ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKaW5kZXggZjI4M2M3Mjg2MzBlZDRlNDI0ZDZkMGJkZDRlMjgwNmUyODIzNDgw
Mi4uNDAwZDgzMjVlZGVlNTdjOGY0NWM2NjhmNTkxZjNlZWYwZGQxZjE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBSZWY8
Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6RmlsZToK
LSAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwg
ZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsK
KyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwg
ZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKEJsb2JEYXRhSXRl
bTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlw
ZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggOWY5MTczMWY0M2JmYjExMjI0NzU3ZWZiMTAxN2U0NjI1YzE0OGY3
Zi4uYzg3YjY1OTUzZDdkYzBkMGY1NDY3MjdiZWI0ZDViY2Q0MmFkZGM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI5
OTIsNyArMjk5Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhj
b25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpCiAgICAgICAgICAgICBtX29s
ZGVzdE5vblN0YWJsZVVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNUaW1lc3RhbXAgPSBvbGRlc3RU
aW1lc3RhbXA7CiAgICAgfQogCi0gICAgZmxvYXQgc2NhbGVUb1VzZSA9IHNjYWxlRnJvbVVJUHJv
Y2Vzcy52YWx1ZV9vcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBmbG9hdCBzY2Fs
ZVRvVXNlID0gc2NhbGVGcm9tVUlQcm9jZXNzLnZhbHVlT3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0
b3IoKSk7CiAgICAgRmxvYXRSZWN0IGV4cG9zZWRDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8uZXhwb3NlZENvbnRlbnRSZWN0KCk7CiAgICAgRmxvYXRSZWN0IGFkanVz
dGVkRXhwb3NlZENvbnRlbnRSZWN0ID0gYWRqdXN0RXhwb3NlZFJlY3RGb3JOZXdTY2FsZShleHBv
c2VkQ29udGVudFJlY3QsIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uc2NhbGUoKSwgc2Nh
bGVUb1VzZSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0RXhwb3NlZENvbnRlbnRSZWN0KGFkanVz
dGVkRXhwb3NlZENvbnRlbnRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dwZS9Db21wb3NpdGluZ01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL0NvbXBvc2l0aW5nTWFuYWdlci5jcHAKaW5kZXggOWZiMDEw
NGRlZTcwNjE2NTQ1ODQ2YTJmMjFhZTE2N2NmNjgyZTViYS4uZDUxNWEwYjU4ZWI4MjE4M2M2MDE3
NmM3MDNlMjI0MWFlMmY4YTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd3BlL0NvbXBvc2l0aW5nTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL0NvbXBvc2l0aW5nTWFuYWdlci5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgdm9pZCBDb21wb3NpdGluZ01hbmFnZXI6OmVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFn
ZSYgd2ViUGFnZSkKIAogaW50IENvbXBvc2l0aW5nTWFuYWdlcjo6cmVsZWFzZUNvbm5lY3Rpb25G
ZCgpCiB7Ci0gICAgaW50IGZkID0gbV9jb25uZWN0aW9uRmQudmFsdWVfb3IoLTEpOworICAgIGlu
dCBmZCA9IG1fY29ubmVjdGlvbkZkLnZhbHVlT3IoLTEpOwogICAgIG1fY29ubmVjdGlvbkZkID0g
V1RGOjpudWxsb3B0OwogICAgIHJldHVybiBmZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5k
ZXggMDY3ZjU2Y2RlMzk0MmMyZWE3MWIxZjRiNTJmODcxYTVkNDYxM2NjNS4uYjY2OTQ4YTE5YjUz
OGZkMTM3MTQ1OTRlMGMwZGU3MjI3ODBiNDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAg
LTg4LDcgKzg4LDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQogCiAtICh1bnNpZ25lZCBz
aG9ydClwb3J0CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSktPnBvcnQoKS52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlT3IoMCk7CiB9CiAK
IC8vIEZJWE1FOiBPdmVycmlkaW5nIGlzRXF1YWw6IHdpdGhvdXQgb3ZlcnJpZGluZyBoYXNoIHdp
bGwgY2F1c2UgdHJvdWJsZSBpZiB0aGlzIGV2ZXIgZ29lcyBpbnRvIGFuIE5TU2V0IG9yIGlzIHRo
ZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAw
MjQ2YTEwMDAuLjU3Y2E4MGUxNzNkZDliNTMyNWY5MmYzNDlmYTg5NGQxYWU2NDI2ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRfIHVuc2lnbmVk
IHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDAp
OworICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVPcigwKTsKIAog
ICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGQwNjkzOTNjMzQzMjE3OWFmNzQ5NGZkNDVjOTY1ZjBlMWU5YWRmZmUu
LjFlYWQzNDRlM2JmOTQyMGYwOWM5ZGI3MDZlNDYwNjBlN2FhZDQ3YTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
OC0xMi0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBP
cHRpb25hbDo6dmFsdWVPcigpIGluc3RlYWQgb2YgT3B0aW9uYWw6OnZhbHVlX29yKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjkzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNr
VVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOgorCiAyMDE4LTEyLTE5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd3RmL09wdGlvbmFsLmg6IG1vdmUtY29uc3RydWN0
b3IgYW5kIG1vdmUtYXNzaWdubWVudCBvcGVyYXRvciBzaG91bGQgZGlzZW5nYWdlIHRoZSB2YWx1
ZSBiZWluZyBtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFy
c2VyLmNwcAppbmRleCBmODA4NWQwMmRmZTkyYWVkZWRhZGNlNWU1N2I5NDFmNmNkNzFhMmQwLi5m
YjlmZTY0ZTM4MjNlNTQ1YzEyZjE5YzFjYTAwYjAzN2VmNWY0MTcxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFy
dHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNl
cigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNU
X0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOworICAgIEVYUEVDVF9FUShw
YXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwg
dXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRz
LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgs
IHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZm
ZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRz
TmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05l
dy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVy
eSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNl
cigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAg
RVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOworICAgIEVY
UEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2Rp
bmcuY3BwCmluZGV4IGY4OTI4NTNkMjhiMDBhNDc1YTUyYzU0YWRkZTljYjc4M2QzNzBmMTEuLmY2
YzNkZWEzYjNjZDk2YWM3MmQ5MjU4MTA0NzM2M2Y2NTI3Zjk4ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2Rp
bmcuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
aG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgp
LnZhbHVlX29yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29y
KDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>