<?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>164698</bug_id>
          
          <creation_ts>2016-11-12 22:31:58 -0800</creation_ts>
          <short_desc>Move crypto code from ExceptionCode to ExceptionOr</short_desc>
          <delta_ts>2016-11-13 10:34:28 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164518</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250791</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-12 22:31:58 -0800</bug_when>
    <thetext>Move crypto code from ExceptionCode to ExceptionOr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250793</commentid>
    <comment_count>1</comment_count>
      <attachid>294654</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-12 22:45:37 -0800</bug_when>
    <thetext>Created attachment 294654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250794</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-12 22:47:14 -0800</bug_when>
    <thetext>Attachment 294654 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:65:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:154:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:162:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:170:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:180:  CryptoAlgorithmRSA_OAEP::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:57:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:89:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:58:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:84:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:90:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:63:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:120:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:128:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:136:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:150:  CryptoAlgorithmAES_CBC::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:51:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:62:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:116:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:123:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:130:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:141:  CryptoAlgorithmAES_KW::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:65:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:143:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:151:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:159:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:169:  CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:60:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:114:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:121:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:128:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:138:  CryptoAlgorithmRSAES_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:38:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:44:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:37:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:43:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:58:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 39 in 42 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>1250796</commentid>
    <comment_count>3</comment_count>
      <attachid>294656</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-12 23:01:46 -0800</bug_when>
    <thetext>Created attachment 294656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250798</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-12 23:04:15 -0800</bug_when>
    <thetext>Attachment 294656 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:65:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:154:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:162:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:170:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:180:  CryptoAlgorithmRSA_OAEP::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:36:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:42:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:57:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:89:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:36:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:42:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:58:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:84:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:90:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:36:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:42:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:63:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:120:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:128:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:136:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:150:  CryptoAlgorithmAES_CBC::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:51:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:62:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:116:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:123:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:130:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:141:  CryptoAlgorithmAES_KW::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:65:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:143:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:151:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:159:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:169:  CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:60:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:114:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:121:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:128:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:138:  CryptoAlgorithmRSAES_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:38:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:44:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:37:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:43:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:58:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 45 in 46 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>1250799</commentid>
    <comment_count>5</comment_count>
      <attachid>294658</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-12 23:17:57 -0800</bug_when>
    <thetext>Created attachment 294658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250800</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-12 23:20:08 -0800</bug_when>
    <thetext>Attachment 294658 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:65:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:154:  CryptoAlgorithmRSA_OAEP::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:162:  CryptoAlgorithmRSA_OAEP::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:170:  CryptoAlgorithmRSA_OAEP::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:180:  CryptoAlgorithmRSA_OAEP::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:36:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:42:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:57:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSASSA_PKCS1_v1_5Mac.cpp:89:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:36:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSA_OAEPGnuTLS.cpp:42:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:38:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:58:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:84:  CryptoAlgorithmAES_CBC::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:90:  CryptoAlgorithmAES_CBC::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:36:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp:42:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:63:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:120:  CryptoAlgorithmAES_CBC::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:128:  CryptoAlgorithmAES_CBC::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:136:  CryptoAlgorithmAES_CBC::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:150:  CryptoAlgorithmAES_CBC::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:36:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp:51:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:62:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:116:  CryptoAlgorithmAES_KW::encryptForWrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:123:  CryptoAlgorithmAES_KW::decryptForUnwrapKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:130:  CryptoAlgorithmAES_KW::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp:141:  CryptoAlgorithmAES_KW::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:65:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:143:  CryptoAlgorithmRSASSA_PKCS1_v1_5::sign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:151:  CryptoAlgorithmRSASSA_PKCS1_v1_5::verify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:159:  CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:169:  CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:60:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:114:  CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:121:  CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:128:  CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:138:  CryptoAlgorithmRSAES_PKCS1_v1_5::importKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:38:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp:44:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:37:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp:43:  CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:37:  CryptoAlgorithmAES_KW::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_KWMac.cpp:58:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 45 in 46 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>1250820</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-13 08:04:56 -0800</bug_when>
    <thetext>Hooray! Looks like this one is passing all the tests and ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250830</commentid>
    <comment_count>8</comment_count>
      <attachid>294658</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-13 10:34:23 -0800</bug_when>
    <thetext>Comment on attachment 294658
Patch

Clearing flags on attachment: 294658

Committed r208669: &lt;http://trac.webkit.org/changeset/208669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250831</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-13 10:34:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294654</attachid>
            <date>2016-11-12 22:45:37 -0800</date>
            <delta_ts>2016-11-12 23:01:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164698-20161112224120.patch</filename>
            <type>text/plain</type>
            <size>153949</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjOTBiZjk2YTU3Njcz
