<?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>147332</bug_id>
          
          <creation_ts>2015-07-27 12:53:19 -0700</creation_ts>
          <short_desc>Source/WebCore/crypto code should pass std::function&lt;&gt; objects through rvalue references</short_desc>
          <delta_ts>2015-08-06 23:48:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112478</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-07-27 12:53:19 -0700</bug_when>
    <thetext>Source/WebCore/crypto code should pass std::function&lt;&gt; objects through rvalue references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112482</commentid>
    <comment_count>1</comment_count>
      <attachid>257586</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-07-27 13:07:08 -0700</bug_when>
    <thetext>Created attachment 257586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112483</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-27 13:08:21 -0700</bug_when>
    <thetext>Attachment 257586 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:72:  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:84:  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:96:  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:107:  CryptoAlgorithmRSA_OAEP::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.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:58:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:38:  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:50:  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:39:  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:70:  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:38:  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:50:  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:59:  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:38:  transformAES_CBC is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:85:  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:37:  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:48:  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:68:  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:80:  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:92:  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:105:  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:50:  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:67:  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:77:  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:87:  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:100:  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:72:  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:84:  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:96:  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:107:  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/CryptoAlgorithmHMAC.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:58:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:67:  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:77:  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:87:  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:98:  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:51:  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:48:  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:57:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithm.h:65:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 46 in 37 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>1112670</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-07-27 21:44:34 -0700</bug_when>
    <thetext>IIRC someone told me that I shouldn&apos;t do this when I was writing the code. Not sure why, I just wanted to get the code in at the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112793</commentid>
    <comment_count>4</comment_count>
      <attachid>257586</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-28 11:57:48 -0700</bug_when>
    <thetext>Comment on attachment 257586
Patch

Anders said we don’t need to do this. Aren’t std::function objects move-only already? What concrete benefit is there to making the change? Is the code generated any different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112794</commentid>
    <comment_count>5</comment_count>
      <attachid>257586</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-28 11:59:10 -0700</bug_when>
    <thetext>Comment on attachment 257586
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=257586&amp;action=review

&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:90
&gt; +    encrypt(parameters, key, data, WTF::move(callback), WTF::move(failureCallback), ec);

Can we get all the benefit just from calling WTF::move here and not changing the types?

&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:95
&gt; +    decrypt(parameters, key, data, WTF::move(callback), WTF::move(failureCallback), ec);

Can we get all the benefit just from calling WTF::move here and not changing the types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113490</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-30 14:21:08 -0700</bug_when>
    <thetext>Attachment 257586 did not pass style-queue:


ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:72:  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:84:  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:96:  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:107:  CryptoAlgorithmRSA_OAEP::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.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:58:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:38:  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:50:  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:39:  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:70:  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:38:  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:50:  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:59:  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:38:  transformAES_CBC is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:85:  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:37:  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:48:  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:68:  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:80:  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:92:  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:105:  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:50:  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:67:  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:77:  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:87:  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:100:  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:72:  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:84:  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:96:  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:107:  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/CryptoAlgorithmHMAC.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:58:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:67:  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:77:  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:87:  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:98:  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:51:  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:48:  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:57:  CryptoAlgorithmAES_KW::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/CryptoAlgorithm.h:65:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 46 in 37 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>1113745</commentid>
    <comment_count>7</comment_count>
      <attachid>257586</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-31 10:28:19 -0700</bug_when>
    <thetext>Comment on attachment 257586
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=257586&amp;action=review

&gt;&gt; Source/WebCore/crypto/CryptoAlgorithm.cpp:90
&gt;&gt; +    encrypt(parameters, key, data, WTF::move(callback), WTF::move(failureCallback), ec);
&gt; 
&gt; Can we get all the benefit just from calling WTF::move here and not changing the types?

There are still destructors being invoked that we avoid when using rvalue references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114533</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-08-03 23:17:56 -0700</bug_when>
    <thetext>Using rvalue references here avoids generating move constructors and destructors. Instead of moving the current std::function&lt;&gt; objects into completely new objects for each method invocation, the original std::function&lt;&gt; object is passed by reference along the call chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115674</commentid>
    <comment_count>9</comment_count>
      <attachid>257586</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-08-06 23:48:42 -0700</bug_when>
    <thetext>Comment on attachment 257586
Patch

Clearing flags on attachment: 257586

Committed r188118: &lt;http://trac.webkit.org/changeset/188118&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115675</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-08-06 23:48:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257586</attachid>
            <date>2015-07-27 13:07:08 -0700</date>
            <delta_ts>2015-08-06 23:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147332-20150727130547.patch</filename>
            <type>text/plain</type>
            <size>81877</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQwNzJhNzA5MzI3ZmYz