OTY1YTk2YTlhMGU1YjMzNmMyMmU4MmNhYi4uODdlMTNkM2NjOTZjZjAwNmNmZTBlM2NmNDE3ZTZl
YmYwNGUzODM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwOSBAQAogMjAxNi0xMS0xMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBjcnlwdG8gY29kZSBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uT3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlv
bmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIFVzZSB0aGUgbmV3IGlkZW50
aWZpZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBnZXRJZGVudGlmaWVyRm9yTmFtZS4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjp0b0NyeXB0b0tleVVzYWdlQml0bWFwKTogUmVtb3ZlZCBhIHN0cmF5IG1lYW5pbmds
ZXNzIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdlbmVy
YXRlS2V5UHJvbWlzZSk6IFBhc3MKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUFsZ29yaXRobUZyb21KU1ZhbHVlKTogVXNlIHRoZSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uCisg
ICAgICAgIG9mIHNldERPTUV4Y2VwdGlvbiB0aGF0IHVzZXMgc2NvcGUuCisgICAgICAgIChXZWJD
b3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6IERpdHRvLiBBbHNvIHVwZGF0ZWQg
dG8gdXNlCisgICAgICAgIEV4Y2VwdGlvbk9yIGluc3RlYWQgb2YgRXhjZXB0aW9uQ29kZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KTogRGl0dG8uCisKKyAgICAgICAgKiBj
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobTo6Q3J5cHRvQWxnb3JpdGhtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRobSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobTo6ZGlnZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG06OmRlcml2ZUtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
OjpkZXJpdmVCaXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpl
bmNyeXB0Rm9yV3JhcEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobS5oOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIE1vdmVkIHRoZSBkZXN0cnVj
dG9yIGludG8gdGhlIGhlYWRlciBzaW5jZSBpdCdzIG1vcmUgZWZmaWNpZW50IGZvcgorICAgICAg
ICBkZXJpdmVkIGNsYXNzZXMgdG8gaGF2ZSBpdCBpbmxpbmVkLiBSZW1vdmVkIHRoZSBwcm90ZWN0
ZWQgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSBzaW5jZSB0aGVyZSBhcmUgcHVyZSB2aXJ0
dWFsIGZ1bmN0aW9ucyBpbiB0aGUgY2xhc3MsIHRoZXJlIGlzCisgICAgICAgIG5vIHJpc2sgb2Yg
YW55b25lIG1pc3VzaW5nIHRoZSBwdWJsaWMgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBjcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZ2V0
SWRlbnRpZmllckZvck5hbWUgYW5kIGNoYW5nZWQgdG8gdXNlIGFuIE9wdGlvbmFsIHJhdGhlciB0
aGFuCisgICAgICAgIHVzaW5nIGEgYm9vbGVhbiBwbHVzIGFuIG91dCBhcmd1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKTogUmVuYW1lZCB0byBu
YW1lIGZyb20KKyAgICAgICAgbmFtZUZvcklkZW50aWZpZXIuIEFsc28gdXBkYXRlZCB0byBzaGFy
ZSBhIHNpbmdsZSBtYXAgY29udGFpbmluZworICAgICAgICBib3RoIG5hbWVzIGFuZCBjb25zdHJ1
Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRl
KTogU2hhcmUgc2luZ2xlIG1hcCBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6IFVwZGF0ZWQgYXNzZXJ0aW9ucwor
ICAgICAgICB0byBhIG1yb2Ugc3RyYWlnaHRmb3J3YXJkIHN0eWxlLiBTaGFyZSBzaW5nbGUgbWFw
IGZvciBuYW1lcyBhbmQgY29uc3RydWN0b3JzLgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjp+Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjprZXlBbGdvcml0aG1NYXRjaGVzKTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVLZXkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5
cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRl
Y3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUFFU19DQkMuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNv
bnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpDcnlwdG9BbGdvcml0aG1BRVNfS1cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjp+Q3J5cHRvQWxnb3JpdGht
QUVTX0tXKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19L
Vzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyk6IFVzZSByZWZlcmVuY2VzLCBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6aW1wb3J0S2V5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRG
b3JXcmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmRlY3J5cHRGb3JVbndyYXBLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAg
IEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OkNyeXB0b0FsZ29yaXRobUhNQUMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6fkNyeXB0b0FsZ29y
aXRobUhNQUMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1B
Qzo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywgRXhjZXB0aW9uT3IuCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDogVXBkYXRlZCBmb3IgYWJvdmUu
CisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIu
CisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6fkNyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6
IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFt
ZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81Ojp+Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVy
YXRlS2V5KTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpp
bXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAgICAgQWxz
byB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
fkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleSk6IFVzZSByZWZlcmVuY2VzLCBFeGNl
cHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNy
eXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVz
ZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEExOjpDcnlwdG9BbGdvcml0aG1TSEExKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6On5DcnlwdG9BbGdvcml0aG1TSEEx
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2Vz
dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25z
dGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTIyNDo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6fkNyeXB0b0FsZ29yaXRobVNI
QTIyNCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6
OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28g
dXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpDcnlwdG9BbGdvcml0aG1TSEEyNTYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2Ojp+Q3J5cHRvQWxn
b3JpdGhtU0hBMjU2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAg
ICAgQWxzbyB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OkNyeXB0b0FsZ29yaXRobVNIQTM4
NCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6On5D
cnlwdG9BbGdvcml0aG1TSEEzODQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg6IFVwZGF0ZWQgZm9yIGFib3Zl
LgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVy
LgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6Q3J5cHRvQWxnb3Jp
dGhtU0hBNTEyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNI
QTUxMjo6fkNyeXB0b0FsZ29yaXRobVNIQTUxMik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaDogVXBkYXRlZCBm
b3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lk
ZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNH
bnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZv
cm1TaWduKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxz
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybURlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0
Zm9ybVZlcmlmeSk6IERpdHRvLgorCisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVT
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUFFUzo6YnVpbGRBbGdvcml0aG0pOiBV
cGRhdGVkIHRvIHVzZSBuYW1lIGluc3RlYWQKKyAgICAgICAgb2YgbmFtZUZvcklkZW50aWZpZXIu
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5SE1BQzo6YnVpbGRBbGdvcml0aG0pOgorCisgICAgICAgICog
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdCk6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3Jt
RGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxh
dGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfS1c6OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21tb25DcnlwdG9I
TUFDQWxnb3JpdGhtKTogUmVuYW1lZCBmcm9tCisgICAgICAgIGdldENvbW1vbkNyeXB0b0hNQUNB
bGdvcml0aG0gYW5kIGNoYW5nZWQgdG8gdXNlIE9wdGlvbmFsIGluc3RlYWQgb2YKKyAgICAgICAg
YSBib29sZWFuIHJldHVybiB2YWx1ZSBhbmQgYW4gb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKTogVXNlIEV4Y2VwdGlvbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkp
OiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQpOiBEaXR0by4KKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6IFJlbmFtZWQgZnJv
bQorICAgICAgICBnZXRDcnlwdG9EaWdlc3RBbGdvcml0aG0gYW5kIGNoYW5nZWQgdG8gdXNlIE9w
dGlvbmFsIGluc3RlYWQgb2YKKyAgICAgICAgYSBib29sZWFuIHJldHVybiB2YWx1ZSBhbmQgYW4g
b3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeSk6IERp
dHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5j
cnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorCisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9L
ZXlSU0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpidWlsZEFsZ29y
aXRobSk6IFVwZGF0ZWQgdG8gdXNlIG5hbWUgaW5zdGVhZAorICAgICAgICBvZiBuYW1lRm9ySWRl
bnRpZmllci4KKworMjAxNi0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
ICAgICAgICAgUmVtb3ZlIHNvbWUgdXNlIG9mIEV4Y2VwdGlvbkNvZGUgaW4gTWVkaWFTdHJlYW0K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDY5MAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRo
bURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdv
cml0aG1EaWN0aW9uYXJ5LmNwcAppbmRleCA4ODQ1YjMzNDc0YzM2YThlOTY2OGEwM2U5YTJkNTFl
YWUwYWY2ZWU5Li5iNDI1ZWQ1NjhkZDAxMDBhMTUyZWFhMzEwMjdiNjU3YjU0ODdkYWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeS5jcHAKQEAgLTg3LDExICs4NywxMyBAQCBib29sIEpTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkuZ2V0SWRlbnRpZmllckZvck5hbWUoYWxnb3JpdGht
TmFtZSwgYWxnb3JpdGhtSWRlbnRpZmllcikpIHsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkuaWRlbnRpZmllcihhbGdvcml0aG1OYW1l
KTsKKyAgICBpZiAoIWlkZW50aWZpZXIpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAg
IGFsZ29yaXRobUlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwCmluZGV4IDg2ZjNmN2E0M2FhNWU3YmE3MzBkNGMzMzZhNGJlOGViNWNhMjdhYTguLjkx
Mzk4MWIzZTQxMDk0ZDFkNzE4ZTRlODMzZWUwM2NjNDYxYTY2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTgxLDgg
KzgxLDggQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWUKICAgICAgICAgYXV0byBwYXJhbXMgPSBj
b252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihzdGF0ZSwgdmFsdWUp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLmdldElkZW50aWZpZXJGb3JOYW1lKHBh
cmFtcy5uYW1lLCBpZGVudGlmaWVyKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkuaWRlbnRpZmllcihwYXJhbXMubmFtZSk7
CisgICAgICAgIGlmICghaWRlbnRpZmllcikgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWUKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IHJlc3VsdDsK
ICAgICAgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKICAgICAgICAgY2FzZSBPcGVyYXRpb25zOjpE
aWdlc3Q6Ci0gICAgICAgICAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzE6CiAgICAgICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8yMjQ6CiAgICAgICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY6CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWUKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9wZXJhdGlvbnM6
OkdlbmVyYXRlS2V5OgotICAgICAgICAgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgICAg
ICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6IHsKICAgICAgICAgICAgICAgICBhdXRv
IHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFt
cz4oc3RhdGUsIHZhbHVlKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1hbGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFt
ZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT3BlcmF0
aW9uczo6SW1wb3J0S2V5OgotICAgICAgICAgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6CiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gbm9ybWFsaXplQ3J5cHRvQWxn
b3JpdGhtUGFyYW1lCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0g
ICAgICAgIHJlc3VsdC0+aWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIHJlc3VsdC0+
aWRlbnRpZmllciA9ICppZGVudGlmaWVyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4gbm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1lCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBDcnlwdG9LZXlVc2FnZUJpdG1hcCB0b0NyeXB0b0tleVVz
YWdlQml0bWFwKGNvbnN0IENyeXB0b0tleVVzYWdlIHVzYWdlKQorc3RhdGljIENyeXB0b0tleVVz
YWdlQml0bWFwIHRvQ3J5cHRvS2V5VXNhZ2VCaXRtYXAoQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UpCiB7
CiAgICAgc3dpdGNoICh1c2FnZSkgewogICAgIGNhc2UgQ3J5cHRvS2V5VXNhZ2U6OkVuY3J5cHQ6
CkBAIC0zNTMsNyArMzUzLDcgQEAgc3RhdGljIHZvaWQganNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdl
bmVyYXRlS2V5UHJvbWlzZShFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXIKICAgICAvLyBUaGUg
c3BlYyBzdWdnZXN0cyB3ZSBzaG91bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHRhc2sgYXN5bmNo
cm9ub3VzbHkgcmVnYXJkbGVzcyB3aGF0IGtpbmQgb2Yga2V5cyBpdCBwcm9kdWNlcwogICAgIC8v
IGFzIG9mIDExIERlY2VtYmVyIDIwMTQ6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XZWJDcnlwdG9B
UEkvI1N1YnRsZUNyeXB0by1tZXRob2QtZ2VuZXJhdGVLZXkKICAgICAvLyBUaGF0J3Mgc2ltcGx5
IG5vdCBlZmZpY2llbnQgZm9yIEFFUyBhbmQgSE1BQyBrZXlzLiBUaGVyZWZvcmUsIHdlIHBlcmZv
cm0gaXQgYXMgYW4gYXN5bmMgdGFzayBjb25kaXRpb25hbGx5LgotICAgIGFsZ29yaXRobS0+Z2Vu
ZXJhdGVLZXkoV1RGTW92ZShwYXJhbXMpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOworICAgIGFsZ29yaXRobS0+Z2VuZXJhdGVLZXko
V1RGTW92ZShwYXJhbXMpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICpzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQganNTdWJ0bGVDcnlwdG9GdW5j
dGlvbkltcG9ydEtleVByb21pc2UoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IGI0MmRlMjEwOGViNGZiOTc1MDNm
ODgzYzRlNWFkZjk0NjI5YzU5NWMuLmFjOWI1ZDMwNDc1M2ZiMGQxNzI3OGIyODJlNWM4ZmE0YTA2
NGY1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFJlZlB0
cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmEKIAogICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6
OnNpbmdsZXRvbigpLmNyZWF0ZShhbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc3Vs
dCkKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIpOwor
ICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgTk9UX1NVUFBPUlRFRF9FUlIp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBpZiAo
IWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKICAgICAgICAgd3JhcHBlZCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2Vu
Y3J5cHQnIikpOwotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVE
X0VSUik7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBOT1RfU1VQUE9S
VEVEX0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApAQCAtMTgx
LDExICsxODEsMTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVj
U3RhdGUmIHN0YXRlKQogICAgICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+ZW5jcnlwdCgqcGFy
YW1ldGVycywgKmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZh
aWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGFsZ29yaXRobS0+ZW5jcnlwdCgqcGFyYW1ldGVycywgKmtleSwgZGF0YSwgV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0
YXRlLCBzY29wZSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0yMzQsMTEgKzIzMywxMCBAQCBK
U1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAgICB9OwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT5kZWNyeXB0KCpwYXJhbWV0ZXJzLCAqa2V5LCBk
YXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwg
ZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gYWxnb3Jp
dGhtLT5kZWNyeXB0KCpwYXJhbWV0ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgeworICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAg
ICByZXR1cm4gcHJvbWlzZTsKQEAgLTI4NywxMSArMjg1LDEwIEBAIEpTVmFsdWUgSlNXZWJLaXRT
dWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVq
ZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBh
bGdvcml0aG0tPnNpZ24oKnBhcmFtZXRlcnMsICprZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0Nh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0g
ICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0tPnNpZ24oKnBhcmFtZXRlcnMs
ICprZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2Fs
bGJhY2spKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb3Bh
Z2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMzQ2
LDExICszNDMsMTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAgICB9Owog
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT52ZXJpZnkoKnBhcmFt
ZXRlcnMsICprZXksIHNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBX
VEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFsZ29yaXRobS0+dmVyaWZ5KCpwYXJhbWV0ZXJzLCAqa2V5LCBz
aWduYXR1cmUsIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJl
Q2FsbGJhY2spKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHBy
b3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAt
Mzg5LDExICszODUsMTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAgICB9
OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT5kaWdlc3QoKnBh
cmFtZXRlcnMsIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJl
Q2FsbGJhY2spLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbigm
c3RhdGUsIGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byByZXN1
bHQgPSBhbGdvcml0aG0tPmRpZ2VzdCgqcGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwg
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC00NDUsMTEgKzQ0MCwxMCBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICB3
cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGFsZ29yaXRobS0+Z2VuZXJhdGVLZXkoKnBhcmFtZXRlcnMsIGV4dHJhY3RhYmxl
LCBrZXlVc2FnZXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2Fs
bGJhY2spLCBlYywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7
Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0t
PmdlbmVyYXRlS2V5KCpwYXJhbWV0ZXJzLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CkBAIC01MDcsMTAgKzUwMSw3IEBAIHN0YXRpYyB2b2lkIGltcG9y
dEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9P
cGVyYXRpCiAgICAgYXV0byBrZXlEYXRhID0ga2V5U2VyaWFsaXphdGlvbi0+a2V5RGF0YSgpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0tPmltcG9ydEtleSgqcGFyYW1ldGVycywgKmtleURh
dGEsIGV4dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZh
aWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIGVjKTsKKyAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBhbGdv
cml0aG0tPmltcG9ydEtleSgqcGFyYW1ldGVycywgKmtleURhdGEsIGV4dHJhY3RhYmxlLCBrZXlV
c2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpKTsKIH0K
IAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3Rh
dGUpCkBAIC02OTEsOSArNjgyLDggQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3Jh
cEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICBhdXRvIGVuY3J5cHRGYWlsdXJlQ2FsbGJh
Y2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdyYXBwZXItPnJlamVjdChu
dWxscHRyKTsKICAgICAgICAgfTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgIGFsZ29yaXRobS0+ZW5jcnlwdEZvcldyYXBLZXkoKnBhcmFtZXRlcnMsICp3cmFwcGluZ0tl
eSwgc3RkOjptYWtlX3BhaXIoZXhwb3J0ZWRLZXlEYXRhLmRhdGEoKSwgZXhwb3J0ZWRLZXlEYXRh
LnNpemUoKSksIFdURk1vdmUoZW5jcnlwdFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZW5jcnlw
dEZhaWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICAgICAgaWYgKGVjKSB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gYWxnb3JpdGhtLT5lbmNyeXB0Rm9yV3JhcEtleSgqcGFyYW1ldGVycywgKndyYXBw
aW5nS2V5LCBzdGQ6Om1ha2VfcGFpcihleHBvcnRlZEtleURhdGEuZGF0YSgpLCBleHBvcnRlZEtl
eURhdGEuc2l6ZSgpKSwgV1RGTW92ZShlbmNyeXB0U3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShl
bmNyeXB0RmFpbHVyZUNhbGxiYWNrKSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgZmFpbHVyZSBkZXRhaWxzIHRvIGNv
bnNvbGUsIGFuZCBwb3NzaWJseSB0byBjYWxsaW5nIHNjcmlwdCBvbmNlIHRoZXJlIGlzIGEgc3Rh
bmRhcmRpemVkIHdheSB0byBwYXNzIGVycm9ycyB0byBXZWJDcnlwdG8gcHJvbWlzZSByZWplY3Qg
ZnVuY3Rpb25zLgogICAgICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxwdHIpOwogICAgICAg
ICB9CkBAIC03MDMsMTIgKzY5Myw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86Ondy
YXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxwdHIp
OwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJDb3JlOjpleHBv
cnRLZXkoc3RhdGUsIGtleUZvcm1hdCwgKmtleSwgV1RGTW92ZShleHBvcnRTdWNjZXNzQ2FsbGJh
Y2spLCBXVEZNb3ZlKGV4cG9ydEZhaWx1cmVDYWxsYmFjaykpOwotICAgIGlmIChlYykgewotICAg
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwogfQpAQCAtODA4LDExICs3OTMs
MTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAgICB9OwogCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW53cmFwQWxnb3JpdGhtLT5kZWNyeXB0Rm9yVW53
cmFwS2V5KCp1bndyYXBBbGdvcml0aG1QYXJhbWV0ZXJzLCAqdW53cmFwcGluZ0tleSwgd3JhcHBl
ZEtleURhdGEsIFdURk1vdmUoZGVjcnlwdFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZGVjcnlw
dEZhaWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IHVud3JhcEFsZ29yaXRobS0+ZGVjcnlwdEZvclVud3JhcEtleSgqdW53cmFw
QWxnb3JpdGhtUGFyYW1ldGVycywgKnVud3JhcHBpbmdLZXksIHdyYXBwZWRLZXlEYXRhLCBXVEZN
b3ZlKGRlY3J5cHRTdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGRlY3J5cHRGYWlsdXJlQ2FsbGJh
Y2spKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRleCAxZDMxYjc0ZDA2MTU5MTUyNjY5
MzVjOTk1NmE1ZjQyMjdjMGFmMmI2Li5kYzU4MjAzN2FiYjI0YzYyY2RlNTVhNjkwOTU5N2VkNDJh
MDBhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAt
MzIsMTUgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9BbGdvcml0aG06
OkNyeXB0b0FsZ29yaXRobSgpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29y
aXRobSgpCi17Ci19Ci0KLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpnZW5lcmF0ZUtleShjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQordm9pZCBDcnlw
dG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7CiAgICAgZXhjZXB0aW9uQ2FsbGJhY2soTk9UX1NVUFBP
UlRFRF9FUlIpOwogfQpAQCAtNTAsNTkgKzQyLDU5IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpp
bXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1
CiAgICAgZXhjZXB0aW9uQ2FsbGJhY2soTk9UX1NVUFBPUlRFRF9FUlIpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNl
cHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBP
UlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjpk
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsK
LSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1Rf
U1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlnZXN0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobTo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYg
ZWMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9F
UlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlcml2ZUtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIENyeXB0b0Fs
Z29yaXRobSosIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9B
bGdvcml0aG06OmRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIENyeXB0b0FsZ29yaXRobSosIGJvb2wsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBlYyA9
IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVE
X0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGVyaXZlQml0cyhjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIHVuc2ln
bmVkIGxvbmcsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobTo6ZGVyaXZlQml0cyhjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYs
IHVuc2lnbmVkIGxvbmcsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewotICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQ
T1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjppbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRh
JiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBlbmNy
eXB0KHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSwgZWMpOworICAgIHJldHVybiBlbmNyeXB0KHBhcmFtZXRlcnMsIGtleSwg
ZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdEZvclVud3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBkZWNyeXB0KHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIHJldHVybiBkZWNyeXB0KHBhcmFt
ZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxi
YWNrKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAppbmRl
eCBiYTBkZWU3NzgzMzdjYzNkYmZjZjRhMTYyODdmMmE2YjBiYzI2ZGZmLi5lMWM2YmFlMDk4NWRk
OWE3ZmYzNWYxYTM0OTg3MTI4NTg0MDEyNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0FsZ29yaXRobS5oCkBAIC0yNywyMCArMjcsMTYgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlVc2FnZS5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSnNvbldlYktleS5oIgogI2luY2x1ZGUgIlN1YnRs
ZUNyeXB0by5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUoU1VCVExFX0NS
WVBUTykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwotCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOwogY2xhc3MgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQ7CiBjbGFzcyBDcnlwdG9LZXk7CkBAIC00OSwxMyArNDUs
MTMgQEAgY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIC8vIERhdGEgaXMgbXV0YWJsZSwgc28gYXN5bmMgb3BlcmF0aW9ucyBzaG91bGQgY29weSBp
dCBmaXJzdC4KLXR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+IENyeXB0
b09wZXJhdGlvbkRhdGE7Cit1c2luZyBDcnlwdG9PcGVyYXRpb25EYXRhID0gc3RkOjpwYWlyPGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3Q+OwogCiB1c2luZyBLZXlEYXRhID0gVmFyaWFudDxWZWN0b3I8
dWludDhfdD4sIEpzb25XZWJLZXk+OwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG0gOiBwdWJsaWMg
UmVmQ291bnRlZDxDcnlwdG9BbGdvcml0aG0+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Dcnlw
dG9BbGdvcml0aG0oKTsKKyAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG0oKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0ID0gMDsKIApAQCAtNjYsMjYgKzYyLDIzIEBAIHB1YmxpYzoKICAgICB1c2luZyBWb2lkQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgRXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uQ29kZSk+OwogCi0gICAgdmlydHVhbCB2
b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JL
ZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5
KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CiAKICAg
ICAvLyBUaGUgZm9sbG93aW5nIHdpbGwgYmUgZGVwcmVjYXRlZC4KLSAgICB2aXJ0dWFsIHZvaWQg
ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0
IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9v
bENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCBDcnlwdG9BbGdvcml0aG0qIGRlcml2ZWRLZXlUeXBlLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PHZvaWQ+IGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2aXJ0dWFsIEV4
Y2VwdGlvbk9yPHZvaWQ+IGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsK
KyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8dm9pZD4gZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25P
cjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBh
aXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlcml2ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYgYmFzZUtleSwgQ3J5cHRvQWxnb3JpdGhtKiBkZXJpdmVkS2V5VHlwZSwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkZXJpdmVC
aXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiBiYXNlS2V5LCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsK
IAogICAgIC8vIFRoZXNlIGFyZSBvbmx5IGRpZmZlcmVudCBmcm9tIGVuY3J5cHQvZGVjcnlwdCBi
ZWNhdXNlIHNvbWUgYWxnb3JpdGhtcyBtYXkgbm90IGV4cG9zZSBlbmNyeXB0L2RlY3J5cHQuCi0g
ICAgdmlydHVhbCB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0Rm9yVW53cmFwS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgQ3J5cHRvQWxnb3JpdGhtKCk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBl
bmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8dm9pZD4gZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKaW5kZXggMzA3ZTM1NmY1ZTU1
NjE0MmUwYTljMDM1MjBkZTBlZGI3NjI5Y2Q0Zi4uMmZjYzMxMTk5Y2E4NWFiYjg1MGE4NGQxMzMw
ZGRlY2U0ZDQ3OGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuY3BwCkBAIC0zNCw2NSArMzQsNjUgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitzdGF0aWMgU3RhdGljTG9jayByZWdpc3RyeU11dGV4OworCiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsK
LQogICAgIHJldHVybiByZWdpc3RyeTsKIH0KIAotc3RhdGljIFN0YXRpY0xvY2sgcmVnaXN0cnlN
dXRleDsKLQogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
KCkKIHsKICAgICBwbGF0Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcygpOwogfQogCi1ib29sIENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5OjpnZXRJZGVudGlmaWVyRm9yTmFtZShjb25zdCBTdHJpbmcmIG5h
bWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImIHJlc3VsdCkKK09wdGlvbmFsPENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKIAotICAgIGF1dG8gaXRlciA9IG1f
bmFtZVRvSWRlbnRpZmllck1hcC5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIGlmIChp
dGVyID09IG1fbmFtZVRvSWRlbnRpZmllck1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBv
biB0aGUgYXJndW1lbnQgdG8gZmluZD8KKyAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZp
ZXJzLmZpbmQobmFtZS5pc29sYXRlZENvcHkoKSk7CisgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9p
ZGVudGlmaWVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKLSAgICByZXN1bHQg
PSBpdGVyLT52YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaWRlbnRpZmllci0+
dmFsdWU7CiB9CiAKLVN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZUZvcklkZW50
aWZpZXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQorU3RyaW5nIENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhyZWdpc3RyeU11
dGV4KTsKIAotICAgIHJldHVybiBtX2lkZW50aWZpZXJUb05hbWVNYXAuZ2V0KHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpZGVudGlmaWVyKSkuaXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byBjb250cnVj
dG9yID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmll
cikpOworICAgIGlmIChjb250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGNvbnRydWN0b3ItPnZhbHVlLmZpcnN0Lmlzb2xh
dGVkQ29weSgpOwogfQogCiBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKIAot
ICAgIGF1dG8gaXRlciA9IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXAuZmluZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOwotICAgIGlmIChpdGVyID09IG1faWRlbnRpZmll
clRvQ29uc3RydWN0b3JNYXAuZW5kKCkpCisgICAgYXV0byBjb250cnVjdG9yID0gbV9jb25zdHJ1
Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOworICAgIGlmIChj
b250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBpdGVyLT52YWx1ZSgpOworICAgIHJldHVybiBjb250cnVjdG9yLT52
YWx1ZS5zZWNvbmQoKTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cmVnaXN0
ZXJBbGdvcml0aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yIGNvbnN0cnVjdG9yKQogewog
ICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCi0g
ICAgYm9vbCBhZGRlZCA9IG1fbmFtZVRvSWRlbnRpZmllck1hcC5hZGQobmFtZSwgaWRlbnRpZmll
cikuaXNOZXdFbnRyeTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZGVkLCBhZGRlZCk7Ci0KLSAgICBh
ZGRlZCA9IG1faWRlbnRpZmllclRvTmFtZU1hcC5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlk
ZW50aWZpZXIpLCBuYW1lKS5pc05ld0VudHJ5OwotICAgIEFTU0VSVF9VTlVTRUQoYWRkZWQsIGFk
ZGVkKTsKKyAgICBBU1NFUlQoIW1faWRlbnRpZmllcnMuY29udGFpbnMobmFtZSkpOworICAgIEFT
U0VSVCghbV9jb25zdHJ1Y3RvcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50
aWZpZXIpKSk7CiAKLSAgICBhZGRlZCA9IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXAuYWRk
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSwgY29uc3RydWN0b3IpLmlzTmV3RW50
cnk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRlZCwgYWRkZWQpOworICAgIG1faWRlbnRpZmllcnMu
YWRkKG5hbWUsIGlkZW50aWZpZXIpOworICAgIG1fY29uc3RydWN0b3JzLmFkZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaWRlbnRpZmllciksIHN0ZDo6bWFrZV9wYWlyKG5hbWUsIGNvbnN0cnVjdG9y
KSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuaAppbmRleCA3YjNhNmU5NzNmNWM1Mjc4YmE1NjI3YTVjZmQxODJkODkzNzhlNzkzLi4z
ZDE1NDQ1NzIwZDQ1MmJmYmJiYzIzMzU5YTdmNmViMzVkZTkzYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaApAQCAtMzUsOCArMzUsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0K
IGNsYXNzIENyeXB0b0FsZ29yaXRobTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkg
ewpAQCAtNDYsOCArNDQsOCBAQCBjbGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKIAot
ICAgIGJvb2wgZ2V0SWRlbnRpZmllckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciYpOwotICAgIFN0cmluZyBuYW1lRm9ySWRlbnRpZmllcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyKTsKKyAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
PiBpZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBuYW1lKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIpOwogCiAgICAgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCkBAIC01NSw3ICs1Myw3IEBAIHByaXZhdGU6CiAg
ICAgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkoKTsKICAgICB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJB
bGdvcml0aG1zKCk7CiAKLSAgICB0eXBlZGVmIFJlZjxDcnlwdG9BbGdvcml0aG0+ICgqQ3J5cHRv
QWxnb3JpdGhtQ29uc3RydWN0b3IpKCk7CisgICAgdXNpbmcgQ3J5cHRvQWxnb3JpdGhtQ29uc3Ry
dWN0b3IgPSBSZWY8Q3J5cHRvQWxnb3JpdGhtPiAoKikoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEFsZ29yaXRobUNsYXNzPiB2b2lkIHJlZ2lzdGVyQWxnb3JpdGhtKCkKICAgICB7CkBAIC02
NCw5ICs2Miw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyQWxnb3JpdGhtKGNvbnN0
IFN0cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGht
Q29uc3RydWN0b3IpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9uYW1lVG9JZGVudGlmaWVyTWFwOwot
ICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4gbV9pZGVudGlmaWVyVG9OYW1lTWFwOwotICAg
IEhhc2hNYXA8dW5zaWduZWQsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPiBtX2lkZW50aWZp
ZXJUb0NvbnN0cnVjdG9yTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1faWRlbnRpZmllcnM7CisgICAg
SGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpwYWlyPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtQ29uc3Ry
dWN0b3I+PiBtX2NvbnN0cnVjdG9yczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19DQkMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQy5jcHAKaW5kZXggMWNmYzI5MGRkNDhiNWUxM2JiYjg5OGY5NTczMjIxMDZk
ZGYwNjFjZi4uNGNhZTE3ZTEwNjU3NDVlN2IyODYwMzc5ODRmMzEyYTg3ZTA5MGJkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQy5jcHAKQEAgLTM3LDIxICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnNfbmFtZSA9
ICJBRVMtQ0JDIjsKLQogc3RhdGljIGlubGluZSBib29sIHVzYWdlc0FyZUludmFsaWRGb3JDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICBy
ZXR1cm4gdXNhZ2VzICYgKENyeXB0b0tleVVzYWdlU2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5
IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpOwog
fQogCi1DcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCkKLXsK
LX0KLQotQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6fkNyeXB0b0FsZ29yaXRobUFFU19DQkMoKQot
ewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpjcmVh
dGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29yaXRobUFFU19DQkMp
OwpAQCAtNjcsMTMgKzU3LDEyIEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6a2V5QWxn
b3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhCiAgICAgaWYgKGtl
eS5hbGdvcml0aG1JZGVudGlmaWVyKCkgIT0gc19pZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgQVNTRVJUKGlzPENyeXB0b0tleUFFUz4oa2V5KSk7Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJz
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5
UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQogewot
ICAgIGNvbnN0IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1B
ZXNLZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPigqcGFyYW1ldGVycyk7CiAK
ICAgICBpZiAodXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19DQkModXNhZ2Vz
KSkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTWU5UQVhfRVJSKTsKQEAgLTEyOCw1MiAr
MTE3LDQzIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KFN1YnRsZUNy
eXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmCiAgICAgY2FsbGJhY2soKnJlc3VsdCk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjplbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIGFlc0NCQ1Bh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVk
PihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhhZXNDQkNQYXJh
bWV0ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JDUGFyYW1ldGVycywg
ZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0byYgYWVzQ0JDUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRl
cnMpOworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhhZXNDQkNQYXJhbWV0ZXJzLCBrZXkp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1FbmNyeXB0KGFlc0NCQ1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tl
eUFFUz4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxi
YWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpkZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
KQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIGFl
c0NCQ1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXBy
ZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhhZXND
QkNQYXJhbWV0ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybURlY3J5cHQoYWVzQ0JDUGFyYW1l
dGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0byYgYWVzQ0JDUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBh
cmFtZXRlcnMpOworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhhZXNDQkNQYXJhbWV0ZXJz
LCBrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsK
KyAgICByZXR1cm4gcGxhdGZvcm1EZWNyeXB0KGFlc0NCQ1BhcmFtZXRlcnMsIGRvd25jYXN0PENy
eXB0b0tleUFFUz4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVy
ZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitFeGNlcHRpb25Pcjx2b2lk
PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc0RlcHJlY2F0ZWQm
IGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7
CiAKLSAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmdlbmVy
YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkMsIGFlc1BhcmFtZXRlcnMubGVu
Z3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUFF
Uzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQywgYWVzUGFyYW1l
dGVycy5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCiAgICAgY2FsbGJhY2socmVzdWx0LmdldCgpLCBudWxscHRyKTsKKyAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjppbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYpCiB7Ci0g
ICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
b25zdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSYga2V5RGF0YU9jdGV0U2VxdWVuY2UgPSBk
b3duY2FzdDxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSk7Ci0gICAgUmVmUHRy
PENyeXB0b0tleUFFUz4gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpjcmVhdGUoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0NCQywga2V5RGF0YU9jdGV0U2VxdWVuY2Uub2N0ZXRTZXF1ZW5j
ZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2UpOwotICAgIGNhbGxiYWNrKCpyZXN1bHQpOworICAgIGlm
ICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURhdGEpKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICBhdXRvJiBrZXlEYXRhT2N0
ZXRTZXF1ZW5jZSA9IGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRh
KTsKKyAgICBjYWxsYmFjayhDcnlwdG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfQ0JDLCBrZXlEYXRhT2N0ZXRTZXF1ZW5jZS5vY3RldFNlcXVlbmNlKCksIGV4
dHJhY3RhYmxlLCB1c2FnZSkpOworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuaAppbmRleCA1OTQwOGM5MzUzOTU3ZjI5MjY2NWI0YWUyNmMwZTkwYTAzNjhhZjE1Li4yZWI0
YjQxNTRmMjkyMDYxNTYxMTJkNGMyMjkxYjliNTg5NTdhNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5o
CkBAIC0zNiwyOSArMzYsMjUgQEAgY2xhc3MgQ3J5cHRvS2V5QUVTOwogCiBjbGFzcyBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ0JDOwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBz
X25hbWUgPSAiQUVTLUNCQyI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19D
QkM7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2
YXRlOgorICAgIENyeXB0b0FsZ29yaXRobUFFU19DQkMoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lk
IGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxl
Q3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAg
IC8vIFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQgZW5jcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBL
ZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobUFFU19D
QkMoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5h
bDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmlu
YWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGht
QWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWxnb3JpdGhtUGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQ
YXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
ayk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19L
Vy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfS1cuY3BwCmluZGV4IGM4YjIzYzZmZmNmYzY2YjRmMDcwNzMzMjFhZWQ2ZDVkMTVlNjk4Zjgu
LmU2YjA0YzQxNTkwMzA1NTM4YTQ2MWZhYzA2ZmFlY2UyMjA0MmVkNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXLmNwcApAQCAtMzYsMjEgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29u
c3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpzX25hbWUgPSAiQUVTLUtXIjsK
LQogc3RhdGljIGlubGluZSBib29sIHVzYWdlc0FyZUludmFsaWRGb3JDcnlwdG9BbGdvcml0aG1B
RVNfS1coQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIHJldHVybiB1c2FnZXMg
JiAoQ3J5cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkgfCBDcnlwdG9LZXlV
c2FnZURlcml2ZUtleSB8IENyeXB0b0tleVVzYWdlRGVyaXZlQml0cyB8IENyeXB0b0tleVVzYWdl
RW5jcnlwdCB8IENyeXB0b0tleVVzYWdlRGVjcnlwdCk7CiB9CiAKLUNyeXB0b0FsZ29yaXRobUFF
U19LVzo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXOjp+Q3J5cHRvQWxnb3JpdGhtQUVTX0tXKCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRo
bT4gQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENyeXB0b0FsZ29yaXRobUFFU19LVyk7CkBAIC02NiwyMCArNTYsMTcgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1BRVNfS1c6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5
JiBrZXkpIGNvbnN0CiAgICAgaWYgKGtleS5hbGdvcml0aG1JZGVudGlmaWVyKCkgIT0gc19pZGVu
dGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUKGlzPENyeXB0b0tleUFF
Uz4oa2V5KSk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfS1c6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit2
b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikKIHsKLSAgICBjb25zdCBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KICAg
ICBpZiAodXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19LVyh1c2FnZXMpKSB7
CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFNZTlRBWF9FUlIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmdlbmVyYXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVywgYWVzUGFyYW1ldGVycy5sZW5ndGgsIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0
ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1csIGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUFlc0tleUdlblBhcmFtcz4oKnBhcmFtZXRlcnMpLmxlbmd0aCwgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3Bl
cmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMDEsNyArODgsNyBAQCB2b2lkIENy
eXB0b0FsZ29yaXRobUFFU19LVzo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZv
cm1hdCwgS2V5RGF0YSYmCiAgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3
KHBhcmFtZXRlcnMtPmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+
PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgYXV0byBjaGVja0FsZ0Nh
bGxiYWNrID0gW10oc2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAt
PiBib29sIHsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1l
dGVycy0+aWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMsIFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIGFsZykgLT4gYm9vbCB7CiAgICAgICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAg
ICAgICAgY2FzZSBDcnlwdG9LZXlBRVM6OnNfbGVuZ3RoMTI4OgogICAgICAgICAgICAgICAgIHJl
dHVybiAhYWxnIHx8IGFsZy52YWx1ZSgpID09ICJBMTI4S1ciOwpAQCAtMTExLDggKzk4LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCBmb3JtYXQsIEtleURhdGEmJgogICAgICAgICAgICAgICAgIHJldHVybiAhYWxnIHx8IGFs
Zy52YWx1ZSgpID09ICJBMjU2S1ciOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9y
dEp3ayhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+
KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7
CisgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTEy
Nyw0OCArMTEzLDM3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBvcnRLZXkoU3Vi
dGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYKICAgICBjYWxsYmFjaygqcmVz
dWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRGb3JXcmFwS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRG
b3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsK
LSAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewotICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1FbmNy
eXB0KGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0
Y2hlcyhrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIg
fTsKKyAgICByZXR1cm4gcGxhdGZvcm1FbmNyeXB0KGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5
KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRGb3JVbndy
YXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAg
IGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybURlY3J5cHQo
ZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVz
KGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owor
ICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBk
YXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNh
Z2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQogewotICAgIGNvbnN0IENyeXB0
b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc0RlcHJlY2F0ZWQmIGFlc1BhcmFtZXRlcnMgPSBkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJz
KTsKLQotICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2Vu
ZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXLCBhZXNQYXJhbWV0ZXJzLmxl
bmd0aCwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlB
RVM6OmdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVywgZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycykubGVu
Z3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KLQogICAgIGNhbGxiYWNrKHJlc3VsdC5nZXQoKSwgbnVsbHB0cik7CisgICAgcmV0dXJu
IHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmltcG9ydEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEm
IGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBL
ZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmltcG9ydEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURh
dGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
LCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBpZiAoIWlz
PENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKSkgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnN0IENyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlJiBrZXlEYXRhT2N0ZXRTZXF1ZW5jZSA9IGRvd25jYXN0PENy
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKTsKLSAgICBSZWZQdHI8Q3J5cHRvS2V5
QUVTPiByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1csIGtleURhdGFPY3RldFNlcXVlbmNlLm9jdGV0U2VxdWVuY2UoKSwgZXh0cmFj
dGFibGUsIHVzYWdlKTsKLSAgICBjYWxsYmFjaygqcmVzdWx0KTsKKyAgICBpZiAoIWlzPENyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgY2FsbGJhY2soQ3J5cHRvS2V5QUVTOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXLCBkb3duY2FzdDxDcnlwdG9LZXlE
YXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSkub2N0ZXRTZXF1ZW5jZSgpLCBleHRyYWN0YWJsZSwg
dXNhZ2UpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oCmluZGV4IDMx
MGI2YTEzODJlZWQ3MGNhNGRlZWM1OTM4NzM0ZTRhNzkzZDhmOTguLjVkNWE2OGUyM2E5NDg3N2Iy
MjZiNzkwODVjMDhkNGI2NWIyNjNjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5oCkBAIC0zNSwyOSArMzUs
MjUgQEAgY2xhc3MgQ3J5cHRvS2V5QUVTOwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1BRVNfS1cg
ZmluYWwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19L
VzsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIkFFUy1LVyI7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRp
ZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzsKICAgICBzdGF0aWMgUmVm
PENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXKCkgPSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBmaW5hbDsKKyAgICB2b2lk
IGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBL
ZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICAvLyBUaGUgZm9sbG93aW5nIHdp
bGwgYmUgZGVwcmVjYXRlZC4KLSAgICB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVjcnlw
dEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAs
IEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2
b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXKCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtQUVTX0tXKCk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZ2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmlu
YWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVz
KGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1F
bmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5jcHAKaW5kZXggNGQ5Njk5YzliN2ZlY2RkMDU1NTkyNTFkZmE2OGFjNWE0OTI5NzgwYi4uZDBh
NzQ3NThlYjkxNmQ2ZjQxNWNlNjQ4MjlkNWI1OTQwZTUyMWE0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAK
QEAgLTM3LDIxICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGNoYXIq
IGNvbnN0IENyeXB0b0FsZ29yaXRobUhNQUM6OnNfbmFtZSA9ICJITUFDIjsKLQogc3RhdGljIGlu
bGluZSBib29sIHVzYWdlc0FyZUludmFsaWRGb3JDcnlwdG9BbGdvcml0aG1ITUFDKENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlcykKIHsKICAgICByZXR1cm4gdXNhZ2VzICYgKENyeXB0b0tleVVz
YWdlRW5jcnlwdCB8IENyeXB0b0tleVVzYWdlRGVjcnlwdCB8IENyeXB0b0tleVVzYWdlRGVyaXZl
S2V5IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzIHwgQ3J5cHRvS2V5VXNhZ2VXcmFwS2V5IHwg
Q3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpOwogfQogCi1DcnlwdG9BbGdvcml0aG1ITUFDOjpDcnlw
dG9BbGdvcml0aG1ITUFDKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtSE1BQzo6fkNyeXB0b0Fs
Z29yaXRobUhNQUMoKQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0
aG1ITUFDOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29y
aXRobUhNQUMpOwpAQCAtNzMsNyArNjMsNyBAQCBib29sIENyeXB0b0FsZ29yaXRobUhNQUM6Omtl
eUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFt
ZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5
T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit2b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7
CiAgICAgY29uc3QgYXV0byYgaG1hY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPigqcGFyYW1ldGVycyk7CiAKQEAgLTE0Myw1NSArMTMzLDQwIEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0
IGZvcm1hdCwgS2V5RGF0YSYmIGRhCiAgICAgY2FsbGJhY2soKnJlc3VsdCk7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRo
bUhtYWNQYXJhbXNEZXByZWNhdGVkJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5
QWxnb3JpdGhtTWF0Y2hlcyhobWFjUGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1T
aWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0
byYgaG1hY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGhtYWNQ
YXJhbWV0ZXJzLCBrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1TaWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2Fz
dDxDcnlwdG9LZXlITUFDPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShm
YWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNp
Z25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25hdHVy
ZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBjb25zdCBDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgaG1hY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7Ci0KLSAgICBp
ZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoaG1hY1BhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBs
YXRmb3JtVmVyaWZ5KGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkp
LCBleHBlY3RlZFNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGlm
ICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhobWFjUGFyYW1ldGVycywga2V5KSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3Jt
VmVyaWZ5KGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpLCBleHBl
Y3RlZFNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNh
bGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlw
dG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQogewotICAg
IGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXNEZXByZWNhdGVkJiBobWFjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXNEZXByZWNhdGVkPihw
YXJhbWV0ZXJzKTsKLQotICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiByZXN1bHQgPSBDcnlwdG9L
ZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5oYXNMZW5ndGggPyBobWFjUGFyYW1ldGVy
cy5sZW5ndGggOiAwLCBobWFjUGFyYW1ldGVycy5oYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
KyAgICBhdXRvJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvIHJlc3VsdCA9IENyeXB0
b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJzLmhhc0xlbmd0aCA/IGhtYWNQYXJhbWV0
ZXJzLmxlbmd0aCA6IDAsIGhtYWNQYXJhbWV0ZXJzLmhhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2FsbGJhY2socmVz
dWx0LmdldCgpLCBudWxscHRyKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobUhNQUM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5
RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmKQogewotICAgIGlmICghaXM8Q3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURhdGEpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29uc3QgQ3J5cHRvS2V5RGF0
YU9jdGV0U2VxdWVuY2UmIGtleURhdGFPY3RldFNlcXVlbmNlID0gZG93bmNhc3Q8Q3J5cHRvS2V5
RGF0YU9jdGV0U2VxdWVuY2U+KGtleURhdGEpOwotCi0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGht
SG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgUmVmUHRyPENy
eXB0b0tleUhNQUM+IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmNyZWF0ZShrZXlEYXRhT2N0ZXRT
ZXF1ZW5jZS5vY3RldFNlcXVlbmNlKCksIGhtYWNQYXJhbWV0ZXJzLmhhc2gsIGV4dHJhY3RhYmxl
LCB1c2FnZSk7Ci0gICAgY2FsbGJhY2soKnJlc3VsdCk7CisgICAgaWYgKCFpczxDcnlwdG9LZXlE
YXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
T1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGNhbGxiYWNrKENyeXB0b0tleUhNQUM6OmNyZWF0ZShk
b3duY2FzdDxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSkub2N0ZXRTZXF1ZW5j
ZSgpLCBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1l
dGVycykuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlKSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5oCmluZGV4IGJmNDUwNThiYWM5YzcxOGRmYTY1MGQwM2IyZmI0ZjE4NWRiMTZk
MDMuLmM5NTIwMzM0MGY4ODJlODgzZGExYmU4MmUzYWRiOWRkMGQyYTM4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmgKQEAgLTM2LDI5ICszNiwyNiBAQCBjbGFzcyBDcnlwdG9LZXlITUFDOwogCiBjbGFzcyBDcnlw
dG9BbGdvcml0aG1ITUFDIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzX25h
bWUgPSAiSE1BQyI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM7CiAgICAg
c3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAg
IENyeXB0b0FsZ29yaXRobUhNQUMoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGZpbmFsOwor
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBL
ZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlG
b3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSBvdmVycmlkZTsKLSAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAg
Q3J5cHRvQWxnb3JpdGhtSE1BQygpOwotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobUhNQUMo
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5
T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAg
Ym9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNE
ZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsK
LSAgICB2b2lkIHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0
aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBC
b29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2spOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtVmVyaWZ5KGNv
bnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81LmNwcAppbmRleCAxZDIwYzgwZjY0NDI3MGRlNjlmMzEwZTJjMWM1OGRm
OWY4YWNkNmNhLi4wODFhMWI2ZTNkOGRkNDEyNTkxMzRlNDBkOGExZjc1M2FmNjUwNTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpzX25hbWUgPSAiUlNBRVMtUEtDUzEtdjFfNSI7Ci0KLUNyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzUoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojp+Q3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNSgpCi17Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+IENy
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNSk7CkBAIC02Nyw3ICs1
Nyw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6a2V5QWxnb3JpdGht
TWF0Y2hlcyhjb25zdCBDcnlwdG9LZXkmIGtleSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBjb25zdCBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPigqcGFyYW1ldGVycyk7CiAKQEAgLTg1
LDcgKzc1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpnZW5lcmF0
ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWwKICAgICAgICAgY2FwdHVyZWRDYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgfTsKICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5v
dCBoYXZlIGFueSBlZmZlY3QuCi0gICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEsIGZhbHNlLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBh
cmFtZXRlcnMucHVibGljRXhwb25lbnRWZWN0b3IoKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RG
TW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGNvbnRleHQp
OworICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQUVTX1BLQ1MxX3YxXzUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xLCBm
YWxzZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4
cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNhbGxi
YWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAmY29udGV4dCk7CiB9CiAKIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5
Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKQEAgLTEyMSw0OSArMTExLDQxIEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0
bzo6S2V5Rm9ybWF0IGZvcm1hdCwKICAgICBjYWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25P
cjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBpZiAoIWtleUFsZ29y
aXRobU1hdGNoZXMoa2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1FbmNyeXB0KGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNh
bGxiYWNrKSwgZWMpOworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICByZXR1cm4gcGxh
dGZvcm1FbmNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4g
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRj
aGVzKGtleSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHBsYXRmb3JtRGVjcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+
KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKKyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtRGVj
cnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZCYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0
ZWQ+KHBhcmFtZXRlcnMpOwotCisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogICAg
IGF1dG8ga2V5UGFpckNhbGxiYWNrID0gW2NhcHR1cmVkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oQ3J5cHRvS2V5UGFpciYgcGFpcikgewogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKG51
bGxwdHIsICZwYWlyKTsKICAgICB9OwotCi0gICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVy
cy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xlbmd0
aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RG
TW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGNvbnRleHQp
OworICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQUVTX1BLQ1MxX3YxXzUsIHJzYVBhcmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1ldGVycy5o
YXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGlj
RXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwg
V1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAmY29udGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRh
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGNv
bnN0IENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoRGVwcmVjYXRlZCYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoRGVw
cmVjYXRlZD4ocGFyYW1ldGVycyk7Ci0gICAgY29uc3QgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVu
dHMmIHJzYUNvbXBvbmVudHMgPSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4o
a2V5RGF0YSk7Ci0KLSAgICBSZWZQdHI8Q3J5cHRvS2V5UlNBPiByZXN1bHQgPSBDcnlwdG9LZXlS
U0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81LCBy
c2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhQ29tcG9uZW50cywg
ZXh0cmFjdGFibGUsIHVzYWdlKTsKKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJz
KTsKKyAgICBhdXRvJiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+KGtleURhdGEpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFyYW1l
dGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYUNvbXBvbmVudHMsIGV4dHJhY3Rh
YmxlLCB1c2FnZSk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNr
KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0KICAgICBj
YWxsYmFjaygqcmVzdWx0KTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmgKaW5kZXggYjg2OTk4Y2JiMDAxZTI2N2UyMjI0OTY5YTE5ZTU5
YWJmYTcyZjE5NS4uZWJiZTAyYTRmZGYwNDY4ZmFjMTQ5NmU3Yjk0OTcyY2ZkY2Y2NjA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaApAQCAtMzYsMjkgKzM2LDI2IEBAIGNs
YXNzIENyeXB0b0tleVJTQTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
RVNfUEtDUzFfdjFfNTsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1l
ID0gIlJTQUVTLVBLQ1MxLXYxXzUiOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FFU19QS0NTMV92MV81OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUo
KTsKIAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92
ZXJyaWRlOworcHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCkg
PSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsOwogCi0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBmaW5hbDsKKyAgICB2b2lkIGdlbmVyYXRlS2V5KGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwg
RXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOwogICAg
IHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHdpbGwgYmUgZGVwcmVjYXRl
ZC4KLSAgICB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAg
ICBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogCiAgICAgYm9vbCBr
ZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2spOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAppbmRleCA0
OTQzZDI1Nzc5ZTI4ZTlkNTZkMTBkNzFiOGZkODRiMTU5ZDYyNTI1Li5mMDQyMmQ2ZTE5YTI4ZTY3
ZDliOTMzNTAzMGM3OTQwNDBjZDQ4YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzUuY3BwCkBAIC00MCwxNiArNDAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzX25h
bWUgPSAiUlNBU1NBLVBLQ1MxLXYxXzUiOwotCi1DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKQotewotfQotCi1DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6fkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81KCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUpOwpAQCAtNzIsNyArNjIsNyBAQCBib29sIENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENy
eXB0b0FsZ29yaXRobQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgY29uc3QgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4oKnBhcmFtZXRlcnMpOwogCkBAIC04OSw3ICs3OSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BCiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBb
Y2FwdHVyZWRDYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXSgpIHsKICAgICAg
ICAgY2FwdHVyZWRDYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgfTsKLSAgICBDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtD
UzFfdjFfNSwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgdHJ1ZSwgcnNhUGFyYW1ldGVy
cy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50VmVjdG9yKCksIGV4
dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWls
dXJlQ2FsbGJhY2spLCBjb250ZXh0KTsKKyAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVy
cy5oYXNoSWRlbnRpZmllciwgdHJ1ZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQ
YXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdU
Rk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAmY29udGV4
dCk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtl
eShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCkBAIC0x
NTAsNTMgKzE0MCw0MyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpp
bXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LAogICAgIGNhbGxiYWNrKCpy
ZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpzaWdu
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFt
c0RlcHJlY2F0ZWQmIHJzYVNTQVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3Jp
dGhtTWF0Y2hlcyhyc2FTU0FQYXJhbWV0ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybVNpZ24o
cnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0byYg
cnNhU1NBUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0Rl
cHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhyc2FT
U0FQYXJhbWV0ZXJzLCBrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBP
UlRFRF9FUlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1TaWduKHJzYVNTQVBhcmFtZXRlcnMsIGRv
d25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAg
IGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHJzYVNTQVBhcmFt
ZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkPihw
YXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhyc2FTU0FQYXJhbWV0
ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybVZlcmlmeShyc2FTU0FQYXJhbWV0ZXJzLCAgZG93
bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBzaWduYXR1cmUsIGRhdGEsIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiByc2FTU0FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4o
cGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRl
cnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9
OworICAgIHJldHVybiBwbGF0Zm9ybVZlcmlmeShyc2FTU0FQYXJhbWV0ZXJzLCAgZG93bmNhc3Q8
Q3J5cHRvS2V5UlNBPihrZXkpLCBzaWduYXR1cmUsIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAg
ICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXNEZXByZWNhdGVkJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRl
ZD4ocGFyYW1ldGVycyk7Ci0KKyAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAgICAg
YXV0byBrZXlQYWlyQ2FsbGJhY2sgPSBbY2FwdHVyZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShDcnlwdG9LZXlQYWlyJiBwYWlyKSB7CiAgICAgICAgIGNhcHR1cmVkQ2FsbGJhY2sobnVs
bHB0ciwgJnBhaXIpOwogICAgIH07Ci0KLSAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVy
cy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xlbmd0
aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RG
TW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGNvbnRleHQp
OworICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMu
aGFzSGFzaCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1Ymxp
Y0V4cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgJmNvbnRleHQpOworICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlE
YXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAg
IGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoRGVwcmVjYXRlZCYgcnNh
S2V5UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhI
YXNoRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7Ci0gICAgY29uc3QgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMmIHJzYUNvbXBvbmVudHMgPSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50cz4oa2V5RGF0YSk7Ci0KLSAgICBSZWZQdHI8Q3J5cHRvS2V5UlNBPiByZXN1bHQgPSBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFf
djFfNSwgcnNhS2V5UGFyYW1ldGVycy5oYXNoLCByc2FLZXlQYXJhbWV0ZXJzLmhhc0hhc2gsIHJz
YUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZSk7CisgICAgYXV0byYgcnNhS2V5UGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoRGVwcmVj
YXRlZD4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0PENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKKyAgICBhdXRvIHJlc3VsdCA9IENy
eXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NT
MV92MV81LCByc2FLZXlQYXJhbWV0ZXJzLmhhc2gsIHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCwg
cnNhQ29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlKTsKICAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KLQogICAgIGNhbGxiYWNrKCpyZXN1bHQpOworICAgIHJldHVybiB7IH07
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCmluZGV4IDM5MTU1
YTAzMTMwMmE3MWUwMTJkNGNkMGUxYzRkMDU3NmNkODM2ZTguLmVlOTc1YjJhYzE4MmFmNjM1MjMz
YmI2MjBhYTA0Y2JlY2VlMGVjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuaApAQCAtMzYsMjkgKzM2LDI1IEBAIGNsYXNzIENyeXB0b0tleVJTQTsKIAogY2xhc3MgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUgZmluYWwgOiBwdWJsaWMgQ3J5cHRvQWxnb3Jp
dGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19uYW1lOwotICAg
IHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OwotCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzX25hbWUgPSAiUlNBU1NBLVBLQ1MxLXYxXzUiOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIg
PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNTsKICAgICBzdGF0
aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
IGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5
cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIC8v
IFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQgc2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKTsKLSAgICB2aXJ0dWFs
IH5DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNo
ZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgYWxnb3JpdGht
UGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybVNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBz
aWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
Qm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5kZXggNzI2YWMw
N2RlNTI4Nzc0NDhkZDU5YTA1YjcxNGQxMzE0ZTQxZGNkZi4uNWEwZDMzNGVhMDg2Nzg0N2U3Mzk4
OTU1YTE3MDA0NWY4ZDQzYWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApAQCAtNDAsMTYg
KzQwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6c19uYW1lID0gIlJTQS1PQUVQIjsKLQotQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQKCkKLXsKLX0KLQotQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6On5DcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpCi17Ci19Ci0KIFJlZjxD
cnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpjcmVhdGUoKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQKTsKQEAgLTcyLDcg
KzYyLDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0Y2hl
cyhjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UDo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQogewogICAgIGNvbnN0IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKIApAQCAtODksNyArNzks
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUAogICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0g
W2NhcHR1cmVkQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oKSB7CiAgICAg
ICAgIGNhcHR1cmVkQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgIH07Ci0gICAgQ3J5cHRv
S2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAs
IHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIHRydWUsIHJzYVBhcmFtZXRlcnMubW9kdWx1
c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudFZlY3RvcigpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxi
YWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIs
IHRydWUsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNF
eHBvbmVudFZlY3RvcigpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxs
YmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgJmNvbnRleHQpOwogfQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQg
Zm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrKQpAQCAtMTYxLDUzICsxNTEsNDMgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZv
cm1hdCwgS2V5RGF0YSYKICAgICBjYWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcnNhT0FFUFBhcmFtZXRlcnMgPSBkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7
Ci0KLSAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMocnNhT0FFUFBhcmFtZXRlcnMsIGtleSkp
IHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHBsYXRmb3JtRW5jcnlwdChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJl
Q2FsbGJhY2spLCBlYyk7CisgICAgYXV0byYgcnNhT0FFUFBhcmFtZXRlcnMgPSBkb3duY2FzdDxD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAg
aWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYU9BRVBQYXJhbWV0ZXJzLCBrZXkpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICByZXR1cm4gcGxh
dGZvcm1FbmNyeXB0KHJzYU9BRVBQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtl
eSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiByc2FPQUVQ
UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNh
dGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhyc2FPQUVQ
UGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1EZWNyeXB0KHJzYU9BRVBQYXJhbWV0
ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiByc2FPQUVQUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkPihw
YXJhbWV0ZXJzKTsKKyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMocnNhT0FFUFBhcmFtZXRl
cnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9
OworICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQocnNhT0FFUFBhcmFtZXRlcnMsIGRvd25jYXN0
PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVy
YXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9y
S2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitFeGNl
cHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYUtl
eUdlblBhcmFtc0RlcHJlY2F0ZWQmIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FLZXlHZW5QYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQorICAgIGF1dG8m
IHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKICAgICBhdXRvIGtleVBhaXJDYWxsYmFjayA9IFtjYXB0
dXJlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENyeXB0b0tleVBhaXImIHBhaXIpIHsK
ICAgICAgICAgY2FwdHVyZWRDYWxsYmFjayhudWxscHRyLCAmcGFpcik7CiAgICAgfTsKLQotICAg
IENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QV9PQUVQLCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhUGFy
YW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50LCBleHRy
YWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1vdmUoZmFpbHVy
ZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAsIHJzYVBhcmFtZXRlcnMuaGFzaCwgcnNh
UGFyYW1ldGVycy5oYXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFt
ZXRlcnMucHVibGljRXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFp
ckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAmY29udGV4dCk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6aW1wb3J0S2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkJiByc2FLZXlQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXBy
ZWNhdGVkPihwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihr
ZXlEYXRhKTsKLQotICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdCA9IENyeXB0b0tleVJT
QTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQLCByc2FLZXlQYXJh
bWV0ZXJzLmhhc2gsIHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhQ29tcG9uZW50cywgZXh0
cmFjdGFibGUsIHVzYWdlKTsKKyAgICBhdXRvJiByc2FLZXlQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJz
KTsKKyAgICBhdXRvJiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+KGtleURhdGEpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAsIHJzYUtleVBhcmFtZXRlcnMu
aGFzaCwgcnNhS2V5UGFyYW1ldGVycy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJs
ZSwgdXNhZ2UpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2Fs
bGJhY2soKnJlc3VsdCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
LmgKaW5kZXggMjVhZjA3MGYwNGRkZjRjNGI2NDdhMDY2NzdjNThiYWZmNzQ5NDM4ZC4uMDQ4ZDMz
YWM3ZjNkNDJjOWY1OGMxZjJkZDY3OTMwZjVjYzIwOGQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
CkBAIC0zNiwyOSArMzYsMjUgQEAgY2xhc3MgQ3J5cHRvS2V5UlNBOwogCiBjbGFzcyBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUCBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBX09BRVA7Ci0KKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IHNfbmFtZSA9ICJSU0EtT0FFUCI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QV9PQUVQOwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAg
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwor
cHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpID0gZGVmYXVsdDsKKyAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAotICAg
IHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlP
cktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKICAgICB2b2lkIGltcG9ydEtleShT
dWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwog
Ci0gICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRlcHJlY2F0ZWQuCi0gICAgdm9pZCBlbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5h
bDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aykgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spIGZpbmFsOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybURlY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9L
ZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggNzI5Nzk2ZGUzMTRhZjU3ODg4NDM5N2U4MTU2YWQ5N2M3
YWM0NDA2My4uNWYxYWQ2OThjNDcyNzRlYjY1ZDdkMDhiZDE5ZjBlMzAyMDRlZmI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5jcHAKQEAgLTMyLDE2ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6c19uYW1lID0gIlNIQS0xIjsK
LQotQ3J5cHRvQWxnb3JpdGhtU0hBMTo6Q3J5cHRvQWxnb3JpdGhtU0hBMSgpCi17Ci19Ci0KLUNy
eXB0b0FsZ29yaXRobVNIQTE6On5DcnlwdG9BbGdvcml0aG1TSEExKCkKLXsKLX0KLQogUmVmPENy
eXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtU0hBMTo6Y3JlYXRlKCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1TSEExKTsKQEAgLTUyLDE3ICs0MiwxNiBA
QCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6OmlkZW50aWZp
ZXIoKSBjb25zdAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
K0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwor
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLQogICAg
IGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwotCiAgICAgY2FsbGJh
Y2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmgKaW5kZXggZWQ4ODM1NzYzM2MwODRkMzZiZWVkMzliMWZlZWMxOWIwOTc1MmJkYS4uMThk
MWNlNjVjYWRmOTQ4MGE1YmNlN2ZmNjU0MjI0NWI1MGYwODBhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaApAQCAt
MzMsMTggKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3J5cHRvQWxnb3Jp
dGhtU0hBMSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzE7Ci0KKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJT
SEEtMSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOwogICAgIHN0YXRp
YyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAgQ3J5cHRv
QWxnb3JpdGhtU0hBMSgpOwotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVNIQTEoKTsKKyAg
ICBDcnlwdG9BbGdvcml0aG1TSEExKCkgPSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTIyNC5jcHAKaW5kZXggZmE4MGZjNmRjNDVkNjBkNDY3OTgxMGRhYzhmODQ2ZGE0MDA1
MmU5NS4uOWZhOTQ1YjJlMGM1MjY1MTMwYTFkMWRlZGY1ZDkxY2U0NzE2Nzg1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuY3BwCkBAIC0zMiwxNiArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6c19uYW1lID0gIlNIQS0y
MjQiOwotCi1DcnlwdG9BbGdvcml0aG1TSEEyMjQ6OkNyeXB0b0FsZ29yaXRobVNIQTIyNCgpCi17
Ci19Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTIyNDo6fkNyeXB0b0FsZ29yaXRobVNIQTIyNCgpCi17
Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6Y3JlYXRl
KCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1TSEEyMjQpOwpA
QCAtNTIsMTcgKzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2Vz
dCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KLQogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwg
ZGF0YS5zZWNvbmQpOwotCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKKyAg
ICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5oCmluZGV4IGQ2MjE5MzE4NmI1N2U0
ZTBiMjQ2NmU4Yzc5MmNhMzZmODRlZDRiOTYuLjBiNTQ2MmMyNmNmNGVmMmEwMmI1MGU1MTI4M2U1
Mjc2Mzc5ODUzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTIyNC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5oCkBAIC0zMywxOCArMzMsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEEyMjQgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ7Ci0KKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJTSEEtMjI0IjsKKyAgICBzdGF0
aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDsKICAgICBzdGF0aWMgUmVmPENyeXB0b0Fs
Z29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVNIQTIy
NCgpOwotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVNIQTIyNCgpOworICAgIENyeXB0b0Fs
Z29yaXRobVNIQTIyNCgpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
NTYuY3BwCmluZGV4IDMyNDk5YTk1YjZlM2U3OTQ5Y2M0Mjc0OTBiMTM0NWY1ZjFmMDA5YWUuLjA0
YzVmOWEwOWEwYzI5NTFjZTFhZDQxZjM5MWJhN2I4MzNlOGIyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcApAQCAtMzIsMTYgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBj
aGFyKiBjb25zdCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OnNfbmFtZSA9ICJTSEEtMjU2IjsKLQot
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpDcnlwdG9BbGdvcml0aG1TSEEyNTYoKQotewotfQotCi1D
cnlwdG9BbGdvcml0aG1TSEEyNTY6On5DcnlwdG9BbGdvcml0aG1TSEEyNTYoKQotewotfQotCiBS
ZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmNyZWF0ZSgpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2KTsKQEAgLTUyLDE3
ICs0MiwxNiBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1
Njo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9Ci0KICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vj
b25kKTsKLQogICAgIGNhbGxiYWNrKGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7CisgICAgcmV0dXJu
IHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaAppbmRleCAyMjQ0NWVlMDdhYjc2MGE5ZjIyYTEw
MDIyMGJhZTkyNTg5ZmIwNWM2Li45ZGIzMjE1MmNkN2JkYzg0NTAyMDZmMjViYzkyNTM1ZGE5ODA1
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyNTYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyNTYuaApAQCAtMzMsMTggKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2IGZpbmFsIDogcHVibGljIENyeXB0
b0FsZ29yaXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFt
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJTSEEtMjU2IjsK
ICAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIg
PSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OwotCiAgICAgc3RhdGljIFJlZjxD
cnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQogcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0
aG1TSEEyNTYoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1TSEEyNTYoKTsKKyAgICBD
cnlwdG9BbGdvcml0aG1TSEEyNTYoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0LmNwcAppbmRleCAzNGVkODdjOTk4ZjEzODZmZTMwZDUzYTVjODk3ZDkwZjllOWY1
ZTVhLi5iYzg4NjZkOTlkZDgzYTFjOGVhOWVlYTY4OGMwMzU4OTJlMWE3M2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTM4NC5jcHAKQEAgLTMyLDE2ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpzX25hbWUgPSAiU0hBLTM4
NCI7Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTM4NDo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0KCkKLXsK
LX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Ojp+Q3J5cHRvQWxnb3JpdGhtU0hBMzg0KCkKLXsK
LX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29yaXRobVNIQTM4NCk7CkBA
IC01MiwxNyArNDIsMTYgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0
KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQotCiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBk
YXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFjayhkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOworICAg
IHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKaW5kZXggMDE4YjhmYjMyZDQ3MjQ2
MjYzODUzNmQ4Y2YwODJlNGNlY2RjZThlNy4uMWUxZjJiMGI0NDUwNDNlZGE5NzZjMDNkODc1YzY0
NWRlMjQxNGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgKQEAgLTMzLDE4ICszMywxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVNIQTM4NCBmaW5hbCA6IHB1Ymxp
YyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19p
ZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDsKLQorICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIlNIQS0zODQiOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxn
b3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
KCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtU0hBMzg0KCk7CisgICAgQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0KCkgPSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRpZ2VzdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUx
Mi5jcHAKaW5kZXggOWRhOTczNmYzODgzYTQwM2Y3ZWVhYmQ2ODY0YjBlZjljYjcxMWE2Yi4uN2Yw
NzQ4ZGMxZjg1NmE3NTUxNDNmYjM4ZGU5NDdiZjAxZjcwY2UyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIu
Y3BwCkBAIC0zMiwxNiArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGNo
YXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6c19uYW1lID0gIlNIQS01MTIiOwotCi1D
cnlwdG9BbGdvcml0aG1TSEE1MTI6OkNyeXB0b0FsZ29yaXRobVNIQTUxMigpCi17Ci19Ci0KLUNy
eXB0b0FsZ29yaXRobVNIQTUxMjo6fkNyeXB0b0FsZ29yaXRobVNIQTUxMigpCi17Ci19Ci0KIFJl
ZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1TSEE1MTIpOwpAQCAtNTIsMTcg
KzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
OjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGln
ZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KLQogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNv
bmQpOwotCiAgICAgY2FsbGJhY2soZGlnZXN0LT5jb21wdXRlSGFzaCgpKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oCmluZGV4IGVkOWIwZjc2ZGEyMTE1ODJhOTZiNTJj
ODM1MmQ2MTM4NWUxNmNjMmEuLjBmNjcxNTYyZTkxNmRlMzE0ZDcwZTM1YjgwNmNlMWRlYTU1YmQy
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTUxMi5oCkBAIC0zMywxOCArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEE1MTIgZmluYWwgOiBwdWJsaWMgQ3J5cHRv
QWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19uYW1l
OwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmll
ciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI7Ci0KKyAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJTSEEtNTEyIjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzUxMjsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4g
Y3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOwotCiBwcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVNIQTUxMigpOwotICAg
IHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVNIQTUxMigpOworICAgIENyeXB0b0FsZ29yaXRobVNI
QTUxMigpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBm
aW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCmlu
ZGV4IGE4MzA0NjU3YjMzZWQwMjRlMzgyZDYxOWFkNjMyYjYwOWIyYjc1YzMuLjNhNmMwZWYxMTEz
YTJjNTU5Yzk4YmEwZjY5M2QyMzQ2YTk3ZDhhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcApAQCAt
NjgsMjggKzY4LDIwIEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJl
KGdudXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnb3JpdGhtLCBjb25zCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRo
bV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gp
OwotICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19VTktOT1dOKSB7Ci0gICAgICAgIGVj
ID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8dWludDhfdD4gc2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5
LmtleSgpLCBkYXRhKTsKLQotICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgaWYgKGFsZ29y
aXRobSA9PSBHTlVUTFNfTUFDX1VOS05PV04pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
T1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGNhbGxiYWNrKGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdv
cml0aG0sIGtleS5rZXkoKSwgZGF0YSkpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1h
Y1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBn
bnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRo
bShwYXJhbWV0ZXJzLmhhc2gpOwotICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19VTktO
T1dOKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKGFsZ29yaXRobSA9PSBHTlVUTFNfTUFDX1VOS05PV04pCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXko
KSwgZGF0YSk7CiAKQEAgLTk3LDYgKzg5LDggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXQKICAg
ICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vj
b25kICYmICFjb25zdGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWdu
YXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsK
KworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVHbnVUTFMuY3BwCmluZGV4IDdhNWU4NGI1ZmRlOWJjNTkxNjgxYTg4NWY4M2U2MzUwYWMyYzY5
YmEuLjJiMDZhZjhiYmUwNTg1NTRhYzljZTRjYmEwYTI4ZjgzZTRmZmIyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNUdudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R251VExTLmNwcApAQCAtMzQsMjYgKzM0LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKLQotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9Q
QVJBTShmYWlsdXJlQ2FsbGJhY2spOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9S
VEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENy
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZh
aWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNUdudVRMUy5jcHAKaW5kZXggNTY4ZDUyYmE0MDM0ZGYwMGI3NDNmYTI3OWM0ZmFk
MTdiMTVjNjEzZC4uMzc0Y2I5NDNkN2Y1N2MzNGM2NTcwMzI2ZTkwNDk4ZWNiM2I3ZjA4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKQEAgLTM1LDI5ICsz
NSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5V
U0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFy
YW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpZ25h
dHVyZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
ayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCmluZGV4IDIzNGZl
MjliNDkxYzAwNWMxYjc0NDBlODFiYmFiOTVjNWJkYmRlODkuLmY1NGNlMTRjODA4MzRmOTBkYmNh
Mjc2ZjE3NzRiY2MzZTJjZDBmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleUFFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5QUVTLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZlB0cjxDcnlwdG9LZXlBRVM+IENy
eXB0b0tleUFFUzo6aW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGht
CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleUFFUzo6YnVpbGRBbGdv
cml0aG0oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFlc0tleUFsZ29y
aXRobT4oQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWVGb3JJZGVudGlm
aWVyKGFsZ29yaXRobUlkZW50aWZpZXIoKSksIG1fa2V5LnNpemUoKSAqIDgpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEFlc0tleUFsZ29yaXRobT4oQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OnNpbmdsZXRvbigpLm5hbWUoYWxnb3JpdGhtSWRlbnRpZmllcigpKSwgbV9rZXkuc2l6ZSgp
ICogOCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlBRVM6
OmV4cG9ydERhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlITUFDLmNwcAppbmRleCAxNzNjZTVjYTdiZTk5NGE0MDdhOWE3MDk3ODE1YjEwMTVmMzQyZjcy
Li5kMjM5OTU0MDgyOWQ0NDkwMzYyOTU3YzEwOTUzNTQwYjIxOWUzYTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcApAQCAtMTE2LDggKzExNiw4IEBA
IFJlZlB0cjxDcnlwdG9LZXlITUFDPiBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soc2l6ZV90IGxl
bmd0aEJpdHMsIENyeXB0b0FsZ29yaXRoCiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+
IENyeXB0b0tleUhNQUM6OmJ1aWxkQWxnb3JpdGhtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIbWFjS2V5QWxnb3JpdGhtPihDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
c2luZ2xldG9uKCkubmFtZUZvcklkZW50aWZpZXIoYWxnb3JpdGhtSWRlbnRpZmllcigpKSwKLSAg
ICAgICAgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWVGb3JJZGVudGlm
aWVyKG1faGFzaCksIG1fa2V5LnNpemUoKSAqIDgpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEhtYWNLZXlBbGdvcml0aG0+KENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24o
KS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSksCisgICAgICAgIENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKG1faGFzaCksIG1fa2V5LnNpemUoKSAqIDgpOwogfQog
CiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5SE1BQzo6ZXhwb3J0RGF0
YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19DQkNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfQ0JDTWFjLmNwcAppbmRleCBiMTIzY2VjYjEyM2M1MTRjMzhmMDkwNDRiZTM4
MmYxODE3NmI0NzFmLi43OGEyYTI3NzI0MTBmMDc5NjE0MjU1ZjAyYTc3Zjg3YTNhNDJhZjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19D
QkNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQ01hYy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlBRVMuaCIK
LSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1v
bkNyeXB0by5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MiwxNCArODEsMTYgQEAgc3Rh
dGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0NiY1AKICAgICBjYWxsYmFjayhyZXN1bHQpOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
K0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrKQogewogICAgIHRyYW5zZm9ybUFFU19DQkMoa0NDRW5jcnlwdCwgcGFyYW1ldGVycywga2V5
LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIHRyYW5zZm9ybUFFU19DQkMo
a0NDRGVjcnlwdCwgcGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUFFU19LV01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUFFU19LV01hYy5jcHAKaW5kZXggOTg1NTUzMDQ2M2I3NzBiNWFlYTdhM2RjODI2
ZTljNzExMjRhOTQzMy4uNmZiZDI5NzNhNTVkOGYzZDg0OTdjMWFhYTE5MjdkN2IwMmI4MmVlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
S1dNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXTWFjLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZv
cm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spCiB7CiAgICAgaWYgKGRhdGEuc2Vjb25kICUgOCkgewogICAgICAgICAvLyBS
RkMgMzM5NCB1c2VzIDY0LWJpdCBibG9ja3MgYXMgaW5wdXQuCiAgICAgICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS8xNTk0OTk5Mj4gQ29tbW9uQ3J5cHRvIGRvZXNuJ3QgZGV0ZWN0IGluY29ycmVjdCBk
YXRhIGxlbmd0aCwgc2lsZW50bHkgcHJvZHVjaW5nIGEgYmFkIGN5cGhlcnRleHQuCiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ1N5bW1ldHJpY1dyYXBwZWRT
aXplKGtDQ1dSQVBBRVMsIGRhdGEuc2Vjb25kKSk7CkBAIC00OCwyOSArNDgsMzEgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgQ3J5cHQKICAgICBpbnQgc3RhdHVzID0gQ0NTeW1tZXRyaWNLZXlXcmFwKGtD
Q1dSQVBBRVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMzMzk0X2l2TGVuLCBrZXkua2V5KCkuZGF0YSgp
LCBrZXkua2V5KCkuc2l6ZSgpLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgcmVzdWx0LmRhdGEo
KSwgJnJlc3VsdFNpemUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxi
YWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
cmVzdWx0LnNocmluayhyZXN1bHRTaXplKTsKICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5
cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1B
RVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQo
Q0NTeW1tZXRyaWNVbndyYXBwZWRTaXplKGtDQ1dSQVBBRVMsIGRhdGEuc2Vjb25kKSk7CiAgICAg
c2l6ZV90IHJlc3VsdFNpemUgPSByZXN1bHQuc2l6ZSgpOwogCiAgICAgaWYgKHJlc3VsdFNpemUg
JSA4KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50IHN0YXR1cyA9IENDU3ltbWV0cmljS2V5
VW53cmFwKGtDQ1dSQVBBRVMsIENDcmZjMzM5NF9pdiwgQ0NyZmMzMzk0X2l2TGVuLCBrZXkua2V5
KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgcmVz
dWx0LmRhdGEoKSwgJnJlc3VsdFNpemUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFp
bHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgcmVzdWx0LnNocmluayhyZXN1bHRTaXplKTsKICAgICBjYWxsYmFjayhyZXN1bHQp
OworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCmlu
ZGV4IDI5NmE3OGFiNTdmZDNiOTViOTNkZWFiOGE2ZjcyNTA5ODY0YzY3NGQuLmNkM2IwY2MzNmRh
NTMwNWU3NzBlNDFhMDc4ZGE0NTAyOGRiZjI2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAtMzYsMjYgKzM2LDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgZ2V0Q29tbW9uQ3J5cHRv
SE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbiwgQ0NI
bWFjQWxnb3JpdGhtJiBhbGdvcml0aG0pCitzdGF0aWMgT3B0aW9uYWw8Q0NIbWFjQWxnb3JpdGht
PiBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFz
aEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDSG1h
Y0FsZ1NIQTE7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4ga0NDSG1hY0Fs
Z1NIQTE7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAg
ICAgICBhbGdvcml0aG0gPSBrQ0NIbWFjQWxnU0hBMjI0OwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGtDQ0htYWNBbGdTSEEyMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICBhbGdvcml0aG0gPSBrQ0NIbWFjQWxnU0hB
MjU2OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGtDQ0htYWNBbGdTSEEy
NTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAg
ICBhbGdvcml0aG0gPSBrQ0NIbWFjQWxnU0hBMzg0OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIGtDQ0htYWNBbGdTSEEzODQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICBhbGdvcml0aG0gPSBrQ0NIbWFjQWxnU0hBNTEy
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGtDQ0htYWNBbGdTSEE1MTI7
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVs
bG9wdDsKICAgICB9CiB9CiAKQEAgLTg5LDMzICs4NCwyOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IGNhbGN1bGF0ZVNpZ25hdHVyZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBW
ZWN0bwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6
cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6
OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikK
IHsKLSAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIGlmICghZ2V0Q29tbW9uQ3J5
cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFsZ29yaXRobSkpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBr
ZXkua2V5KCksIGRhdGEpOwotCi0gICAgY2FsbGJhY2soc2lnbmF0dXJlKTsKKyAgICBhdXRvIGFs
Z29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKKyAg
ICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JU
RURfRVJSIH07CisgICAgY2FsbGJhY2soY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGtl
eS5rZXkoKSwgZGF0YSkpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBleHBlY3RlZFNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmKQogewotICAgIENDSG1h
Y0FsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDb21tb25DcnlwdG9ITUFDQWxnb3Jp
dGhtKHBhcmFtZXRlcnMuaGFzaCwgYWxnb3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gYWxnb3JpdGhtID0g
Y29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmICghYWxn
b3JpdGhtKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsK
IAotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxn
b3JpdGhtLCBrZXkua2V5KCksIGRhdGEpOworICAgIGF1dG8gc2lnbmF0dXJlID0gY2FsY3VsYXRl
U2lnbmF0dXJlKCphbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YSk7CiAKICAgICAvLyBVc2luZyBh
IGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50IHRpbWluZyBhdHRhY2tzLgogICAg
IGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5zZWNv
bmQgJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25h
dHVyZS5maXJzdCwgc2lnbmF0dXJlLnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhyZXN1bHQpOwor
CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAK
aW5kZXggNzc1OTgzNDQ3OGE3OGM4NWYzNDgzNTAxYTA2YjFlNjAyNTZmODRmOC4uMDBiYWNkNDc4
ODQ0NjQ2NmFjNTQwNGFiZDlhMGMwN2FjNGQzNmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVNYWMuY3BwCkBAIC0zMywzMiArMzMsMzQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjaXBo
ZXJUZXh0KDEwMjQpOwogICAgIHNpemVfdCBjaXBoZXJUZXh0TGVuZ3RoID0gY2lwaGVyVGV4dC5z
aXplKCk7CiAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckVuY3J5cHQo
a2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29u
ZCwgY2lwaGVyVGV4dC5kYXRhKCksICZjaXBoZXJUZXh0TGVuZ3RoLCAwLCAwLCBrQ0NEaWdlc3RO
b25lKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgY2lwaGVyVGV4
dC5yZXNpemUoY2lwaGVyVGV4dExlbmd0aCk7CiAgICAgY2FsbGJhY2soY2lwaGVyVGV4dCk7Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5
cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KDEwMjQpOwogICAgIHNpemVfdCBwbGFpblRleHRM
ZW5ndGggPSBwbGFpblRleHQuc2l6ZSgpOwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBD
Q1JTQUNyeXB0b3JEZWNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGF0
YS5maXJzdCwgZGF0YS5zZWNvbmQsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgs
IDAsIDAsIGtDQ0RpZ2VzdE5vbmUpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVy
ZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKICAgICBwbGFpblRleHQucmVzaXplKHBsYWluVGV4dExlbmd0aCk7CiAgICAgY2FsbGJhY2so
cGxhaW5UZXh0KTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDBhYjhmNDJiODVmYjE5ZmY5
YTQ0ODU3OTRkMTgyNzJjYzA1NjE1Y2MuLmEzNDYyMjdhYzEyM2YxZWI1NzA2MjQ0ZmE3Yjg4Y2Y1
ZTg4YWE0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zNiw1MiAr
MzYsNDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgYm9vbCBnZXRDcnlwdG9E
aWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24sIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtJiBhbGdvcml0aG0pCitpbmxpbmUgT3B0aW9uYWw8Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAgIGFsZ29y
aXRobSA9IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICBhbGdvcml0
aG0gPSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIGFsZ29y
aXRobSA9IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Owog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgYWxn
b3JpdGhtID0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICBh
bGdvcml0aG0gPSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBO
dWxsb3B0OwogICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0
ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4g
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAg
IENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAoIWdldENvbW1vbkNy
eXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsK
LSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gs
IGRpZ2VzdEFsZ29yaXRobSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9S
VEVEX0VSUiB9OwogCi0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gY3J5cHRvRGlnZXN0QWxn
b3JpdGhtOwotICAgIGlmICghZ2V0Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFz
aCwgY3J5cHRvRGlnZXN0QWxnb3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3Jp
dGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7Cisg
ICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2Vz
dD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsK
LSAgICBpZiAoIWRpZ2VzdCkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgaWYgKCFkaWdlc3QpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgZGlnZXN0LT5hZGRC
eXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gZGln
ZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKyAgICBhdXRvIGRpZ2VzdERhdGEgPSBk
aWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlKDUx
Mik7CiAgICAgc2l6ZV90IHNpZ25hdHVyZVNpemUgPSBzaWduYXR1cmUuc2l6ZSgpOwpAQCAtODks
NDQgKzc4LDQwIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQCiAgICAgQ0NDcnlwdG9yU3RhdHVz
IHN0YXR1cyA9IENDUlNBQ3J5cHRvclNpZ24oa2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRk
aW5nLCBkaWdlc3REYXRhLmRhdGEoKSwgZGlnZXN0RGF0YS5zaXplKCksIGRpZ2VzdEFsZ29yaXRo
bSwgMCwgc2lnbmF0dXJlLmRhdGEoKSwgJnNpZ25hdHVyZVNpemUpOwogICAgIGlmIChzdGF0dXMp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBzaWduYXR1cmUucmVzaXplKHNpZ25hdHVyZVNpemUp
OwogICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJp
ZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNp
Z25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBDQ0RpZ2Vz
dEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdl
c3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RB
bGdvcml0aG0pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIg
fTsKIAotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGNyeXB0b0RpZ2VzdEFsZ29yaXRobTsK
LSAgICBpZiAoIWdldENyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGNyeXB0
b0RpZ2VzdEFsZ29yaXRobSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdl
YkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmICgh
Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NV
UFBPUlRFRF9FUlIgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKGNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7Ci0gICAgaWYg
KCFkaWdlc3QpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlw
dG9EaWdlc3RBbGdvcml0aG0pOworICAgIGlmICghZGlnZXN0KQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0
YS5maXJzdCwgZGF0YS5zZWNvbmQpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdERhdGEg
PSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgYXV0byBkaWdlc3REYXRhID0gZGlnZXN0LT5j
b21wdXRlSGFzaCgpOwogCi0gICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRv
clZlcmlmeShrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0
YSgpLCBkaWdlc3REYXRhLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZmly
c3QsIHNpZ25hdHVyZS5zZWNvbmQpOworICAgIGF1dG8gc3RhdHVzID0gQ0NSU0FDcnlwdG9yVmVy
aWZ5KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGlnZXN0RGF0YS5kYXRhKCks
IGRpZ2VzdERhdGEuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0sIDAsIHNpZ25hdHVyZS5maXJzdCwg
c2lnbmF0dXJlLnNlY29uZCk7CiAgICAgaWYgKCFzdGF0dXMpCiAgICAgICAgIGNhbGxiYWNrKHRy
dWUpOwogICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBrQ0NOb3RWZXJpZmllZCB8fCBzdGF0dXMgPT0g
a0NDRGVjb2RlRXJyb3IpIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ2NDk4Mj4gQ0NSU0FDcnlwdG9y
VmVyaWZ5IHJldHVybnMga0NDRGVjb2RlRXJyb3IgaW5zdGVhZCBvZiBrQ0NOb3RWZXJpZmllZCBz
b21ldGltZXMKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgIGVsc2UKICAgICAgICAgZmFp
bHVyZUNhbGxiYWNrKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQTWFjLmNwcAppbmRleCBjZjI4MWNhODc2MDIyNGVkMDdhN2U0YTAwYWZmMWZk
ZDg1N2M1ZDA2Li45Mzc4ZWQ0ZDExNzRhZjBhZTdhODQyMmNiNmMxNzkxZTI1YzJhM2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQTWFjLmNwcApAQCAtMzUsMTMgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxn
b3JpdGhtOwotICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRl
cnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBzaXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNp
cGhlclRleHQuc2l6ZSgpOwpAQCAtNDksMzEgKzQ3LDMxIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zCiAgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDUlNBQ3J5cHRvckVuY3J5cHQoa2V5
LnBsYXRmb3JtS2V5KCksIGNjT0FFUFBhZGRpbmcsIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCBj
aXBoZXJUZXh0LmRhdGEoKSwgJmNpcGhlclRleHRMZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0
YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAo
c3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgY2lwaGVyVGV4dC5yZXNpemUoY2lwaGVy
VGV4dExlbmd0aCk7CiAgICAgY2FsbGJhY2soY2lwaGVyVGV4dCk7CisgICAgcmV0dXJuIHsgfTsK
IH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0
QWxnb3JpdGhtOwotICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFt
ZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKICAgICBWZWN0b3I8
dWludDhfdD4gcGxhaW5UZXh0KDEwMjQpOwogICAgIHNpemVfdCBwbGFpblRleHRMZW5ndGggPSBw
bGFpblRleHQuc2l6ZSgpOwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0
b3JEZWNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBkYXRhLmZpcnN0LCBk
YXRhLnNlY29uZCwgcGxhaW5UZXh0LmRhdGEoKSwgJnBsYWluVGV4dExlbmd0aCwgcGFyYW1ldGVy
cy5sYWJlbC5kYXRhKCksIHBhcmFtZXRlcnMubGFiZWwuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0p
OwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBwbGFpblRleHQucmVz
aXplKHBsYWluVGV4dExlbmd0aCk7CiAgICAgY2FsbGJhY2socGxhaW5UZXh0KTsKKyAgICByZXR1
cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKaW5kZXggYzczNDVlYzc1N2I4YmEwOWY5OGM3
NjRlMTRiMTE3NzhhOGVlMjg5Yy4uYjRlNGMxZTE2YjNjMjU1NDVhZjUzMTdiOGM0ZDI4YzRlNzJj
YWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIHNpemVfdCBDcnlwdG9LZXlSU0E6OmtleVNpemVJbkJpdHMo
KSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlSU0E6OmJ1
aWxkQWxnb3JpdGhtKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbmFtZSA9IENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lRm9ySWRlbnRpZmllcihhbGdvcml0aG1JZGVudGlm
aWVyKCkpOworICAgIFN0cmluZyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmds
ZXRvbigpLm5hbWUoYWxnb3JpdGhtSWRlbnRpZmllcigpKTsKICAgICBWZWN0b3I8dWludDhfdD4g
bW9kdWx1czsKICAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7CiAgICAgQ0NDcnlw
dG9yU3RhdHVzIHN0YXR1cyA9IGdldFB1YmxpY0tleUNvbXBvbmVudHMobV9wbGF0Zm9ybUtleSwg
bW9kdWx1cywgcHVibGljRXhwb25lbnQpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVJTQTo6YnVpbGRBbGdvcml0aG0oKSBjb25zdAog
CiAgICAgc2l6ZV90IG1vZHVsdXNMZW5ndGggPSBtb2R1bHVzLnNpemUoKSAqIDg7CiAgICAgaWYg
KG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSc2FIYXNoZWRLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgsIFdURk1vdmUo
cHVibGljRXhwb25lbnQpLCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFt
ZUZvcklkZW50aWZpZXIobV9oYXNoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJzYUhhc2hlZEtleUFsZ29yaXRobT4obmFtZSwgbW9kdWx1c0xlbmd0aCwgV1RGTW92ZShwdWJs
aWNFeHBvbmVudCksIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKG1f
aGFzaCkpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJzYUtleUFsZ29yaXRobT4obmFt
ZSwgbW9kdWx1c0xlbmd0aCwgV1RGTW92ZShwdWJsaWNFeHBvbmVudCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294656</attachid>
            <date>2016-11-12 23:01:46 -0800</date>
            <delta_ts>2016-11-12 23:17:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164698-20161112225729.patch</filename>
            <type>text/plain</type>
            <size>164342</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjOTBiZjk2YTU3Njcz
OTY1YTk2YTlhMGU1YjMzNmMyMmU4MmNhYi4uNGViYWNiYTMxYWMwMDE0MDUxMTc3ZjdjZWM5YzA5
N2E4OWI4MTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyMyBAQAogMjAxNi0xMS0xMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBjcnlwdG8gY29kZSBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uT3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlv
bmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIFVzZSB0aGUgbmV3IGlkZW50
aWZpZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBnZXRJZGVudGlmaWVyRm9yTmFtZS4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjp0b0NyeXB0b0tleVVzYWdlQml0bWFwKTogUmVtb3ZlZCBhIHN0cmF5IG1lYW5pbmds
ZXNzIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdlbmVy
YXRlS2V5UHJvbWlzZSk6IFBhc3MKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUFsZ29yaXRobUZyb21KU1ZhbHVlKTogVXNlIHRoZSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uCisg
ICAgICAgIG9mIHNldERPTUV4Y2VwdGlvbiB0aGF0IHVzZXMgc2NvcGUuCisgICAgICAgIChXZWJD
b3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6IERpdHRvLiBBbHNvIHVwZGF0ZWQg
dG8gdXNlCisgICAgICAgIEV4Y2VwdGlvbk9yIGluc3RlYWQgb2YgRXhjZXB0aW9uQ29kZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KTogRGl0dG8uCisKKyAgICAgICAgKiBj
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobTo6Q3J5cHRvQWxnb3JpdGhtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRobSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobTo6ZGlnZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG06OmRlcml2ZUtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
OjpkZXJpdmVCaXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpl
bmNyeXB0Rm9yV3JhcEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobS5oOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIE1vdmVkIHRoZSBkZXN0cnVj
dG9yIGludG8gdGhlIGhlYWRlciBzaW5jZSBpdCdzIG1vcmUgZWZmaWNpZW50IGZvcgorICAgICAg
ICBkZXJpdmVkIGNsYXNzZXMgdG8gaGF2ZSBpdCBpbmxpbmVkLiBSZW1vdmVkIHRoZSBwcm90ZWN0
ZWQgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSBzaW5jZSB0aGVyZSBhcmUgcHVyZSB2aXJ0
dWFsIGZ1bmN0aW9ucyBpbiB0aGUgY2xhc3MsIHRoZXJlIGlzCisgICAgICAgIG5vIHJpc2sgb2Yg
YW55b25lIG1pc3VzaW5nIHRoZSBwdWJsaWMgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBjcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZ2V0
SWRlbnRpZmllckZvck5hbWUgYW5kIGNoYW5nZWQgdG8gdXNlIGFuIE9wdGlvbmFsIHJhdGhlciB0
aGFuCisgICAgICAgIHVzaW5nIGEgYm9vbGVhbiBwbHVzIGFuIG91dCBhcmd1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKTogUmVuYW1lZCB0byBu
YW1lIGZyb20KKyAgICAgICAgbmFtZUZvcklkZW50aWZpZXIuIEFsc28gdXBkYXRlZCB0byBzaGFy
ZSBhIHNpbmdsZSBtYXAgY29udGFpbmluZworICAgICAgICBib3RoIG5hbWVzIGFuZCBjb25zdHJ1
Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRl
KTogU2hhcmUgc2luZ2xlIG1hcCBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6IFVwZGF0ZWQgYXNzZXJ0aW9ucwor
ICAgICAgICB0byBhIG1yb2Ugc3RyYWlnaHRmb3J3YXJkIHN0eWxlLiBTaGFyZSBzaW5nbGUgbWFw
IGZvciBuYW1lcyBhbmQgY29uc3RydWN0b3JzLgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjp+Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjprZXlBbGdvcml0aG1NYXRjaGVzKTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVLZXkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5
cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRl
Y3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUFFU19DQkMuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNv
bnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpDcnlwdG9BbGdvcml0aG1BRVNfS1cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjp+Q3J5cHRvQWxnb3JpdGht
QUVTX0tXKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19L
Vzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyk6IFVzZSByZWZlcmVuY2VzLCBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6aW1wb3J0S2V5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRG
b3JXcmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmRlY3J5cHRGb3JVbndyYXBLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAg
IEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OkNyeXB0b0FsZ29yaXRobUhNQUMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6fkNyeXB0b0FsZ29y
aXRobUhNQUMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1B
Qzo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywgRXhjZXB0aW9uT3IuCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDogVXBkYXRlZCBmb3IgYWJvdmUu
CisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIu
CisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6fkNyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6
IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFt
ZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81Ojp+Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVy
YXRlS2V5KTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpp
bXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAgICAgQWxz
byB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
fkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleSk6IFVzZSByZWZlcmVuY2VzLCBFeGNl
cHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNy
eXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVz
ZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEExOjpDcnlwdG9BbGdvcml0aG1TSEExKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6On5DcnlwdG9BbGdvcml0aG1TSEEx
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2Vz
dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25z
dGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTIyNDo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6fkNyeXB0b0FsZ29yaXRobVNI
QTIyNCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6
OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28g
dXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpDcnlwdG9BbGdvcml0aG1TSEEyNTYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2Ojp+Q3J5cHRvQWxn
b3JpdGhtU0hBMjU2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAg
ICAgQWxzbyB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OkNyeXB0b0FsZ29yaXRobVNIQTM4
NCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6On5D
cnlwdG9BbGdvcml0aG1TSEEzODQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg6IFVwZGF0ZWQgZm9yIGFib3Zl
LgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVy
LgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6Q3J5cHRvQWxnb3Jp
dGhtU0hBNTEyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNI
QTUxMjo6fkNyeXB0b0FsZ29yaXRobVNIQTUxMik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaDogVXBkYXRlZCBm
b3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lk
ZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNH
Q3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2lnbmF0dXJlKTogVXNlIE9w
dGlvbmFsIGluc3RlYWQgb2YgYSBib29sZWFuCisgICAgICAgIHJldHVybiB2YWx1ZSBhbmQgYW4g
b3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1TaWduKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQpOiBEaXR0
by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5j
cnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpw
bGF0Zm9ybURlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0Fs
Z29yaXRobUhNQUNHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
SE1BQzo6cGxhdGZvcm1TaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9nbnV0
bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtVmVyaWZ5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL2dudXRscy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5QUVTOjpidWlsZEFsZ29yaXRobSk6IFVwZGF0ZWQgdG8gdXNlIG5hbWUgaW5zdGVhZAor
ICAgICAgICBvZiBuYW1lRm9ySWRlbnRpZmllci4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9Dcnlw
dG9LZXlITUFDLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlITUFDOjpi
dWlsZEFsZ29yaXRobSk6CisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6
cGxhdGZvcm1FbmNyeXB0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisgICAgICAgICog
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KTogRGl0
dG8uCisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0pOiBSZW5hbWVkIGZyb20K
KyAgICAgICAgZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobSBhbmQgY2hhbmdlZCB0byB1c2Ug
T3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGFuZCBh
biBvdXQgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVNpZ24pOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRv
RGlnZXN0QWxnb3JpdGhtKTogUmVuYW1lZCBmcm9tCisgICAgICAgIGdldENyeXB0b0RpZ2VzdEFs
Z29yaXRobSBhbmQgY2hhbmdlZCB0byB1c2UgT3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBh
IGJvb2xlYW4gcmV0dXJuIHZhbHVlIGFuZCBhbiBvdXQgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKTogVXNl
IEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisK
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9LZXlSU0E6OmJ1aWxkQWxnb3JpdGhtKTogVXBkYXRlZCB0byB1c2UgbmFtZSBp
bnN0ZWFkCisgICAgICAgIG9mIG5hbWVGb3JJZGVudGlmaWVyLgorCisyMDE2LTExLTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgc29tZSB1c2Ugb2Yg
RXhjZXB0aW9uQ29kZSBpbiBNZWRpYVN0cmVhbQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDg4
NDViMzM0NzRjMzZhOGU5NjY4YTAzZTlhMmQ1MWVhZTBhZjZlZTkuLmI0MjVlZDU2OGRkMDEwMGEx
NTJlYWEzMTAyN2I2NTdiNTQ4N2RhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODcsMTEg
Kzg3LDEzIEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1J
ZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIUNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5n
ZXRJZGVudGlmaWVyRm9yTmFtZShhbGdvcml0aG1OYW1lLCBhbGdvcml0aG1JZGVudGlmaWVyKSkg
eworICAgIGF1dG8gaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5pZGVudGlmaWVyKGFsZ29yaXRobU5hbWUpOworICAgIGlmICghaWRlbnRpZmllcikgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYWxnb3JpdGhtSWRlbnRpZmllciA9ICppZGVu
dGlmaWVyOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggODZmM2Y3YTQzYWE1ZTdi
YTczMGQ0YzMzNmE0YmU4ZWI1Y2EyN2FhOC4uOTEzOTgxYjNlNDEwOTRkMWQ3MThlNGU4MzNlZTAz
Y2M0NjFhNjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtODEsOCArODEsOCBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1hbGl6ZUNyeXB0b0FsZ29yaXRobVBh
cmFtZQogICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHN0YXRlLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xl
dG9uKCkuZ2V0SWRlbnRpZmllckZvck5hbWUocGFyYW1zLm5hbWUsIGlkZW50aWZpZXIpKSB7Cisg
ICAgICAgIGF1dG8gaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5pZGVudGlmaWVyKHBhcmFtcy5uYW1lKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7
CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtOTAsNyArOTAsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1h
bGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFtZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4gcmVzdWx0OwogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbikg
ewogICAgICAgICBjYXNlIE9wZXJhdGlvbnM6OkRpZ2VzdDoKLSAgICAgICAgICAgIHN3aXRjaCAo
aWRlbnRpZmllcikgeworICAgICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKICAgICAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKICAgICAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1h
bGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFtZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgT3BlcmF0aW9uczo6R2VuZXJhdGVLZXk6Ci0gICAgICAgICAgICBz
d2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFf
djFfNTogewogICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihzdGF0ZSwgdmFsdWUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1lCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIp
IHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtD
UzFfdjFfNToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xODYsNyArMTg2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWUKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKyAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBub3JtYWxpemVDcnlw
dG9BbGdvcml0aG1QYXJhbWUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIENyeXB0
b0tleVVzYWdlQml0bWFwIHRvQ3J5cHRvS2V5VXNhZ2VCaXRtYXAoY29uc3QgQ3J5cHRvS2V5VXNh
Z2UgdXNhZ2UpCitzdGF0aWMgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdG9DcnlwdG9LZXlVc2FnZUJp
dG1hcChDcnlwdG9LZXlVc2FnZSB1c2FnZSkKIHsKICAgICBzd2l0Y2ggKHVzYWdlKSB7CiAgICAg
Y2FzZSBDcnlwdG9LZXlVc2FnZTo6RW5jcnlwdDoKQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0aWMg
dm9pZCBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uR2VuZXJhdGVLZXlQcm9taXNlKEV4ZWNTdGF0ZSYg
c3RhdGUsIFJlZjxEZWZlcgogICAgIC8vIFRoZSBzcGVjIHN1Z2dlc3RzIHdlIHNob3VsZCBwZXJm
b3JtIHRoZSBmb2xsb3dpbmcgdGFzayBhc3luY2hyb25vdXNseSByZWdhcmRsZXNzIHdoYXQga2lu
ZCBvZiBrZXlzIGl0IHByb2R1Y2VzCiAgICAgLy8gYXMgb2YgMTEgRGVjZW1iZXIgMjAxNDogaHR0
cHM6Ly93d3cudzMub3JnL1RSL1dlYkNyeXB0b0FQSS8jU3VidGxlQ3J5cHRvLW1ldGhvZC1nZW5l
cmF0ZUtleQogICAgIC8vIFRoYXQncyBzaW1wbHkgbm90IGVmZmljaWVudCBmb3IgQUVTIGFuZCBI
TUFDIGtleXMuIFRoZXJlZm9yZSwgd2UgcGVyZm9ybSBpdCBhcyBhbiBhc3luYyB0YXNrIGNvbmRp
dGlvbmFsbHkuCi0gICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleShXVEZNb3ZlKHBhcmFtcyksIGV4
dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7
CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleShXVEZNb3ZlKHBhcmFtcyksIGV4dHJhY3RhYmxl
LCBrZXlVc2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogfQogCiBz
dGF0aWMgdm9pZCBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uSW1wb3J0S2V5UHJvbWlzZShFeGVjU3Rh
dGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5j
cHAKaW5kZXggYjQyZGUyMTA4ZWI0ZmI5NzUwM2Y4ODNjNGU1YWRmOTQ2MjljNTk1Yy4uYWM5YjVk
MzA0NzUzZmIwZDE3Mjc4YjI4MmU1YzhmYTRhMDY0ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlQWxn
b3JpdGhtRnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYQogCiAgICAgYXV0byByZXN1
bHQgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkuY3JlYXRlKGFsZ29yaXRo
bUlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTYyLDcgKzE2Miw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQo
RXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VF
bmNyeXB0KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7Ci0gICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCkBAIC0xODEsMTEgKzE4MSwxMCBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBw
ZXItPnJlamVjdChudWxscHRyKTsKICAgICB9OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgYWxnb3JpdGhtLT5lbmNyeXB0KCpwYXJhbWV0ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAgIGlm
IChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gYWxnb3JpdGhtLT5lbmNyeXB0
KCpwYXJhbWV0ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJv
bWlzZTsKQEAgLTIzNCwxMSArMjMzLDEwIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxw
dHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0t
PmRlY3J5cHQoKnBhcmFtZXRlcnMsICprZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0tPmRlY3J5cHQoKnBhcmFtZXRlcnMsICpr
ZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjg3LDEx
ICsyODUsMTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsKIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+c2lnbigqcGFyYW1ldGVycywg
KmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxs
YmFjayksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFsZ29yaXRobS0+c2lnbigqcGFyYW1ldGVycywgKmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwg
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0zNDYsMTEgKzM0MywxMCBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBl
ci0+cmVqZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBhbGdvcml0aG0tPnZlcmlmeSgqcGFyYW1ldGVycywgKmtleSwgc2lnbmF0dXJlLCBkYXRh
LCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gYWxnb3JpdGht
LT52ZXJpZnkoKnBhcmFtZXRlcnMsICprZXksIHNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29w
ZSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0zODksMTEgKzM4NSwxMCBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3Jh
cHBlci0+cmVqZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBhbGdvcml0aG0tPmRpZ2VzdCgqcGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMp
IHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsZ29yaXRobS0+ZGlnZXN0KCpwYXJh
bWV0ZXJzLCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNh
bGxiYWNrKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9w
YWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTQ0
NSwxMSArNDQwLDEwIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAg
ICB9OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT5nZW5lcmF0
ZUtleSgqcGFyYW1ldGVycywgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFsZ29yaXRobS0+Z2VuZXJhdGVLZXkoKnBhcmFtZXRlcnMsIGV4
dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShm
YWlsdXJlQ2FsbGJhY2spLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0
YXRlKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9wYWdh
dGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTUwNywx
MCArNTAxLDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0
b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGkKICAgICBhdXRvIGtleURhdGEgPSBr
ZXlTZXJpYWxpemF0aW9uLT5rZXlEYXRhKCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+
aW1wb3J0S2V5KCpwYXJhbWV0ZXJzLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAgIGlm
IChlYykKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOworICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGFsZ29yaXRobS0+aW1wb3J0S2V5KCpwYXJhbWV0ZXJz
LCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZmFpbHVyZUNhbGxiYWNrKSkpOwogfQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5
cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTY5MSw5ICs2ODIsOCBAQCBKU1Zh
bHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIGF1dG8gZW5jcnlwdEZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxwdHIpOwogICAgICAgICB9OwotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgYWxnb3JpdGhtLT5lbmNyeXB0Rm9yV3Jh
cEtleSgqcGFyYW1ldGVycywgKndyYXBwaW5nS2V5LCBzdGQ6Om1ha2VfcGFpcihleHBvcnRlZEtl
eURhdGEuZGF0YSgpLCBleHBvcnRlZEtleURhdGEuc2l6ZSgpKSwgV1RGTW92ZShlbmNyeXB0U3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlbmNyeXB0RmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAg
ICAgICBpZiAoZWMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0tPmVuY3J5cHRG
b3JXcmFwS2V5KCpwYXJhbWV0ZXJzLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9y
dGVkS2V5RGF0YS5kYXRhKCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZNb3ZlKGVuY3J5
cHRTdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2spKTsKKyAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFJlcG9ydCBmYWlsdXJlIGRldGFpbHMgdG8gY29uc29sZSwgYW5kIHBvc3NpYmx5IHRvIGNhbGxp
bmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIHBhc3MgZXJyb3Jz
IHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlvbnMuCiAgICAgICAgICAgICB3cmFw
cGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgICAgIH0KQEAgLTcwMywxMiArNjkzLDcgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFdlYkNvcmU6OmV4cG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCAqa2V5
LCBXVEZNb3ZlKGV4cG9ydFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXhwb3J0RmFpbHVyZUNh
bGxiYWNrKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogCiAgICAgcmV0dXJu
IHByb21pc2U7CiB9CkBAIC04MDgsMTEgKzc5MywxMCBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxl
Q3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVq
ZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB1
bndyYXBBbGdvcml0aG0tPmRlY3J5cHRGb3JVbndyYXBLZXkoKnVud3JhcEFsZ29yaXRobVBhcmFt
ZXRlcnMsICp1bndyYXBwaW5nS2V5LCB3cmFwcGVkS2V5RGF0YSwgV1RGTW92ZShkZWNyeXB0U3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShkZWNyeXB0RmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAg
IGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gdW53cmFwQWxnb3JpdGht
LT5kZWNyeXB0Rm9yVW53cmFwS2V5KCp1bndyYXBBbGdvcml0aG1QYXJhbWV0ZXJzLCAqdW53cmFw
cGluZ0tleSwgd3JhcHBlZEtleURhdGEsIFdURk1vdmUoZGVjcnlwdFN1Y2Nlc3NDYWxsYmFjayks
IFdURk1vdmUoZGVjcnlwdEZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwCmluZGV4IDFkMzFiNzRkMDYxNTkxNTI2NjkzNWM5OTU2YTVmNDIyN2MwYWYyYjYuLmRjNTgy
MDM3YWJiMjRjNjJjZGU1NWE2OTA5NTk3ZWQ0MmEwMGE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC0zMiwxNSArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNyeXB0b0FsZ29yaXRobTo6Q3J5cHRvQWxnb3JpdGhtKCkKLXsKLX0KLQot
Q3J5cHRvQWxnb3JpdGhtOjp+Q3J5cHRvQWxnb3JpdGhtKCkKLXsKLX0KLQotdm9pZCBDcnlwdG9B
bGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2VuZXJhdGVLZXkoY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAg
ICBleGNlcHRpb25DYWxsYmFjayhOT1RfU1VQUE9SVEVEX0VSUik7CiB9CkBAIC01MCw1OSArNDIs
NTkgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG06OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnUKICAgICBleGNlcHRpb25DYWxsYmFjayhOT1Rf
U1VQUE9SVEVEX0VSUik7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OnNpZ24oY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjpzaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2
ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OnZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0
aG06OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVy
biBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobTo6ZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5JiwgQ3J5cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobTo6ZGVyaXZlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgQ3J5
cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtOjpkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgdW5zaWduZWQgbG9uZywgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtOjpkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgdW5zaWduZWQgbG9uZywgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG06OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewot
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9T
VVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3Jh
cEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06
OmVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGVuY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgcmV0
dXJuIGVuY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5
cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGRlY3J5cHQocGFyYW1ldGVycywg
a2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisgICAgcmV0dXJuIGRlY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IGJhMGRlZTc3ODMzN2NjM2RiZmNmNGExNjI4
N2YyYTZiMGJjMjZkZmYuLmUxYzZiYWUwOTg1ZGQ5YTdmZjM1ZjFhMzQ5ODcxMjg1ODQwMTI2MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKQEAgLTI3LDIwICsyNywx
NiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleVVzYWdlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJK
c29uV2ViS2V5LmgiCiAjaW5jbHVkZSAiU3VidGxlQ3J5cHRvLmgiCiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM7CiBjbGFzcyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZDsKIGNs
YXNzIENyeXB0b0tleTsKQEAgLTQ5LDEzICs0NSwxMyBAQCBjbGFzcyBDcnlwdG9LZXlEYXRhOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogLy8gRGF0YSBpcyBtdXRhYmxlLCBzbyBh
c3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZpcnN0LgotdHlwZWRlZiBzdGQ6OnBhaXI8
Y29uc3QgdWludDhfdCosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9uRGF0YTsKK3VzaW5nIENyeXB0
b09wZXJhdGlvbkRhdGEgPSBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD47CiAKIHVz
aW5nIEtleURhdGEgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgSnNvbldlYktleT47CiAKIGNs
YXNzIENyeXB0b0FsZ29yaXRobSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0FsZ29yaXRobT4g
ewogcHVibGljOgotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobSgpOworICAgIHZpcnR1YWwg
fkNyeXB0b0FsZ29yaXRobSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCkBAIC02NiwyNiArNjIsMjMg
QEAgcHVibGljOgogICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgp
PjsKICAgICB1c2luZyBFeGNlcHRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNl
cHRpb25Db2RlKT47CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtl
eURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBk
ZXByZWNhdGVkLgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzaWdu
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZ2Vz
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBkZXJpdmVLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIENyeXB0
b0FsZ29yaXRobSogZGVyaXZlZEtleVR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYgYmFzZUtl
eSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gZGVjcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9p
ZD4gdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3QoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8dm9pZD4gZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCBDcnlwdG9BbGdvcml0aG0q
IGRlcml2ZWRLZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2aXJ0
dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogCiAgICAgLy8gVGhlc2UgYXJlIG9ubHkgZGlm
ZmVyZW50IGZyb20gZW5jcnlwdC9kZWNyeXB0IGJlY2F1c2Ugc29tZSBhbGdvcml0aG1zIG1heSBu
b3QgZXhwb3NlIGVuY3J5cHQvZGVjcnlwdC4KLSAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdEZvcldy
YXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJik7Ci0KLXByb3RlY3RlZDoKLSAgICBDcnlwdG9BbGdvcml0aG0oKTsKKyAg
ICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkZWNyeXB0Rm9y
VW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmNwcAppbmRleCAzMDdlMzU2ZjVlNTU2MTQyZTBhOWMwMzUyMGRlMGVkYjc2MjljZDRm
Li4yZmNjMzExOTljYTg1YWJiODUwYTg0ZDEzMzBkZGVjZTRkNDc4ZTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTM0LDY1
ICszNCw2NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTdGF0aWNMb2NrIHJl
Z2lzdHJ5TXV0ZXg7CisKIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk+IHJlZ2lzdHJ5OwotCiAgICAgcmV0dXJuIHJlZ2lzdHJ5OwogfQog
Ci1zdGF0aWMgU3RhdGljTG9jayByZWdpc3RyeU11dGV4OwotCiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkoKQogewogICAgIHBsYXRmb3JtUmVnaXN0ZXJB
bGdvcml0aG1zKCk7CiB9CiAKLWJvb2wgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmdldElkZW50
aWZpZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciYgcmVzdWx0KQorT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
TnVsbG9wdDsKIAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5
TXV0ZXgpOwogCi0gICAgYXV0byBpdGVyID0gbV9uYW1lVG9JZGVudGlmaWVyTWFwLmZpbmQobmFt
ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgaWYgKGl0ZXIgPT0gbV9uYW1lVG9JZGVudGlmaWVyTWFw
LmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IEhvdyBpcyBpdCBo
ZWxwZnVsIHRvIGNhbGwgaXNvbGF0ZWRDb3B5IG9uIHRoZSBhcmd1bWVudCB0byBmaW5kPworICAg
IGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnMuZmluZChuYW1lLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2lkZW50aWZpZXJzLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKIAotICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBpZGVudGlmaWVyLT52YWx1ZTsKIH0KIAotU3RyaW5nIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpuYW1lRm9ySWRlbnRpZmllcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIpCitTdHJpbmcgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCi0gICAgcmV0dXJuIG1faWRlbnRp
ZmllclRvTmFtZU1hcC5nZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKS5pc29s
YXRlZENvcHkoKTsKKyAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CisgICAgaWYgKGNvbnRydWN0b3IgPT0g
bV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4g
Y29udHJ1Y3Rvci0+dmFsdWUuZmlyc3QuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNM
b2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCi0gICAgYXV0byBpdGVyID0gbV9pZGVudGlmaWVy
VG9Db25zdHJ1Y3Rvck1hcC5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7
Ci0gICAgaWYgKGl0ZXIgPT0gbV9pZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcC5lbmQoKSkKKyAg
ICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSk7CisgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGl0ZXItPnZhbHVl
KCk7CisgICAgcmV0dXJuIGNvbnRydWN0b3ItPnZhbHVlLnNlY29uZCgpOwogfQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5h
bWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGht
Q29uc3RydWN0b3IgY29uc3RydWN0b3IpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xv
Y2s+IGxvY2socmVnaXN0cnlNdXRleCk7CiAKLSAgICBib29sIGFkZGVkID0gbV9uYW1lVG9JZGVu
dGlmaWVyTWFwLmFkZChuYW1lLCBpZGVudGlmaWVyKS5pc05ld0VudHJ5OwotICAgIEFTU0VSVF9V
TlVTRUQoYWRkZWQsIGFkZGVkKTsKLQotICAgIGFkZGVkID0gbV9pZGVudGlmaWVyVG9OYW1lTWFw
LmFkZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllciksIG5hbWUpLmlzTmV3RW50cnk7
Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRlZCwgYWRkZWQpOworICAgIEFTU0VSVCghbV9pZGVudGlm
aWVycy5jb250YWlucyhuYW1lKSk7CisgICAgQVNTRVJUKCFtX2NvbnN0cnVjdG9ycy5jb250YWlu
cyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpKTsKIAotICAgIGFkZGVkID0gbV9p
ZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcC5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50
aWZpZXIpLCBjb25zdHJ1Y3RvcikuaXNOZXdFbnRyeTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZGVk
LCBhZGRlZCk7CisgICAgbV9pZGVudGlmaWVycy5hZGQobmFtZSwgaWRlbnRpZmllcik7CisgICAg
bV9jb25zdHJ1Y3RvcnMuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSwgc3Rk
OjptYWtlX3BhaXIobmFtZSwgY29uc3RydWN0b3IpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IDdiM2E2ZTk3M2Y1YzUy
NzhiYTU2MjdhNWNmZDE4MmQ4OTM3OGU3OTMuLjNkMTU0NDU3MjBkNDUyYmZiYmJjMjMzNTlhN2Y2
ZWIzNWRlOTNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtOwogCiBj
bGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7CkBAIC00Niw4ICs0NCw4IEBAIGNsYXNzIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgYm9vbCBnZXRJZGVudGlmaWVyRm9yTmFt
ZShjb25zdCBTdHJpbmcmLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJik7Ci0gICAgU3RyaW5n
IG5hbWVGb3JJZGVudGlmaWVyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOworICAgIE9wdGlv
bmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CisgICAgU3RyaW5nIG5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAKICAgICBSZWZQ
dHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAK
QEAgLTU1LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgp
OwogICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMoKTsKIAotICAgIHR5cGVkZWYg
UmVmPENyeXB0b0FsZ29yaXRobT4gKCpDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvcikoKTsKKyAg
ICB1c2luZyBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvciA9IFJlZjxDcnlwdG9BbGdvcml0aG0+
ICgqKSgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxnb3JpdGhtQ2xhc3M+IHZvaWQgcmVn
aXN0ZXJBbGdvcml0aG0oKQogICAgIHsKQEAgLTY0LDkgKzYyLDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVnaXN0ZXJBbGdvcml0aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcik7CiAKLSAgICBIYXNoTWFw
PFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX25hbWVUb0lkZW50aWZpZXJNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5n
PiBtX2lkZW50aWZpZXJUb05hbWVNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgQ3J5cHRvQWxn
b3JpdGhtQ29uc3RydWN0b3I+IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXA7CisgICAgSGFz
aE1hcDxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gbV9pZGVudGlmaWVyczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnBhaXI8
U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcj4+IG1fY29uc3RydWN0b3JzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAppbmRleCAxY2Zj
MjkwZGQ0OGI1ZTEzYmJiODk4Zjk1NzMyMjEwNmRkZjA2MWNmLi40Y2FlMTdlMTA2NTc0NWU3YjI4
NjAzNzk4NGYzMTJhODdlMDkwYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcApAQCAtMzcsMjEg
KzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6c19uYW1lID0gIkFFUy1DQkMiOwotCiBzdGF0aWMgaW5saW5l
IGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19DQkMoQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIHJldHVybiB1c2FnZXMgJiAoQ3J5cHRvS2V5VXNh
Z2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUtleSB8
IENyeXB0b0tleVVzYWdlRGVyaXZlQml0cyk7CiB9CiAKLUNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OkNyeXB0b0FsZ29yaXRobUFFU19DQkMoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
Ojp+Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQygpCi17Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQyk7CkBAIC02NywxMyArNTcsMTIgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmEKICAgICBpZiAoa2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSAhPSBz
X2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoaXM8Q3J5cHRv
S2V5QUVTPihrZXkpKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgYXV0byYgYWVzUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcz4oKnBhcmFtZXRlcnMp
OworICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKIAogICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9y
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyh1c2FnZXMpKSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKFNZTlRBWF9FUlIpOwpAQCAtMTI4LDUyICsxMTcsNDMgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlE
YXRhJiYKICAgICBjYWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFr
ZXlBbGdvcml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBsYXRm
b3JtRW5jcnlwdChhZXNDQkNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSks
IGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
KyAgICBhdXRvJiBhZXNDQkNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1N
YXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JD
UGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAg
aWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHBsYXRmb3JtRGVjcnlwdChhZXNDQkNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+
KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKKyAgICBhdXRvJiBhZXNDQkNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdv
cml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQo
YWVzQ0JDUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUFFU19DQkM6Omdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtl
eU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzS2V5R2VuUGFyYW1zRGVwcmVjYXRlZCYgYWVzUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAg
IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5Q
YXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIAotICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+
IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NCQywgYWVzUGFyYW1ldGVycy5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ0JDLCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBjYWxsYmFj
ayhyZXN1bHQuZ2V0KCksIG51bGxwdHIpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBpZiAoIWlzPENyeXB0b0tleURhdGFPY3Rl
dFNlcXVlbmNlPihrZXlEYXRhKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnN0IENyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlJiBrZXlEYXRhT2N0ZXRTZXF1ZW5jZSA9IGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlPihrZXlEYXRhKTsKLSAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBrZXlE
YXRhT2N0ZXRTZXF1ZW5jZS5vY3RldFNlcXVlbmNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZSk7Ci0g
ICAgY2FsbGJhY2soKnJlc3VsdCk7CisgICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1
ZW5jZT4oa2V5RGF0YSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVE
X0VSUiB9OworICAgIGF1dG8mIGtleURhdGFPY3RldFNlcXVlbmNlID0gZG93bmNhc3Q8Q3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURhdGEpOworICAgIGNhbGxiYWNrKENyeXB0b0tleUFF
Uzo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkMsIGtleURhdGFPY3Rl
dFNlcXVlbmNlLm9jdGV0U2VxdWVuY2UoKSwgZXh0cmFjdGFibGUsIHVzYWdlKSk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCmluZGV4IDU5NDA4YzkzNTM5NTdmMjky
NjY1YjRhZTI2YzBlOTBhMDM2OGFmMTUuLjJlYjRiNDE1NGYyOTIwNjE1NjExMmQ0YzIyOTFiOWI1
ODk1N2E1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKQEAgLTM2LDI5ICszNiwyNSBAQCBjbGFzcyBD
cnlwdG9LZXlBRVM7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobUFFU19DQkMgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM7Ci0KKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJBRVMtQ0JDIjsKKyAgICBzdGF0
aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzsKICAgICBzdGF0aWMgUmVmPENyeXB0b0Fs
Z29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQygpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5h
bDsKICAgICB2b2lkIGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYm
LCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRl
cHJlY2F0ZWQuCi0gICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQygpOwotICAgIHZpcnR1YWwgfkNyeXB0b0Fs
Z29yaXRobUFFU19DQkMoKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKIAogICAgIGJvb2wga2V5QWxnb3JpdGht
TWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBhbGdv
cml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1Bh
cmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1FbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
bGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5kZXggYzhiMjNjNmZmY2Zj
NjZiNGYwNzA3MzMyMWFlZDZkNWQxNWU2OThmOC4uZTZiMDRjNDE1OTAzMDU1MzhhNDYxZmFjMDZm
YWVjZTIyMDQyZWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC0zNiwyMSArMzYsMTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdvcml0
aG1BRVNfS1c6OnNfbmFtZSA9ICJBRVMtS1ciOwotCiBzdGF0aWMgaW5saW5lIGJvb2wgdXNhZ2Vz
QXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19LVyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCiB7CiAgICAgcmV0dXJuIHVzYWdlcyAmIChDcnlwdG9LZXlVc2FnZVNpZ24gfCBDcnlw
dG9LZXlVc2FnZVZlcmlmeSB8IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNh
Z2VEZXJpdmVCaXRzIHwgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VEZWNy
eXB0KTsKIH0KIAotQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpDcnlwdG9BbGdvcml0aG1BRVNfS1co
KQotewotfQotCi1DcnlwdG9BbGdvcml0aG1BRVNfS1c6On5DcnlwdG9BbGdvcml0aG1BRVNfS1co
KQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmNy
ZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
KTsKQEAgLTY2LDIwICs1NiwxNyBAQCBib29sIENyeXB0b0FsZ29yaXRobUFFU19LVzo6a2V5QWxn
b3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9LZXkmIGtleSkgY29uc3QKICAgICBpZiAoa2V5LmFs
Z29yaXRobUlkZW50aWZpZXIoKSAhPSBzX2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBBU1NFUlQoaXM8Q3J5cHRvS2V5QUVTPihrZXkpKTsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpn
ZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQogewotICAgIGNv
bnN0IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlH
ZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQogICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXKHVzYWdlcykpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
U1lOVEFYX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9
IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tX
LCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byBy
ZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19LVywgZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPigqcGFyYW1l
dGVycykubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEwMSw3ICs4OCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYKICAgICAgICAgcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFyYW1ldGVycy0+aWRlbnRpZmllciwgV1RG
TW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3
azogewotICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShzaXplX3QgbGVuZ3RoLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+IGJvb2wgeworICAgICAgICByZXN1bHQgPSBD
cnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdU
Rjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgW10oc2l6ZV90
IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKICAgICAgICAg
ICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0tleUFFUzo6c19s
ZW5ndGgxMjg6CiAgICAgICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0g
IkExMjhLVyI7CkBAIC0xMTEsOCArOTgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6
aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0gIkEyNTZLVyI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH07Ci0gICAgICAg
IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBhcmFtZXRlcnMtPmlkZW50aWZpZXIs
IFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
LCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMTI3LDQ4ICsxMTMsMzcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1BRVNfS1c6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQs
IEtleURhdGEmJgogICAgIGNhbGxiYWNrKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENy
eXB0b0FsZ29yaXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hl
cyhrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihr
ZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtleSkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5
cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6ZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtl
eSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHBsYXRmb3JtRGVjcnlwdChkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSks
IGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
KyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChk
b3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6
Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zRGVw
cmVjYXRlZCYgYWVzUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdl
blBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgUmVmUHRyPENyeXB0b0tleUFF
Uz4gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1csIGFlc1BhcmFtZXRlcnMubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
KyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXLCBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJh
bXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKS5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwog
ICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2FsbGJhY2socmVzdWx0
LmdldCgpLCBudWxscHRyKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19LVzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmKQogewotICAgIGlmICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+
KGtleURhdGEpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY29uc3QgQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UmIGtleURh
dGFPY3RldFNlcXVlbmNlID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtl
eURhdGEpOwotICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6
Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVywga2V5RGF0YU9jdGV0U2Vx
dWVuY2Uub2N0ZXRTZXF1ZW5jZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2UpOwotICAgIGNhbGxiYWNr
KCpyZXN1bHQpOworICAgIGlmICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURh
dGEpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAg
ICBjYWxsYmFjayhDcnlwdG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfS1csIGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKS5v
Y3RldFNlcXVlbmNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZSkpOworICAgIHJldHVybiB7IH07CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19LVy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXLmgKaW5kZXggMzEwYjZhMTM4MmVlZDcwY2E0ZGVlYzU5Mzg3MzRl
NGE3OTNkOGY5OC4uNWQ1YTY4ZTIzYTk0ODc3YjIyNmI3OTA4NWMwOGQ0YjY1YjI2M2MxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXLmgKQEAgLTM1LDI5ICszNSwyNSBAQCBjbGFzcyBDcnlwdG9LZXlBRVM7CiAK
IGNsYXNzIENyeXB0b0FsZ29yaXRobUFFU19LVyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0
aG0gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAg
c3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBzX25hbWUgPSAiQUVTLUtXIjsKKyAgICBzdGF0aWMgY29uc3RleHByIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0tXOwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsK
IAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJy
aWRlOworcHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1BRVNfS1coKSA9IGRlZmF1bHQ7Cisg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5h
bDsKIAotICAgIC8vIFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQg
ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQotcHJp
dmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1BRVNfS1coKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9B
bGdvcml0aG1BRVNfS1coKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmNyeXB0Rm9yV3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBp
bXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAs
IEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAK
ICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0g
ICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCA0ZDk2OTljOWI3ZmVjZGQw
NTU1OTI1MWRmYTY4YWM1YTQ5Mjk3ODBiLi5kMGE3NDc1OGViOTE2ZDZmNDE1Y2U2NDgyOWQ1YjU5
NDBlNTIxYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtMzcsMjEgKzM3LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6
c19uYW1lID0gIkhNQUMiOwotCiBzdGF0aWMgaW5saW5lIGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZv
ckNyeXB0b0FsZ29yaXRobUhNQUMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAg
IHJldHVybiB1c2FnZXMgJiAoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VE
ZWNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJp
dHMgfCBDcnlwdG9LZXlVc2FnZVdyYXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSk7CiB9
CiAKLUNyeXB0b0FsZ29yaXRobUhNQUM6OkNyeXB0b0FsZ29yaXRobUhNQUMoKQotewotfQotCi1D
cnlwdG9BbGdvcml0aG1ITUFDOjp+Q3J5cHRvQWxnb3JpdGhtSE1BQygpCi17Ci19Ci0KIFJlZjxD
cnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobUhNQUM6OmNyZWF0ZSgpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtSE1BQyk7CkBAIC03Myw3ICs2Myw3IEBA
IGJvb2wgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlw
dG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAgICBjb25zdCBhdXRvJiBobWFjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KCpwYXJhbWV0ZXJz
KTsKIApAQCAtMTQzLDU1ICsxMzMsNDAgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBv
cnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGEKICAgICBj
YWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
CiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+
KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGhtYWNQYXJhbWV0
ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0
PENyeXB0b0tleUhNQUM+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZh
aWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBp
ZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoaG1hY1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9y
bVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGRhdGEs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobUhNQUM6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobUhNQUM6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
JiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXBy
ZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhobWFj
UGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1WZXJpZnkoaG1hY1BhcmFtZXRlcnMs
IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGV4cGVjdGVkU2lnbmF0dXJlLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0
byYgaG1hY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGhtYWNQ
YXJhbWV0ZXJzLCBrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoaG1hY1BhcmFtZXRlcnMsIGRvd25j
YXN0PENyeXB0b0tleUhNQUM+KGtleSksIGV4cGVjdGVkU2lnbmF0dXJlLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFp
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgUmVmUHRyPENy
eXB0b0tleUhNQUM+IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0
ZXJzLmhhc0xlbmd0aCA/IGhtYWNQYXJhbWV0ZXJzLmxlbmd0aCA6IDAsIGhtYWNQYXJhbWV0ZXJz
Lmhhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFt
ZXRlcnMuaGFzTGVuZ3RoID8gaG1hY1BhcmFtZXRlcnMubGVuZ3RoIDogMCwgaG1hY1BhcmFtZXRl
cnMuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9Ci0KICAgICBjYWxsYmFjayhyZXN1bHQuZ2V0KCksIG51bGxwdHIpOworICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1w
b3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYpCiB7Ci0gICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0
YSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjb25zdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSYga2V5RGF0YU9jdGV0
U2VxdWVuY2UgPSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSk7
Ci0KLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgaG1hY1Bh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZD4o
cGFyYW1ldGVycyk7Ci0KLSAgICBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gcmVzdWx0ID0gQ3J5cHRv
S2V5SE1BQzo6Y3JlYXRlKGtleURhdGFPY3RldFNlcXVlbmNlLm9jdGV0U2VxdWVuY2UoKSwgaG1h
Y1BhcmFtZXRlcnMuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKLSAgICBjYWxsYmFjaygqcmVz
dWx0KTsKKyAgICBpZiAoIWlzPENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgY2Fs
bGJhY2soQ3J5cHRvS2V5SE1BQzo6Y3JlYXRlKGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlPihrZXlEYXRhKS5vY3RldFNlcXVlbmNlKCksIGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKS5oYXNoLCBleHRyYWN0YWJsZSwgdXNh
Z2UpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKaW5kZXggYmY0NTA1OGJh
YzljNzE4ZGZhNjUwZDAzYjJmYjRmMTg1ZGIxNmQwMy4uYzk1MjAzMzQwZjg4MmU4ODNkYTFiZTgy
ZTNhZGI5ZGQwZDJhMzg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaApAQCAtMzYsMjkgKzM2LDI2IEBAIGNsYXNz
IENyeXB0b0tleUhNQUM7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobUhNQUMgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM7Ci0KKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJITUFDIjsKKyAgICBzdGF0aWMgY29u
c3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SE1BQzsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4g
Y3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxnb3JpdGhtSE1BQygpID0gZGVm
YXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKICAgICB2b2lk
IGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYpIGZpbmFsOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRlcHJlY2F0ZWQuCi0g
ICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
c2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1ITUFDKCk7Ci0gICAg
dmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtSE1BQygpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1B
QyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDFk
MjBjODBmNjQ0MjcwZGU2OWYzMTBlMmMxYzU4ZGY5ZjhhY2Q2Y2EuLjA4MWExYjZlM2Q4ZGQ0MTI1
OTEzNGU0MGQ4YTFmNzUzYWY2NTA1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuY3BwCkBAIC0zOCwxNiArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNv
bnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnNfbmFtZSA9
ICJSU0FFUy1QS0NTMS12MV81IjsKLQotQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNSgpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6On5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCkKLXsK
LX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81KTsKQEAgLTY3LDcgKzU3LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYga2V5
KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1l
dGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlP
cktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIGNvbnN0
IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5Q
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKIApAQCAtODUsNyArNzUsNyBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbAogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICB9
OwogICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVz
dCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdC4KLSAgICBDcnlw
dG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19Q
S0NTMV92MV81LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSwgZmFsc2UsIHJzYVBh
cmFtZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudFZlY3Rv
cigpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEsIGZhbHNlLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNM
ZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnRWZWN0b3IoKSwgZXh0cmFjdGFibGUs
IHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFj
ayksICZjb250ZXh0KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0
YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBL
ZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrKQpAQCAtMTIxLDQ5ICsxMTEsNDEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LAogICAgIGNh
bGxiYWNrKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBw
bGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgaWYgKCFrZXlB
bGdvcml0aG1NYXRjaGVzKGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQ
UE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1E
ZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFj
ayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGlmICgha2V5QWxnb3JpdGht
TWF0Y2hlcyhrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9F
UlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1EZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0V4Y2VwdGlvbk9y
PHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FL
ZXlHZW5QYXJhbXNEZXByZWNhdGVkJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7Ci0KKyAgICBhdXRv
JiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1z
RGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAgICAgYXV0byBrZXlQYWlyQ2FsbGJhY2sgPSBbY2Fw
dHVyZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDcnlwdG9LZXlQYWlyJiBwYWlyKSB7
CiAgICAgICAgIGNhcHR1cmVkQ2FsbGJhY2sobnVsbHB0ciwgJnBhaXIpOwogICAgIH07Ci0KLSAg
ICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FFU19QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFz
aCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9u
ZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFy
YW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1
c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdl
cywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksICZj
b250ZXh0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFy
YW1zV2l0aEhhc2hEZXByZWNhdGVkJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLSAgICBj
b25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0
PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKLQotICAgIFJlZlB0cjxDcnlw
dG9LZXlSU0E+IHJlc3VsdCA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzUsIHJzYVBhcmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1l
dGVycy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUNvbXBvbmVudHMg
PSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oa2V5RGF0YSk7CisgICAgYXV0
byByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FFU19QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFz
SGFzaCwgcnNhQ29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlKTsKICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KLQogICAgIGNhbGxiYWNrKCpyZXN1bHQpOworICAgIHJldHVy
biB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAppbmRleCBi
ODY5OThjYmIwMDFlMjY3ZTIyMjQ5NjlhMTllNTlhYmZhNzJmMTk1Li5lYmJlMDJhNGZkZjA0Njhm
YWMxNDk2ZTdiOTQ5NzJjZmRjZjY2MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5oCkBAIC0zNiwyOSArMzYsMjYgQEAgY2xhc3MgQ3J5cHRvS2V5UlNBOwogCiBjbGFzcyBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81IGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29y
aXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAg
ICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OwotCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzX25hbWUgPSAiUlNBRVMtUEtDUzEtdjFfNSI7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU7CiAgICAgc3RhdGlj
IFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAgIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdlbmVy
YXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGZp
bmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRv
OjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQgZW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktl
eVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5
cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDQ5NDNkMjU3NzllMjhlOWQ1NmQxMGQ3MWI4ZmQ4
NGIxNTlkNjI1MjUuLmYwNDIyZDZlMTlhMjhlNjdkOWI5MzM1MDMwYzc5NDA0MGNkNDhiMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKQEAgLTQwLDE2ICs0MCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNfbmFtZSA9ICJSU0FTU0EtUEtDUzEtdjFfNSI7Ci0K
LUNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNSgpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp+
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKQotewotfQotCiBSZWY8Q3J5cHRvQWxn
b3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSk7
CkBAIC03Miw3ICs2Miw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRl
S2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBjb25zdCBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPigq
cGFyYW1ldGVycyk7CiAKQEAgLTg5LDcgKzc5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0EK
ICAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFtjYXB0dXJlZENhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKCkgewogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKICAgICB9OwotICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2hJ
ZGVudGlmaWVyLCB0cnVlLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRl
cnMucHVibGljRXhwb25lbnRWZWN0b3IoKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShr
ZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGNvbnRleHQpOworICAg
IENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCB0cnVlLCByc2FQ
YXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnRWZWN0
b3IoKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZN
b3ZlKGZhaWx1cmVDYWxsYmFjayksICZjb250ZXh0KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZv
cm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaykKQEAgLTE1MCw1MyArMTQwLDQzIEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCBmb3JtYXQsCiAgICAgY2FsbGJhY2soKnJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcnNhU1NBUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFt
ZXRlcnMpOwotCi0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMs
IGtleSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHBsYXRmb3JtU2lnbihyc2FTU0FQYXJhbWV0ZXJzLCBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1
cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAg
aWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMsIGtleSkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0
Zm9ybVNpZ24ocnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBk
YXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3Nh
UGFyYW1zRGVwcmVjYXRlZCYgcnNhU1NBUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFrZXlB
bGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBsYXRmb3Jt
VmVyaWZ5KHJzYVNTQVBhcmFtZXRlcnMsICBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIHNp
Z25hdHVyZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNr
KSwgZWMpOworICAgIGF1dG8mIHJzYVNTQVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBpZiAoIWtleUFs
Z29yaXRobU1hdGNoZXMocnNhU1NBUGFyYW1ldGVycywga2V5KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5
KHJzYVNTQVBhcmFtZXRlcnMsICBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIHNpZ25hdHVy
ZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYUtl
eUdlblBhcmFtc0RlcHJlY2F0ZWQmIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FLZXlHZW5QYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQorICAgIGF1dG8m
IHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKICAgICBhdXRvIGtleVBhaXJDYWxsYmFjayA9IFtjYXB0
dXJlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENyeXB0b0tleVBhaXImIHBhaXIpIHsK
ICAgICAgICAgY2FwdHVyZWRDYWxsYmFjayhudWxscHRyLCAmcGFpcik7CiAgICAgfTsKLQotICAg
IENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFz
aCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9u
ZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzUsIHJzYVBh
cmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1ldGVycy5oYXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVs
dXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAm
Y29udGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
K0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjppbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5
UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkJiByc2FLZXlQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsK
LSAgICBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRv
d25jYXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKLQotICAgIFJlZlB0
cjxDcnlwdG9LZXlSU0E+IHJlc3VsdCA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81LCByc2FLZXlQYXJhbWV0ZXJzLmhhc2gs
IHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhQ29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlKTsKKyAgICBhdXRvJiByc2FLZXlQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRv
JiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KGtl
eURhdGEpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzUsIHJzYUtleVBhcmFtZXRlcnMuaGFz
aCwgcnNhS2V5UGFyYW1ldGVycy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwg
dXNhZ2UpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2FsbGJh
Y2soKnJlc3VsdCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmgKaW5kZXggMzkxNTVhMDMxMzAyYTcxZTAxMmQ0Y2QwZTFjNGQwNTc2
Y2Q4MzZlOC4uZWU5NzViMmFjMTgyYWY2MzUyMzNiYjYyMGFhMDRjYmVjZWUwZWNjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC0zNiwyOSArMzYsMjUgQEAgY2xh
c3MgQ3J5cHRvS2V5UlNBOwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
U1NBX1BLQ1MxX3YxXzU7Ci0KKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFt
ZSA9ICJSU0FTU0EtUEtDUzEtdjFfNSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQVNTQV9QS0NTMV92MV81OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVh
dGUoKTsKIAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IG92ZXJyaWRlOworcHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NSgpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZUtl
eShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsK
ICAgICB2b2lkIGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRlcHJl
Y2F0ZWQuCi0gICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZv
aWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNSgpOwotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81KCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2lnbihjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsK
IAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
KSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmNwcAppbmRleCA3MjZhYzA3ZGU1Mjg3NzQ0OGRkNTlhMDViNzE0ZDEzMTRl
NDFkY2RmLi41YTBkMzM0ZWEwODY3ODQ3ZTczOTg5NTVhMTcwMDQ1ZjhkNDNhYTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVAuY3BwCkBAIC00MCwxNiArNDAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpzX25hbWUg
PSAiUlNBLU9BRVAiOwotCi1DcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Q3J5cHRvQWxnb3JpdGht
UlNBX09BRVAoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6fkNyeXB0b0FsZ29y
aXRobVJTQV9PQUVQKCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVApOwpAQCAtNzIsNyArNjIsNyBAQCBib29sIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9h
ZXBQYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgY29uc3QgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4o
KnBhcmFtZXRlcnMpOwogCkBAIC04OSw3ICs3OSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbY2FwdHVyZWRDYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXSgpIHsKICAgICAgICAgY2FwdHVyZWRDYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7CiAgICAgfTsKLSAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgdHJ1ZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1Ymxp
Y0V4cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBjb250ZXh0KTsKKyAgICBDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCwg
cnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgdHJ1ZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVz
TGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxl
LCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spLCAmY29udGV4dCk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9y
dEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJz
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCkBA
IC0xNjEsNTMgKzE1MSw0MyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJgogICAgIGNhbGxiYWNr
KCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNh
dGVkJiByc2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQ
YXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0
Y2hlcyhyc2FPQUVQUGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1FbmNyeXB0KHJz
YU9BRVBQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiBy
c2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMocnNh
T0FFUFBhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQ
UE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQocnNhT0FFUFBhcmFtZXRl
cnMsIGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNh
T2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHJzYU9BRVBQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYg
KCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYU9BRVBQYXJhbWV0ZXJzLCBrZXkpKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBw
bGF0Zm9ybURlY3J5cHQocnNhT0FFUFBhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwg
ZWMpOworICAgIGF1dG8mIHJzYU9BRVBQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGlmICgha2V5QWxn
b3JpdGhtTWF0Y2hlcyhyc2FPQUVQUGFyYW1ldGVycywga2V5KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlw
dChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZCYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0
ZWQ+KHBhcmFtZXRlcnMpOwotCisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogICAg
IGF1dG8ga2V5UGFpckNhbGxiYWNrID0gW2NhcHR1cmVkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oQ3J5cHRvS2V5UGFpciYgcGFpcikgewogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKG51
bGxwdHIsICZwYWlyKTsKICAgICB9OwotCi0gICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAsIHJzYVBhcmFtZXRlcnMuaGFzaCwg
cnNhUGFyYW1ldGVycy5oYXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBh
cmFtZXRlcnMucHVibGljRXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5
UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBjb250ZXh0KTsKKyAgICBD
cnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0Ff
T0FFUCwgcnNhUGFyYW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFt
ZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFj
dGFibGUsIHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVD
YWxsYmFjayksICZjb250ZXh0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9ydEtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQmIHJzYUtleVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FLZXlQYXJhbXNXaXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotICAgIGNv
bnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KGtleURhdGEpOwotCi0gICAgUmVmUHRyPENyeXB0
b0tleVJTQT4gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UlNBX09BRVAsIHJzYUtleVBhcmFtZXRlcnMuaGFzaCwgcnNhS2V5UGFyYW1ldGVy
cy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGF1dG8m
IHJzYUtleVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUNvbXBvbmVudHMg
PSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oa2V5RGF0YSk7CisgICAgYXV0
byByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FfT0FFUCwgcnNhS2V5UGFyYW1ldGVycy5oYXNoLCByc2FLZXlQYXJhbWV0ZXJzLmhhc0hh
c2gsIHJzYUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAgICAgaWYgKCFyZXN1bHQp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9Ci0KICAgICBjYWxsYmFjaygqcmVzdWx0KTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaAppbmRleCAyNWFmMDcwZjA0ZGRmNGM0YjY0
N2EwNjY3N2M1OGJhZmY3NDk0MzhkLi4wNDhkMzNhYzdmM2Q0MmM5ZjU4YzFmMmRkNjc5MzBmNWNj
MjA4ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKQEAgLTM2LDI5ICszNiwyNSBAQCBjbGFzcyBD
cnlwdG9LZXlSU0E7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQIGZpbmFsIDogcHVi
bGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBz
X2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDsKLQorICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIlJTQS1PQUVQIjsKKyAgICBz
dGF0aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0g
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA7CiAgICAgc3RhdGljIFJlZjxDcnlw
dG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAgIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQKCkgPSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBmaW5hbDsKKyAgICB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlE
YXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwg
RXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICAvLyBUaGUgZm9sbG93aW5nIHdpbGwg
YmUgZGVwcmVjYXRlZC4KLSAgICB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQot
cHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOwotICAgIHZpcnR1YWwgfkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQKCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRh
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFs
Z29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0
ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZv
aWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCA3Mjk3
OTZkZTMxNGFmNTc4ODg0Mzk3ZTgxNTZhZDk3YzdhYzQ0MDYzLi41ZjFhZDY5OGM0NzI3NGViNjVk
N2QwOGJkMTlmMGUzMDIwNGVmYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcApAQCAtMzIsMTYgKzMyLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdv
cml0aG1TSEExOjpzX25hbWUgPSAiU0hBLTEiOwotCi1DcnlwdG9BbGdvcml0aG1TSEExOjpDcnlw
dG9BbGdvcml0aG1TSEExKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBMTo6fkNyeXB0b0Fs
Z29yaXRobVNIQTEoKQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0
aG1TSEExOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29y
aXRobVNIQTEpOwpAQCAtNTIsMTcgKzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
Q3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0
LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFjayhkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaAppbmRleCBlZDg4MzU3NjMzYzA4NGQz
NmJlZWQzOWIxZmVlYzE5YjA5NzUyYmRhLi4xOGQxY2U2NWNhZGY5NDgwYTViY2U3ZmY2NTQyMjQ1
YjUwZjA4MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5oCkBAIC0zMywxOCArMzMsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEExIGZpbmFsIDogcHVibGljIENyeXB0
b0FsZ29yaXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFt
ZTsKLSAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZp
ZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMTsKLQorICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIlNIQS0xIjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzE7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0
ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKLQogcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1TSEExKCk7Ci0gICAgdmlydHVh
bCB+Q3J5cHRvQWxnb3JpdGhtU0hBMSgpOworICAgIENyeXB0b0FsZ29yaXRobVNIQTEoKSA9IGRl
ZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAppbmRleCBmYTgwZmM2
ZGM0NWQ2MGQ0Njc5ODEwZGFjOGY4NDZkYTQwMDUyZTk1Li45ZmE5NDViMmUwYzUyNjUxMzBhMWQx
ZGVkZjVkOTFjZTQ3MTY3ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKQEAgLTMyLDE2ICszMiw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0OjpzX25hbWUgPSAiU0hBLTIyNCI7Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTIy
NDo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
Ojp+Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4g
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENyeXB0b0FsZ29yaXRobVNIQTIyNCk7CkBAIC01MiwxNyArNDIsMTYgQEAgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBjb25z
dAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAg
IGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFj
aygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAg
ZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFj
ayhkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTIyNC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmgKaW5kZXggZDYyMTkzMTg2YjU3ZTRlMGIyNDY2ZThjNzkyY2EzNmY4NGVkNGI5Ni4u
MGI1NDYyYzI2Y2Y0ZWYyYTAyYjUwZTUxMjgzZTUyNzYzNzk4NTNlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmgKQEAgLTMzLDE4ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0
b0FsZ29yaXRobVNIQTIyNCBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzIyNDsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
c19uYW1lID0gIlNIQS0yMjQiOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MjI0OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZh
dGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0KCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxn
b3JpdGhtU0hBMjI0KCk7CisgICAgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkgPSBkZWZhdWx0Owor
ICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggMzI0OTlhOTViNmUzZTc5
NDljYzQyNzQ5MGIxMzQ1ZjVmMWYwMDlhZS4uMDRjNWY5YTA5YTBjMjk1MWNlMWFkNDFmMzkxYmE3
YjgzM2U4YjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC0zMiwxNiArMzIsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNI
QTI1Njo6c19uYW1lID0gIlNIQS0yNTYiOwotCi1DcnlwdG9BbGdvcml0aG1TSEEyNTY6OkNyeXB0
b0FsZ29yaXRobVNIQTI1NigpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTI1Njo6fkNyeXB0
b0FsZ29yaXRobVNIQTI1NigpCi17Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlw
dG9BbGdvcml0aG1TSEEyNTYpOwpAQCAtNTIsMTcgKzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKICAgICBy
ZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGln
ZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLQogICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwotCiAgICAgY2FsbGJhY2soZGlnZXN0
LT5jb21wdXRlSGFzaCgpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5o
CmluZGV4IDIyNDQ1ZWUwN2FiNzYwYTlmMjJhMTAwMjIwYmFlOTI1ODlmYjA1YzYuLjlkYjMyMTUy
Y2Q3YmRjODQ1MDIwNmYyNWJjOTI1MzVkYTk4MDVmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCkBAIC0z
MywxOCArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0
aG1TSEEyNTYgZmluYWwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogc19uYW1lID0gIlNIQS0yNTYiOwogICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY7Ci0KICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAK
LSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlk
ZTsKLQotICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
CiBwcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpOwotICAgIHZpcnR1YWwgfkNy
eXB0b0FsZ29yaXRobVNIQTI1NigpOworICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpID0gZGVm
YXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCmluZGV4IDM0ZWQ4N2M5
OThmMTM4NmZlMzBkNTNhNWM4OTdkOTBmOWU5ZjVlNWEuLmJjODg2NmQ5OWRkODNhMWM4ZWE5ZWVh
Njg4YzAzNTg5MmUxYTczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApAQCAtMzIsMTYgKzMyLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdv
cml0aG1TSEEzODQ6OnNfbmFtZSA9ICJTSEEtMzg0IjsKLQotQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpDcnlwdG9BbGdvcml0aG1TSEEzODQoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1TSEEzODQ6
On5DcnlwdG9BbGdvcml0aG1TSEEzODQoKQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBD
cnlwdG9BbGdvcml0aG1TSEEzODQ6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0KTsKQEAgLTUyLDE3ICs0MiwxNiBAQCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigpIGNvbnN0
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEz
ODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAg
YXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNr
KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0KICAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKLQogICAgIGNhbGxiYWNr
KGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuaAppbmRleCAwMThiOGZiMzJkNDcyNDYyNjM4NTM2ZDhjZjA4MmU0Y2VjZGNlOGU3Li4x
ZTFmMmIwYjQ0NTA0M2VkYTk3NmMwM2Q4NzVjNjQ1ZGUyNDE0ZjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
aApAQCAtMzMsMTggKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0IGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMzg0OwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBz
X25hbWUgPSAiU0hBLTM4NCI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8z
ODQ7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQogcHJpdmF0
ZToKLSAgICBDcnlwdG9BbGdvcml0aG1TSEEzODQoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdv
cml0aG1TSEEzODQoKTsKKyAgICBDcnlwdG9BbGdvcml0aG1TSEEzODQoKSA9IGRlZmF1bHQ7Cisg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCA5ZGE5NzM2ZjM4ODNhNDAz
ZjdlZWFiZDY4NjRiMGVmOWNiNzExYTZiLi43ZjA3NDhkYzFmODU2YTc1NTE0M2ZiMzhkZTk0N2Jm
MDFmNzBjZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTMyLDE2ICszMiw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyOjpzX25hbWUgPSAiU0hBLTUxMiI7Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTUxMjo6Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjp+Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyKCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0
b0FsZ29yaXRobVNIQTUxMik7CkBAIC01MiwxNyArNDIsMTYgQEAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIoKSBjb25zdAogICAgIHJl
dHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdl
c3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFjayhkaWdlc3Qt
PmNvbXB1dGVIYXNoKCkpOworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgK
aW5kZXggZWQ5YjBmNzZkYTIxMTU4MmE5NmI1MmM4MzUyZDYxMzg1ZTE2Y2MyYS4uMGY2NzE1NjJl
OTE2ZGUzMTRkNzBlMzViODA2Y2UxZGVhNTViZDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKQEAgLTMz
LDE4ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRo
bVNIQTUxMiBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzUxMjsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0g
IlNIQS01MTIiOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOwogICAg
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBk
aWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAg
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyKCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtU0hB
NTEyKCk7CisgICAgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyKCkgPSBkZWZhdWx0OworICAgIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1ITUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggYjQ3Y2RlZDZiN2E0MWNjYWU1MzRmMDE5
NzE4NjhiZGUxODMwZjM0NS4uN2E5NmJhODI3ZGYwNzNkMWIzNTA1OTJlZDZiNzY2NzMwOTg2ZmRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBpbnQgZ2V0
R0NyeXB0RGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0
aW9uKQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdv
cml0aG0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSkKK3N0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSkKIHsK
ICAgICBzaXplX3QgZGlnZXN0TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0X2FsZ29fbWFjbGVuKGFsZ29y
aXRobSk7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgp
IDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwpAQCAtNzYsNiArNzYsNyBA
QCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgaWYgKGVycikKICAgICAgICAgZ290byBjbGVh
bnVwOwogCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKICAgICBzaWduYXR1cmUucmVz
aXplKGRpZ2VzdExlbmd0aCk7CiAgICAgZXJyID0gZ2NyeV9tYWNfcmVhZChoZCwgc2lnbmF0dXJl
LmRhdGEoKSwgJmRpZ2VzdExlbmd0aCk7CiAgICAgaWYgKGVycikKQEAgLTg4LDQ0ICs4OSw0MyBA
QCBjbGVhbnVwOgogICAgIGlmIChoZCkKICAgICAgICAgZ2NyeV9tYWNfY2xvc2UoaGQpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1z
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlI
TUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBVTlVT
RURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBpbnQgYWxnb3JpdGhtID0gZ2V0R0NyeXB0
RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7Ci0gICAgaWYgKGFsZ29yaXRobSA9PSBH
Q1JZX01BQ19OT05FKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGFsZ29yaXRobSA9PSBHQ1JZX01BQ19OT05FKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAotICAgIFZlY3Rv
cjx1aW50OF90PiBzaWduYXR1cmU7Ci0gICAgaWYgKGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0
aG0sIGtleS5rZXkoKSwgZGF0YSwgc2lnbmF0dXJlKSkKLSAgICAgICAgY2FsbGJhY2soc2lnbmF0
dXJlKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0s
IGtleS5rZXkoKSwgZGF0YSk7CisgICAgaWYgKHNpZ25hdHVyZSkKKyAgICAgICAgY2FsbGJhY2so
KnNpZ25hdHVyZSk7CiAgICAgZWxzZQogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICBy
ZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVj
dGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3Jt
VmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29s
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOwogICAgIGludCBhbGdvcml0aG0gPSBn
ZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKLSAgICBpZiAoYWxnb3Jp
dGhtID09IEdDUllfTUFDX05PTkUpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoYWxnb3JpdGhtID09IEdDUllfTUFDX05P
TkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBpZiAoIWNhbGN1bGF0ZVNpZ25hdHVy
ZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YSwgc2lnbmF0dXJlKSkgeworICAgIGF1dG8gc2ln
bmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsK
KyAgICBpZiAoIXNpZ25hdHVyZSkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJp
c29uIHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAgYm9vbCByZXN1bHQgPSBzaWduYXR1
cmUuc2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLnNlY29uZCAmJiAhY29uc3RhbnRUaW1lTWVt
Y21wKHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUu
c2l6ZSgpKTsKKyAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS52YWx1ZSgpLnNpemUoKSA9PSBl
eHBlY3RlZFNpZ25hdHVyZS5zZWNvbmQgJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUu
dmFsdWUoKS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUudmFsdWUo
KS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICByZXR1cm4geyB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobUFFU19DQkNHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAppbmRleCAxNDYwN2RiNmYxZDcyYTIxYTVlNzY0
ZTJiMzE1YWJiYjYzMjU5ZTVmLi5kYmZhNWZjOGYzY2ZhYzQxZmIyM2Q2ZjAwODczMGY0NGRkYjRk
ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobUFFU19DQkNHbnVUTFMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKQEAgLTI4LDM1ICsyOCwyMSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXND
YmNQYXJhbXNEZXByZWNhdGVkLmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVu
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
UGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURf
UEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURf
RVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFN
KHBhcmFtZXRlcnMpOwotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9QQVJBTShmYWls
dXJlQ2FsbGJhY2spOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHAKaW5k
ZXggOTQ1NGM4MzE0MTAyZTg4Y2YwYzhjNjg4YTczOTQ0YTQ3MTg5YTEzZi4uZmFiYWMxYTZkNTM0
ZTAzYzcwNmNjMzg5OWFjYzAwN2ViMTNkZDA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfS1dHbnVUTFMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExTLmNwcApA
QCAtMjgsMzIgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChj
b25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VE
X1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQ
T1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0g
ICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMv
Q3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCmluZGV4IGE4MzA0NjU3YjMzZWQwMjRl
MzgyZDYxOWFkNjMyYjYwOWIyYjc1YzMuLjNhNmMwZWYxMTEzYTJjNTU5Yzk4YmEwZjY5M2QyMzQ2
YTk3ZDhhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRv
QWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcApAQCAtNjgsMjggKzY4LDIwIEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKGdudXRsc19tYWNfYWxnb3JpdGht
X3QgYWxnb3JpdGhtLCBjb25zCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFt
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlv
bk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZmFpbHVy
ZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdu
dXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOwotICAgIGlmIChhbGdvcml0aG0g
PT0gR05VVExTX01BQ19VTktOT1dOKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJl
ID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsKLQotICAg
IGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgaWYgKGFsZ29yaXRobSA9PSBHTlVUTFNfTUFDX1VO
S05PV04pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owor
ICAgIGNhbGxiYWNrKGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0
YSkpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0
ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBV
TlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRobV90
IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOwot
ICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19VTktOT1dOKSB7Ci0gICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGFsZ29y
aXRobSA9PSBHTlVUTFNfTUFDX1VOS05PV04pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
T1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSA9IGNh
bGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YSk7CiAKQEAgLTk3LDYg
Kzg5LDggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXQKICAgICBib29sIHJlc3VsdCA9IHNpZ25h
dHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRpbWVN
ZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVy
ZS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsKKworICAgIHJldHVybiB7IH07CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCmluZGV4IDdh
NWU4NGI1ZmRlOWJjNTkxNjgxYTg4NWY4M2U2MzUwYWMyYzY5YmEuLjJiMDZhZjhiYmUwNTg1NTRh
YzljZTRjYmEwYTI4ZjgzZTRmZmIyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81R251VExTLmNwcApAQCAtMzQsMjYgKzM0LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
LQotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2sp
OworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAg
VU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAK
aW5kZXggNTY4ZDUyYmE0MDM0ZGYwMGI3NDNmYTI3OWM0ZmFkMTdiMTVjNjEzZC4uMzc0Y2I5NDNk
N2Y1N2MzNGM2NTcwMzI2ZTkwNDk4ZWNiM2I3ZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdudVRMUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKQEAgLTM1LDI5ICszNSwxNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0KLSAg
ICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5V
U0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9T
VVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNz
YVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VE
X1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpZ25hdHVyZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURf
RVJSIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHbnVUTFMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRM
Uy5jcHAKaW5kZXggYWIwNmFjZGQ0NjA0ZjZlOTBmMTUyN2Q1NjhhYTgyMTA1OWM2MGZlYi4uY2My
ZTQwMjM1NWFiYWU0MWZhNDg0MTc0ODRiOWEyYTA5MjQ1YWYzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdudVRMUy5jcHAKQEAgLTI4LDM1ICsyOCwyMSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCiAKLSNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZC5o
IgotI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLQotICAgIFVOVVNFRF9QQVJBTShwYXJhbWV0ZXJz
KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNr
KTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMp
OwotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBV
TlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2sp
OworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
QUVTLmNwcAppbmRleCAyMzRmZTI5YjQ5MWMwMDVjMWI3NDQwZTgxYmJhYjk1YzViZGJkZTg5Li5m
NTRjZTE0YzgwODM0ZjkwZGJjYTI3NmYxNzc0YmNjM2UyY2QwZjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWZQ
dHI8Q3J5cHRvS2V5QUVTPiBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGFsZ29yaXRobQogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlw
dG9LZXlBRVM6OmJ1aWxkQWxnb3JpdGhtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxBZXNLZXlBbGdvcml0aG0+KENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5uYW1lRm9ySWRlbnRpZmllcihhbGdvcml0aG1JZGVudGlmaWVyKCkpLCBtX2tleS5zaXpl
KCkgKiA4KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBZXNLZXlBbGdvcml0aG0+KENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZp
ZXIoKSksIG1fa2V5LnNpemUoKSAqIDgpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
RGF0YT4gQ3J5cHRvS2V5QUVTOjpleHBvcnREYXRhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAKaW5kZXggMTczY2U1Y2E3YmU5OTRhNDA3YTlh
NzA5NzgxNWIxMDE1ZjM0MmY3Mi4uZDIzOTk1NDA4MjlkNDQ5MDM2Mjk1N2MxMDk1MzU0MGIyMTll
M2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1B
Qy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAK
QEAgLTExNiw4ICsxMTYsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gQ3J5cHRvS2V5SE1BQzo6
aW1wb3J0SndrKHNpemVfdCBsZW5ndGhCaXRzLCBDcnlwdG9BbGdvcml0aAogCiBzdGQ6OnVuaXF1
ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlITUFDOjpidWlsZEFsZ29yaXRobSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SG1hY0tleUFsZ29yaXRobT4oQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWVGb3JJZGVudGlmaWVyKGFsZ29yaXRo
bUlkZW50aWZpZXIoKSksCi0gICAgICAgIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5uYW1lRm9ySWRlbnRpZmllcihtX2hhc2gpLCBtX2tleS5zaXplKCkgKiA4KTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIbWFjS2V5QWxnb3JpdGhtPihDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpLAorICAgICAg
ICBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gpLCBtX2tl
eS5zaXplKCkgKiA4KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENyeXB0
b0tleUhNQUM6OmV4cG9ydERhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggYjEyM2NlY2Ix
MjNjNTE0YzM4ZjA5MDQ0YmUzODJmMTgxNzZiNDcxZi4uNzhhMmEyNzcyNDEwZjA3OTYxNDI1NWYw
MmE3N2Y4N2EzYTQyYWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5QUVTLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
PENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
ODIsMTQgKzgxLDE2IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NPcGVyYXRpb24g
b3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQCiAgICAgY2FsbGJhY2socmVz
dWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0VuY3J5
cHQsIHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFy
YW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25P
cjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAg
ICB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0RlY3J5cHQsIHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHsg
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwCmluZGV4IDk4NTU1MzA0
NjNiNzcwYjVhZWE3YTNkYzgyNmU5YzcxMTI0YTk0MzMuLjZmYmQyOTczYTU1ZDhmM2Q4NDk3YzFh
YWExOTI3ZDdiMDJiODJlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19LV01hYy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIGlmIChkYXRhLnNlY29uZCAl
IDgpIHsKICAgICAgICAgLy8gUkZDIDMzOTQgdXNlcyA2NC1iaXQgYmxvY2tzIGFzIGlucHV0Lgog
ICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTU5NDk5OTI+IENvbW1vbkNyeXB0byBkb2Vzbid0
IGRldGVjdCBpbmNvcnJlY3QgZGF0YSBsZW5ndGgsIHNpbGVudGx5IHByb2R1Y2luZyBhIGJhZCBj
eXBoZXJ0ZXh0LgogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQo
Q0NTeW1tZXRyaWNXcmFwcGVkU2l6ZShrQ0NXUkFQQUVTLCBkYXRhLnNlY29uZCkpOwpAQCAtNDgs
MjkgKzQ4LDMxIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQo
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0CiAgICAgaW50IHN0YXR1cyA9IEND
U3ltbWV0cmljS2V5V3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZjMzM5NF9pdkxl
biwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgZGF0YS5maXJzdCwgZGF0YS5z
ZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1bHRTaXplKTsKICAgICBpZiAoc3RhdHVzKSB7CiAg
ICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogICAgIHJlc3VsdC5zaHJpbmsocmVzdWx0U2l6ZSk7CiAgICAgY2FsbGJh
Y2socmVzdWx0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFwcGVkU2l6ZShrQ0NXUkFQQUVTLCBk
YXRhLnNlY29uZCkpOwogICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNpemUoKTsKIAog
ICAgIGlmIChyZXN1bHRTaXplICUgOCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludCBzdGF0
dXMgPSBDQ1N5bW1ldHJpY0tleVVud3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMzOTRfaXYsIENDcmZj
MzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgZGF0YS5maXJz
dCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1bHRTaXplKTsKICAgICBpZiAoc3Rh
dHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJlc3VsdC5zaHJpbmsocmVzdWx0U2l6ZSk7CiAg
ICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1ITUFDTWFjLmNwcAppbmRleCAyOTZhNzhhYjU3ZmQzYjk1YjkzZGVhYjhhNmY3MjUwOTg2
NGM2NzRkLi5jZDNiMGNjMzZkYTUzMDVlNzcwZTQxYTA3OGRhNDUwMjhkYmYyNmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5j
cHAKQEAgLTM2LDI2ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBi
b29sIGdldENvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoRnVuY3Rpb24sIENDSG1hY0FsZ29yaXRobSYgYWxnb3JpdGhtKQorc3RhdGljIE9wdGlv
bmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlv
bikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAg
IGFsZ29yaXRobSA9IGtDQ0htYWNBbGdTSEExOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGtDQ0htYWNBbGdTSEExOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzIyNDoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDSG1hY0FsZ1NIQTIyNDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBrQ0NIbWFjQWxnU0hBMjI0OwogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKLSAgICAgICAgYWxnb3Jp
dGhtID0ga0NDSG1hY0FsZ1NIQTI1NjsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBrQ0NIbWFjQWxnU0hBMjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzM4NDoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDSG1hY0FsZ1NIQTM4NDsKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBrQ0NIbWFjQWxnU0hBMzg0OwogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgYWxnb3JpdGht
ID0ga0NDSG1hY0FsZ1NIQTUxMjsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBrQ0NIbWFjQWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogfQogCkBAIC04OSwzMyArODQsMjkgQEAg
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjYWxjdWxhdGVTaWduYXR1cmUoQ0NIbWFjQWxnb3JpdGht
IGFsZ29yaXRobSwgY29uc3QgVmVjdG8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFj
UGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBD
cnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1h
Y1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgQ0NIbWFjQWxnb3JpdGhtIGFsZ29yaXRobTsKLSAg
ICBpZiAoIWdldENvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBhbGdv
cml0aG0pKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlID0gY2FsY3VsYXRlU2ln
bmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsKLQotICAgIGNhbGxiYWNrKHNpZ25h
dHVyZSk7CisgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKHBh
cmFtZXRlcnMuaGFzaCk7CisgICAgaWYgKCFhbGdvcml0aG0pCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGNhbGxiYWNrKGNhbGN1bGF0ZVNpZ25h
dHVyZSgqYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpKTsKKyAgICByZXR1cm4geyB9OwogfQog
Ci12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlI
TUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1h
Y1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJikKIHsKLSAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIGlmICghZ2V0Q29t
bW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFsZ29yaXRobSkpIHsKLSAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0ocGFyYW1ldGVycy5o
YXNoKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5P
VF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlID0gY2Fs
Y3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsKKyAgICBhdXRvIHNp
Z25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEp
OwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0
aW1pbmcgYXR0YWNrcy4KICAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhw
ZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRh
dGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXplKCkpOwogCiAgICAg
Y2FsbGJhY2socmVzdWx0KTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDc3NTk4MzQ0NzhhNzhjODVmMzQ4MzUwMWEwNmIxZTYw
MjU2Zjg0ZjguLjAwYmFjZDQ3ODg0NDY0NjZhYzU0MDRhYmQ5YTBjMDdhYzRkMzZiNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApAQCAtMzMsMzIgKzMzLDM0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
S2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAgICBzaXplX3QgY2lwaGVyVGV4dExl
bmd0aCA9IGNpcGhlclRleHQuc2l6ZSgpOwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBD
Q1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGF0
YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQuZGF0YSgpLCAmY2lwaGVyVGV4dExlbmd0
aCwgMCwgMCwga0NDRGlnZXN0Tm9uZSk7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWls
dXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIAogICAgIGNpcGhlclRleHQucmVzaXplKGNpcGhlclRleHRMZW5ndGgpOwogICAgIGNhbGxi
YWNrKGNpcGhlclRleHQpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYg
a2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQor
RXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAg
ICBzaXplX3QgcGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsKICAgICBDQ0NyeXB0
b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwg
Y2NQS0NTMVBhZGRpbmcsIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kLCBwbGFpblRleHQuZGF0YSgp
LCAmcGxhaW5UZXh0TGVuZ3RoLCAwLCAwLCBrQ0NEaWdlc3ROb25lKTsKICAgICBpZiAoc3RhdHVz
KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcGxhaW5UZXh0LnJlc2l6ZShwbGFpblRleHRMZW5n
dGgpOwogICAgIGNhbGxiYWNrKHBsYWluVGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAppbmRl
eCAwYWI4ZjQyYjg1ZmIxOWZmOWE0NDg1Nzk0ZDE4MjcyY2MwNTYxNWNjLi5hMzQ2MjI3YWMxMjNm
MWViNTcwNjI0NGZhN2I4OGNmNWU4OGFhNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
TWFjLmNwcApAQCAtMzYsNTIgKzM2LDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5s
aW5lIGJvb2wgZ2V0Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaEZ1bmN0aW9uLCBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSYgYWxnb3JpdGhtKQoraW5s
aW5lIE9wdGlvbmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0
aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dpdGNo
IChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xOgotICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIy
NDoKLSAgICAgICAgYWxnb3JpdGhtID0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MjU2OgotICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6Ci0gICAgICAgIGFsZ29yaXRobSA9IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzUxMjoKLSAgICAgICAgYWxnb3JpdGhtID0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtl
eSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0
Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKICAgICBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07Ci0g
ICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBk
aWdlc3RBbGdvcml0aG0pKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0
aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGNyeXB0b0RpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAoIWdldENyeXB0b0RpZ2VzdEFsZ29y
aXRobShwYXJhbWV0ZXJzLmhhc2gsIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSkpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRv
IGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShw
YXJhbWV0ZXJzLmhhc2gpOworICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKGNyeXB0
b0RpZ2VzdEFsZ29yaXRobSk7Ci0gICAgaWYgKCFkaWdlc3QpIHsKLSAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGlmICgh
ZGlnZXN0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsK
IAogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwogCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdERhdGEgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAg
YXV0byBkaWdlc3REYXRhID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHNpZ25hdHVyZSg1MTIpOwogICAgIHNpemVfdCBzaWduYXR1cmVTaXplID0gc2lnbmF0
dXJlLnNpemUoKTsKQEAgLTg5LDQ0ICs3OCw0MCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUAog
ICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JTaWduKGtleS5wbGF0Zm9y
bUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGlnZXN0RGF0YS5kYXRhKCksIGRpZ2VzdERhdGEuc2l6
ZSgpLCBkaWdlc3RBbGdvcml0aG0sIDAsIHNpZ25hdHVyZS5kYXRhKCksICZzaWduYXR1cmVTaXpl
KTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgc2lnbmF0dXJlLnJl
c2l6ZShzaWduYXR1cmVTaXplKTsKICAgICBjYWxsYmFjayhzaWduYXR1cmUpOworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spCiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwotICAgIGlmICgh
Z2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxn
b3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFt
ZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5PVF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBjcnlw
dG9EaWdlc3RBbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFy
YW1ldGVycy5oYXNoLCBjcnlwdG9EaWdlc3RBbGdvcml0aG0pKSB7Ci0gICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgYXV0byBjcnlwdG9E
aWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVy
cy5oYXNoKTsKKyAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShjcnlwdG9EaWdlc3RB
bGdvcml0aG0pOwotICAgIGlmICghZGlnZXN0KSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgYXV0byBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBpZiAoIWRpZ2VzdCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKICAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKIAotICAgIFZlY3Rvcjx1
aW50OF90PiBkaWdlc3REYXRhID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIGF1dG8gZGln
ZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIAotICAgIENDQ3J5cHRvclN0YXR1cyBz
dGF0dXMgPSBDQ1JTQUNyeXB0b3JWZXJpZnkoa2V5LnBsYXRmb3JtS2V5KCksIGNjUEtDUzFQYWRk
aW5nLCBkaWdlc3REYXRhLmRhdGEoKSwgZGlnZXN0RGF0YS5zaXplKCksIGRpZ2VzdEFsZ29yaXRo
bSwgMCwgc2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUuc2Vjb25kKTsKKyAgICBhdXRvIHN0YXR1
cyA9IENDUlNBQ3J5cHRvclZlcmlmeShrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcs
IGRpZ2VzdERhdGEuZGF0YSgpLCBkaWdlc3REYXRhLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtLCAw
LCBzaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zZWNvbmQpOwogICAgIGlmICghc3RhdHVzKQog
ICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICBlbHNlIGlmIChzdGF0dXMgPT0ga0NDTm90VmVy
aWZpZWQgfHwgc3RhdHVzID09IGtDQ0RlY29kZUVycm9yKSAvLyA8cmRhcjovL3Byb2JsZW0vMTU0
NjQ5ODI+IENDUlNBQ3J5cHRvclZlcmlmeSByZXR1cm5zIGtDQ0RlY29kZUVycm9yIGluc3RlYWQg
b2Yga0NDTm90VmVyaWZpZWQgc29tZXRpbWVzCiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAg
ICBlbHNlCiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgIHJldHVybiB7IH07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKaW5kZXggY2YyODFjYTg3NjAy
MjRlZDA3YTdlNGEwMGFmZjFmZGQ4NTdjNWQwNi4uOTM3OGVkNGQxMTc0YWYwYWU3YTg0MjJjYjZj
MTc5MWUyNWMyYTNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAgLTM1LDEzICszNSwxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0Em
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIENDRGlnZXN0
QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
IWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFs
Z29yaXRobSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNpcGhlclRleHQoMTAyNCk7CiAgICAgc2l6ZV90IGNp
cGhlclRleHRMZW5ndGggPSBjaXBoZXJUZXh0LnNpemUoKTsKQEAgLTQ5LDMxICs0NywzMSBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JT
QUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBjY09BRVBQYWRkaW5nLCBkYXRhLmZp
cnN0LCBkYXRhLnNlY29uZCwgY2lwaGVyVGV4dC5kYXRhKCksICZjaXBoZXJUZXh0TGVuZ3RoLCBw
YXJhbWV0ZXJzLmxhYmVsLmRhdGEoKSwgcGFyYW1ldGVycy5sYWJlbC5zaXplKCksIGRpZ2VzdEFs
Z29yaXRobSk7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNpcGhl
clRleHQucmVzaXplKGNpcGhlclRleHRMZW5ndGgpOwogICAgIGNhbGxiYWNrKGNpcGhlclRleHQp
OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRl
ZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlS
U0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIENDRGln
ZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAoIWdldENvbW1vbkNyeXB0b0Rp
Z2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2Vz
dEFsZ29yaXRobSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VS
UiB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3Qg
cGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsKICAgICBDQ0NyeXB0b3JTdGF0dXMg
c3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxhdGZvcm1LZXkoKSwgY2NPQUVQUGFk
ZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHBsYWluVGV4dC5kYXRhKCksICZwbGFpblRl
eHRMZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0YSgpLCBwYXJhbWV0ZXJzLmxhYmVsLnNpemUo
KSwgZGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVD
YWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgcGxhaW5UZXh0LnJlc2l6ZShwbGFpblRleHRMZW5ndGgpOwogICAgIGNhbGxiYWNrKHBs
YWluVGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IGM3
MzQ1ZWM3NTdiOGJhMDlmOThjNzY0ZTE0YjExNzc4YThlZTI4OWMuLmI0ZTRjMWUxNmIzYzI1NTQ1
YWY1MzE3YjhjNGQyOGM0ZTcyY2FjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0tleVJTQU1hYy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBzaXplX3QgQ3J5cHRvS2V5
UlNBOjprZXlTaXplSW5CaXRzKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEtleUFsZ29yaXRo
bT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG5h
bWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZUZvcklkZW50aWZp
ZXIoYWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgbmFtZSA9IENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1vZHVsdXM7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4
cG9uZW50OwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBnZXRQdWJsaWNLZXlDb21wb25l
bnRzKG1fcGxhdGZvcm1LZXksIG1vZHVsdXMsIHB1YmxpY0V4cG9uZW50KTsKQEAgLTE3NCw3ICsx
NzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlSU0E6OmJ1aWxk
QWxnb3JpdGhtKCkgY29uc3QKIAogICAgIHNpemVfdCBtb2R1bHVzTGVuZ3RoID0gbW9kdWx1cy5z
aXplKCkgKiA4OwogICAgIGlmIChtX3Jlc3RyaWN0ZWRUb1NwZWNpZmljSGFzaCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhSGFzaGVkS2V5QWxnb3JpdGhtPihuYW1lLCBtb2R1
bHVzTGVuZ3RoLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSwgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OnNpbmdsZXRvbigpLm5hbWVGb3JJZGVudGlmaWVyKG1faGFzaCkpOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FIYXNoZWRLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNM
ZW5ndGgsIFdURk1vdmUocHVibGljRXhwb25lbnQpLCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
c2luZ2xldG9uKCkubmFtZShtX2hhc2gpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
c2FLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgsIFdURk1vdmUocHVibGljRXhwb25l
bnQpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294658</attachid>
            <date>2016-11-12 23:17:57 -0800</date>
            <delta_ts>2016-11-13 10:34:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164698-20161112231341.patch</filename>
            <type>text/plain</type>
            <size>164192</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjOTBiZjk2YTU3Njcz