ZTY2NjllZTIzN2FjNWNhYWU3OTY2NTRmNy4uMTEyMTUyM2I2NjkwNTYwNDgwZTM5YzYxMjQwYTk5
ZThlNjQ0ZjYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxNS0wNy0yNyAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgU291cmNlL1dlYkNv
cmUvY3J5cHRvIGNvZGUgc2hvdWxkIHBhc3Mgc3RkOjpmdW5jdGlvbjw+IG9iamVjdHMgdGhyb3Vn
aCBydmFsdWUgcmVmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ3MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFzcyB0aGUgc3RkOjpmdW5jdGlvbjw+IGNhbGxiYWNrcyB0aHJvdWdoIENy
eXB0b0FsZ29yaXRobSBtZXRob2RzIHZpYQorICAgICAgICBydmxhdWUgcmVmZXJlbmNlcy4gVGhp
cyBhdm9pZHMgZ2VuZXJhdGlvbiBvZiB1bm5lY2Vzc2FyeSBtb3ZlIGFuZCBjb3B5CisgICAgICAg
IGNvbnN0cnVjdG9ycyBmb3Igc3RkOjpmdW5jdGlvbjw+IG9iamVjdHMgdGhhdCBhcmUgYmVpbmcg
aGFuZGxlZC4KKworICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG06OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG06OmRlcml2ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG06OmRlcml2ZUJpdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
OjppbXBvcnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0
Rm9yV3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRG
b3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uaDoKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuaDoKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjplbmNyeXB0Rm9yV3JhcEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRGb3JVbndyYXBLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpnZW5lcmF0ZUtleSk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmltcG9ydEtleSk6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmg6CisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUhNQUM6OnZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1I
TUFDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhNQUMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaDoKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6dmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVJTQV9PQUVQOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6
ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
MjQuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg6CisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaDoKKyAgICAgICAgKiBjcnlwdG8vZ251dGxz
L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5
cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfS1dHbnVUTFMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAg
ICAqIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRMUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAq
IGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdudVRMUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0
Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVy
aWZ5KToKKyAgICAgICAgKiBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR251
VExTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0
Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1B
RVNfQ0JDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DQkMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlw
dCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybURlY3J5
cHQpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgorICAg
ICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0
Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KToK
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVj
cnlwdCk6CisKIDIwMTUtMDctMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIGFuIG5ldmVyIGZhaWxpbmcgY2hlY2sgZm9yIGNsaWVudCgpIGlu
IFJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAppbmRleCA3MWQ2OTA3MWM1
YzZlNzc3MTA3NzI2N2I5YWEyYWRjZmQ2MDRmMzAxLi5jNTA4YTQ3ZGQ1NjZmN2MwMjcwMzFjNDA3
ZjIxZGY3MDVkZDg1YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmNwcApAQCAtNDAsNTkgKzQwLDU5IEBAIENyeXB0b0FsZ29yaXRobTo6fkNyeXB0b0FsZ29yaXRo
bSgpCiB7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG06OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
aywgVm9pZENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgQm9vbENhbGxiYWNrLCBWb2lkQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OnZlcmlmeShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBCb29sQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG06OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBib29sLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2ssIFZv
aWRDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6Z2Vu
ZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wsIENyeXB0b0tl
eVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIAotdm9pZCBDcnlw
dG9BbGdvcml0aG06OmRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgQ3J5cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2Us
IEtleUNhbGxiYWNrLCBWb2lkQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlw
dG9BbGdvcml0aG06OmRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgQ3J5cHRvQWxnb3JpdGhtKiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2Us
IEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGVy
aXZlQml0cyhjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
JiwgdW5zaWduZWQgbG9uZywgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGVyaXZlQml0cyhjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgdW5zaWduZWQgbG9uZywgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjppbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURh
dGEmLCBib29sLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2ssIFZvaWRDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobTo6aW1wb3J0S2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCwgQ3J5
cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNy
eXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBlbmNyeXB0KHBhcmFtZXRlcnMsIGtleSwgZGF0
YSwgY2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgZWMpOworICAgIGVuY3J5cHQocGFyYW1ldGVy
cywga2V5LCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxi
YWNrKSwgZWMpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGVjcnlwdEZvclVud3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRGb3JVbndyYXBLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXks
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgZGVjcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIGNhbGxiYWNrLCBmYWlsdXJlQ2Fs
bGJhY2ssIGVjKTsKKyAgICBkZWNyeXB0KHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGOjptb3Zl
KGNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4IDcxZjUxNDVkMTlhZGRiZmU3
MjIwYjQ3YzUxZjczZTczZjc3Y2MzMDUuLmNlY2QyMmJlYzQ0NDUyNGFmN2M5MmFjZTk1ZGZjYTcy
MjQ3MDI4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKQEAgLTU5
LDE5ICs1OSwxOSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik+IFZlY3RvckNhbGxiYWNrOwogICAgIHR5cGVkZWYgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IFZvaWRDYWxsYmFjazsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNpZ24oY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
Qm9vbENhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVy
aXZlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkm
IGJhc2VLZXksIENyeXB0b0FsZ29yaXRobSogZGVyaXZlZEtleVR5cGUsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkZXJpdmVCaXRzKGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2ssIFZvaWRDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmVy
aWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9y
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIGRlcml2ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCBDcnlwdG9BbGdvcml0aG0qIGRlcml2
ZWRLZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIGRlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICAvLyBUaGVzZSBhcmUgb25seSBkaWZmZXJlbnQgZnJvbSBlbmNy
eXB0L2RlY3J5cHQgYmVjYXVzZSBzb21lIGFsZ29yaXRobXMgbWF5IG5vdCBleHBvc2UgZW5jcnlw
dC9kZWNyeXB0LgotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0Rm9y
V3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiAK
IHByb3RlY3RlZDoKICAgICBDcnlwdG9BbGdvcml0aG0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAK
aW5kZXggNDFlMDQ0MTE5ZjdmOGZkZDA3MzY4ZGY2N2I4MzI4MGYzOWQzNGEzMC4uMjEzMzc4NzU3
Y2NiNDMzMjVjNjUyYzBiZWYzNDc3ZDUyY2FiODJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjprZXlBbGdvcml0
aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmEKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjplbmNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRv
QWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBhZXNDQkNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtQWVzQ2JjUGFyYW1zPihwYXJhbWV0ZXJzKTsKIApAQCAtNzcsNyArNzcsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtRW5jcnlwdChhZXNDQkNQYXJhbWV0
ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFj
ayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQzo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpk
ZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYg
YWVzQ0JDUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcz4o
cGFyYW1ldGVycyk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMK
ICAgICBwbGF0Zm9ybURlY3J5cHQoYWVzQ0JDUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5
QUVTPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNh
bGxiYWNrKSwgZWMpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2sgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9p
ZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxn
b3JpdGhtQWVzS2V5R2VuUGFyYW1zJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtQWVzS2V5R2VuUGFyYW1zPihwYXJhbWV0ZXJzKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgY2FsbGJhY2socmVzdWx0LmdldCgpLCBudWxs
cHRyKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjppbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlLCBLZXlDYWxsYmFjayBjYWxs
YmFjaywgVm9pZENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZSB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXM8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+
KGtleURhdGEpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmgKaW5kZXggZjNlNzliNjZjYjFiYjRiNjk3YWNhNDNkMWQ0MjhkY2FjMjgzNjc3MC4uYmU3
YzkxNzdhOWNjMDRmOGNlZThlZjEzOWRhZDY1ZTY3NzYxNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMu
aApAQCAtNDQsMTggKzQ0LDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
aywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlLCBLZXlDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wg
ZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2Us
IEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19DQkMo
KTsKICAgICB2aXJ0dWFsIH5DcnlwdG9BbGdvcml0aG1BRVNfQ0JDKCk7CiAKICAgICBib29sIGtl
eUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBhbGdv
cml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmLCBjb25zdCBDcnlw
dG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZv
aWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ss
IFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmLCBjb25z
dCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1z
JiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5kZXggZTk5N2FlZDU4M2IzOTcyNDE2
ODIxZGNjZDZiYzg4ZDY4Y2M2OWE3NS4uMzYwZDgwNjliYWYwOGYyNjkxOWM3YzA2MGJlMDE0ODg0
MzdjOTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYg
a2V5KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19LVzo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZW5jcnlwdEZvcldy
YXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYg
a2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICgha2V5QWxnb3JpdGhtTWF0Y2hlcyhrZXkpKSB7CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0tXOjplbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwKICAgICBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRh
LCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZGVjcnlwdEZvclVud3JhcEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXOjpkZWNyeXB0Rm9yVW53cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWtleUFsZ29yaXRo
bU1hdGNoZXMoa2V5KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtODQs
NyArODQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZGVjcnlwdEZvclVud3JhcEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJgogICAgIHBsYXRmb3JtRGVjcnlwdChk
b3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdU
Rjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0tXOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5
UGFpckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAg
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zJiBhZXNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5R2VuUGFyYW1zPihwYXJhbWV0ZXJzKTsKIApAQCAt
OTcsNyArOTcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6Z2VuZXJhdGVLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldAogICAgIGNhbGxiYWNrKHJlc3Vs
dC5nZXQoKSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURh
dGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlLCBLZXlD
YWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2smJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0
ZXRTZXF1ZW5jZT4oa2V5RGF0YSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19LVy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXLmgKaW5kZXggZDE4NzY0N2ZiYWNhNDVkZGUxMGI4NmQ0YTI0OWQ2YWYwODMy
Y2JjMS4uYjlmNDQ2ZjgwZjBiZTdkMWFkZjExZDdkODdmYTI0YjBkN2EzMDM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXLmgKQEAgLTQzLDE4ICs0MywxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1w
b3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlE
YXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVj
dG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5cHRGb3JVbndyYXBLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19LVygpOwogICAg
IHZpcnR1YWwgfkNyeXB0b0FsZ29yaXRobUFFU19LVygpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0
aG1NYXRjaGVzKGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgcGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IGM1
ZmNlNDk2NWQwNjA5M2UwMWUzNDhlMDg3ZDNjY2RjMDk0ZDlhMDguLmQ4OGRmNmViNTFmYWI0Mzcw
ZTQwOGI4ZWRmMmYzN2UxNDZlZDNmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIGJvb2wgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpz
aWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmIGhtYWNQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcz4ocGFyYW1ldGVy
cyk7CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnMKICAgICBwbGF0
Zm9ybVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGRh
dGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6
dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25h
dHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyYgaG1hY1BhcmFtZXRlcnMg
PSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPihwYXJhbWV0ZXJzKTsKIApAQCAt
OTEsNyArOTEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjbwogICAgIHBsYXRmb3JtVmVyaWZ5
KGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpLCBleHBlY3RlZFNp
Z25hdHVyZSwgZGF0YSwgV1RGOjptb3ZlKGNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxs
YmFjayksIGVjKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2Vz
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobUht
YWNLZXlQYXJhbXMmIGhtYWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1ldGVycyk7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmIHBhcmFtZXRlcgogICAgIGNhbGxiYWNrKHJlc3VsdC5nZXQoKSwgbnVsbHB0cik7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlLCBLZXlDYWxsYmFjayBjYWxsYmFj
aywgVm9pZENhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
SE1BQzo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleURhdGEmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlIHVzYWdlLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpczxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1
ZW5jZT4oa2V5RGF0YSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuaAppbmRleCBkYjY2N2ZkZDJmM2EyYzRjMzY5MmUxNDMyNTViNTM5YWY4ZDhhZDg5Li4wMDJj
NmRlM2MzOWExZTVhYzZjOTJmY2VjYjg3ODExYmQ4ZjFlN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCkBAIC00
NCwxOCArNDQsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBz
aWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9L
ZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGlt
cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjaywgVm9p
ZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25z
dCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0
dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0
aG1ITUFDKCk7CiAgICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtSE1BQygpOwogCiAgICAgYm9v
bCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmIGFs
Z29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxh
dGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmLCBjb25zdCBDcnlwdG9L
ZXlITUFDJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0
Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiwgY29uc3QgQ3J5cHRv
S2V5SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybVNpZ24oY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShj
b25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmNwcAppbmRleCBlNWRhN2EwYWYwZDA4NzNjMzJjYjZmYzI3OWRiZTMxOTNlYjYzOTA3
Li43YTk3N2U4ZTBiZjAxYWQ2MzkyZDk3Yzg1MmE2OTg2ZmNlNzExMWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5
cHRvS2V5JiBrZXkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKCFrZXlBbGdvcml0aG1NYXRjaGVzKGtleSkpIHsKICAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLAogICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRh
dGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFrZXlBbGdvcml0aG1N
YXRjaGVzKGtleSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLAogICAgIHBsYXRmb3JtRGVjcnlwdChkb3du
Y2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdURjo6
bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzLCBL
ZXlPcktleVBhaXJDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6
OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2Fs
bGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMmIHJz
YVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBh
cmFtZXRlcnMpOwogCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyCiAg
ICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0
ZXJzLnB1YmxpY0V4cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEY6Om1vdmUoa2V5UGFp
ckNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIEtleUNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZSB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBjb25zdCBDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0PENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzPihrZXlEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5oCmluZGV4IGEwMDU2OWY4YjgzN2E0OWZiNDQ3YzJlODcxMzNkZmM1MTA4NTM3NWQuLjQ4
NDcyZDk3NDMwNWU2MzQ4MTFlZWVmYWE5ZWU0OTgxMDhjYTU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmgKQEAgLTQ0LDE4ICs0NCwxOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlLCBLZXlPcktleVBhaXJDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2ssIFZvaWRDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQ
YWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDcnlw
dG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81KCk7CiAgICAgdmlydHVhbCB+Q3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNSgpOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNv
bnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywg
Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJT
QSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NS5jcHAKaW5kZXggMGE0NzdmZjk2ZTk2ZGZlOWMzOTQwZDJlZjk3OWVmODNlMmQ0MWQ5OS4uY2Jj
Yjk1YmI3YjU4MTc4MTg0ZDY0NWVmZWJjYmNiODVjNjI2MzcyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81LmNwcApAQCAtNjksNyArNjksNyBAQCBib29sIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0
b0FsZ29yaXRobQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBh
cmFtcyYgcnNhU1NBUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYVNzYVBh
cmFtcz4ocGFyYW1ldGVycyk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXIKICAgICBwbGF0Zm9ybVNpZ24ocnNhU1NBUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRv
S2V5UlNBPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVy
ZUNhbGxiYWNrKSwgZWMpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVy
ZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrIGNhbGxiYWNr
LCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXMmIHJzYVNTQVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXM+KHBhcmFtZXRlcnMpOwogCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwCiAgICAgcGxhdGZvcm1WZXJpZnkocnNhU1NBUGFyYW1ldGVycywgIGRvd25j
YXN0PENyeXB0b0tleVJTQT4oa2V5KSwgc2lnbmF0dXJlLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJh
Y2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIHVzYWdlcywgS2V5
T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlH
ZW5QYXJhbXMmIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FLZXlH
ZW5QYXJhbXM+KHBhcmFtZXRlcnMpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGUKICAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVu
Z3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBX
VEY6Om1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjppbXBvcnRLZXkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIEtl
eUNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtl
eShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXlEYXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2Fn
ZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJh
bXNXaXRoSGFzaCYgcnNhS2V5UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJz
YUtleVBhcmFtc1dpdGhIYXNoPihwYXJhbWV0ZXJzKTsKICAgICBjb25zdCBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0PENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzPihrZXlEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5o
CmluZGV4IDc4ZWU4NzQxZTZjMWRiNWE4ZmViMzk0YzYxODRiMzAyZGJiMjFhZTUuLjg0MTBiZDZk
YzM1MTVkNWU4YmExNzkxMzdhMDEyOGMyOGE2YWRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzUuaApAQCAtNDQsMTggKzQ0LDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2ln
bmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2ssIFZv
aWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFj
aywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZSwgS2V5Q2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUoKTsKICAgICB2aXJ0dWFs
IH5DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgpOwogCiAgICAgYm9vbCBrZXlBbGdv
cml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtcyYgYWxnb3JpdGht
UGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JikgY29uc3Q7Ci0gICAgdm9pZCBwbGF0Zm9ybVNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNB
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0
b0FsZ29yaXRobVJzYVNzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCmluZGV4IDIy
MTc2ZmJjM2U0MDljMzNmOTljYjkzYTZjNjdjMDc1ZjI2MjE1N2UuLjdmNzJkZDY0MWZkNjU5ZjY4
NmI3MzUxNjM4ZTE5YTQ3YzU5ODI2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAgYm9vbCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6a2V5QWxnb3JpdGhtTWF0
Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGEKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6ZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBDcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zJiByc2FPQUVQUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtZXRlcnMpOwogCkBAIC04MSw3ICs4MSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYgcGFyYW1ldGVyCiAgICAgcGxhdGZvcm1FbmNyeXB0KHJzYU9BRVBQYXJhbWV0
ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFj
ayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6
OmRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cyYgcnNhT0FFUFBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zPihwYXJhbWV0ZXJzKTsKIApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcgogICAgIHBsYXRmb3JtRGVjcnlwdChyc2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5
cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFp
bHVyZUNhbGxiYWNrKSwgZWMpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpn
ZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxi
YWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMmIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxD
cnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtZXRlcnMpOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW0KICAgICBDcnlwdG9LZXlSU0E6OmdlbmVy
YXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUCwgcnNhUGFyYW1ldGVy
cy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50LCBleHRyYWN0YWJs
ZSwgdXNhZ2VzLCBXVEY6Om1vdmUoa2V5UGFpckNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVD
YWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5RGF0YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2Us
IEtleUNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9ydEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlE
YXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZSwgS2V5
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikKIHsKICAgICBjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FLZXlQYXJhbXNXaXRo
SGFzaCYgcnNhS2V5UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUtleVBh
cmFtc1dpdGhIYXNoPihwYXJhbWV0ZXJzKTsKICAgICBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cyYgcnNhQ29tcG9uZW50cyA9IGRvd25jYXN0PENyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzPihrZXlEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oCmluZGV4IDNmZWE2NTQzZDVkMDRiNWRm
MjM5ZDU4Y2M2OWE2NzU2YzczYTFmZjMuLjYyNjkyZjVkYmUwYjE4M2Y3NWJjNDM0ZmRiZTcyOGQy
NmM5YmUxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9PQUVQLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaApAQCAtNDQsMTggKzQ0LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0
ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGlt
cG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5
RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjaywgVm9p
ZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJh
Y2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBW
ZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
LCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQKCk7CiAgICAgdmlydHVhbCB+Q3J5cHRvQWxn
b3JpdGhtUlNBX09BRVAoKTsKIAogICAgIGJvb2wga2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBD
cnlwdG9LZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwbGF0Zm9ybURlY3J5
cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJT
QSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKaW5kZXggNTlmZDNlODU1YzBhZmIwODg1ZDVhY2I3NTY0MjZiYTBjMGNiZGFlZi4u
YmM5NGFhM2RlYTljOWZjZjEwZmYxNGNkMTEwMDVhMTMyZDk2NTQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aG1TSEExOjppZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpOwog
ICAgIGlmICghZGlnZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmgKaW5kZXggY2VjZWFlZTQwM2RmZjczODgwNGQ0
MDk1ZmRhNjdiNzFhNWQxMWQyOC4uOGU0NjJiY2U2Nzk3ODk1MjJiNDQxMzZlMGU1ZDFhZjA2MzFi
ZTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTEuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IENyeXB0b0FsZ29yaXRobVNIQTEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDQ0MjRkYjcx
ODMwNmM3ZTRkMWMxMDFmOWI4ZGY3NTA0M2ZmM2YyMDAuLjYyY2M1YThjMmY5ZTdmNzJlNmRiZDBk
N2Q2ZDY5NzRjYzIwYWYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtNTIsNyArNTIsNyBA
QCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRp
ZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlw
dG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0KTsKICAgICBpZiAoIWRp
Z2VzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuaAppbmRleCBjMWFjYmFmNDc4ODcyYzZiMWNmMzk3YTQ5NDUz
ZDYxNDdlYTQxOTA1Li41ZjI5NGZjMWRlM2Q5NGU5MDEzOWUxZDIzYmNkMTBiYTc5Nzg2ZWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyMjQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJh
Y2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENy
eXB0b0FsZ29yaXRobVNIQTIyNCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggYjQ4NThiNDkw
MWJkZTYwYTNhMWY0NzhjNGYwZjQ0ODMxMDM3YzAxYS4uMjdmZThhYTBhYjczN2FkMDU1NjBmYzU0
MGZiODc1YTA4YWRlNzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlm
aWVyKCkgY29uc3QKICAgICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi12b2lkIENyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0
b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQogewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTYpOwogICAgIGlmICghZGln
ZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTI1Ni5oCmluZGV4IDk0YjA4MDQ1Y2MxMjI4ZTE0YjgzZDAzN2Y4MjMz
NjEzMDc2OTg2ZDkuLjc3YzM1ZmQwODYzMGRhNTk5ZjVjOWFhNzZkZWM0MmM0NjU1YzBiMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ3J5
cHRvQWxnb3JpdGhtU0hBMjU2KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAppbmRleCAwMDUwMmQxMzFh
MzBlZmIxOWZmNzQzNTc4MjVlM2JlNDM2MjMxN2YwLi42ZWJhMjM0ZjMyOGEyM2Y0MjljYjZiZDcx
ZWM0YmVlYzg4NmJjOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZp
ZXIoKSBjb25zdAogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdl
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0LmgKaW5kZXggNmY4NmNkOGMxYjUwM2M4NDFhNDdjNGI2MzliMDAx
MGQyYmQ1OTRhMy4uOTUyNzVlZjJhZGM5YTIxNzE5ODQ3YzA0YjlhMzZmODM1ZTlhODQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMzg0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjaywgVm9pZENhbGxiYWNr
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDcnlw
dG9BbGdvcml0aG1TSEEzODQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDFkM2EwZTI1MDhj
ODQ1YTQzYjU2ZGJhZjAwZTkzMWQyYjA5OGRiNDEuLjg3ZDYyZDQ0NWI4NTc1ZDBjNzc1M2M0ZjUz
ZGMyZTA1ZDMyZWE0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6aWRlbnRpZmll
cigpIGNvbnN0CiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9B
bGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2Vz
dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuaAppbmRleCA0NjFkMDFmMTZjYmQ3YjdlNmJlZDg5ZDY5NTFjZDAw
NDAzZjdmNmIxLi4xMTA2YjRhNmJkYTZlMjdkYjc3MTIyNmE5NWFkYTExM2IxYjAyNGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEE1MTIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEE1MTIuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0
b0FsZ29yaXRobVNIQTUxMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2du
dXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKaW5kZXggZDE1YmZl
YTAzNDczMWVjOWVlM2VlYzhmYzQ4NmMwMjY2MTAzZjM1Zi4uNzMxNzE4YmQ5OGQ2NGM2ZmIwYjBh
MjE1YjlmZjYyOTZmYmQ4ZWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2du
dXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1z
JiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bUFlc0NiY1BhcmFtcyYKICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0
b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1B
ZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
R251VExTLmNwcAppbmRleCA0MzI3YWZhOWQ3MWM4MGYwYzYzMzVmM2U0OTcyNThhMjk1YzNhYmE2
Li5jZjdiZjk1M2E1Y2RhZDg3MmIxMjMzY2IwNGU2YjdkMjE4MDI4OGVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19LV0dudVRMUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNf
S1dHbnVUTFMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9L
ZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
S1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0
aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1ITUFDR251
VExTLmNwcAppbmRleCAyNmU5ZmI5M2M4NmViZTk0ZDY2ZmY2M2Q4OWRjNDNmOTA1Y2I4NDhmLi5j
Yzk4NTYxMDljYjU0YmRlYWIwMGYyYjhhYzRjNTliYjI2NDI2M2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dudVRM
Uy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjYWxjdWxhdGVT
aWduYXR1cmUoZ251dGxzX21hY19hbGdvcml0aG1fdCBhbGdvcml0aG0sIGNvbnMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0
b0FsZ29yaXRobUhtYWNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtl
eSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBnbnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2Vz
dEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOwogICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExT
X01BQ19VTktOT1dOKSB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmIHBhcmFtZXRl
CiAgICAgY2FsbGJhY2soc2lnbmF0dXJlKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29s
Q2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlI
TUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBnbnV0bHNfbWFjX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IGdldEdudXRsc0RpZ2VzdEFsZ29y
aXRobShwYXJhbWV0ZXJzLmhhc2gpOwogICAgIGlmIChhbGdvcml0aG0gPT0gR05VVExTX01BQ19V
TktOT1dOKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R251VExTLmNwcAppbmRl
eCBjNjZmMzRhMjFkYmE0N2QwMmYyZDkxYTQ2NWRiZGY3MjUyZjFjN2Y1Li5mYmZlMWM0YjZjZTAw
M2QyOTg4NzBlYWQzNDFiM2UyMDJkMTAwYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNUdudVRMUy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlw
dChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81
OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRmb3JtRW5jcnlwdChjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgYwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNv
bnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R251VExT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVHbnVUTFMuY3BwCmluZGV4IDM3MTBkYTI3MWZhYjM1ZGUwMTM2ZjdjM2YyNTBm
ZTNkYTQwYTEwZGYuLjNlNjA2YmM4N2QwOWJkYjU3ZjE4ODc5YjAxODkzYzNiOWRjZmU3YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nbnV0
bHMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVBh
cmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ4LDcgKzQ4LDcg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVJzYVNzYVAKICAgICBVTlVTRURfUEFSQU0oZWMpOwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHbnVUTFMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKaW5k
ZXggNjY0MWY5ZjBkYTRhOGUxNmQ2YmQ5Mzg5YzVkNjQxNjQxZTg2NTE2ZS4uNWU1YjQzNjI5OThj
YTFhM2QxNmI5ODVjODEyOWFhMzUxNzJhNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdudVRMUy5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00Nyw3ICs0
Nyw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNr
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURlY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQ01hYy5jcHAKaW5kZXggMDQ4MzdiNmQ2OGNjYzNjMDJjMWM5MTQ1YWNhNjYx
YWY1ZTRhMzM0ZS4uODUxNGJmMjNhNmY5MzQyMWE1NDllOTYwMWJiYjIzZDVmZmI3NDE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIHZvaWQgdHJhbnNmb3JtQUVTX0NCQyhDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0
IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIENyeXB0b0FsZ29yaXRo
bTo6VmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNr
IGZhaWx1cmVDYWxsYmFjaykKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NPcGVyYXRp
b24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRl
cnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBDcnlwdG9BbGdvcml0aG06OlZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIENyeXB0b0Fs
Z29yaXRobTo6Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKHBhcmFtZXRlcnMuaXYpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCwgIkluaXRp
YWxpemF0aW9uIHZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgYWxnb3JpdGhtIGJsb2Nr
IHNpemUiKTsKIApAQCAtODIsMTIgKzgyLDEyIEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19D
QkMoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQCiAg
ICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikKIHsKICAgICB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0VuY3J5cHQsIHBh
cmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGOjptb3ZlKGNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1
cmVDYWxsYmFjaykpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleUFFUyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKQogewogICAgIHRyYW5zZm9ybUFFU19DQkMoa0NDRGVjcnlwdCwgcGFyYW1ldGVy
cywga2V5LCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxi
YWNrKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19LV01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19LV01hYy5jcHAKaW5kZXggNDkwNmE5ZTI3ZTdhOTZhOTg1NGJjMTFmZjJjNDA5
ZWNiZTMyMDQ3Yy4uOTg1NTUzMDQ2M2I3NzBiNWFlYTdhM2RjODI2ZTljNzExMjRhOTQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfS1dN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXTWFjLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRv
S2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpCiB7CiAgICAgaWYgKGRhdGEuc2Vjb25kICUgOCkgewogICAgICAgICAvLyBSRkMgMzM5
NCB1c2VzIDY0LWJpdCBibG9ja3MgYXMgaW5wdXQuCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5QUVTJiBr
ZXksIGNvbnN0IENyeXB0CiAgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQordm9pZCBDcnlw
dG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlBRVMmIGtl
eSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDU3ltbWV0cmljVW53cmFwcGVkU2l6ZShrQ0NX
UkFQQUVTLCBkYXRhLnNlY29uZCkpOwogICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNp
emUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUhNQUNNYWMuY3BwCmluZGV4IGY1MTA1NTIxNjMzMmI3Yjk5MTczYmQ2NDA5ZDU5NDRkYTAyYmUw
OWUuLmNmM2E0NjBkNTVlYWY0Njk1MzgzYTgxYWUxZmMwY2M1NDk0NmQ3ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApA
QCAtODksNyArODksNyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVy
ZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0bwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENy
eXB0b0FsZ29yaXRobUhtYWNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtOwogICAg
IGlmICghZ2V0Q29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gsIGFsZ29y
aXRobSkpIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0ZQogICAg
IGNhbGxiYWNrKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBl
Y3RlZFNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxi
YWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBDcnlw
dG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFj
UGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVkU2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG07CiAgICAgaWYg
KCFnZXRDb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgYWxnb3JpdGht
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggYjgzZDM4Mzg5NTFiZGM4
MjQ1MGY1MjVmNWY2Y2RkMmNmNTIyZjZkMi4uNzc1OTgzNDQ3OGE3OGM4NWYzNDgzNTAxYTA2YjFl
NjAyNTZmODRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tl
eVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjaXBoZXJUZXh0KDEwMjQpOwogICAgIHNpemVf
dCBjaXBoZXJUZXh0TGVuZ3RoID0gY2lwaGVyVGV4dC5zaXplKCk7CkBAIC00Nyw3ICs0Nyw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNv
bnN0IENyeXB0b0tleVJTQSYga2V5LCBjCiAgICAgY2FsbGJhY2soY2lwaGVyVGV4dCk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KGNv
bnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcGxh
aW5UZXh0KDEwMjQpOwogICAgIHNpemVfdCBwbGFpblRleHRMZW5ndGggPSBwbGFpblRleHQuc2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAppbmRleCA5MWY5YzFmYWIzMmVk
ZDlmODdhOGU0MzBkNTYxY2U3YzIyYjYxZjE0Li4wY2RlMWI0MTNmZjY4NGRhM2JkZTZlMjJkM2Zh
ZDM5MTU2OTk4YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FT
c2FQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25zdCBDcnlw
dG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9pZENhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGht
UnNhU3NhUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBD
Q0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07CiAgICAgaWYgKCFnZXRDb21tb25Dcnlw
dG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7CkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQCiAgICAgY2FsbGJhY2soc2ln
bmF0dXJlKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxh
dGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2ln
bmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2sgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgc2lnbmF0dXJlLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0Rp
Z2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07CiAgICAgaWYgKCFnZXRDb21tb25DcnlwdG9E
aWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVBNYWMuY3BwCmluZGV4IGNiMWNmNmY5MGQyM2NmZmFhNjBkZTFiMTZiNTc2YjRlNDU3MWZiYmYu
LmFhY2RmYWZhOWY2MzM2MWM5NGRkZjg1Y2JjYWZlNTMxYTMwMjE3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMu
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJTQSYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
Q0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwogICAgIGlmICghZ2V0Q29tbW9uQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCwgZGlnZXN0QWxnb3JpdGhtKSkgewpA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVu
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcwogICAgIGNhbGxiYWNrKGNp
cGhlclRleHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybURl
Y3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5UlNBJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlSU0EmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0
aG07CiAgICAgaWYgKCFnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5o
YXNoLCBkaWdlc3RBbGdvcml0aG0pKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>