OTY1YTk2YTlhMGU1YjMzNmMyMmU4MmNhYi4uNGViYWNiYTMxYWMwMDE0MDUxMTc3ZjdjZWM5YzA5
N2E4OWI4MTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyMyBAQAogMjAxNi0xMS0xMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBjcnlwdG8gY29kZSBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uT3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlv
bmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIFVzZSB0aGUgbmV3IGlkZW50
aWZpZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBnZXRJZGVudGlmaWVyRm9yTmFtZS4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjp0b0NyeXB0b0tleVVzYWdlQml0bWFwKTogUmVtb3ZlZCBhIHN0cmF5IG1lYW5pbmds
ZXNzIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkdlbmVy
YXRlS2V5UHJvbWlzZSk6IFBhc3MKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhcyBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUFsZ29yaXRobUZyb21KU1ZhbHVlKTogVXNlIHRoZSBtb3JlIGVmZmljaWVudCB2ZXJzaW9uCisg
ICAgICAgIG9mIHNldERPTUV4Y2VwdGlvbiB0aGF0IHVzZXMgc2NvcGUuCisgICAgICAgIChXZWJD
b3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6IERpdHRvLiBBbHNvIHVwZGF0ZWQg
dG8gdXNlCisgICAgICAgIEV4Y2VwdGlvbk9yIGluc3RlYWQgb2YgRXhjZXB0aW9uQ29kZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KTogRGl0dG8uCisKKyAgICAgICAgKiBj
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobTo6Q3J5cHRvQWxnb3JpdGhtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRobSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobTo6c2lnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobTo6ZGlnZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG06OmRlcml2ZUtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
OjpkZXJpdmVCaXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpl
bmNyeXB0Rm9yV3JhcEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobS5oOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIE1vdmVkIHRoZSBkZXN0cnVj
dG9yIGludG8gdGhlIGhlYWRlciBzaW5jZSBpdCdzIG1vcmUgZWZmaWNpZW50IGZvcgorICAgICAg
ICBkZXJpdmVkIGNsYXNzZXMgdG8gaGF2ZSBpdCBpbmxpbmVkLiBSZW1vdmVkIHRoZSBwcm90ZWN0
ZWQgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSBzaW5jZSB0aGVyZSBhcmUgcHVyZSB2aXJ0
dWFsIGZ1bmN0aW9ucyBpbiB0aGUgY2xhc3MsIHRoZXJlIGlzCisgICAgICAgIG5vIHJpc2sgb2Yg
YW55b25lIG1pc3VzaW5nIHRoZSBwdWJsaWMgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBjcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZ2V0
SWRlbnRpZmllckZvck5hbWUgYW5kIGNoYW5nZWQgdG8gdXNlIGFuIE9wdGlvbmFsIHJhdGhlciB0
aGFuCisgICAgICAgIHVzaW5nIGEgYm9vbGVhbiBwbHVzIGFuIG91dCBhcmd1bWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKTogUmVuYW1lZCB0byBu
YW1lIGZyb20KKyAgICAgICAgbmFtZUZvcklkZW50aWZpZXIuIEFsc28gdXBkYXRlZCB0byBzaGFy
ZSBhIHNpbmdsZSBtYXAgY29udGFpbmluZworICAgICAgICBib3RoIG5hbWVzIGFuZCBjb25zdHJ1
Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRl
KTogU2hhcmUgc2luZ2xlIG1hcCBhcyBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6IFVwZGF0ZWQgYXNzZXJ0aW9ucwor
ICAgICAgICB0byBhIG1yb2Ugc3RyYWlnaHRmb3J3YXJkIHN0eWxlLiBTaGFyZSBzaW5nbGUgbWFw
IGZvciBuYW1lcyBhbmQgY29uc3RydWN0b3JzLgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKworICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjp+Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjprZXlBbGdvcml0aG1NYXRjaGVzKTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVLZXkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5
cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRl
Y3J5cHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUFFU19DQkMuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNv
bnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpDcnlwdG9BbGdvcml0aG1BRVNfS1cpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjp+Q3J5cHRvQWxnb3JpdGht
QUVTX0tXKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19L
Vzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyk6IFVzZSByZWZlcmVuY2VzLCBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6aW1wb3J0S2V5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmVuY3J5cHRG
b3JXcmFwS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmRlY3J5cHRGb3JVbndyYXBLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAg
IEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OkNyeXB0b0FsZ29yaXRobUhNQUMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6fkNyeXB0b0FsZ29y
aXRobUhNQUMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1B
Qzo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywgRXhjZXB0aW9uT3IuCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDogVXBkYXRlZCBmb3IgYWJvdmUu
CisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIu
CisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6fkNyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkpOiBVc2UgcmVmZXJlbmNlcywg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkpOiBEaXR0by4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Lmg6
IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFt
ZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81Ojp+Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVy
YXRlS2V5KTogVXNlIHJlZmVyZW5jZXMsIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojpp
bXBvcnRLZXkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAgICAgQWxz
byB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
fkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleSk6IFVzZSByZWZlcmVuY2VzLCBFeGNl
cHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNy
eXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OmltcG9ydEtleSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVz
ZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEExOjpDcnlwdG9BbGdvcml0aG1TSEExKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6On5DcnlwdG9BbGdvcml0aG1TSEEx
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2Vz
dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmg6IFVwZGF0ZWQgZm9yIGFib3ZlLgorICAgICAgICBBbHNvIHVzZSBjb25z
dGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVyLgorCisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTIyNDo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6fkNyeXB0b0FsZ29yaXRobVNI
QTIyNCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6
OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuaDogVXBkYXRlZCBmb3IgYWJvdmUuCisgICAgICAgIEFsc28g
dXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lkZW50aWZpZXIuCisKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpDcnlwdG9BbGdvcml0aG1TSEEyNTYpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2Ojp+Q3J5cHRvQWxn
b3JpdGhtU0hBMjU2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOiBVcGRhdGVkIGZvciBhYm92ZS4KKyAgICAg
ICAgQWxzbyB1c2UgY29uc3RleHByIGZvciBzX25hbWUgYW5kIHNfaWRlbnRpZmllci4KKworICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OkNyeXB0b0FsZ29yaXRobVNIQTM4
NCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6On5D
cnlwdG9BbGdvcml0aG1TSEEzODQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg6IFVwZGF0ZWQgZm9yIGFib3Zl
LgorICAgICAgICBBbHNvIHVzZSBjb25zdGV4cHIgZm9yIHNfbmFtZSBhbmQgc19pZGVudGlmaWVy
LgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6Q3J5cHRvQWxnb3Jp
dGhtU0hBNTEyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNI
QTUxMjo6fkNyeXB0b0FsZ29yaXRobVNIQTUxMik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaDogVXBkYXRlZCBm
b3IgYWJvdmUuCisgICAgICAgIEFsc28gdXNlIGNvbnN0ZXhwciBmb3Igc19uYW1lIGFuZCBzX2lk
ZW50aWZpZXIuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNH
Q3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2lnbmF0dXJlKTogVXNlIE9w
dGlvbmFsIGluc3RlYWQgb2YgYSBib29sZWFuCisgICAgICAgIHJldHVybiB2YWx1ZSBhbmQgYW4g
b3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1TaWduKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251
dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQpOiBEaXR0
by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5j
cnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpw
bGF0Zm9ybURlY3J5cHQpOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0Fs
Z29yaXRobUhNQUNHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
SE1BQzo6cGxhdGZvcm1TaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9nbnV0
bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtVmVyaWZ5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL2dudXRscy9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdudVRMUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisKKyAgICAg
ICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5QUVTOjpidWlsZEFsZ29yaXRobSk6IFVwZGF0ZWQgdG8gdXNlIG5hbWUgaW5zdGVhZAor
ICAgICAgICBvZiBuYW1lRm9ySWRlbnRpZmllci4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9Dcnlw
dG9LZXlITUFDLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlITUFDOjpi
dWlsZEFsZ29yaXRobSk6CisKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6
cGxhdGZvcm1FbmNyeXB0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisgICAgICAgICog
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KTogRGl0
dG8uCisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0pOiBSZW5hbWVkIGZyb20K
KyAgICAgICAgZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobSBhbmQgY2hhbmdlZCB0byB1c2Ug
T3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBhIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGFuZCBh
biBvdXQgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVNpZ24pOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtRGVjcnlwdCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRv
RGlnZXN0QWxnb3JpdGhtKTogUmVuYW1lZCBmcm9tCisgICAgICAgIGdldENyeXB0b0RpZ2VzdEFs
Z29yaXRobSBhbmQgY2hhbmdlZCB0byB1c2UgT3B0aW9uYWwgaW5zdGVhZCBvZgorICAgICAgICBh
IGJvb2xlYW4gcmV0dXJuIHZhbHVlIGFuZCBhbiBvdXQgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKTogVXNl
IEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KTogRGl0dG8uCisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KTogRGl0dG8uCisK
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9LZXlSU0E6OmJ1aWxkQWxnb3JpdGhtKTogVXBkYXRlZCB0byB1c2UgbmFtZSBp
bnN0ZWFkCisgICAgICAgIG9mIG5hbWVGb3JJZGVudGlmaWVyLgorCisyMDE2LTExLTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgc29tZSB1c2Ugb2Yg
RXhjZXB0aW9uQ29kZSBpbiBNZWRpYVN0cmVhbQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IDg4
NDViMzM0NzRjMzZhOGU5NjY4YTAzZTlhMmQ1MWVhZTBhZjZlZTkuLmI0MjVlZDU2OGRkMDEwMGEx
NTJlYWEzMTAyN2I2NTdiNTQ4N2RhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtODcsMTEg
Kzg3LDEzIEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1J
ZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIUNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5n
ZXRJZGVudGlmaWVyRm9yTmFtZShhbGdvcml0aG1OYW1lLCBhbGdvcml0aG1JZGVudGlmaWVyKSkg
eworICAgIGF1dG8gaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5pZGVudGlmaWVyKGFsZ29yaXRobU5hbWUpOworICAgIGlmICghaWRlbnRpZmllcikgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYWxnb3JpdGhtSWRlbnRpZmllciA9ICppZGVu
dGlmaWVyOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggODZmM2Y3YTQzYWE1ZTdi
YTczMGQ0YzMzNmE0YmU4ZWI1Y2EyN2FhOC4uOTEzOTgxYjNlNDEwOTRkMWQ3MThlNGU4MzNlZTAz
Y2M0NjFhNjY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtODEsOCArODEsOCBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1hbGl6ZUNyeXB0b0FsZ29yaXRobVBh
cmFtZQogICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHN0YXRlLCB2YWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xl
dG9uKCkuZ2V0SWRlbnRpZmllckZvck5hbWUocGFyYW1zLm5hbWUsIGlkZW50aWZpZXIpKSB7Cisg
ICAgICAgIGF1dG8gaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0
b24oKS5pZGVudGlmaWVyKHBhcmFtcy5uYW1lKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKSB7
CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtOTAsNyArOTAsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1h
bGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFtZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4gcmVzdWx0OwogICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbikg
ewogICAgICAgICBjYXNlIE9wZXJhdGlvbnM6OkRpZ2VzdDoKLSAgICAgICAgICAgIHN3aXRjaCAo
aWRlbnRpZmllcikgeworICAgICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKICAgICAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKICAgICAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IG5vcm1h
bGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFtZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgT3BlcmF0aW9uczo6R2VuZXJhdGVLZXk6Ci0gICAgICAgICAgICBz
d2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFf
djFfNTogewogICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihzdGF0ZSwgdmFsdWUpOwogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1lCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIp
IHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtD
UzFfdjFfNToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xODYsNyArMTg2LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWUKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKyAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBub3JtYWxpemVDcnlw
dG9BbGdvcml0aG1QYXJhbWUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIENyeXB0
b0tleVVzYWdlQml0bWFwIHRvQ3J5cHRvS2V5VXNhZ2VCaXRtYXAoY29uc3QgQ3J5cHRvS2V5VXNh
Z2UgdXNhZ2UpCitzdGF0aWMgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdG9DcnlwdG9LZXlVc2FnZUJp
dG1hcChDcnlwdG9LZXlVc2FnZSB1c2FnZSkKIHsKICAgICBzd2l0Y2ggKHVzYWdlKSB7CiAgICAg
Y2FzZSBDcnlwdG9LZXlVc2FnZTo6RW5jcnlwdDoKQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0aWMg
dm9pZCBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uR2VuZXJhdGVLZXlQcm9taXNlKEV4ZWNTdGF0ZSYg
c3RhdGUsIFJlZjxEZWZlcgogICAgIC8vIFRoZSBzcGVjIHN1Z2dlc3RzIHdlIHNob3VsZCBwZXJm
b3JtIHRoZSBmb2xsb3dpbmcgdGFzayBhc3luY2hyb25vdXNseSByZWdhcmRsZXNzIHdoYXQga2lu
ZCBvZiBrZXlzIGl0IHByb2R1Y2VzCiAgICAgLy8gYXMgb2YgMTEgRGVjZW1iZXIgMjAxNDogaHR0
cHM6Ly93d3cudzMub3JnL1RSL1dlYkNyeXB0b0FQSS8jU3VidGxlQ3J5cHRvLW1ldGhvZC1nZW5l
cmF0ZUtleQogICAgIC8vIFRoYXQncyBzaW1wbHkgbm90IGVmZmljaWVudCBmb3IgQUVTIGFuZCBI
TUFDIGtleXMuIFRoZXJlZm9yZSwgd2UgcGVyZm9ybSBpdCBhcyBhbiBhc3luYyB0YXNrIGNvbmRp
dGlvbmFsbHkuCi0gICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleShXVEZNb3ZlKHBhcmFtcyksIGV4
dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7
CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleShXVEZNb3ZlKHBhcmFtcyksIGV4dHJhY3RhYmxl
LCBrZXlVc2FnZXMsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogfQogCiBz
dGF0aWMgdm9pZCBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uSW1wb3J0S2V5UHJvbWlzZShFeGVjU3Rh
dGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5j
cHAKaW5kZXggYjQyZGUyMTA4ZWI0ZmI5NzUwM2Y4ODNjNGU1YWRmOTQ2MjljNTk1Yy4uYWM5YjVk
MzA0NzUzZmIwZDE3Mjc4YjI4MmU1YzhmYTRhMDY0ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlQWxn
b3JpdGhtRnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYQogCiAgICAgYXV0byByZXN1
bHQgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkuY3JlYXRlKGFsZ29yaXRo
bUlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBOT1RfU1VQUE9SVEVEX0VSUik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTYyLDcgKzE2Miw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQo
RXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VF
bmNyeXB0KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
S2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7Ci0gICAgICAgIHNldERPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIE5PVF9TVVBQT1JURURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCkBAIC0xODEsMTEgKzE4MSwxMCBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBw
ZXItPnJlamVjdChudWxscHRyKTsKICAgICB9OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgYWxnb3JpdGhtLT5lbmNyeXB0KCpwYXJhbWV0ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAgIGlm
IChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gYWxnb3JpdGhtLT5lbmNyeXB0
KCpwYXJhbWV0ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJv
bWlzZTsKQEAgLTIzNCwxMSArMjMzLDEwIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxw
dHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0t
PmRlY3J5cHQoKnBhcmFtZXRlcnMsICprZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0tPmRlY3J5cHQoKnBhcmFtZXRlcnMsICpr
ZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIHJldHVybiBwcm9taXNlOwpAQCAtMjg3LDEx
ICsyODUsMTAgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUm
IHN0YXRlKQogICAgICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsKIAotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+c2lnbigqcGFyYW1ldGVycywg
KmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxs
YmFjayksIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0
ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFsZ29yaXRobS0+c2lnbigqcGFyYW1ldGVycywgKmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwg
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0zNDYsMTEgKzM0MywxMCBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBl
ci0+cmVqZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBhbGdvcml0aG0tPnZlcmlmeSgqcGFyYW1ldGVycywgKmtleSwgc2lnbmF0dXJlLCBkYXRh
LCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gYWxnb3JpdGht
LT52ZXJpZnkoKnBhcmFtZXRlcnMsICprZXksIHNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29w
ZSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgcmV0dXJuIHByb21pc2U7CkBAIC0zODksMTEgKzM4NSwxMCBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3Jh
cHBlci0+cmVqZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBhbGdvcml0aG0tPmRpZ2VzdCgqcGFyYW1ldGVycywgZGF0YSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKLSAgICBpZiAoZWMp
IHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFsZ29yaXRobS0+ZGlnZXN0KCpwYXJh
bWV0ZXJzLCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNh
bGxiYWNrKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9w
YWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTQ0
NSwxMSArNDQwLDEwIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5
KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHdyYXBwZXItPnJlamVjdChudWxscHRyKTsKICAg
ICB9OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT5nZW5lcmF0
ZUtleSgqcGFyYW1ldGVycywgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFsZ29yaXRobS0+Z2VuZXJhdGVLZXkoKnBhcmFtZXRlcnMsIGV4
dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShm
YWlsdXJlQ2FsbGJhY2spLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0
YXRlKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9wYWdh
dGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvbWlzZTsKQEAgLTUwNywx
MCArNTAxLDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0
b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGkKICAgICBhdXRvIGtleURhdGEgPSBr
ZXlTZXJpYWxpemF0aW9uLT5rZXlEYXRhKCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+
aW1wb3J0S2V5KCpwYXJhbWV0ZXJzLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAgIGlm
IChlYykKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOworICAgIHByb3BhZ2F0
ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGFsZ29yaXRobS0+aW1wb3J0S2V5KCpwYXJhbWV0ZXJz
LCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZmFpbHVyZUNhbGxiYWNrKSkpOwogfQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5
cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTY5MSw5ICs2ODIsOCBAQCBKU1Zh
bHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIGF1dG8gZW5jcnlwdEZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgd3JhcHBlci0+cmVqZWN0KG51bGxwdHIpOwogICAgICAgICB9OwotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgYWxnb3JpdGhtLT5lbmNyeXB0Rm9yV3Jh
cEtleSgqcGFyYW1ldGVycywgKndyYXBwaW5nS2V5LCBzdGQ6Om1ha2VfcGFpcihleHBvcnRlZEtl
eURhdGEuZGF0YSgpLCBleHBvcnRlZEtleURhdGEuc2l6ZSgpKSwgV1RGTW92ZShlbmNyeXB0U3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlbmNyeXB0RmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAg
ICAgICBpZiAoZWMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhbGdvcml0aG0tPmVuY3J5cHRG
b3JXcmFwS2V5KCpwYXJhbWV0ZXJzLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9y
dGVkS2V5RGF0YS5kYXRhKCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZNb3ZlKGVuY3J5
cHRTdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2spKTsKKyAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFJlcG9ydCBmYWlsdXJlIGRldGFpbHMgdG8gY29uc29sZSwgYW5kIHBvc3NpYmx5IHRvIGNhbGxp
bmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIHBhc3MgZXJyb3Jz
IHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlvbnMuCiAgICAgICAgICAgICB3cmFw
cGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgICAgIH0KQEAgLTcwMywxMiArNjkzLDcgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICB3cmFwcGVyLT5yZWplY3QobnVsbHB0cik7CiAgICAgfTsKIAotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFdlYkNvcmU6OmV4cG9ydEtleShzdGF0ZSwga2V5Rm9ybWF0LCAqa2V5
LCBXVEZNb3ZlKGV4cG9ydFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXhwb3J0RmFpbHVyZUNh
bGxiYWNrKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogCiAgICAgcmV0dXJu
IHByb21pc2U7CiB9CkBAIC04MDgsMTEgKzc5MywxMCBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxl
Q3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICAgICAgd3JhcHBlci0+cmVq
ZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB1
bndyYXBBbGdvcml0aG0tPmRlY3J5cHRGb3JVbndyYXBLZXkoKnVud3JhcEFsZ29yaXRobVBhcmFt
ZXRlcnMsICp1bndyYXBwaW5nS2V5LCB3cmFwcGVkS2V5RGF0YSwgV1RGTW92ZShkZWNyeXB0U3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShkZWNyeXB0RmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAg
IGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7Ci0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gdW53cmFwQWxnb3JpdGht
LT5kZWNyeXB0Rm9yVW53cmFwS2V5KCp1bndyYXBBbGdvcml0aG1QYXJhbWV0ZXJzLCAqdW53cmFw
cGluZ0tleSwgd3JhcHBlZEtleURhdGEsIFdURk1vdmUoZGVjcnlwdFN1Y2Nlc3NDYWxsYmFjayks
IFdURk1vdmUoZGVjcnlwdEZhaWx1cmVDYWxsYmFjaykpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAg
ICAgcmV0dXJuIHByb21pc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwCmluZGV4IDFkMzFiNzRkMDYxNTkxNTI2NjkzNWM5OTU2YTVmNDIyN2MwYWYyYjYuLmRjNTgy
MDM3YWJiMjRjNjJjZGU1NWE2OTA5NTk3ZWQ0MmEwMGE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCkBAIC0zMiwxNSArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNyeXB0b0FsZ29yaXRobTo6Q3J5cHRvQWxnb3JpdGhtKCkKLXsKLX0KLQot
Q3J5cHRvQWxnb3JpdGhtOjp+Q3J5cHRvQWxnb3JpdGhtKCkKLXsKLX0KLQotdm9pZCBDcnlwdG9B
bGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2VuZXJhdGVLZXkoY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAg
ICBleGNlcHRpb25DYWxsYmFjayhOT1RfU1VQUE9SVEVEX0VSUik7CiB9CkBAIC01MCw1OSArNDIs
NTkgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG06OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnUKICAgICBleGNlcHRpb25DYWxsYmFjayhOT1Rf
U1VQUE9SVEVEX0VSUik7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OnNpZ24oY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjpzaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2
ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OnZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0
aG06OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikKIHsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIHJldHVy
biBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobTo6ZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5JiwgQ3J5cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobTo6ZGVyaXZlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgQ3J5
cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmKQogewotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtOjpkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgdW5zaWduZWQgbG9uZywgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5
cHRvQWxnb3JpdGhtOjpkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgdW5zaWduZWQgbG9uZywgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG06OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewot
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9T
VVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3Jh
cEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG06
OmVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGVuY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgcmV0
dXJuIGVuY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5
cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGRlY3J5cHQocGFyYW1ldGVycywg
a2V5LCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisgICAgcmV0dXJuIGRlY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IGJhMGRlZTc3ODMzN2NjM2RiZmNmNGExNjI4
N2YyYTZiMGJjMjZkZmYuLmUxYzZiYWUwOTg1ZGQ5YTdmZjM1ZjFhMzQ5ODcxMjg1ODQwMTI2MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKQEAgLTI3LDIwICsyNywx
NiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleVVzYWdlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJK
c29uV2ViS2V5LmgiCiAjaW5jbHVkZSAiU3VidGxlQ3J5cHRvLmgiCiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM7CiBjbGFzcyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZDsKIGNs
YXNzIENyeXB0b0tleTsKQEAgLTQ5LDEzICs0NSwxMyBAQCBjbGFzcyBDcnlwdG9LZXlEYXRhOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogLy8gRGF0YSBpcyBtdXRhYmxlLCBzbyBh
c3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZpcnN0LgotdHlwZWRlZiBzdGQ6OnBhaXI8
Y29uc3QgdWludDhfdCosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9uRGF0YTsKK3VzaW5nIENyeXB0
b09wZXJhdGlvbkRhdGEgPSBzdGQ6OnBhaXI8Y29uc3QgdWludDhfdCosIHNpemVfdD47CiAKIHVz
aW5nIEtleURhdGEgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgSnNvbldlYktleT47CiAKIGNs
YXNzIENyeXB0b0FsZ29yaXRobSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0FsZ29yaXRobT4g
ewogcHVibGljOgotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobSgpOworICAgIHZpcnR1YWwg
fkNyeXB0b0FsZ29yaXRobSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCkBAIC02NiwyNiArNjIsMjMg
QEAgcHVibGljOgogICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgp
PjsKICAgICB1c2luZyBFeGNlcHRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNl
cHRpb25Db2RlKT47CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtl
eURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBk
ZXByZWNhdGVkLgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzaWdu
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
dm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZ2Vz
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBkZXJpdmVLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIENyeXB0
b0FsZ29yaXRobSogZGVyaXZlZEtleVR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyaXZlQml0cyhjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYgYmFzZUtl
eSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gZGVjcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9p
ZD4gdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3QoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGdlbmVyYXRlS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZpcnR1YWwg
RXhjZXB0aW9uT3I8dm9pZD4gZGVyaXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCBDcnlwdG9BbGdvcml0aG0q
IGRlcml2ZWRLZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2aXJ0
dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogCiAgICAgLy8gVGhlc2UgYXJlIG9ubHkgZGlm
ZmVyZW50IGZyb20gZW5jcnlwdC9kZWNyeXB0IGJlY2F1c2Ugc29tZSBhbGdvcml0aG1zIG1heSBu
b3QgZXhwb3NlIGVuY3J5cHQvZGVjcnlwdC4KLSAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdEZvcldy
YXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJik7Ci0KLXByb3RlY3RlZDoKLSAgICBDcnlwdG9BbGdvcml0aG0oKTsKKyAg
ICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjayk7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBkZWNyeXB0Rm9y
VW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmNwcAppbmRleCAzMDdlMzU2ZjVlNTU2MTQyZTBhOWMwMzUyMGRlMGVkYjc2MjljZDRm
Li4yZmNjMzExOTljYTg1YWJiODUwYTg0ZDEzMzBkZGVjZTRkNDc4ZTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTM0LDY1
ICszNCw2NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBTdGF0aWNMb2NrIHJl
Z2lzdHJ5TXV0ZXg7CisKIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk+IHJlZ2lzdHJ5OwotCiAgICAgcmV0dXJuIHJlZ2lzdHJ5OwogfQog
Ci1zdGF0aWMgU3RhdGljTG9jayByZWdpc3RyeU11dGV4OwotCiBDcnlwdG9BbGdvcml0aG1SZWdp
c3RyeTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkoKQogewogICAgIHBsYXRmb3JtUmVnaXN0ZXJB
bGdvcml0aG1zKCk7CiB9CiAKLWJvb2wgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmdldElkZW50
aWZpZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciYgcmVzdWx0KQorT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlm
IChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
TnVsbG9wdDsKIAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5
TXV0ZXgpOwogCi0gICAgYXV0byBpdGVyID0gbV9uYW1lVG9JZGVudGlmaWVyTWFwLmZpbmQobmFt
ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgaWYgKGl0ZXIgPT0gbV9uYW1lVG9JZGVudGlmaWVyTWFw
LmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IEhvdyBpcyBpdCBo
ZWxwZnVsIHRvIGNhbGwgaXNvbGF0ZWRDb3B5IG9uIHRoZSBhcmd1bWVudCB0byBmaW5kPworICAg
IGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnMuZmluZChuYW1lLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSBtX2lkZW50aWZpZXJzLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKIAotICAgIHJlc3VsdCA9IGl0ZXItPnZhbHVlOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBpZGVudGlmaWVyLT52YWx1ZTsKIH0KIAotU3RyaW5nIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpuYW1lRm9ySWRlbnRpZmllcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIpCitTdHJpbmcgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6Om5hbWUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCi0gICAgcmV0dXJuIG1faWRlbnRp
ZmllclRvTmFtZU1hcC5nZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKS5pc29s
YXRlZENvcHkoKTsKKyAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CisgICAgaWYgKGNvbnRydWN0b3IgPT0g
bV9jb25zdHJ1Y3RvcnMuZW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4g
Y29udHJ1Y3Rvci0+dmFsdWUuZmlyc3QuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNM
b2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCi0gICAgYXV0byBpdGVyID0gbV9pZGVudGlmaWVy
VG9Db25zdHJ1Y3Rvck1hcC5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7
Ci0gICAgaWYgKGl0ZXIgPT0gbV9pZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcC5lbmQoKSkKKyAg
ICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpZGVudGlmaWVyKSk7CisgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGl0ZXItPnZhbHVl
KCk7CisgICAgcmV0dXJuIGNvbnRydWN0b3ItPnZhbHVlLnNlY29uZCgpOwogfQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5h
bWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGht
Q29uc3RydWN0b3IgY29uc3RydWN0b3IpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xv
Y2s+IGxvY2socmVnaXN0cnlNdXRleCk7CiAKLSAgICBib29sIGFkZGVkID0gbV9uYW1lVG9JZGVu
dGlmaWVyTWFwLmFkZChuYW1lLCBpZGVudGlmaWVyKS5pc05ld0VudHJ5OwotICAgIEFTU0VSVF9V
TlVTRUQoYWRkZWQsIGFkZGVkKTsKLQotICAgIGFkZGVkID0gbV9pZGVudGlmaWVyVG9OYW1lTWFw
LmFkZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllciksIG5hbWUpLmlzTmV3RW50cnk7
Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRlZCwgYWRkZWQpOworICAgIEFTU0VSVCghbV9pZGVudGlm
aWVycy5jb250YWlucyhuYW1lKSk7CisgICAgQVNTRVJUKCFtX2NvbnN0cnVjdG9ycy5jb250YWlu
cyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpKTsKIAotICAgIGFkZGVkID0gbV9p
ZGVudGlmaWVyVG9Db25zdHJ1Y3Rvck1hcC5hZGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50
aWZpZXIpLCBjb25zdHJ1Y3RvcikuaXNOZXdFbnRyeTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZGVk
LCBhZGRlZCk7CisgICAgbV9pZGVudGlmaWVycy5hZGQobmFtZSwgaWRlbnRpZmllcik7CisgICAg
bV9jb25zdHJ1Y3RvcnMuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSwgc3Rk
OjptYWtlX3BhaXIobmFtZSwgY29uc3RydWN0b3IpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IDdiM2E2ZTk3M2Y1YzUy
NzhiYTU2MjdhNWNmZDE4MmQ4OTM3OGU3OTMuLjNkMTU0NDU3MjBkNDUyYmZiYmJjMjMzNTlhN2Y2
ZWIzNWRlOTNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtOwogCiBj
bGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7CkBAIC00Niw4ICs0NCw4IEBAIGNsYXNzIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgYm9vbCBnZXRJZGVudGlmaWVyRm9yTmFt
ZShjb25zdCBTdHJpbmcmLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJik7Ci0gICAgU3RyaW5n
IG5hbWVGb3JJZGVudGlmaWVyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOworICAgIE9wdGlv
bmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CisgICAgU3RyaW5nIG5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAKICAgICBSZWZQ
dHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAK
QEAgLTU1LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgp
OwogICAgIHZvaWQgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMoKTsKIAotICAgIHR5cGVkZWYg
UmVmPENyeXB0b0FsZ29yaXRobT4gKCpDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvcikoKTsKKyAg
ICB1c2luZyBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvciA9IFJlZjxDcnlwdG9BbGdvcml0aG0+
ICgqKSgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxnb3JpdGhtQ2xhc3M+IHZvaWQgcmVn
aXN0ZXJBbGdvcml0aG0oKQogICAgIHsKQEAgLTY0LDkgKzYyLDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVnaXN0ZXJBbGdvcml0aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcik7CiAKLSAgICBIYXNoTWFw
PFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX25hbWVUb0lkZW50aWZpZXJNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5n
PiBtX2lkZW50aWZpZXJUb05hbWVNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgQ3J5cHRvQWxn
b3JpdGhtQ29uc3RydWN0b3I+IG1faWRlbnRpZmllclRvQ29uc3RydWN0b3JNYXA7CisgICAgSGFz
aE1hcDxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gbV9pZGVudGlmaWVyczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnBhaXI8
U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcj4+IG1fY29uc3RydWN0b3JzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAppbmRleCAxY2Zj
MjkwZGQ0OGI1ZTEzYmJiODk4Zjk1NzMyMjEwNmRkZjA2MWNmLi40Y2FlMTdlMTA2NTc0NWU3YjI4
NjAzNzk4NGYzMTJhODdlMDkwYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcApAQCAtMzcsMjEg
KzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6c19uYW1lID0gIkFFUy1DQkMiOwotCiBzdGF0aWMgaW5saW5l
IGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19DQkMoQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIHJldHVybiB1c2FnZXMgJiAoQ3J5cHRvS2V5VXNh
Z2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUtleSB8
IENyeXB0b0tleVVzYWdlRGVyaXZlQml0cyk7CiB9CiAKLUNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OkNyeXB0b0FsZ29yaXRobUFFU19DQkMoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
Ojp+Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQygpCi17Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQyk7CkBAIC02NywxMyArNTcsMTIgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmEKICAgICBpZiAoa2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSAhPSBz
X2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoaXM8Q3J5cHRv
S2V5QUVTPihrZXkpKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgYXV0byYgYWVzUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcz4oKnBhcmFtZXRlcnMp
OworICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlHZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKIAogICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9y
Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQyh1c2FnZXMpKSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKFNZTlRBWF9FUlIpOwpAQCAtMTI4LDUyICsxMTcsNDMgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlE
YXRhJiYKICAgICBjYWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFr
ZXlBbGdvcml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBsYXRm
b3JtRW5jcnlwdChhZXNDQkNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSks
IGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
KyAgICBhdXRvJiBhZXNDQkNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1N
YXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JD
UGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfQ0JDOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgYWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAg
aWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHBsYXRmb3JtRGVjcnlwdChhZXNDQkNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+
KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKKyAgICBhdXRvJiBhZXNDQkNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdv
cml0aG1NYXRjaGVzKGFlc0NCQ1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybURlY3J5cHQo
YWVzQ0JDUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUFFU19DQkM6Omdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtl
eU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzS2V5R2VuUGFyYW1zRGVwcmVjYXRlZCYgYWVzUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAg
IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5Q
YXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKIAotICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+
IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NCQywgYWVzUGFyYW1ldGVycy5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ0JDLCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBjYWxsYmFj
ayhyZXN1bHQuZ2V0KCksIG51bGxwdHIpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBpZiAoIWlzPENyeXB0b0tleURhdGFPY3Rl
dFNlcXVlbmNlPihrZXlEYXRhKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnN0IENyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlJiBrZXlEYXRhT2N0ZXRTZXF1ZW5jZSA9IGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlPihrZXlEYXRhKTsKLSAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDLCBrZXlE
YXRhT2N0ZXRTZXF1ZW5jZS5vY3RldFNlcXVlbmNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZSk7Ci0g
ICAgY2FsbGJhY2soKnJlc3VsdCk7CisgICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1
ZW5jZT4oa2V5RGF0YSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVE
X0VSUiB9OworICAgIGF1dG8mIGtleURhdGFPY3RldFNlcXVlbmNlID0gZG93bmNhc3Q8Q3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURhdGEpOworICAgIGNhbGxiYWNrKENyeXB0b0tleUFF
Uzo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkMsIGtleURhdGFPY3Rl
dFNlcXVlbmNlLm9jdGV0U2VxdWVuY2UoKSwgZXh0cmFjdGFibGUsIHVzYWdlKSk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCmluZGV4IDU5NDA4YzkzNTM5NTdmMjky
NjY1YjRhZTI2YzBlOTBhMDM2OGFmMTUuLjJlYjRiNDE1NGYyOTIwNjE1NjExMmQ0YzIyOTFiOWI1
ODk1N2E1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgKQEAgLTM2LDI5ICszNiwyNSBAQCBjbGFzcyBD
cnlwdG9LZXlBRVM7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobUFFU19DQkMgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM7Ci0KKyAgICBz
dGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJBRVMtQ0JDIjsKKyAgICBzdGF0
aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzsKICAgICBzdGF0aWMgUmVmPENyeXB0b0Fs
Z29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQygpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5h
bDsKICAgICB2b2lkIGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYm
LCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRl
cHJlY2F0ZWQuCi0gICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KLXByaXZh
dGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQygpOwotICAgIHZpcnR1YWwgfkNyeXB0b0Fs
Z29yaXRobUFFU19DQkMoKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGltcG9ydEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKIAogICAgIGJvb2wga2V5QWxnb3JpdGht
TWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiBhbGdv
cml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1Bh
cmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1FbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
bGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5kZXggYzhiMjNjNmZmY2Zj
NjZiNGYwNzA3MzMyMWFlZDZkNWQxNWU2OThmOC4uZTZiMDRjNDE1OTAzMDU1MzhhNDYxZmFjMDZm
YWVjZTIyMDQyZWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC0zNiwyMSArMzYsMTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdvcml0
aG1BRVNfS1c6OnNfbmFtZSA9ICJBRVMtS1ciOwotCiBzdGF0aWMgaW5saW5lIGJvb2wgdXNhZ2Vz
QXJlSW52YWxpZEZvckNyeXB0b0FsZ29yaXRobUFFU19LVyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCiB7CiAgICAgcmV0dXJuIHVzYWdlcyAmIChDcnlwdG9LZXlVc2FnZVNpZ24gfCBDcnlw
dG9LZXlVc2FnZVZlcmlmeSB8IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5IHwgQ3J5cHRvS2V5VXNh
Z2VEZXJpdmVCaXRzIHwgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VEZWNy
eXB0KTsKIH0KIAotQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpDcnlwdG9BbGdvcml0aG1BRVNfS1co
KQotewotfQotCi1DcnlwdG9BbGdvcml0aG1BRVNfS1c6On5DcnlwdG9BbGdvcml0aG1BRVNfS1co
KQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmNy
ZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
KTsKQEAgLTY2LDIwICs1NiwxNyBAQCBib29sIENyeXB0b0FsZ29yaXRobUFFU19LVzo6a2V5QWxn
b3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9LZXkmIGtleSkgY29uc3QKICAgICBpZiAoa2V5LmFs
Z29yaXRobUlkZW50aWZpZXIoKSAhPSBzX2lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBBU1NFUlQoaXM8Q3J5cHRvS2V5QUVTPihrZXkpKTsKLQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpn
ZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQogewotICAgIGNv
bnN0IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlH
ZW5QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQogICAgIGlmICh1c2FnZXNBcmVJbnZhbGlkRm9yQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXKHVzYWdlcykpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
U1lOVEFYX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9
IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tX
LCBhZXNQYXJhbWV0ZXJzLmxlbmd0aCwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byBy
ZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmdlbmVyYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19LVywgZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPigqcGFyYW1l
dGVycykubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEwMSw3ICs4OCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYKICAgICAgICAgcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFyYW1ldGVycy0+aWRlbnRpZmllciwgV1RG
TW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3
azogewotICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShzaXplX3QgbGVuZ3RoLCBj
b25zdCBPcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+IGJvb2wgeworICAgICAgICByZXN1bHQgPSBD
cnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdU
Rjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgW10oc2l6ZV90
IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKICAgICAgICAg
ICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0tleUFFUzo6c19s
ZW5ndGgxMjg6CiAgICAgICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0g
IkExMjhLVyI7CkBAIC0xMTEsOCArOTgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6
aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0gIkEyNTZLVyI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH07Ci0gICAgICAg
IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBhcmFtZXRlcnMtPmlkZW50aWZpZXIs
IFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
LCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMTI3LDQ4ICsxMTMsMzcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1BRVNfS1c6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQs
IEtleURhdGEmJgogICAgIGNhbGxiYWNrKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENy
eXB0b0FsZ29yaXRobUFFU19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hl
cyhrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihr
ZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtleSkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5
cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0Rl
cHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6ZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtl
eSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHBsYXRmb3JtRGVjcnlwdChkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSks
IGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
KyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlwdChk
b3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6
Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zRGVw
cmVjYXRlZCYgYWVzUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0tleUdl
blBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgUmVmUHRyPENyeXB0b0tleUFF
Uz4gcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjpnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1csIGFlc1BhcmFtZXRlcnMubGVuZ3RoLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
KyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6Z2VuZXJhdGUoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXLCBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNLZXlHZW5QYXJh
bXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKS5sZW5ndGgsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwog
ICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2FsbGJhY2socmVzdWx0
LmdldCgpLCBudWxscHRyKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29y
aXRobUFFU19LVzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmKQogewotICAgIGlmICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+
KGtleURhdGEpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY29uc3QgQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UmIGtleURh
dGFPY3RldFNlcXVlbmNlID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtl
eURhdGEpOwotICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdCA9IENyeXB0b0tleUFFUzo6
Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVywga2V5RGF0YU9jdGV0U2Vx
dWVuY2Uub2N0ZXRTZXF1ZW5jZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2UpOwotICAgIGNhbGxiYWNr
KCpyZXN1bHQpOworICAgIGlmICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KGtleURh
dGEpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAg
ICBjYWxsYmFjayhDcnlwdG9LZXlBRVM6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfS1csIGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKS5v
Y3RldFNlcXVlbmNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZSkpOworICAgIHJldHVybiB7IH07CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19LVy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXLmgKaW5kZXggMzEwYjZhMTM4MmVlZDcwY2E0ZGVlYzU5Mzg3MzRl
NGE3OTNkOGY5OC4uNWQ1YTY4ZTIzYTk0ODc3YjIyNmI3OTA4NWMwOGQ0YjY1YjI2M2MxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXLmgKQEAgLTM1LDI5ICszNSwyNSBAQCBjbGFzcyBDcnlwdG9LZXlBRVM7CiAK
IGNsYXNzIENyeXB0b0FsZ29yaXRobUFFU19LVyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0
aG0gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAg
c3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBzX25hbWUgPSAiQUVTLUtXIjsKKyAgICBzdGF0aWMgY29uc3RleHByIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0tXOwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsK
IAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJy
aWRlOworcHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1BRVNfS1coKSA9IGRlZmF1bHQ7Cisg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIGZpbmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5h
bDsKIAotICAgIC8vIFRoZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQg
ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQotcHJp
dmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1BRVNfS1coKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9B
bGdvcml0aG1BRVNfS1coKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmNyeXB0Rm9yV3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0
b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBp
bXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAs
IEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAK
ICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0g
ICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCA0ZDk2OTljOWI3ZmVjZGQw
NTU1OTI1MWRmYTY4YWM1YTQ5Mjk3ODBiLi5kMGE3NDc1OGViOTE2ZDZmNDE1Y2U2NDgyOWQ1YjU5
NDBlNTIxYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtMzcsMjEgKzM3LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6
c19uYW1lID0gIkhNQUMiOwotCiBzdGF0aWMgaW5saW5lIGJvb2wgdXNhZ2VzQXJlSW52YWxpZEZv
ckNyeXB0b0FsZ29yaXRobUhNQUMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAg
IHJldHVybiB1c2FnZXMgJiAoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VE
ZWNyeXB0IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJp
dHMgfCBDcnlwdG9LZXlVc2FnZVdyYXBLZXkgfCBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSk7CiB9
CiAKLUNyeXB0b0FsZ29yaXRobUhNQUM6OkNyeXB0b0FsZ29yaXRobUhNQUMoKQotewotfQotCi1D
cnlwdG9BbGdvcml0aG1ITUFDOjp+Q3J5cHRvQWxnb3JpdGhtSE1BQygpCi17Ci19Ci0KIFJlZjxD
cnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobUhNQUM6OmNyZWF0ZSgpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtSE1BQyk7CkBAIC03Myw3ICs2Myw3IEBA
IGJvb2wgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlw
dG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JikKIHsKICAgICBjb25zdCBhdXRvJiBobWFjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KCpwYXJhbWV0ZXJz
KTsKIApAQCAtMTQzLDU1ICsxMzMsNDAgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBv
cnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGEKICAgICBj
YWxsYmFjaygqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
CiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+
KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGhtYWNQYXJhbWV0
ZXJzLCBrZXkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0
PENyeXB0b0tleUhNQUM+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZh
aWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBp
ZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoaG1hY1BhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9y
bVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGRhdGEs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobUhNQUM6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobUhNQUM6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
JiBobWFjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXBy
ZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhobWFj
UGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1WZXJpZnkoaG1hY1BhcmFtZXRlcnMs
IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGV4cGVjdGVkU2lnbmF0dXJlLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYXV0
byYgaG1hY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVw
cmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGhtYWNQ
YXJhbWV0ZXJzLCBrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRF
RF9FUlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoaG1hY1BhcmFtZXRlcnMsIGRvd25j
YXN0PENyeXB0b0tleUhNQUM+KGtleSksIGV4cGVjdGVkU2lnbmF0dXJlLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFp
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtc0RlcHJlY2F0ZWQmIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgUmVmUHRyPENy
eXB0b0tleUhNQUM+IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0
ZXJzLmhhc0xlbmd0aCA/IGhtYWNQYXJhbWV0ZXJzLmxlbmd0aCA6IDAsIGhtYWNQYXJhbWV0ZXJz
Lmhhc2gsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8mIGhtYWNQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFt
ZXRlcnMuaGFzTGVuZ3RoID8gaG1hY1BhcmFtZXRlcnMubGVuZ3RoIDogMCwgaG1hY1BhcmFtZXRl
cnMuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9Ci0KICAgICBjYWxsYmFjayhyZXN1bHQuZ2V0KCksIG51bGxwdHIpOworICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1w
b3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYpCiB7Ci0gICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0
YSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjb25zdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSYga2V5RGF0YU9jdGV0
U2VxdWVuY2UgPSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4oa2V5RGF0YSk7
Ci0KLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgaG1hY1Bh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZD4o
cGFyYW1ldGVycyk7Ci0KLSAgICBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gcmVzdWx0ID0gQ3J5cHRv
S2V5SE1BQzo6Y3JlYXRlKGtleURhdGFPY3RldFNlcXVlbmNlLm9jdGV0U2VxdWVuY2UoKSwgaG1h
Y1BhcmFtZXRlcnMuaGFzaCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKLSAgICBjYWxsYmFjaygqcmVz
dWx0KTsKKyAgICBpZiAoIWlzPENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihrZXlEYXRhKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgY2Fs
bGJhY2soQ3J5cHRvS2V5SE1BQzo6Y3JlYXRlKGRvd25jYXN0PENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlPihrZXlEYXRhKS5vY3RldFNlcXVlbmNlKCksIGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bUhtYWNQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKS5oYXNoLCBleHRyYWN0YWJsZSwgdXNh
Z2UpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKaW5kZXggYmY0NTA1OGJh
YzljNzE4ZGZhNjUwZDAzYjJmYjRmMTg1ZGIxNmQwMy4uYzk1MjAzMzQwZjg4MmU4ODNkYTFiZTgy
ZTNhZGI5ZGQwZDJhMzg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaApAQCAtMzYsMjkgKzM2LDI2IEBAIGNsYXNz
IENyeXB0b0tleUhNQUM7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobUhNQUMgZmluYWwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOwotICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM7Ci0KKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFtZSA9ICJITUFDIjsKKyAgICBzdGF0aWMgY29u
c3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SE1BQzsKICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4g
Y3JlYXRlKCk7CiAKLSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgQ3J5cHRvQWxnb3JpdGhtSE1BQygpID0gZGVm
YXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKICAgICB2b2lk
IGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNr
JiYpIGZpbmFsOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRlcHJlY2F0ZWQuCi0g
ICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
c2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1ITUFDKCk7Ci0gICAg
dmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtSE1BQygpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0
IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1B
QyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFt
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlITUFDJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDFk
MjBjODBmNjQ0MjcwZGU2OWYzMTBlMmMxYzU4ZGY5ZjhhY2Q2Y2EuLjA4MWExYjZlM2Q4ZGQ0MTI1
OTEzNGU0MGQ4YTFmNzUzYWY2NTA1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuY3BwCkBAIC0zOCwxNiArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNv
bnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnNfbmFtZSA9
ICJSU0FFUy1QS0NTMS12MV81IjsKLQotQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNSgpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6On5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCkKLXsK
LX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81KTsKQEAgLTY3LDcgKzU3LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYga2V5
KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1l
dGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlP
cktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIGNvbnN0
IGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5Q
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKIApAQCAtODUsNyArNzUsNyBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbAogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICB9
OwogICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVz
dCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdC4KLSAgICBDcnlw
dG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19Q
S0NTMV92MV81LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSwgZmFsc2UsIHJzYVBh
cmFtZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudFZlY3Rv
cigpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEsIGZhbHNlLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNM
ZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnRWZWN0b3IoKSwgZXh0cmFjdGFibGUs
IHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFj
ayksICZjb250ZXh0KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0
YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBL
ZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrKQpAQCAtMTIxLDQ5ICsxMTEsNDEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LAogICAgIGNh
bGxiYWNrKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzU6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBw
bGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgaWYgKCFrZXlB
bGdvcml0aG1NYXRjaGVzKGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQ
UE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMoa2V5KSkgewotICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1E
ZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFj
ayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGlmICgha2V5QWxnb3JpdGht
TWF0Y2hlcyhrZXkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9F
UlIgfTsKKyAgICByZXR1cm4gcGxhdGZvcm1EZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0V4Y2VwdGlvbk9y
PHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FL
ZXlHZW5QYXJhbXNEZXByZWNhdGVkJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7Ci0KKyAgICBhdXRv
JiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1z
RGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CiAgICAgYXV0byBrZXlQYWlyQ2FsbGJhY2sgPSBbY2Fw
dHVyZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDcnlwdG9LZXlQYWlyJiBwYWlyKSB7
CiAgICAgICAgIGNhcHR1cmVkQ2FsbGJhY2sobnVsbHB0ciwgJnBhaXIpOwogICAgIH07Ci0KLSAg
ICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FFU19QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFz
aCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9u
ZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFy
YW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1
c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdl
cywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksICZj
b250ZXh0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFy
YW1zV2l0aEhhc2hEZXByZWNhdGVkJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLSAgICBj
b25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0
PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKLQotICAgIFJlZlB0cjxDcnlw
dG9LZXlSU0E+IHJlc3VsdCA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzUsIHJzYVBhcmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1l
dGVycy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUNvbXBvbmVudHMg
PSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oa2V5RGF0YSk7CisgICAgYXV0
byByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FFU19QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFz
SGFzaCwgcnNhQ29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlKTsKICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KLQogICAgIGNhbGxiYWNrKCpyZXN1bHQpOworICAgIHJldHVy
biB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAppbmRleCBi
ODY5OThjYmIwMDFlMjY3ZTIyMjQ5NjlhMTllNTlhYmZhNzJmMTk1Li5lYmJlMDJhNGZkZjA0Njhm
YWMxNDk2ZTdiOTQ5NzJjZmRjZjY2MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5oCkBAIC0zNiwyOSArMzYsMjYgQEAgY2xhc3MgQ3J5cHRvS2V5UlNBOwogCiBjbGFzcyBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81IGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29y
aXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAg
ICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OwotCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzX25hbWUgPSAiUlNBRVMtUEtDUzEtdjFfNSI7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU7CiAgICAgc3RhdGlj
IFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAgIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUoKSA9IGRlZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGdlbmVy
YXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGZp
bmFsOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgZmluYWw7CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRv
OjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgd2lsbCBiZSBkZXByZWNhdGVkLgotICAgIHZvaWQgZW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktl
eVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBnZW5lcmF0ZUtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5
cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjayk7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzUuY3BwCmluZGV4IDQ5NDNkMjU3NzllMjhlOWQ1NmQxMGQ3MWI4ZmQ4
NGIxNTlkNjI1MjUuLmYwNDIyZDZlMTlhMjhlNjdkOWI5MzM1MDMwYzc5NDA0MGNkNDhiMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKQEAgLTQwLDE2ICs0MCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNfbmFtZSA9ICJSU0FTU0EtUEtDUzEtdjFfNSI7Ci0K
LUNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpDcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNSgpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp+
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKQotewotfQotCiBSZWY8Q3J5cHRvQWxn
b3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSk7
CkBAIC03Miw3ICs2Miw3IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRl
S2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBh
cmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBjb25zdCBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPigq
cGFyYW1ldGVycyk7CiAKQEAgLTg5LDcgKzc5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0EK
ICAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFtjYXB0dXJlZENhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKCkgewogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKICAgICB9OwotICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2hJ
ZGVudGlmaWVyLCB0cnVlLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRl
cnMucHVibGljRXhwb25lbnRWZWN0b3IoKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShr
ZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGNvbnRleHQpOworICAg
IENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCB0cnVlLCByc2FQ
YXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnRWZWN0
b3IoKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZN
b3ZlKGZhaWx1cmVDYWxsYmFjayksICZjb250ZXh0KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZv
cm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaykKQEAgLTE1MCw1MyArMTQwLDQzIEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZv
cm1hdCBmb3JtYXQsCiAgICAgY2FsbGJhY2soKnJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYgcnNhU1NBUGFyYW1ldGVy
cyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFt
ZXRlcnMpOwotCi0gICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMs
IGtleSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHBsYXRmb3JtU2lnbihyc2FTU0FQYXJhbWV0ZXJzLCBkb3duY2FzdDxD
cnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1
cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiByc2FTU0FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZD4ocGFyYW1ldGVycyk7CisgICAg
aWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMsIGtleSkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0
Zm9ybVNpZ24ocnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBk
YXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3Nh
UGFyYW1zRGVwcmVjYXRlZCYgcnNhU1NBUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYgKCFrZXlB
bGdvcml0aG1NYXRjaGVzKHJzYVNTQVBhcmFtZXRlcnMsIGtleSkpIHsKLSAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBsYXRmb3Jt
VmVyaWZ5KHJzYVNTQVBhcmFtZXRlcnMsICBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIHNp
Z25hdHVyZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNr
KSwgZWMpOworICAgIGF1dG8mIHJzYVNTQVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBpZiAoIWtleUFs
Z29yaXRobU1hdGNoZXMocnNhU1NBUGFyYW1ldGVycywga2V5KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtVmVyaWZ5
KHJzYVNTQVBhcmFtZXRlcnMsICBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIHNpZ25hdHVy
ZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYUtl
eUdlblBhcmFtc0RlcHJlY2F0ZWQmIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FLZXlHZW5QYXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQorICAgIGF1dG8m
IHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKICAgICBhdXRvIGtleVBhaXJDYWxsYmFjayA9IFtjYXB0
dXJlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENyeXB0b0tleVBhaXImIHBhaXIpIHsK
ICAgICAgICAgY2FwdHVyZWRDYWxsYmFjayhudWxscHRyLCAmcGFpcik7CiAgICAgfTsKLQotICAg
IENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81LCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFz
aCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9u
ZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGtleVBhaXJDYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgY29udGV4dCk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzUsIHJzYVBh
cmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1ldGVycy5oYXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVs
dXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGljRXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCAm
Y29udGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5Q2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
K0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjppbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5
UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkJiByc2FLZXlQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsK
LSAgICBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRv
d25jYXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKLQotICAgIFJlZlB0
cjxDcnlwdG9LZXlSU0E+IHJlc3VsdCA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81LCByc2FLZXlQYXJhbWV0ZXJzLmhhc2gs
IHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhQ29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlKTsKKyAgICBhdXRvJiByc2FLZXlQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhS2V5UGFyYW1zV2l0aEhhc2hEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRv
JiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KGtl
eURhdGEpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzUsIHJzYUtleVBhcmFtZXRlcnMuaGFz
aCwgcnNhS2V5UGFyYW1ldGVycy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwg
dXNhZ2UpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgY2FsbGJh
Y2soKnJlc3VsdCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmgKaW5kZXggMzkxNTVhMDMxMzAyYTcxZTAxMmQ0Y2QwZTFjNGQwNTc2
Y2Q4MzZlOC4uZWU5NzViMmFjMTgyYWY2MzUyMzNiYjYyMGFhMDRjYmVjZWUwZWNjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oCkBAIC0zNiwyOSArMzYsMjUgQEAgY2xh
c3MgQ3J5cHRvS2V5UlNBOwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
U1NBX1BLQ1MxX3YxXzU7Ci0KKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHNfbmFt
ZSA9ICJSU0FTU0EtUEtDUzEtdjFfNSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQVNTQV9QS0NTMV92MV81OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVh
dGUoKTsKIAotICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IG92ZXJyaWRlOworcHJpdmF0ZToKKyAgICBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NSgpID0gZGVmYXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgZmluYWw7CisgICAgdm9pZCBnZW5lcmF0ZUtl
eShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBmaW5hbDsK
ICAgICB2b2lkIGltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgLy8gVGhlIGZvbGxvd2luZyB3aWxsIGJlIGRlcHJl
Y2F0ZWQuCi0gICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwg
S2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZv
aWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNSgpOwotICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81KCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2lnbihjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsK
IAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
KSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRm
b3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmNwcAppbmRleCA3MjZhYzA3ZGU1Mjg3NzQ0OGRkNTlhMDViNzE0ZDEzMTRl
NDFkY2RmLi41YTBkMzM0ZWEwODY3ODQ3ZTczOTg5NTVhMTcwMDQ1ZjhkNDNhYTBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVAuY3BwCkBAIC00MCwxNiArNDAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpzX25hbWUg
PSAiUlNBLU9BRVAiOwotCi1DcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Q3J5cHRvQWxnb3JpdGht
UlNBX09BRVAoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6fkNyeXB0b0FsZ29y
aXRobVJTQV9PQUVQKCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVA6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVApOwpAQCAtNzIsNyArNjIsNyBAQCBib29sIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9h
ZXBQYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgY29uc3QgYXV0byYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4o
KnBhcmFtZXRlcnMpOwogCkBAIC04OSw3ICs3OSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbY2FwdHVyZWRDYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXSgpIHsKICAgICAgICAgY2FwdHVyZWRDYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7CiAgICAgfTsKLSAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgdHJ1ZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1Ymxp
Y0V4cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNh
bGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBjb250ZXh0KTsKKyAgICBDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCwg
cnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgdHJ1ZSwgcnNhUGFyYW1ldGVycy5tb2R1bHVz
TGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50VmVjdG9yKCksIGV4dHJhY3RhYmxl
LCB1c2FnZXMsIFdURk1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spLCAmY29udGV4dCk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9y
dEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJz
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCkBA
IC0xNjEsNTMgKzE1MSw0MyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRL
ZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJgogICAgIGNhbGxiYWNr
KCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNh
dGVkJiByc2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQ
YXJhbXNEZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKLQotICAgIGlmICgha2V5QWxnb3JpdGhtTWF0
Y2hlcyhyc2FPQUVQUGFyYW1ldGVycywga2V5KSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcGxhdGZvcm1FbmNyeXB0KHJz
YU9BRVBQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhdXRvJiBy
c2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNE
ZXByZWNhdGVkPihwYXJhbWV0ZXJzKTsKKyAgICBpZiAoIWtleUFsZ29yaXRobU1hdGNoZXMocnNh
T0FFUFBhcmFtZXRlcnMsIGtleSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQ
UE9SVEVEX0VSUiB9OworICAgIHJldHVybiBwbGF0Zm9ybUVuY3J5cHQocnNhT0FFUFBhcmFtZXRl
cnMsIGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNh
T2FlcFBhcmFtc0RlcHJlY2F0ZWQmIHJzYU9BRVBQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotCi0gICAgaWYg
KCFrZXlBbGdvcml0aG1NYXRjaGVzKHJzYU9BRVBQYXJhbWV0ZXJzLCBrZXkpKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBw
bGF0Zm9ybURlY3J5cHQocnNhT0FFUFBhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleVJTQT4o
a2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwg
ZWMpOworICAgIGF1dG8mIHJzYU9BRVBQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGlmICgha2V5QWxn
b3JpdGhtTWF0Y2hlcyhyc2FPQUVQUGFyYW1ldGVycywga2V5KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIHBsYXRmb3JtRGVjcnlw
dChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zRGVwcmVjYXRlZCYgcnNhUGFy
YW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0
ZWQ+KHBhcmFtZXRlcnMpOwotCisgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtc0RlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwogICAg
IGF1dG8ga2V5UGFpckNhbGxiYWNrID0gW2NhcHR1cmVkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oQ3J5cHRvS2V5UGFpciYgcGFpcikgewogICAgICAgICBjYXB0dXJlZENhbGxiYWNrKG51
bGxwdHIsICZwYWlyKTsKICAgICB9OwotCi0gICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVAsIHJzYVBhcmFtZXRlcnMuaGFzaCwg
cnNhUGFyYW1ldGVycy5oYXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBh
cmFtZXRlcnMucHVibGljRXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoa2V5
UGFpckNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBjb250ZXh0KTsKKyAgICBD
cnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0Ff
T0FFUCwgcnNhUGFyYW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFt
ZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFj
dGFibGUsIHVzYWdlcywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVD
YWxsYmFjayksICZjb250ZXh0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlLCBLZXlDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9ydEtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2UsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQmIHJzYUtleVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FLZXlQYXJhbXNXaXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOwotICAgIGNv
bnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiByc2FDb21wb25lbnRzID0gZG93bmNhc3Q8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KGtleURhdGEpOwotCi0gICAgUmVmUHRyPENyeXB0
b0tleVJTQT4gcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UlNBX09BRVAsIHJzYUtleVBhcmFtZXRlcnMuaGFzaCwgcnNhS2V5UGFyYW1ldGVy
cy5oYXNIYXNoLCByc2FDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2UpOworICAgIGF1dG8m
IHJzYUtleVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNX
aXRoSGFzaERlcHJlY2F0ZWQ+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJzYUNvbXBvbmVudHMg
PSBkb3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oa2V5RGF0YSk7CisgICAgYXV0
byByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FfT0FFUCwgcnNhS2V5UGFyYW1ldGVycy5oYXNoLCByc2FLZXlQYXJhbWV0ZXJzLmhhc0hh
c2gsIHJzYUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZSk7CiAgICAgaWYgKCFyZXN1bHQp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9Ci0KICAgICBjYWxsYmFjaygqcmVzdWx0KTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaAppbmRleCAyNWFmMDcwZjA0ZGRmNGM0YjY0
N2EwNjY3N2M1OGJhZmY3NDk0MzhkLi4wNDhkMzNhYzdmM2Q0MmM5ZjU4YzFmMmRkNjc5MzBmNWNj
MjA4ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKQEAgLTM2LDI5ICszNiwyNSBAQCBjbGFzcyBD
cnlwdG9LZXlSU0E7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQIGZpbmFsIDogcHVi
bGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBz
X2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDsKLQorICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIlJTQS1PQUVQIjsKKyAgICBz
dGF0aWMgY29uc3RleHByIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0g
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA7CiAgICAgc3RhdGljIFJlZjxDcnlw
dG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAgIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQKCkgPSBkZWZhdWx0OworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBmaW5hbDsKKyAgICB2b2lkIGdl
bmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IGZpbmFsOwogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlE
YXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwg
RXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICAvLyBUaGUgZm9sbG93aW5nIHdpbGwg
YmUgZGVwcmVjYXRlZC4KLSAgICB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQot
cHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOwotICAgIHZpcnR1YWwgfkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQKCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5jcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlPcktleVBhaXJD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRh
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29sIGtleUFs
Z29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtc0RlcHJlY2F0
ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZv
aWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCA3Mjk3
OTZkZTMxNGFmNTc4ODg0Mzk3ZTgxNTZhZDk3YzdhYzQ0MDYzLi41ZjFhZDY5OGM0NzI3NGViNjVk
N2QwOGJkMTlmMGUzMDIwNGVmYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcApAQCAtMzIsMTYgKzMyLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdv
cml0aG1TSEExOjpzX25hbWUgPSAiU0hBLTEiOwotCi1DcnlwdG9BbGdvcml0aG1TSEExOjpDcnlw
dG9BbGdvcml0aG1TSEExKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBMTo6fkNyeXB0b0Fs
Z29yaXRobVNIQTEoKQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0
aG1TSEExOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29y
aXRobVNIQTEpOwpAQCAtNTIsMTcgKzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
Q3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0
LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFjayhkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaAppbmRleCBlZDg4MzU3NjMzYzA4NGQz
NmJlZWQzOWIxZmVlYzE5YjA5NzUyYmRhLi4xOGQxY2U2NWNhZGY5NDgwYTViY2U3ZmY2NTQyMjQ1
YjUwZjA4MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5oCkBAIC0zMywxOCArMzMsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEExIGZpbmFsIDogcHVibGljIENyeXB0
b0FsZ29yaXRobSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFt
ZTsKLSAgICBzdGF0aWMgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZp
ZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMTsKLQorICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogc19uYW1lID0gIlNIQS0xIjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzE7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0
ZSgpOwogCi0gICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKLQogcHJpdmF0ZToKLSAgICBDcnlwdG9BbGdvcml0aG1TSEExKCk7Ci0gICAgdmlydHVh
bCB+Q3J5cHRvQWxnb3JpdGhtU0hBMSgpOworICAgIENyeXB0b0FsZ29yaXRobVNIQTEoKSA9IGRl
ZmF1bHQ7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAppbmRleCBmYTgwZmM2
ZGM0NWQ2MGQ0Njc5ODEwZGFjOGY4NDZkYTQwMDUyZTk1Li45ZmE5NDViMmUwYzUyNjUxMzBhMWQx
ZGVkZjVkOTFjZTQ3MTY3ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKQEAgLTMyLDE2ICszMiw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0OjpzX25hbWUgPSAiU0hBLTIyNCI7Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTIy
NDo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
Ojp+Q3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4g
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENyeXB0b0FsZ29yaXRobVNIQTIyNCk7CkBAIC01MiwxNyArNDIsMTYgQEAgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBjb25z
dAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAg
IGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFj
aygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAg
ZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFj
ayhkaWdlc3QtPmNvbXB1dGVIYXNoKCkpOworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTIyNC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmgKaW5kZXggZDYyMTkzMTg2YjU3ZTRlMGIyNDY2ZThjNzkyY2EzNmY4NGVkNGI5Ni4u
MGI1NDYyYzI2Y2Y0ZWYyYTAyYjUwZTUxMjgzZTUyNzYzNzk4NTNlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmgKQEAgLTMzLDE4ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0
b0FsZ29yaXRobVNIQTIyNCBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzIyNDsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciog
c19uYW1lID0gIlNIQS0yMjQiOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MjI0OwogICAgIHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZh
dGU6Ci0gICAgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0KCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxn
b3JpdGhtU0hBMjI0KCk7CisgICAgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0KCkgPSBkZWZhdWx0Owor
ICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggMzI0OTlhOTViNmUzZTc5
NDljYzQyNzQ5MGIxMzQ1ZjVmMWYwMDlhZS4uMDRjNWY5YTA5YTBjMjk1MWNlMWFkNDFmMzkxYmE3
YjgzM2U4YjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC0zMiwxNiArMzIsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNI
QTI1Njo6c19uYW1lID0gIlNIQS0yNTYiOwotCi1DcnlwdG9BbGdvcml0aG1TSEEyNTY6OkNyeXB0
b0FsZ29yaXRobVNIQTI1NigpCi17Ci19Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTI1Njo6fkNyeXB0
b0FsZ29yaXRobVNIQTI1NigpCi17Ci19Ci0KIFJlZjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlw
dG9BbGdvcml0aG1TSEEyNTYpOwpAQCAtNTIsMTcgKzQyLDE2IEBAIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKICAgICBy
ZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGln
ZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLQogICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwotCiAgICAgY2FsbGJhY2soZGlnZXN0
LT5jb21wdXRlSGFzaCgpKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5o
CmluZGV4IDIyNDQ1ZWUwN2FiNzYwYTlmMjJhMTAwMjIwYmFlOTI1ODlmYjA1YzYuLjlkYjMyMTUy
Y2Q3YmRjODQ1MDIwNmYyNWJjOTI1MzVkYTk4MDVmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oCkBAIC0z
MywxOCArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0
aG1TSEEyNTYgZmluYWwgOiBwdWJsaWMgQ3J5cHRvQWxnb3JpdGhtIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogc19uYW1lID0gIlNIQS0yNTYiOwogICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY7Ci0KICAgICBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAK
LSAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlk
ZTsKLQotICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
CiBwcml2YXRlOgotICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpOwotICAgIHZpcnR1YWwgfkNy
eXB0b0FsZ29yaXRobVNIQTI1NigpOworICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpID0gZGVm
YXVsdDsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKSBmaW5hbDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCmluZGV4IDM0ZWQ4N2M5
OThmMTM4NmZlMzBkNTNhNWM4OTdkOTBmOWU5ZjVlNWEuLmJjODg2NmQ5OWRkODNhMWM4ZWE5ZWVh
Njg4YzAzNTg5MmUxYTczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApAQCAtMzIsMTYgKzMyLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBDcnlwdG9BbGdv
cml0aG1TSEEzODQ6OnNfbmFtZSA9ICJTSEEtMzg0IjsKLQotQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpDcnlwdG9BbGdvcml0aG1TSEEzODQoKQotewotfQotCi1DcnlwdG9BbGdvcml0aG1TSEEzODQ6
On5DcnlwdG9BbGdvcml0aG1TSEEzODQoKQotewotfQotCiBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBD
cnlwdG9BbGdvcml0aG1TSEEzODQ6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0KTsKQEAgLTUyLDE3ICs0MiwxNiBAQCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigpIGNvbnN0
CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEz
ODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRh
dGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAg
YXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNr
KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0KICAgICBk
aWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKLQogICAgIGNhbGxiYWNr
KGRpZ2VzdC0+Y29tcHV0ZUhhc2goKSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuaAppbmRleCAwMThiOGZiMzJkNDcyNDYyNjM4NTM2ZDhjZjA4MmU0Y2VjZGNlOGU3Li4x
ZTFmMmIwYjQ0NTA0M2VkYTk3NmMwM2Q4NzVjNjQ1ZGUyNDE0ZjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
aApAQCAtMzMsMTggKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0IGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbmFtZTsKLSAgICBzdGF0aWMgY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMzg0OwotCisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBz
X25hbWUgPSAiU0hBLTM4NCI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIHNfaWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8z
ODQ7CiAgICAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLQogcHJpdmF0
ZToKLSAgICBDcnlwdG9BbGdvcml0aG1TSEEzODQoKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9BbGdv
cml0aG1TSEEzODQoKTsKKyAgICBDcnlwdG9BbGdvcml0aG1TSEEzODQoKSA9IGRlZmF1bHQ7Cisg
ICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCA5ZGE5NzM2ZjM4ODNhNDAz
ZjdlZWFiZDY4NjRiMGVmOWNiNzExYTZiLi43ZjA3NDhkYzFmODU2YTc1NTE0M2ZiMzhkZTk0N2Jm
MDFmNzBjZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTMyLDE2ICszMiw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyOjpzX25hbWUgPSAiU0hBLTUxMiI7Ci0KLUNyeXB0b0FsZ29yaXRobVNIQTUxMjo6Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyKCkKLXsKLX0KLQotQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjp+Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyKCkKLXsKLX0KLQogUmVmPENyeXB0b0FsZ29yaXRobT4gQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyeXB0
b0FsZ29yaXRobVNIQTUxMik7CkBAIC01MiwxNyArNDIsMTYgQEAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIoKSBjb25zdAogICAgIHJl
dHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdl
c3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotCiAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7Ci0KICAgICBjYWxsYmFjayhkaWdlc3Qt
PmNvbXB1dGVIYXNoKCkpOworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgK
aW5kZXggZWQ5YjBmNzZkYTIxMTU4MmE5NmI1MmM4MzUyZDYxMzg1ZTE2Y2MyYS4uMGY2NzE1NjJl
OTE2ZGUzMTRkNzBlMzViODA2Y2UxZGVhNTViZDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKQEAgLTMz
LDE4ICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRo
bVNIQTUxMiBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG0gewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX25hbWU7Ci0gICAgc3RhdGljIGNvbnN0IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgc19pZGVudGlmaWVyID0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzUxMjsKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogc19uYW1lID0g
IlNIQS01MTIiOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBzX2lkZW50aWZpZXIgPSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOwogICAg
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoKTsKIAotICAgIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBk
aWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6Ci0gICAg
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyKCk7Ci0gICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtU0hB
NTEyKCk7CisgICAgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyKCkgPSBkZWZhdWx0OworICAgIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1ITUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggYjQ3Y2RlZDZiN2E0MWNjYWU1MzRmMDE5
NzE4NjhiZGUxODMwZjM0NS4uZWRkYTgxZWExN2JhNzM5N2RiZmQ1OTY4MzQxOTZkNmM1OGVjMjlm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCkBAIC01NSwxMiArNTUsMTQgQEAgc3RhdGljIGludCBn
ZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVu
Y3Rpb24pCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFs
Z29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlKQorc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdvcml0aG0sIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhKQog
ewogICAgIHNpemVfdCBkaWdlc3RMZW5ndGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oYWxn
b3JpdGhtKTsKICAgICBjb25zdCB2b2lkKiBrZXlEYXRhID0ga2V5LmRhdGEoKSA/IGtleS5kYXRh
KCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigiIik7CiAKICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOworICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7CisKICAgICBnY3J5
X21hY19oZF90IGhkOwogICAgIGdjcnlfZXJyb3JfdCBlcnI7CiAKQEAgLTg4LDQ0ICs5MCw0MyBA
QCBjbGVhbnVwOgogICAgIGlmIChoZCkKICAgICAgICAgZ2NyeV9tYWNfY2xvc2UoaGQpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1cmUpOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1z
RGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0Fs
Z29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlI
TUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBVTlVT
RURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBpbnQgYWxnb3JpdGhtID0gZ2V0R0NyeXB0
RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7Ci0gICAgaWYgKGFsZ29yaXRobSA9PSBH
Q1JZX01BQ19OT05FKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGFsZ29yaXRobSA9PSBHQ1JZX01BQ19OT05FKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAotICAgIFZlY3Rv
cjx1aW50OF90PiBzaWduYXR1cmU7Ci0gICAgaWYgKGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0
aG0sIGtleS5rZXkoKSwgZGF0YSwgc2lnbmF0dXJlKSkKLSAgICAgICAgY2FsbGJhY2soc2lnbmF0
dXJlKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0s
IGtleS5rZXkoKSwgZGF0YSk7CisgICAgaWYgKHNpZ25hdHVyZSkKKyAgICAgICAgY2FsbGJhY2so
KnNpZ25hdHVyZSk7CiAgICAgZWxzZQogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICBy
ZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVj
dGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3Jt
VmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29s
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOwogICAgIGludCBhbGdvcml0aG0gPSBn
ZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKLSAgICBpZiAoYWxnb3Jp
dGhtID09IEdDUllfTUFDX05PTkUpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoYWxnb3JpdGhtID09IEdDUllfTUFDX05P
TkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBpZiAoIWNhbGN1bGF0ZVNpZ25hdHVy
ZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YSwgc2lnbmF0dXJlKSkgeworICAgIGF1dG8gc2ln
bmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsK
KyAgICBpZiAoIXNpZ25hdHVyZSkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIFVzaW5nIGEg
Y29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAg
Ym9vbCByZXN1bHQgPSBzaWduYXR1cmUuc2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLnNlY29u
ZCAmJiAhY29uc3RhbnRUaW1lTWVtY21wKHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0
dXJlLmZpcnN0LCBzaWduYXR1cmUuc2l6ZSgpKTsKKyAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVy
ZS52YWx1ZSgpLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5zZWNvbmQgJiYgIWNvbnN0YW50
VGltZU1lbWNtcChzaWduYXR1cmUudmFsdWUoKS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLmZp
cnN0LCBzaWduYXR1cmUudmFsdWUoKS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsK
KyAgICByZXR1cm4geyB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAppbmRleCAx
NDYwN2RiNmYxZDcyYTIxYTVlNzY0ZTJiMzE1YWJiYjYzMjU5ZTVmLi5kYmZhNWZjOGYzY2ZhYzQx
ZmIyM2Q2ZjAwODczMGY0NGRkYjRkZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKQEAg
LTI4LDM1ICsyOCwyMSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNEZXByZWNhdGVkLmgiCi0jaW5jbHVkZSAiQ3J5
cHRvS2V5QUVTLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFy
YW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUFF
UyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFN
KGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
ayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtc0Rl
cHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobUFlc0NiY1BhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwotCi0gICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOwotICAgIFVOVVNFRF9QQVJBTShrZXkp
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwot
ICAgIFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOworICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19L
V0dudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRo
bUFFU19LV0dudVRMUy5jcHAKaW5kZXggOTQ1NGM4MzE0MTAyZTg4Y2YwYzhjNjg4YTczOTQ0YTQ3
MTg5YTEzZi4uZmFiYWMxYTZkNTM0ZTAzYzcwNmNjMzg5OWFjYzAwN2ViMTNkZDA4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfS1dH
bnVUTFMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0tXR251VExTLmNwcApAQCAtMjgsMzIgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VE
X1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShj
YWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURf
RVJSIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCmlu
ZGV4IGE4MzA0NjU3YjMzZWQwMjRlMzgyZDYxOWFkNjMyYjYwOWIyYjc1YzMuLjNhNmMwZWYxMTEz
YTJjNTU5Yzk4YmEwZjY5M2QyMzQ2YTk3ZDhhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251VExTLmNwcApAQCAt
NjgsMjggKzY4LDIwIEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJl
KGdudXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnb3JpdGhtLCBjb25zCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRo
bV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gp
OwotICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19VTktOT1dOKSB7Ci0gICAgICAgIGVj
ID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8dWludDhfdD4gc2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5
LmtleSgpLCBkYXRhKTsKLQotICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgaWYgKGFsZ29y
aXRobSA9PSBHTlVUTFNfTUFDX1VOS05PV04pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
T1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGNhbGxiYWNrKGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdv
cml0aG0sIGtleS5rZXkoKSwgZGF0YSkpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1h
Y1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRTaWduYXR1cmUsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJikKIHsKLSAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKICAgICBn
bnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29yaXRo
bShwYXJhbWV0ZXJzLmhhc2gpOwotICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19VTktO
T1dOKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKGFsZ29yaXRobSA9PSBHTlVUTFNfTUFDX1VOS05PV04pCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXko
KSwgZGF0YSk7CiAKQEAgLTk3LDYgKzg5LDggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXQKICAg
ICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vj
b25kICYmICFjb25zdGFudFRpbWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWdu
YXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsK
KworICAgIHJldHVybiB7IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVHbnVUTFMuY3BwCmluZGV4IDdhNWU4NGI1ZmRlOWJjNTkxNjgxYTg4NWY4M2U2MzUwYWMyYzY5
YmEuLjJiMDZhZjhiYmUwNTg1NTRhYzljZTRjYmEwYTI4ZjgzZTRmZmIyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNUdudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R251VExTLmNwcApAQCAtMzQsMjYgKzM0LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKLQotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9Q
QVJBTShmYWlsdXJlQ2FsbGJhY2spOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9S
VEVEX0VSUiB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENy
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotCi0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZh
aWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNUdudVRMUy5jcHAKaW5kZXggNTY4ZDUyYmE0MDM0ZGYwMGI3NDNmYTI3OWM0ZmFk
MTdiMTVjNjEzZC4uMzc0Y2I5NDNkN2Y1N2MzNGM2NTcwMzI2ZTkwNDk4ZWNiM2I3ZjA4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRs
cy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKQEAgLTM1LDI5ICsz
NSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQ
YXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5V
U0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJT
QSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFy
YW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpZ25h
dHVyZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
ayk7Ci0gICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVBHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKaW5kZXggYWIwNmFjZGQ0NjA0ZjZlOTBmMTUyN2Q1
NjhhYTgyMTA1OWM2MGZlYi4uY2MyZTQwMjM1NWFiYWU0MWZhNDg0MTc0ODRiOWEyYTA5MjQ1YWYz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUEdudVRMUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKQEAgLTI4LDM1ICsyOCwyMSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLQotICAgIFVO
VVNFRF9QQVJBTShwYXJhbWV0ZXJzKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSAgICBVTlVTRURf
UEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBP
UlRFRF9FUlIgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1E
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNh
T2FlcFBhcmFtc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotCi0gICAgVU5V
U0VEX1BBUkFNKHBhcmFtZXRlcnMpOwotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIFVOVVNFRF9Q
QVJBTShmYWlsdXJlQ2FsbGJhY2spOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9S
VEVEX0VSUiB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAppbmRleCAyMzRmZTI5YjQ5MWMwMDVjMWI3NDQw
ZTgxYmJhYjk1YzViZGJkZTg5Li5mNTRjZTE0YzgwODM0ZjkwZGJjYTI3NmYxNzc0YmNjM2UyY2Qw
ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKQEAg
LTEwNiw3ICsxMDYsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBDcnlwdG9LZXlBRVM6OmltcG9y
dEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogCiBzdGQ6OnVuaXF1ZV9w
dHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlBRVM6OmJ1aWxkQWxnb3JpdGhtKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBZXNLZXlBbGdvcml0aG0+KENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lRm9ySWRlbnRpZmllcihhbGdvcml0aG1JZGVu
dGlmaWVyKCkpLCBtX2tleS5zaXplKCkgKiA4KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxBZXNLZXlBbGdvcml0aG0+KENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5u
YW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSksIG1fa2V5LnNpemUoKSAqIDgpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5QUVTOjpleHBvcnREYXRhKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAKaW5kZXgg
MTczY2U1Y2E3YmU5OTRhNDA3YTlhNzA5NzgxNWIxMDE1ZjM0MmY3Mi4uZDIzOTk1NDA4MjlkNDQ5
MDM2Mjk1N2MxMDk1MzU0MGIyMTllM2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5jcHAKQEAgLTExNiw4ICsxMTYsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5
SE1BQz4gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0SndrKHNpemVfdCBsZW5ndGhCaXRzLCBDcnlwdG9B
bGdvcml0aAogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlITUFDOjpi
dWlsZEFsZ29yaXRobSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SG1h
Y0tleUFsZ29yaXRobT4oQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWVG
b3JJZGVudGlmaWVyKGFsZ29yaXRobUlkZW50aWZpZXIoKSksCi0gICAgICAgIENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lRm9ySWRlbnRpZmllcihtX2hhc2gpLCBtX2tl
eS5zaXplKCkgKiA4KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIbWFjS2V5QWxnb3Jp
dGhtPihDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1J
ZGVudGlmaWVyKCkpLAorICAgICAgICBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9u
KCkubmFtZShtX2hhc2gpLCBtX2tleS5zaXplKCkgKiA4KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleURhdGE+IENyeXB0b0tleUhNQUM6OmV4cG9ydERhdGEoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01h
Yy5jcHAKaW5kZXggYjEyM2NlY2IxMjNjNTE0YzM4ZjA5MDQ0YmUzODJmMTgxNzZiNDcxZi4uNzhh
MmEyNzcyNDEwZjA3OTYxNDI1NWYwMmE3N2Y4N2EzYTQyYWY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXNE
ZXByZWNhdGVkLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODIsMTQgKzgxLDE2IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9y
bUFFU19DQkMoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXND
YmNQCiAgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVw
cmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lk
PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICB0cmFu
c2Zvcm1BRVNfQ0JDKGtDQ0VuY3J5cHQsIHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zRGVwcmVjYXRlZCYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKICAgICB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0RlY3J5cHQsIHBhcmFt
ZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxi
YWNrKSk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dN
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dN
YWMuY3BwCmluZGV4IDk4NTU1MzA0NjNiNzcwYjVhZWE3YTNkYzgyNmU5YzcxMTI0YTk0MzMuLjZm
YmQyOTczYTU1ZDhmM2Q4NDk3YzFhYWExOTI3ZDdiMDJiODJlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19LV01hYy5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewog
ICAgIGlmIChkYXRhLnNlY29uZCAlIDgpIHsKICAgICAgICAgLy8gUkZDIDMzOTQgdXNlcyA2NC1i
aXQgYmxvY2tzIGFzIGlucHV0LgogICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTU5NDk5OTI+
IENvbW1vbkNyeXB0byBkb2Vzbid0IGRldGVjdCBpbmNvcnJlY3QgZGF0YSBsZW5ndGgsIHNpbGVu
dGx5IHByb2R1Y2luZyBhIGJhZCBjeXBoZXJ0ZXh0LgogICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXN1bHQoQ0NTeW1tZXRyaWNXcmFwcGVkU2l6ZShrQ0NXUkFQQUVTLCBk
YXRhLnNlY29uZCkpOwpAQCAtNDgsMjkgKzQ4LDMxIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0
CiAgICAgaW50IHN0YXR1cyA9IENDU3ltbWV0cmljS2V5V3JhcChrQ0NXUkFQQUVTLCBDQ3JmYzMz
OTRfaXYsIENDcmZjMzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUo
KSwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1bHRTaXplKTsK
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJlc3VsdC5zaHJpbmsocmVz
dWx0U2l6ZSk7CiAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tl
eUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFw
cGVkU2l6ZShrQ0NXUkFQQUVTLCBkYXRhLnNlY29uZCkpOwogICAgIHNpemVfdCByZXN1bHRTaXpl
ID0gcmVzdWx0LnNpemUoKTsKIAogICAgIGlmIChyZXN1bHRTaXplICUgOCkgewogICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIGludCBzdGF0dXMgPSBDQ1N5bW1ldHJpY0tleVVud3JhcChrQ0NXUkFQQUVT
LCBDQ3JmYzMzOTRfaXYsIENDcmZjMzM5NF9pdkxlbiwga2V5LmtleSgpLmRhdGEoKSwga2V5Lmtl
eSgpLnNpemUoKSwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHJlc3VsdC5kYXRhKCksICZyZXN1
bHRTaXplKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJlc3VsdC5z
aHJpbmsocmVzdWx0U2l6ZSk7CiAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICByZXR1cm4geyB9
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAppbmRleCAyOTZhNzhhYjU3ZmQz
Yjk1YjkzZGVhYjhhNmY3MjUwOTg2NGM2NzRkLi5jZDNiMGNjMzZkYTUzMDVlNzcwZTQxYTA3OGRh
NDUwMjhkYmYyNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhNQUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKQEAgLTM2LDI2ICszNiwyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGdldENvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24sIENDSG1hY0FsZ29yaXRobSYgYWxn
b3JpdGhtKQorc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1B
Q0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAg
ICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzE6Ci0gICAgICAgIGFsZ29yaXRobSA9IGtDQ0htYWNBbGdTSEExOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGtDQ0htYWNBbGdTSEExOwogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgYWxnb3JpdGhtID0g
a0NDSG1hY0FsZ1NIQTIyNDsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBr
Q0NIbWFjQWxnU0hBMjI0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzI1NjoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDSG1hY0FsZ1NIQTI1NjsKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIHJldHVybiBrQ0NIbWFjQWxnU0hBMjU2OwogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgYWxnb3JpdGhtID0ga0ND
SG1hY0FsZ1NIQTM4NDsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBrQ0NI
bWFjQWxnU0hBMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUx
MjoKLSAgICAgICAgYWxnb3JpdGhtID0ga0NDSG1hY0FsZ1NIQTUxMjsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiBrQ0NIbWFjQWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogfQog
CkBAIC04OSwzMyArODQsMjkgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjYWxjdWxhdGVTaWdu
YXR1cmUoQ0NIbWFjQWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgVmVjdG8KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYpCiB7Ci0gICAgQ0NIbWFjQWxn
b3JpdGhtIGFsZ29yaXRobTsKLSAgICBpZiAoIWdldENvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0o
cGFyYW1ldGVycy5oYXNoLCBhbGdvcml0aG0pKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gc2ln
bmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsK
LQotICAgIGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25D
cnlwdG9ITUFDQWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7CisgICAgaWYgKCFhbGdvcml0aG0p
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGNh
bGxiYWNrKGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpKTsK
KyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3Jt
VmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29s
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
RXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZXhwZWN0ZWRT
aWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJikKIHsKLSAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3Jp
dGhtOwotICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhh
c2gsIGFsZ29yaXRobSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNB
bGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBWZWN0b3I8dWlu
dDhfdD4gc2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgp
LCBkYXRhKTsKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3Jp
dGhtLCBrZXkua2V5KCksIGRhdGEpOwogCiAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNv
bXBhcmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KICAgICBib29sIHJlc3VsdCA9IHNp
Z25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2Vjb25kICYmICFjb25zdGFudFRp
bWVNZW1jbXAoc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUuZmlyc3QsIHNpZ25h
dHVyZS5zaXplKCkpOwogCiAgICAgY2FsbGJhY2socmVzdWx0KTsKKworICAgIHJldHVybiB7IH07
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IDc3NTk4MzQ0Nzhh
NzhjODVmMzQ4MzUwMWEwNmIxZTYwMjU2Zjg0ZjguLjAwYmFjZDQ3ODg0NDY0NjZhYzU0MDRhYmQ5
YTBjMDdhYzRkMzZiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcApAQCAtMzMs
MzIgKzMzLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCitF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dCgxMDI0KTsKICAg
ICBzaXplX3QgY2lwaGVyVGV4dExlbmd0aCA9IGNpcGhlclRleHQuc2l6ZSgpOwogICAgIENDQ3J5
cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgp
LCBjY1BLQ1MxUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIGNpcGhlclRleHQuZGF0
YSgpLCAmY2lwaGVyVGV4dExlbmd0aCwgMCwgMCwga0NDRGlnZXN0Tm9uZSk7CiAgICAgaWYgKHN0
YXR1cykgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGNpcGhlclRleHQucmVzaXplKGNpcGhlclRl
eHRMZW5ndGgpOwogICAgIGNhbGxiYWNrKGNpcGhlclRleHQpOworICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0
KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHBsYWluVGV4dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0
LnNpemUoKTsKICAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlw
dChrZXkucGxhdGZvcm1LZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRhdGEuZmlyc3QsIGRhdGEuc2Vj
b25kLCBwbGFpblRleHQuZGF0YSgpLCAmcGxhaW5UZXh0TGVuZ3RoLCAwLCAwLCBrQ0NEaWdlc3RO
b25lKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcGxhaW5UZXh0
LnJlc2l6ZShwbGFpblRleHRMZW5ndGgpOwogICAgIGNhbGxiYWNrKHBsYWluVGV4dCk7CisgICAg
cmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcAppbmRleCAwYWI4ZjQyYjg1ZmIxOWZmOWE0NDg1Nzk0ZDE4MjcyY2Mw
NTYxNWNjLi5hMzQ2MjI3YWMxMjNmMWViNTcwNjI0NGZhN2I4OGNmNWU4OGFhNDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzYsNTIgKzM2LDQxIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIGJvb2wgZ2V0Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uLCBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobSYgYWxnb3JpdGhtKQoraW5saW5lIE9wdGlvbmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
PiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVu
Y3Rpb24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzE7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgYWxnb3JpdGhtID0gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICBhbGdvcml0aG0gPSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIGFsZ29yaXRobSA9IENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgYWxnb3JpdGhtID0gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3Nh
UGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBDQ0RpZ2VzdEFsZ29yaXRo
bSBkaWdlc3RBbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0
aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7Ci0gICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFnZXRDb21t
b25DcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0p
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKIAotICAg
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGNyeXB0b0RpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAo
IWdldENyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGNyeXB0b0RpZ2VzdEFs
Z29yaXRobSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmICghY3J5cHRvRGln
ZXN0QWxnb3JpdGhtKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9F
UlIgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKGNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7Ci0gICAgaWYgKCFkaWdlc3Qp
IHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RB
bGdvcml0aG0pOworICAgIGlmICghZGlnZXN0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tk9UX1NVUFBPUlRFRF9FUlIgfTsKIAogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5maXJzdCwg
ZGF0YS5zZWNvbmQpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdERhdGEgPSBkaWdlc3Qt
PmNvbXB1dGVIYXNoKCk7CisgICAgYXV0byBkaWdlc3REYXRhID0gZGlnZXN0LT5jb21wdXRlSGFz
aCgpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSg1MTIpOwogICAgIHNpemVfdCBz
aWduYXR1cmVTaXplID0gc2lnbmF0dXJlLnNpemUoKTsKQEAgLTg5LDQ0ICs3OCw0MCBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhU3NhUAogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNy
eXB0b3JTaWduKGtleS5wbGF0Zm9ybUtleSgpLCBjY1BLQ1MxUGFkZGluZywgZGlnZXN0RGF0YS5k
YXRhKCksIGRpZ2VzdERhdGEuc2l6ZSgpLCBkaWdlc3RBbGdvcml0aG0sIDAsIHNpZ25hdHVyZS5k
YXRhKCksICZzaWduYXR1cmVTaXplKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIGZhaWx1
cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgc2lnbmF0dXJlLnJlc2l6ZShzaWduYXR1cmVTaXplKTsKICAgICBjYWxsYmFjayhz
aWduYXR1cmUpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNz
YVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0
QWxnb3JpdGhtOwotICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFt
ZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghZ2V0Q29tbW9uQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobSBjcnlwdG9EaWdlc3RBbGdvcml0aG07Ci0gICAgaWYgKCFnZXRDcnlw
dG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBjcnlwdG9EaWdlc3RBbGdvcml0aG0p
KSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdl
c3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKKyAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29y
aXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwotICAgIGlmICghZGlnZXN0KSB7Ci0gICAg
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
YXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGht
KTsKKyAgICBpZiAoIWRpZ2VzdCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQ
T1JURURfRVJSIH07CiAKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZmlyc3QsIGRhdGEuc2Vj
b25kKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3REYXRhID0gZGlnZXN0LT5jb21wdXRl
SGFzaCgpOworICAgIGF1dG8gZGlnZXN0RGF0YSA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKIAot
ICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JWZXJpZnkoa2V5LnBsYXRm
b3JtS2V5KCksIGNjUEtDUzFQYWRkaW5nLCBkaWdlc3REYXRhLmRhdGEoKSwgZGlnZXN0RGF0YS5z
aXplKCksIGRpZ2VzdEFsZ29yaXRobSwgMCwgc2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUuc2Vj
b25kKTsKKyAgICBhdXRvIHN0YXR1cyA9IENDUlNBQ3J5cHRvclZlcmlmeShrZXkucGxhdGZvcm1L
ZXkoKSwgY2NQS0NTMVBhZGRpbmcsIGRpZ2VzdERhdGEuZGF0YSgpLCBkaWdlc3REYXRhLnNpemUo
KSwgZGlnZXN0QWxnb3JpdGhtLCAwLCBzaWduYXR1cmUuZmlyc3QsIHNpZ25hdHVyZS5zZWNvbmQp
OwogICAgIGlmICghc3RhdHVzKQogICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICBlbHNlIGlm
IChzdGF0dXMgPT0ga0NDTm90VmVyaWZpZWQgfHwgc3RhdHVzID09IGtDQ0RlY29kZUVycm9yKSAv
LyA8cmRhcjovL3Byb2JsZW0vMTU0NjQ5ODI+IENDUlNBQ3J5cHRvclZlcmlmeSByZXR1cm5zIGtD
Q0RlY29kZUVycm9yIGluc3RlYWQgb2Yga0NDTm90VmVyaWZpZWQgc29tZXRpbWVzCiAgICAgICAg
IGNhbGxiYWNrKGZhbHNlKTsKICAgICBlbHNlCiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5j
cHAKaW5kZXggY2YyODFjYTg3NjAyMjRlZDA3YTdlNGEwMGFmZjFmZGQ4NTdjNWQwNi4uOTM3OGVk
NGQxMTc0YWYwYWU3YTg0MjJjYjZjMTc5MWUyNWMyYTNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAKQEAg
LTM1LDEzICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBpZiAo
IWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFs
Z29yaXRobSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJh
bWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNpcGhlclRleHQo
MTAyNCk7CiAgICAgc2l6ZV90IGNpcGhlclRleHRMZW5ndGggPSBjaXBoZXJUZXh0LnNpemUoKTsK
QEAgLTQ5LDMxICs0NywzMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ1JTQUNyeXB0b3JFbmNyeXB0KGtleS5wbGF0Zm9ybUtleSgpLCBj
Y09BRVBQYWRkaW5nLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCwgY2lwaGVyVGV4dC5kYXRhKCks
ICZjaXBoZXJUZXh0TGVuZ3RoLCBwYXJhbWV0ZXJzLmxhYmVsLmRhdGEoKSwgcGFyYW1ldGVycy5s
YWJlbC5zaXplKCksIGRpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIAogICAgIGNpcGhlclRleHQucmVzaXplKGNpcGhlclRleHRMZW5ndGgpOwogICAg
IGNhbGxiYWNrKGNpcGhlclRleHQpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CitFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXNEZXByZWNhdGVkJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICBp
ZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGRpZ2Vz
dEFsZ29yaXRobSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShw
YXJhbWV0ZXJzLmhhc2gsIGRpZ2VzdEFsZ29yaXRobSkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4
dCgxMDI0KTsKICAgICBzaXplX3QgcGxhaW5UZXh0TGVuZ3RoID0gcGxhaW5UZXh0LnNpemUoKTsK
ICAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlwdG9yRGVjcnlwdChrZXkucGxh
dGZvcm1LZXkoKSwgY2NPQUVQUGFkZGluZywgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsIHBsYWlu
VGV4dC5kYXRhKCksICZwbGFpblRleHRMZW5ndGgsIHBhcmFtZXRlcnMubGFiZWwuZGF0YSgpLCBw
YXJhbWV0ZXJzLmxhYmVsLnNpemUoKSwgZGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoc3RhdHVz
KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcGxhaW5UZXh0LnJlc2l6ZShwbGFpblRleHRMZW5n
dGgpOwogICAgIGNhbGxiYWNrKHBsYWluVGV4dCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9L
ZXlSU0FNYWMuY3BwCmluZGV4IGM3MzQ1ZWM3NTdiOGJhMDlmOThjNzY0ZTE0YjExNzc4YThlZTI4
OWMuLmI0ZTRjMWUxNmIzYzI1NTQ1YWY1MzE3YjhjNGQyOGM0ZTcyY2FjMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKQEAgLTE2Miw3ICsxNjIs
NyBAQCBzaXplX3QgQ3J5cHRvS2V5UlNBOjprZXlTaXplSW5CaXRzKCkgY29uc3QKIAogc3RkOjp1
bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgpIGNv
bnN0CiB7Ci0gICAgU3RyaW5nIG5hbWUgPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xl
dG9uKCkubmFtZUZvcklkZW50aWZpZXIoYWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBTdHJp
bmcgbmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29y
aXRobUlkZW50aWZpZXIoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1vZHVsdXM7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50OwogICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMg
PSBnZXRQdWJsaWNLZXlDb21wb25lbnRzKG1fcGxhdGZvcm1LZXksIG1vZHVsdXMsIHB1YmxpY0V4
cG9uZW50KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGht
PiBDcnlwdG9LZXlSU0E6OmJ1aWxkQWxnb3JpdGhtKCkgY29uc3QKIAogICAgIHNpemVfdCBtb2R1
bHVzTGVuZ3RoID0gbW9kdWx1cy5zaXplKCkgKiA4OwogICAgIGlmIChtX3Jlc3RyaWN0ZWRUb1Nw
ZWNpZmljSGFzaCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhSGFzaGVkS2V5
QWxnb3JpdGhtPihuYW1lLCBtb2R1bHVzTGVuZ3RoLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSwg
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWVGb3JJZGVudGlmaWVyKG1f
aGFzaCkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FIYXNoZWRLZXlBbGdv
cml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgsIFdURk1vdmUocHVibGljRXhwb25lbnQpLCBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShtX2hhc2gpKTsKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgs
IFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>