<?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>206449</bug_id>
          
          <creation_ts>2020-01-17 15:22:04 -0800</creation_ts>
          <short_desc>[OpenSSL] Add stubs and build for Web Crypto</short_desc>
          <delta_ts>2020-01-22 18:46:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206439</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tomoki.imai</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608233</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-17 15:22:04 -0800</bug_when>
    <thetext>Make Web Crypto build with OpenSSL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608264</commentid>
    <comment_count>1</comment_count>
      <attachid>388106</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-17 16:01:29 -0800</bug_when>
    <thetext>Created attachment 388106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608266</commentid>
    <comment_count>2</comment_count>
      <attachid>388107</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-17 16:05:03 -0800</bug_when>
    <thetext>Created attachment 388107
Patch

Make style checker as happy as its realistically going to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608291</commentid>
    <comment_count>3</comment_count>
      <attachid>388107</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-01-17 16:33:49 -0800</bug_when>
    <thetext>Comment on attachment 388107
Patch

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

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:56
&gt; +    notImplemented();

Shouldn&apos;t we call back the &quot;failureCallback&quot; just in case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609157</commentid>
    <comment_count>4</comment_count>
      <attachid>388107</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-21 11:28:23 -0800</bug_when>
    <thetext>Comment on attachment 388107
Patch

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

LGTM. r=me. Please address the following minor issues.

&gt; Source/WebCore/crypto/keys/CryptoKeyRSA.h:55
&gt; +typedef std::unique_ptr&lt;void*&gt; PlatformRSAKeyContainer;

PlatformRSAKey, I believe.

&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:29
&gt; +#if ENABLE(WEB_CRYPTO)

I wonder after your change if this ENABLE macro is still needed.

&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp:29
&gt; +#if ENABLE(WEB_CRYPTO) &amp;&amp; HAVE(RSA_PSS)

You probably don&apos;t need to include the HAVE(RSA_PSS) macro. And you probably need to set it to 1 for your ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609171</commentid>
    <comment_count>5</comment_count>
      <attachid>388107</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-21 11:43:40 -0800</bug_when>
    <thetext>Comment on attachment 388107
Patch

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

&gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:29
&gt;&gt; +#if ENABLE(WEB_CRYPTO)
&gt; 
&gt; I wonder after your change if this ENABLE macro is still needed.

WEB_CRYPTO can be enabled and disabled so all the .cpp files should technically have these blocks.

&gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp:29
&gt;&gt; +#if ENABLE(WEB_CRYPTO) &amp;&amp; HAVE(RSA_PSS)
&gt; 
&gt; You probably don&apos;t need to include the HAVE(RSA_PSS) macro. And you probably need to set it to 1 for your ports.

It looks like this is OpenSSL 1.1.1 where support was added. Things get a bit more tricky with LibreSSL because it always reports as OpenSSL 2.0. When enabling this I think we need to do some kind of HAVE check within the CMake and I&apos;d just want to put that off at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609179</commentid>
    <comment_count>6</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-21 11:55:22 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #5)
&gt; Comment on attachment 388107 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388107&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:29
&gt; &gt;&gt; +#if ENABLE(WEB_CRYPTO)
&gt; &gt; 
&gt; &gt; I wonder after your change if this ENABLE macro is still needed.
&gt; 
&gt; WEB_CRYPTO can be enabled and disabled so all the .cpp files should
&gt; technically have these blocks.

I think there is no points to have an ENABLE compile time flag if all ports have the implementation.

&gt; 
&gt; &gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp:29
&gt; &gt;&gt; +#if ENABLE(WEB_CRYPTO) &amp;&amp; HAVE(RSA_PSS)
&gt; &gt; 
&gt; &gt; You probably don&apos;t need to include the HAVE(RSA_PSS) macro. And you probably need to set it to 1 for your ports.
&gt; 
&gt; It looks like this is OpenSSL 1.1.1 where support was added. Things get a
&gt; bit more tricky with LibreSSL because it always reports as OpenSSL 2.0. When
&gt; enabling this I think we need to do some kind of HAVE check within the CMake
&gt; and I&apos;d just want to put that off at the moment.

Apple ports have this because RSA-PSS was added to CommonCrypto recently. Didn&apos;t know that OpenSSL has the same issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609883</commentid>
    <comment_count>7</comment_count>
      <attachid>388495</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-22 17:34:36 -0800</bug_when>
    <thetext>Created attachment 388495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609885</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-01-22 17:37:02 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #6)
&gt; (In reply to Don Olmstead from comment #5)
&gt; &gt; Comment on attachment 388107 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=388107&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:29
&gt; &gt; &gt;&gt; +#if ENABLE(WEB_CRYPTO)
&gt; &gt; &gt; 
&gt; &gt; &gt; I wonder after your change if this ENABLE macro is still needed.
&gt; &gt; 
&gt; &gt; WEB_CRYPTO can be enabled and disabled so all the .cpp files should
&gt; &gt; technically have these blocks.
&gt; 
&gt; I think there is no points to have an ENABLE compile time flag if all ports
&gt; have the implementation.
&gt; 

I&apos;d be happy to remove the ENABLE flags after there&apos;s actual implementations for everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609888</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-22 17:39:48 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #8)
&gt; (In reply to Jiewen Tan from comment #6)
&gt; &gt; (In reply to Don Olmstead from comment #5)
&gt; &gt; &gt; Comment on attachment 388107 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=388107&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/crypto/openssl/CryptoAlgorithmAES_CBCOpenSSL.cpp:29
&gt; &gt; &gt; &gt;&gt; +#if ENABLE(WEB_CRYPTO)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I wonder after your change if this ENABLE macro is still needed.
&gt; &gt; &gt; 
&gt; &gt; &gt; WEB_CRYPTO can be enabled and disabled so all the .cpp files should
&gt; &gt; &gt; technically have these blocks.
&gt; &gt; 
&gt; &gt; I think there is no points to have an ENABLE compile time flag if all ports
&gt; &gt; have the implementation.
&gt; &gt; 
&gt; 
&gt; I&apos;d be happy to remove the ENABLE flags after there&apos;s actual implementations
&gt; for everything.

Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609923</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 18:44:32 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388495:

imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html bug 201481 (authors: shvaikalesh@gmail.com and youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609924</commentid>
    <comment_count>11</comment_count>
      <attachid>388495</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 18:45:24 -0800</bug_when>
    <thetext>Comment on attachment 388495
Patch

Clearing flags on attachment: 388495

Committed r254958: &lt;https://trac.webkit.org/changeset/254958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609925</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 18:45:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609926</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-22 18:46:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/58820660&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388106</attachid>
            <date>2020-01-17 16:01:29 -0800</date>
            <delta_ts>2020-01-17 16:05:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206449.diff</filename>
            <type>text/plain</type>
            <size>59638</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMmM0NDlkODUyMC4uZDdh
MWY0NTUzOTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMC0wMS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgorCisgICAgICAgIFtPcGVuU1NMXSBBZGQgc3R1YnMgYW5kIGJ1aWxkIGZvciBXZWIgQ3J5cHRv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0NDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUg
V2ViIENyeXB0byBhcyBhbiBleHBlcmltZW50IGZvciBXaW5DYWlybyBhbmQgUGxheVN0YXRpb24u
IEFkZCB0aGUgVVNFX09QRU5TU0wKKyAgICAgICAgZGVmaW5pdGlvbiB0byBwbGF0Zm9ybXMgdXNp
bmcgT3BlblNTTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2U6CisgICAgICAg
ICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNXaW5DYWlyby5jbWFrZToKKwogMjAyMC0wMS0xNiAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDc4ZDkwNTM5MTZmLi40OWJiZGMxMTFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDkwIEBACisyMDIwLTAxLTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIEFkZCBzdHVicyBhbmQgYnVpbGQgZm9yIFdlYiBD
cnlwdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQ0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdHVicyBmb3IgYW4gT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBvZiBXZWIgQ3J5cHRvLiBBZGQg
dGhlIGFzc29jaWF0ZWQgQ01ha2UKKyAgICAgICAgZmlsZXMgZm9yIE9wZW5TU0wgcGxhdGZvcm1z
IGFuZCByZWZlcmVuY2UgdGhlbSBvbiB0aGUgcGxhdGZvcm1zIHVzaW5nIE9wZW5TU0wuCisKKyAg
ICAgICAgVGVzdHMgd2lsbCBiZSBlbmFibGVkIGFzIGZ1bmN0aW9uYWxpdHkgbGFuZHMuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlS
U0EuaDoKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3Bl
blNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNy
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybUVuY3J5cHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1EZWNy
eXB0KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3Bl
blNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6Cisg
ICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1T
aWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9wZW5T
U0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBs
YXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNp
Z24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeSk6Cisg
ICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxh
dGZvcm1SZWdpc3RlckFsZ29yaXRobXMpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0
b0tleUVDT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6
OmtleVNpemVJbkJpdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtU3VwcG9ydGVkQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtR2VuZXJhdGVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydFJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRKV0tQdWJsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3Jt
SW1wb3J0SldLUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZv
cm1JbXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUlt
cG9ydFBrY3M4KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9y
dFJhdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRG
aWVsZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtRXhwb3J0UGtjczggY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0
b0tleVJTQU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJT
QTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aXNSZXN0cmljdGVk
VG9IYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6a2V5U2l6ZUlu
Qml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFp
cik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpleHBvcnRQa2NzOCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL1Nlcmlh
bGl6ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Z2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp3cmFwU2Vy
aWFsaXplZENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3JlOjp1bndyYXBTZXJpYWxpemVkQ3J5
cHRvS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlOiBBZGRlZC4KKwogMjAy
MC0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjU0NDgzKTogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVm
b3JlLWRpc3BhdGNoLmh0bWwgYmVjYW1lIHZlcnkgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1GVFcuY21h
a2UKaW5kZXggYWU5MWE3NjM4NDQuLjlhYjQ2ODczOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUZUVy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5j
bWFrZQpAQCAtMiw2ICsyLDcgQEAgaW5jbHVkZShwbGF0Zm9ybS9DdXJsLmNtYWtlKQogaWYgKE5P
VCBBUFBMRV9CVUlMRCkKICAgICBpbmNsdWRlKHBsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2Up
CiBlbmRpZiAoKQoraW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0
Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVf
SU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UKaW5kZXggY2IxYThiOWVlM2UuLmY5YTcxY2MwOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTIsNiArMiw3IEBAIGluY2x1ZGUocGxhdGZvcm0vQ2Fp
cm8uY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL0N1cmwuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3Jt
L0ZyZWVUeXBlLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlKQor
aW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKaW5kZXggZTNlNDc4YWQ0
NzYuLjhlNjdhNDUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNh
aXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAg
LTEsNiArMSw3IEBACiBpbmNsdWRlKHBsYXRmb3JtL0NhaXJvLmNtYWtlKQogaW5jbHVkZShwbGF0
Zm9ybS9DdXJsLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlKQor
aW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKaW5kZXggY2Fj
NzQ4YTg0ODguLjc3N2RmZDNhODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlFQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleUVDLmgKQEAgLTUwLDYgKzUwLDEwIEBAIHR5cGVkZWYgZ2NyeV9zZXhwX3QgUGxhdGZvcm1F
Q0tleTsKIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50
ZXI8Z2NyeV9zZXhwX3Q+Ojp0eXBlLCBQQUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X3Nl
eHBfdD4+IFBsYXRmb3JtRUNLZXlDb250YWluZXI7CiAjZW5kaWYKIAorI2lmIFVTRShPUEVOU1NM
KQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUVDS2V5OwordHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1FQ0tleT4gUGxhdGZvcm1FQ0tleUNvbnRhaW5lcjsKKyNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgK
aW5kZXggNzhmMDI2NmEwYTQuLjA0NTU1MWMxZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlSU0EuaApAQCAtNTAsNiArNTAsMTEgQEAgdHlwZWRlZiBnY3J5X3NleHBf
dCBQbGF0Zm9ybVJTQUtleTsKIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8Z2NyeV9zZXhwX3Q+Ojp0eXBlLCBQQUw6OkdDcnlwdDo6SGFuZGxlRGVs
ZXRlcjxnY3J5X3NleHBfdD4+IFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyOwogI2VuZGlmCiAKKyNp
ZiBVU0UoT1BFTlNTTCkKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1SU0FLZXk7Cit0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjx2b2lkKj4gUGxhdGZvcm1SU0FLZXlDb250YWluZXI7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9LZXlSU0FDb21wb25lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi42NzIwMmUxZGQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0
b0tleUFFUy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1z
JiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgUGFkZGluZykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXND
YmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBQYWRkaW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MjljZThlZGQ3ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFl
c0NiY0NmYlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMm
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUk9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44
ZjE2MTRkYmNiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1BRVNfQ1RSLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zJiwgY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmLCBjb25zdCBDcnlwdG9L
ZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTU9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5iYzBlOGU4MzQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1BRVNfR0NNLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiwgY29uc3Qg
Q3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQor
CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZmRlYmYwNzE2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1BRVNfS1cuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5j
bHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6cGxhdGZvcm1XcmFwS2V5KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtVW53cmFwS2V5KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1FQ0RIT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1FQ0RIT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjJlZjBlY2RmZWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0FsZ29yaXRobUVDREguaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAi
Q3J5cHRvS2V5RUMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNE
SDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5
RUMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RT
QU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtRUNEU0FPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMjAwYzBmZmVlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUVDRFNBLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUVDJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25Pcjxi
b29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtRWNkc2FQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1IS0RGT3Bl
blNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1I
S0RGT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYw
YjdhNDZjMjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bUhLREYuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtSGtkZlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhj
b25zdCBDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UmF3Jiwgc2l6
ZV90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzU0NjBkYWE5MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhNQUNPcGVu
U1NMLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1ITUFDLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0tleUhNQUMuaCIKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tl
eUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2Vw
dGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0tleUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUEJLREYyT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktERjJPcGVuU1NMLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk0ZjYwMjlmZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktE
RjJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QQktERjIuaCIKKworI2lmIEVO
QUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1z
LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBia2RmMlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJhdyYsIHNpemVfdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGFhNDk1ZTU5NjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81T3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRl
ICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9y
bURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5T
U0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDRkMGI1ODNh
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRp
b25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJp
ZnkoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQT3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE9wZW5T
U0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZDhlM2Q3YWVk
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQT3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NP
cGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bVJTQV9QU1NPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzQ4YjJmMDIwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTT3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtUlNBX1BTUy5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pICYmIEhBVkUoUlNB
X1BTUykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIgorI2luY2x1
ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFy
YW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5T3BlblNTTC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU3MDA2OGViNGZmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnlPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgor
CisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEx
LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgiCisjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgiCisj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1SZWdpc3RlckFsZ29yaXRo
bXMoKQoreworICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTE+KCk7Cisg
ICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjI0PigpOworICAgIHJlZ2lz
dGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTI1Nj4oKTsKKyAgICByZWdpc3RlckFsZ29y
aXRobTxDcnlwdG9BbGdvcml0aG1TSEEzODQ+KCk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5
cHRvQWxnb3JpdGhtU0hBNTEyPigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5iMzZkZDlkNTJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAKQEAgLTAsMCArMSwx
MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNy
eXB0b0tleUVDLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc2l6ZV90IENyeXB0b0tleUVD
OjprZXlTaXplSW5CaXRzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRlZEN1cnZlKE5h
bWVkQ3VydmUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK09wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRm
b3JtSW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rv
cjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGlj
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYm
IHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJp
dmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWludDhf
dD4mJiB4LCBWZWN0b3I8dWludDhfdD4mJiB5LCBWZWN0b3I8dWludDhfdD4mJiBkLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRD
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWlu
dDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitWZWN0
b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyhKc29uV2ViS2V5JikgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFNwa2koKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUV4cG9ydFBrY3M4KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMzY0NjQ4NjM5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9LZXlSU0EuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIENyeXB0b0tleVJTQTo6aXNSZXN0cmlj
dGVkVG9IYXNoKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBDcnlwdG9LZXlSU0E6
OmtleVNpemVJbkJpdHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hh
c2gsIHVuc2lnbmVkIG1vZHVsdXNMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGlj
RXhwb25lbnQsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlQYWly
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8Q3J5cHRv
S2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxDcnlwdG9L
ZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRTcGtpKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhw
b3J0UGtjczgoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlSU0FDb21wb25lbnRzPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBP
cGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlw
dG9LZXlXcmFwT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmU4NDhhNTAyZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcApAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1BRVNfQ1RSLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBnZXRE
ZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgVU5VU0VEX1BBUkFNKG1hc3RlcktleSk7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEluaXRpYWxseSB0aGVzZSBoZWxwZXIgZnVuY3Rpb25z
IHdlcmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBLRUsgd3JhcHBpbmcgYW5kIHVud3JhcHBpbmcsCisv
LyBidXQgdGhpcyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSwgZGVzcGl0ZSB0aGUgZnVuY3Rpb24g
bmFtZXMgYW5kIHRoZSBNYWMgaW1wbGVtZW50YXRpb24KKy8vIHN0aWxsIGluZGljYXRpbmcgb3Ro
ZXJ3aXNlLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM4ODMgZm9yIG1vcmUgaW5mby4KKworYm9vbCB3cmFwU2VyaWFsaXplZENyeXB0b0tleShjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQoreworICAgIFVOVVNFRF9QQVJBTShtYXN0ZXJLZXkp
OworCisgICAgLy8gTm8gd3JhcHBpbmcgcGVyZm9ybWVkIC0tIHRoZSBzZXJpYWxpemVkIGtleSBk
YXRhIGlzIGNvcGllZCBpbnRvIHRoZSBgcmVzdWx0YCB2YXJpYWJsZS4KKyAgICByZXN1bHQgPSBW
ZWN0b3I8dWludDhfdD4oa2V5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB1bndyYXBT
ZXJpYWxpemVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYga2V5KQorewor
ICAgIFVOVVNFRF9QQVJBTShtYXN0ZXJLZXkpOworCisgICAgLy8gTm8gdW53cmFwcGluZyBwZXJm
b3JtZWQgLS0gdGhlIHNlcmlhbGl6ZWQga2V5IGRhdGEgaXMgY29waWVkIGludG8gdGhlIGBrZXlg
IHZhcmlhYmxlLgorICAgIGtleSA9IFZlY3Rvcjx1aW50OF90Pih3cmFwcGVkS2V5KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGVu
U1NMLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vT3BlblNTTC5jbWFrZQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDE1MDlhYjQzNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGVuU1NMLmNtYWtlCkBAIC0wLDAgKzEs
MjIgQEAKK2lmIChFTkFCTEVfV0VCX0NSWVBUTykKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMgCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3Bl
blNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9w
ZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01P
cGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dP
cGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RIT3Bl
blNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1IS0RGT3BlblNT
TC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wu
Y3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVBCS0RGMk9wZW5TU0wu
Y3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzVPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5T3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5
cHRvS2V5RUNPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FP
cGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cE9wZW5TU0wuY3BwCisgICAgKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zRlRXLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKaW5kZXggZWIz
ODY3OGJjN2IuLjQ4MzA0YzI1N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZU
Vy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQpAQCAtMjQ2LDYgKzI0
Niw3IEBAIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9FR0wgT04pCiBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfRVhQT1JUX01BQ1JPUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9PUEVOR0xfRVMgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChIQVZFX09QRU5HTF9F
U18zIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX09QRU5TU0wgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiAjU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX0lOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSICR7RU5BQkxFX1JFTU9URV9JTlNQRUNUT1J9
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKaW5kZXggZjEyNmJjNjI2OWMuLjNj
YWVkYjE4MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKQEAgLTM4LDYg
KzM4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQgUFJJVkFURSAke0VOQUIKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TRVJWSUNFX1dPUktFUiBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSAk
e0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxf
RkVBVFVSRVN9KQogCiAjIEZlYXR1cmVzIHRvIGludmVzdGlnYXRlCiAjCkBAIC01OSw3ICs2MCw2
IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9OT1RJRklDQVRJT05T
IFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NW
R19GT05UUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9VU0VSU0VMRUNUX0FMTCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01FU1NBR0VfSEFORExFUlMgUFJJVkFURSBPRkYpCi1XRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9G
RikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YU0xUIFBSSVZBVEUg
T0ZGKQogCiBXRUJLSVRfT1BUSU9OX0VORCgpCkBAIC0xMjEsNiArMTIxLDcgQEAgU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
RlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSEFSRkJVWlogT04pCiBT
RVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQorU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX09QRU5TU0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BFX1JF
TkRFUkVSIE9OKQogCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSU5TUEVDVE9SX1NPQ0tF
VF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUn0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmlu
ZGV4IDEwMTlmY2U5NGQ1Li45MzVhN2ZkMTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTY4
LDcgKzY4LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1hTTFQg
UFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NNT09U
SF9TQ1JPTExJTkcgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPRkYpCi1XRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIAogIyBGSVhN
RTogUG9ydCBibWFsbG9jIHRvIFdpbmRvd3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDMzMTAKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9T
WVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCkBAIC05MSwxNyArOTAsMjAgQEAgaWYgKCR7V1RGX1BM
QVRGT1JNX1dJTl9DQUlST30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1NFUlZJQ0VfV09SS0VSIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVkFSSUFU
SU9OX0ZPTlRTIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKICAgICBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCRFJJVkVSIFBSSVZBVEUg
JHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1F
TlRBTF9GRUFUVVJFU30pCiAKICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgcGx1Z2luIHByb2Nlc3Mg
b24gTW9kZXJuIFdlYktpdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTMxMwogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRT
Q0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQogZWxzZSAoKQogICAgIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcgUFVCTElDIE9GRikKLSAg
ICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVVNFUl9NRVNTQUdFX0hB
TkRMRVJTIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBPTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT0ZGKQorICAgIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElB
IFBVQkxJQyBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
UFVCTElDX1NVRkZJWF9MSVNUIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQVUJMSUMgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SIFBSSVZBVEUgT0ZGKQor
ICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01FU1NBR0Vf
SEFORExFUlMgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1dFQkdMIFBVQkxJQyBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCisKICAgICBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShVU0VfVkVSU0lPTl9TVEFNUEVSIFBSSVZBVEUgT04pCiBl
bmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCAyZWUyYWFkZDJjYi4u
ZWJjNThjZjJjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtMzksNiArMzks
NyBAQCBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ1VSTCBPTikKIFNFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9FR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTkdM
X0VTIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoSEFWRV9PUEVOR0xfRVNfMyBPTikKK1NF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOU1NMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNF
X1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX01FRElB
X0ZPVU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388107</attachid>
            <date>2020-01-17 16:05:03 -0800</date>
            <delta_ts>2020-01-22 17:34:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206449.diff</filename>
            <type>text/plain</type>
            <size>59637</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMmM0NDlkODUyMC4uZDdh
MWY0NTUzOTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMC0wMS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgorCisgICAgICAgIFtPcGVuU1NMXSBBZGQgc3R1YnMgYW5kIGJ1aWxkIGZvciBXZWIgQ3J5cHRv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0NDkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUg
V2ViIENyeXB0byBhcyBhbiBleHBlcmltZW50IGZvciBXaW5DYWlybyBhbmQgUGxheVN0YXRpb24u
IEFkZCB0aGUgVVNFX09QRU5TU0wKKyAgICAgICAgZGVmaW5pdGlvbiB0byBwbGF0Zm9ybXMgdXNp
bmcgT3BlblNTTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2U6CisgICAgICAg
ICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNXaW5DYWlyby5jbWFrZToKKwogMjAyMC0wMS0xNiAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDc4ZDkwNTM5MTZmLi40OWJiZGMxMTFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDkwIEBACisyMDIwLTAxLTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIEFkZCBzdHVicyBhbmQgYnVpbGQgZm9yIFdlYiBD
cnlwdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQ0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdHVicyBmb3IgYW4gT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBvZiBXZWIgQ3J5cHRvLiBBZGQg
dGhlIGFzc29jaWF0ZWQgQ01ha2UKKyAgICAgICAgZmlsZXMgZm9yIE9wZW5TU0wgcGxhdGZvcm1z
IGFuZCByZWZlcmVuY2UgdGhlbSBvbiB0aGUgcGxhdGZvcm1zIHVzaW5nIE9wZW5TU0wuCisKKyAg
ICAgICAgVGVzdHMgd2lsbCBiZSBlbmFibGVkIGFzIGZ1bmN0aW9uYWxpdHkgbGFuZHMuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlS
U0EuaDoKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3Bl
blNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qzo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19DQkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNy
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybUVuY3J5cHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1EZWNy
eXB0KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3Bl
blNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6Cisg
ICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1T
aWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9wZW5T
U0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBs
YXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNp
Z24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeSk6Cisg
ICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxh
dGZvcm1SZWdpc3RlckFsZ29yaXRobXMpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0
b0tleUVDT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6
OmtleVNpemVJbkJpdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtU3VwcG9ydGVkQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtR2VuZXJhdGVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydFJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRKV0tQdWJsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3Jt
SW1wb3J0SldLUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZv
cm1JbXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUlt
cG9ydFBrY3M4KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9y
dFJhdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRG
aWVsZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtRXhwb3J0UGtjczggY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0
b0tleVJTQU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJT
QTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aXNSZXN0cmljdGVk
VG9IYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6a2V5U2l6ZUlu
Qml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFp
cik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvS2V5UlNBOjpleHBvcnRQa2NzOCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL1Nlcmlh
bGl6ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Z2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp3cmFwU2Vy
aWFsaXplZENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3JlOjp1bndyYXBTZXJpYWxpemVkQ3J5
cHRvS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlOiBBZGRlZC4KKwogMjAy
MC0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjU0NDgzKTogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVm
b3JlLWRpc3BhdGNoLmh0bWwgYmVjYW1lIHZlcnkgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1GVFcuY21h
a2UKaW5kZXggYWU5MWE3NjM4NDQuLjlhYjQ2ODczOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUZUVy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5j
bWFrZQpAQCAtMiw2ICsyLDcgQEAgaW5jbHVkZShwbGF0Zm9ybS9DdXJsLmNtYWtlKQogaWYgKE5P
VCBBUFBMRV9CVUlMRCkKICAgICBpbmNsdWRlKHBsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2Up
CiBlbmRpZiAoKQoraW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0
Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVf
SU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UKaW5kZXggY2IxYThiOWVlM2UuLmY5YTcxY2MwOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTIsNiArMiw3IEBAIGluY2x1ZGUocGxhdGZvcm0vQ2Fp
cm8uY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL0N1cmwuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3Jt
L0ZyZWVUeXBlLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlKQor
aW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKaW5kZXggZTNlNDc4YWQ0
NzYuLjhlNjdhNDUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNh
aXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAg
LTEsNiArMSw3IEBACiBpbmNsdWRlKHBsYXRmb3JtL0NhaXJvLmNtYWtlKQogaW5jbHVkZShwbGF0
Zm9ybS9DdXJsLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9JbWFnZURlY29kZXJzLmNtYWtlKQor
aW5jbHVkZShwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlKQogaW5jbHVkZShwbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKaW5kZXggY2Fj
NzQ4YTg0ODguLjc3N2RmZDNhODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlFQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleUVDLmgKQEAgLTUwLDYgKzUwLDEwIEBAIHR5cGVkZWYgZ2NyeV9zZXhwX3QgUGxhdGZvcm1F
Q0tleTsKIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50
ZXI8Z2NyeV9zZXhwX3Q+Ojp0eXBlLCBQQUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X3Nl
eHBfdD4+IFBsYXRmb3JtRUNLZXlDb250YWluZXI7CiAjZW5kaWYKIAorI2lmIFVTRShPUEVOU1NM
KQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUVDS2V5OwordHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1FQ0tleT4gUGxhdGZvcm1FQ0tleUNvbnRhaW5lcjsKKyNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgK
aW5kZXggNzhmMDI2NmEwYTQuLjA0NTU1MWMxZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlSU0EuaApAQCAtNTAsNiArNTAsMTEgQEAgdHlwZWRlZiBnY3J5X3NleHBf
dCBQbGF0Zm9ybVJTQUtleTsKIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8Z2NyeV9zZXhwX3Q+Ojp0eXBlLCBQQUw6OkdDcnlwdDo6SGFuZGxlRGVs
ZXRlcjxnY3J5X3NleHBfdD4+IFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyOwogI2VuZGlmCiAKKyNp
ZiBVU0UoT1BFTlNTTCkKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1SU0FLZXk7Cit0eXBlZGVmIHN0
ZDo6dW5pcXVlX3B0cjx2b2lkKj4gUGxhdGZvcm1SU0FLZXlDb250YWluZXI7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9LZXlSU0FDb21wb25lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi42NzIwMmUxZGQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0
b0tleUFFUy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1z
JiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgUGFkZGluZykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXND
YmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBQYWRkaW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MjljZThlZGQ3ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFl
c0NiY0NmYlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5QUVTJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRGVjcnlwdChj
b25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMm
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUk9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44
ZjE2MTRkYmNiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1BRVNfQ1RSLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zJiwgY29uc3QgQ3J5cHRv
S2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmLCBjb25zdCBDcnlwdG9L
ZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTU9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5iYzBlOGU4MzQzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1BRVNfR0NNLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpw
bGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiwgY29uc3Qg
Q3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQor
CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZmRlYmYwNzE2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1BRVNfS1cuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5j
bHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUFFU19LVzo6cGxhdGZvcm1XcmFwS2V5KGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OnBsYXRmb3JtVW53cmFwS2V5KGNvbnN0
IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1FQ0RIT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1FQ0RIT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjJlZjBlY2RmZWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0FsZ29yaXRobUVDREguaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAi
Q3J5cHRvS2V5RUMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK09wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNE
SDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgQ3J5cHRvS2V5
RUMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RT
QU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtRUNEU0FPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMjAwYzBmZmVlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUVDRFNBLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUVDJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25Pcjxi
b29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtRWNkc2FQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlFQyYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1IS0RGT3Bl
blNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1I
S0RGT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYw
YjdhNDZjMjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bUhLREYuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtSGtkZlBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhj
b25zdCBDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UmF3Jiwgc2l6
ZV90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzU0NjBkYWE5MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhNQUNPcGVu
U1NMLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1ITUFDLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0tleUhNQUMuaCIKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0tl
eUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2Vw
dGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0tleUhNQUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUEJLREYyT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktERjJPcGVuU1NMLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk0ZjYwMjlmZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktE
RjJPcGVuU1NMLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QQktERjIuaCIKKworI2lmIEVO
QUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1z
LmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBia2RmMlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleVJhdyYsIHNpemVfdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGFhNDk1ZTU5NjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81T3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRl
ICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0tleVJTQSYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9y
bURlY3J5cHQoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5T
U0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDRkMGI1ODNh
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81T3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRp
b25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJp
ZnkoY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQT3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUE9wZW5T
U0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZDhlM2Q3YWVk
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQT3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlS
U0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NP
cGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bVJTQV9QU1NPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uYzQ4YjJmMDIwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTT3BlblNTTC5jcHAKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtUlNBX1BTUy5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pICYmIEhBVkUoUlNB
X1BTUykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5oIgorI2luY2x1
ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1SU0FfUFNTOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFy
YW1zJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5T3BlblNTTC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU3MDA2OGViNGZmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnlPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgor
CisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEx
LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgiCisjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgiCisj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1SZWdpc3RlckFsZ29yaXRo
bXMoKQoreworICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTE+KCk7Cisg
ICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjI0PigpOworICAgIHJlZ2lz
dGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTI1Nj4oKTsKKyAgICByZWdpc3RlckFsZ29y
aXRobTxDcnlwdG9BbGdvcml0aG1TSEEzODQ+KCk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5
cHRvQWxnb3JpdGhtU0hBNTEyPigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5iMzZkZDlkNTJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAKQEAgLTAsMCArMSwx
MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNy
eXB0b0tleUVDLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc2l6ZV90IENyeXB0b0tleUVD
OjprZXlTaXplSW5CaXRzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitib29sIENyeXB0b0tleUVDOjpwbGF0Zm9ybVN1cHBvcnRlZEN1cnZlKE5h
bWVkQ3VydmUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK09wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRm
b3JtSW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rv
cjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGlj
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYm
IHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJp
dmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWludDhf
dD4mJiB4LCBWZWN0b3I8dWludDhfdD4mJiB5LCBWZWN0b3I8dWludDhfdD4mJiBkLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRD
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWlu
dDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitWZWN0
b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyhKc29uV2ViS2V5JikgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFNwa2koKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUV4cG9ydFBrY3M4KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMzY0NjQ4NjM5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtMCwwICsxLDkx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9LZXlSU0EuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIENyeXB0b0tleVJTQTo6aXNSZXN0cmlj
dGVkVG9IYXNoKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBDcnlwdG9LZXlSU0E6
OmtleVNpemVJbkJpdHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hh
c2gsIHVuc2lnbmVkIG1vZHVsdXNMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGlj
RXhwb25lbnQsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlQYWly
Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8Q3J5cHRv
S2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxDcnlwdG9L
ZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRTcGtpKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhw
b3J0UGtjczgoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlSU0FDb21wb25lbnRzPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBP
cGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlw
dG9LZXlXcmFwT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmU4NDhhNTAyZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcApAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1BRVNfQ1RSLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBnZXRE
ZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgVU5VU0VEX1BBUkFNKG1hc3RlcktleSk7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEluaXRpYWxseSB0aGVzZSBoZWxwZXIgZnVuY3Rpb25z
IHdlcmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBLRUsgd3JhcHBpbmcgYW5kIHVud3JhcHBpbmcsCisv
LyBidXQgdGhpcyBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSwgZGVzcGl0ZSB0aGUgZnVuY3Rpb24g
bmFtZXMgYW5kIHRoZSBNYWMgaW1wbGVtZW50YXRpb24KKy8vIHN0aWxsIGluZGljYXRpbmcgb3Ro
ZXJ3aXNlLgorLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM4ODMgZm9yIG1vcmUgaW5mby4KKworYm9vbCB3cmFwU2VyaWFsaXplZENyeXB0b0tleShjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQoreworICAgIFVOVVNFRF9QQVJBTShtYXN0ZXJLZXkp
OworCisgICAgLy8gTm8gd3JhcHBpbmcgcGVyZm9ybWVkIC0tIHRoZSBzZXJpYWxpemVkIGtleSBk
YXRhIGlzIGNvcGllZCBpbnRvIHRoZSBgcmVzdWx0YCB2YXJpYWJsZS4KKyAgICByZXN1bHQgPSBW
ZWN0b3I8dWludDhfdD4oa2V5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB1bndyYXBT
ZXJpYWxpemVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYga2V5KQorewor
ICAgIFVOVVNFRF9QQVJBTShtYXN0ZXJLZXkpOworCisgICAgLy8gTm8gdW53cmFwcGluZyBwZXJm
b3JtZWQgLS0gdGhlIHNlcmlhbGl6ZWQga2V5IGRhdGEgaXMgY29waWVkIGludG8gdGhlIGBrZXlg
IHZhcmlhYmxlLgorICAgIGtleSA9IFZlY3Rvcjx1aW50OF90Pih3cmFwcGVkS2V5KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGVu
U1NMLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vT3BlblNTTC5jbWFrZQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTRlMmFhNTUxMTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGVuU1NMLmNtYWtlCkBAIC0wLDAgKzEs
MjIgQEAKK2lmIChFTkFCTEVfV0VCX0NSWVBUTykKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5T
U0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DRkJPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RST3Bl
blNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9w
ZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09w
ZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDREhPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5T
U0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhLREZPcGVuU1NM
LmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5j
cHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUEJLREYyT3BlblNTTC5j
cHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NU9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81T3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9Dcnlw
dG9LZXlFQ09wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9w
ZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
T3BlblNTTC5jcHAKKyAgICApCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09w
dGlvbnNGVFcuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQppbmRleCBlYjM4
Njc4YmM3Yi4uNDgzMDRjMjU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRX
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCkBAIC0yNDYsNiArMjQ2
LDcgQEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0VHTCBPTikKIFNFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9FWFBPUlRfTUFDUk9TIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX09QRU5HTF9FUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfT1BFTkdMX0VT
XzMgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTlNTTCBPTikKIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUiBPTikKIFNFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUl9HTCBPTikKICNTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUn0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQppbmRleCBmMTI2YmM2MjY5Yy4uM2Nh
ZWRiMTgwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQpAQCAtMzgsNiAr
MzgsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFICR7RU5BQgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgUFJJVkFURSAke0VOQUJMRV9FWFBFUklN
RU5UQUxfRkVBVFVSRVN9KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1NFUlZJQ0VfV09SS0VSIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklWQVRFICR7
RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9G
RUFUVVJFU30pCiAKICMgRmVhdHVyZXMgdG8gaW52ZXN0aWdhdGUKICMKQEAgLTU5LDcgKzYwLDYg
QEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05PVElGSUNBVElPTlMg
UFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU1ZH
X0ZPTlRTIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1VTRVJTRUxFQ1RfQUxMIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1VTRVJfTUVTU0FHRV9IQU5ETEVSUyBQUklWQVRFIE9GRikKLVdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBSSVZBVEUgT0ZG
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1hTTFQgUFJJVkFURSBP
RkYpCiAKIFdFQktJVF9PUFRJT05fRU5EKCkKQEAgLTEyMSw2ICsxMjEsNyBAQCBTRVRfQU5EX0VY
UE9TRV9UT19CVUlMRChVU0VfQ1VSTCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9G
UkVFVFlQRSBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9IQVJGQlVaWiBPTikKIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9MSUJXUEUgT04pCitTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfT1BFTlNTTCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVfUkVO
REVSRVIgT04pCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VU
X1NFUlZFUiAke0VOQUJMRV9SRU1PVEVfSU5TUEVDVE9SfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5k
ZXggMTAxOWZjZTk0ZDUuLjkzNWE3ZmQxMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNjgs
NyArNjgsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfWFNMVCBQ
VUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU01PT1RI
X1NDUk9MTElORyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9VU0VSU0VMRUNUX0FMTCBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQUklWQVRFIE9GRikKLVdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBSSVZBVEUgT0ZGKQogCiAjIEZJWE1F
OiBQb3J0IGJtYWxsb2MgdG8gV2luZG93cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzMxMAogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoVVNFX1NZ
U1RFTV9NQUxMT0MgUFJJVkFURSBPTikKQEAgLTkxLDE3ICs5MCwyMCBAQCBpZiAoJHtXVEZfUExB
VEZPUk1fV0lOX0NBSVJPfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfU0VSVklDRV9XT1JLRVIgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVS
RVN9KQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WQVJJQVRJ
T05fRk9OVFMgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQogICAgIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJEUklWRVIgUFJJVkFURSAk
e0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTfSkKIAogICAgICMgRklYTUU6IEltcGxlbWVudCBwbHVnaW4gcHJvY2VzcyBv
biBNb2Rlcm4gV2ViS2l0LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1MzEzCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFND
QVBFX1BMVUdJTl9BUEkgUFJJVkFURSBPRkYpCiBlbHNlICgpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NTU19DT01QT1NJVElORyBQVUJMSUMgT0ZGKQotICAg
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01FU1NBR0VfSEFO
RExFUlMgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9OKQogICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlRMIFBVQkxJQyBPRkYpCisgICAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEg
UFVCTElDIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgUFJJVkFURSBPRkYpCisg
ICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJfTUVTU0FHRV9I
QU5ETEVSUyBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCR0wgUFVCTElDIE9GRikKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKKwogICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9WRVJTSU9OX1NUQU1QRVIgUFJJVkFURSBPTikKIGVu
ZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IDJlZTJhYWRkMmNiLi5l
YmM1OGNmMmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCkBAIC0zOSw2ICszOSw3
IEBAIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0VHTCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOR0xf
RVMgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChIQVZFX09QRU5HTF9FU18zIE9OKQorU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX09QRU5TU0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
VEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUVESUFf
Rk9VTkRBVElPTiBPTikK
</data>
<flag name="review"
          id="403889"
          type_id="1"
          status="+"
          setter="jiewen_tan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388495</attachid>
            <date>2020-01-22 17:34:36 -0800</date>
            <delta_ts>2020-01-22 18:45:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206449.diff</filename>
            <type>text/plain</type>
            <size>60278</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzNjliZmQ5OGU2MS4uMTY1
NzQ4ZjUwZmEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMC0wMS0yMiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgorCisgICAgICAgIFtPcGVuU1NMXSBBZGQgc3R1YnMgYW5kIGJ1aWxkIGZvciBXZWIgQ3J5cHRv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0NDkK
KworICAgICAgICBSZXZpZXdlZCBieSBKaWV3ZW4gVGFuLgorCisgICAgICAgIEVuYWJsZSBXZWIg
Q3J5cHRvIGFzIGFuIGV4cGVyaW1lbnQgZm9yIFdpbkNhaXJvIGFuZCBQbGF5U3RhdGlvbi4gQWRk
IHRoZSBVU0VfT1BFTlNTTAorICAgICAgICBkZWZpbml0aW9uIHRvIHBsYXRmb3JtcyB1c2luZyBP
cGVuU1NMLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2U6CisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlOgorCiAyMDIwLTAxLTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgQWRkIGJ1aWxkIGZsYWcgZm9yIHN0YWxlLXdoaWxlLXJldmFsaWRh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwY2EwMTliMDQxZC4uNTE5N2VkYTMzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw5MCBAQAorMjAyMC0wMS0yMiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgorCisgICAgICAgIFtPcGVuU1NMXSBBZGQgc3R1YnMgYW5kIGJ1aWxkIGZvciBXZWIg
Q3J5cHRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBKaWV3ZW4gVGFuLgorCisgICAgICAgIEFkZCBz
dHVicyBmb3IgYW4gT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBvZiBXZWIgQ3J5cHRvLiBBZGQgdGhl
IGFzc29jaWF0ZWQgQ01ha2UKKyAgICAgICAgZmlsZXMgZm9yIE9wZW5TU0wgcGxhdGZvcm1zIGFu
ZCByZWZlcmVuY2UgdGhlbSBvbiB0aGUgcGxhdGZvcm1zIHVzaW5nIE9wZW5TU0wuCisKKyAgICAg
ICAgVGVzdHMgd2lsbCBiZSBlbmFibGVkIGFzIGZ1bmN0aW9uYWxpdHkgbGFuZHMuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogY3J5cHRv
L2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlSU0Eu
aDoKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNT
TC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6
cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19D
QkM6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjpwbGF0Zm9ybURlY3J5cHQpOgorICAgICAgICAqIGNyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybUVuY3J5cHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1EZWNyeXB0
KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNT
TC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6
cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19H
Q006OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0tXT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVVud3JhcEtleSk6CisgICAgICAgICogY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNESE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAg
ICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlm
eSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9wZW5TU0wu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRm
b3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
SE1BQ09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1I
TUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtUEJLREYyT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0
Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNTo6cGxhdGZvcm1EZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUE9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQV9PQUVQOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRGVjcnlwdCk6CisgICAgICAgICogY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAg
ICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxhdGZv
cm1SZWdpc3RlckFsZ29yaXRobXMpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tl
eUVDT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6Omtl
eVNpemVJbkJpdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRm
b3JtU3VwcG9ydGVkQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRm
b3JtR2VuZXJhdGVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9y
bUltcG9ydFJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRKV0tQdWJsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1w
b3J0SldLUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFJh
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRGaWVs
ZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9y
bUV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRm
b3JtRXhwb3J0UGtjczggY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tl
eVJTQU9wZW5TU0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aXNSZXN0cmljdGVkVG9I
YXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcik6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9LZXlSU0E6OmV4cG9ydFNwa2kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5UlNBOjpleHBvcnRQa2NzOCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlS
U0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL1NlcmlhbGl6
ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0
RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp3cmFwU2VyaWFs
aXplZENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3JlOjp1bndyYXBTZXJpYWxpemVkQ3J5cHRv
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9PcGVuU1NMLmNtYWtlOiBBZGRlZC4KKwogMjAyMC0w
MS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGZpeCBidWlsZCB3aXRoIHJlY2VudCBTREtzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1GVFcuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUZUVy5jbWFrZQpp
bmRleCBhZTkxYTc2Mzg0NC4uOWFiNDY4NzM5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRlRXLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtl
CkBAIC0yLDYgKzIsNyBAQCBpbmNsdWRlKHBsYXRmb3JtL0N1cmwuY21ha2UpCiBpZiAoTk9UIEFQ
UExFX0JVSUxEKQogICAgIGluY2x1ZGUocGxhdGZvcm0vSW1hZ2VEZWNvZGVycy5jbWFrZSkKIGVu
ZGlmICgpCitpbmNsdWRlKHBsYXRmb3JtL09wZW5TU0wuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlT
dGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpp
bmRleCBjYjFhOGI5ZWUzZS4uZjlhNzFjYzA5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZQpAQCAtMiw2ICsyLDcgQEAgaW5jbHVkZShwbGF0Zm9ybS9DYWlyby5j
bWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vQ3VybC5jbWFrZSkKIGluY2x1ZGUocGxhdGZvcm0vRnJl
ZVR5cGUuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2UpCitpbmNs
dWRlKHBsYXRmb3JtL09wZW5TU0wuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9S
SUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCBlM2U0NzhhZDQ3Ni4u
OGU2N2E0NTI5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMSw2
ICsxLDcgQEAKIGluY2x1ZGUocGxhdGZvcm0vQ2Fpcm8uY21ha2UpCiBpbmNsdWRlKHBsYXRmb3Jt
L0N1cmwuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL0ltYWdlRGVjb2RlcnMuY21ha2UpCitpbmNs
dWRlKHBsYXRmb3JtL09wZW5TU0wuY21ha2UpCiBpbmNsdWRlKHBsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2UpCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9S
SUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAppbmRleCBjYWM3NDhh
ODQ4OC4uNzc3ZGZkM2E4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUVDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RUMuaApAQCAtNTAsNiArNTAsMTAgQEAgdHlwZWRlZiBnY3J5X3NleHBfdCBQbGF0Zm9ybUVDS2V5
OwogdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxn
Y3J5X3NleHBfdD46OnR5cGUsIFBBTDo6R0NyeXB0OjpIYW5kbGVEZWxldGVyPGdjcnlfc2V4cF90
Pj4gUGxhdGZvcm1FQ0tleUNvbnRhaW5lcjsKICNlbmRpZgogCisjaWYgVVNFKE9QRU5TU0wpCit0
eXBlZGVmIHZvaWQqIFBsYXRmb3JtRUNLZXk7Cit0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybUVDS2V5PiBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyOworI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAppbmRl
eCA3OGYwMjY2YTBhNC4uYzQ5ZmU2OGRmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleVJTQS5oCkBAIC01MCw2ICs1MCwxMSBAQCB0eXBlZGVmIGdjcnlfc2V4cF90IFBs
YXRmb3JtUlNBS2V5OwogdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxnY3J5X3NleHBfdD46OnR5cGUsIFBBTDo6R0NyeXB0OjpIYW5kbGVEZWxldGVy
PGdjcnlfc2V4cF90Pj4gUGxhdGZvcm1SU0FLZXlDb250YWluZXI7CiAjZW5kaWYKIAorI2lmIFVT
RShPUEVOU1NMKQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJTQUtleTsKK3R5cGVkZWYgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtUlNBS2V5PiBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcjsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0tleVJTQUNvbXBvbmVudHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1BRVNfQ0JDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjY3MjAyZTFkZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19DQkMuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQor
CisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zLmgiCisjaW5jbHVkZSAi
Q3J5cHRvS2V5QUVTLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQ
YXJhbXMmLCBjb25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBQYWRk
aW5nKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bUFlc0NiY0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIFBhZGRpbmcpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNT
TC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYyOWNlOGVkZDdk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19D
RkIuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjQ2ZiUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DRkI6OnBsYXRmb3JtRW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlB
RVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQjo6cGxhdGZvcm1EZWNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcyYsIGNvbnN0IENyeXB0b0tl
eUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RS
T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1BRVNfQ1RST3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjhmMTYxNGRiY2I2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0FsZ29yaXRobUFFU19DVFIuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVT
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmLCBjb25zdCBD
cnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcyYsIGNvbnN0IENy
eXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1B
RVNfR0NNT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmJjMGU4ZTgzNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUFFU19HQ00uaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRv
S2V5QUVTLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19H
Q006OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmLCBj
b25zdCBDcnlwdG9LZXlBRVMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYsIGNv
bnN0IENyeXB0b0tleUFFUyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQ
VE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfS1dPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5mZGViZjA3MTZlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19LVy5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisK
KyNpbmNsdWRlICJDcnlwdG9LZXlBRVMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtQUVTX0tXOjpwbGF0Zm9ybVdyYXBLZXkoY29uc3QgQ3J5cHRvS2V5QUVTJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19LVzo6cGxhdGZvcm1VbndyYXBLZXko
Y29uc3QgQ3J5cHRvS2V5QUVTJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NS
WVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUVDREhPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobUVDREhPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMmVmMGVjZGZlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RIT3BlblNTTC5jcHAKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtRUNESC5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNs
dWRlICJDcnlwdG9LZXlFQy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmLCBjb25zdCBDcnlw
dG9LZXlFQyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bUVDRFNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4yMDBjMGZmZWVkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtRUNEU0EuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlFQy5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZv
cm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5
RUMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlv
bk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1FY2RzYVBhcmFtcyYsIGNvbnN0IENyeXB0b0tleUVDJiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhL
REZPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUhLREZPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZjBiN2E0NmMyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1IS0RGT3BlblNTTC5jcHAKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtSEtERi5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1Ia2RmUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVC
aXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlSYXcm
LCBzaXplX3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3NTQ2MGRhYTkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1B
Q09wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhNQUMuaCIKKworI2lmIEVOQUJM
RShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5
cHRvS2V5SE1BQyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKwor
RXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29u
c3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktERjJPcGVuU1NMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVBCS0RGMk9wZW5TU0wuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOTRmNjAyOWZkOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bVBCS0RGMk9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBCS0RGMi5oIgorCisj
aWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QYmtkZjJQ
YXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zJiwgY29uc3QgQ3J5cHRvS2V5UmF3Jiwgc2l6ZV90KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU9wZW5TU0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNU9wZW5T
U0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wYWE0OTVlNTk2
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81LmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2lu
Y2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OnBs
YXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
T3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNkNGQw
YjU4M2FhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8p
CisKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4
Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9y
bVZlcmlmeShjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBPcGVuU1NMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
T3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFkOGUz
ZDdhZWQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBPcGVuU1NMLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUC5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyYsIGNvbnN0IENyeXB0
b0tleVJTQSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZv
cm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMmLCBjb25zdCBDcnlw
dG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtUlNBX1BTU09wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5jNDhiMmYwMjAwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobVJTQV9QU1NPcGVuU1NMLmNwcApAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1SU0FfUFNTLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgJiYgSEFW
RShSU0FfUFNTKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zLmgiCisj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FQ
c3NQYXJhbXMmLCBjb25zdCBDcnlwdG9LZXlSU0EmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobVJTQV9Q
U1M6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcyYsIGNv
bnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU9wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlPcGVuU1NMLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTcwMDY4ZWI0ZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeU9wZW5TU0wuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bVNIQTEuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCIKKyNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1TSEEyNTYuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEzODQu
aCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlZ2lzdGVyQWxn
b3JpdGhtcygpCit7CisgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMT4o
KTsKKyAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1TSEEyMjQ+KCk7CisgICAg
cmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjU2PigpOworICAgIHJlZ2lzdGVy
QWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTM4ND4oKTsKKyAgICByZWdpc3RlckFsZ29yaXRo
bTxDcnlwdG9BbGdvcml0aG1TSEE1MTI+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3BlblNTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIzNmRkOWQ1MmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcApAQCAtMCww
ICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvS2V5RUMuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzaXplX3QgQ3J5cHRv
S2V5RUM6OmtleVNpemVJbkJpdHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtU3VwcG9ydGVkQ3Vy
dmUoTmFtZWRDdXJ2ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworT3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2Vu
ZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6
cGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQ
dWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXApCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1
aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIFZlY3Rvcjx1aW50OF90PiYmIGQsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBO
YW1lZEN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9y
bUltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rv
cjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRSYXcoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBDcnlw
dG9LZXlFQzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZWN0b3I8dWlu
dDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0U3BraSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UGtjczgoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4zNjQ2NDg2MzkwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCkBAIC0wLDAg
KzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0tleVJTQS5oIgorCisjaWYgRU5BQkxFKFdFQl9DUllQVE8pCisKKyNpbmNsdWRlICJD
cnlwdG9LZXlSU0FDb21wb25lbnRzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29uc3QgQ3J5cHRvS2V5UlNBQ29tcG9uZW50cyYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQ3J5cHRvS2V5UlNBOjppc1Jl
c3RyaWN0ZWRUb0hhc2goQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciYpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc2l6ZV90IENyeXB0b0tl
eVJTQTo6a2V5U2l6ZUluQml0cygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wg
aGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBw
dWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtl
eVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1JlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8
dWludDhfdD4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPENy
eXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8
dWludDhfdD4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRl
ZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNB
OjpleHBvcnRQa2NzOCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleVJTQUNvbXBvbmVudHM+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5
V3JhcE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZTg0OGE1MDJkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwCkBAIC0wLDAg
KzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUFFU19DVFIuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQorCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IGdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBtYXN0ZXJLZXkp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBVTlVTRURfUEFSQU0obWFzdGVyS2V5KTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gSW5pdGlhbGx5IHRoZXNlIGhlbHBlciBmdW5j
dGlvbnMgd2VyZSBpbnRlbmRlZCB0byBwZXJmb3JtIEtFSyB3cmFwcGluZyBhbmQgdW53cmFwcGlu
ZywKKy8vIGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBhbnltb3JlLCBkZXNwaXRlIHRoZSBmdW5j
dGlvbiBuYW1lcyBhbmQgdGhlIE1hYyBpbXBsZW1lbnRhdGlvbgorLy8gc3RpbGwgaW5kaWNhdGlu
ZyBvdGhlcndpc2UuCisvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Mzg4MyBmb3IgbW9yZSBpbmZvLgorCitib29sIHdyYXBTZXJpYWxpemVkQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCit7CisgICAgVU5VU0VEX1BBUkFNKG1hc3Rl
cktleSk7CisKKyAgICAvLyBObyB3cmFwcGluZyBwZXJmb3JtZWQgLS0gdGhlIHNlcmlhbGl6ZWQg
a2V5IGRhdGEgaXMgY29waWVkIGludG8gdGhlIGByZXN1bHRgIHZhcmlhYmxlLgorICAgIHJlc3Vs
dCA9IFZlY3Rvcjx1aW50OF90PihrZXkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHVu
d3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtYXN0ZXJLZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
Cit7CisgICAgVU5VU0VEX1BBUkFNKG1hc3RlcktleSk7CisKKyAgICAvLyBObyB1bndyYXBwaW5n
IHBlcmZvcm1lZCAtLSB0aGUgc2VyaWFsaXplZCBrZXkgZGF0YSBpcyBjb3BpZWQgaW50byB0aGUg
YGtleWAgdmFyaWFibGUuCisgICAga2V5ID0gVmVjdG9yPHVpbnQ4X3Q+KHdyYXBwZWRLZXkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L09wZW5TU0wuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcGVuU1NMLmNtYWtlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNGUyYWE1NTExMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL09wZW5TU0wuY21ha2UKQEAgLTAs
MCArMSwyMiBAQAoraWYgKEVOQUJMRV9XRUJfQ1JZUFRPKQorICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUworICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JD
T3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NG
Qk9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19D
VFJPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNf
R0NNT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNE
SE9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDRFNB
T3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSEtERk9w
ZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhNQUNPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1QQktERjJPcGVu
U1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81T3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3NsL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1NPcGVuU1NMLmNwcAorICAgICAgICBjcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1SZWdpc3RyeU9wZW5TU0wuY3BwCisgICAgICAgIGNyeXB0by9vcGVuc3Ns
L0NyeXB0b0tleUVDT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5
UlNBT3BlblNTTC5jcHAKKyAgICAgICAgY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tl
eVdyYXBPcGVuU1NMLmNwcAorICAgICkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0ZUVy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRlRXLmNtYWtlCmluZGV4
IDZiMjI5ZDZkNjJjLi4wYjU1NGU4ZjM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlv
bnNGVFcuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKQEAgLTI0Nyw2
ICsyNDcsNyBAQCBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfRUdMIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0VYUE9SVF9NQUNST1MgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfT1BFTkdMX0VTIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoSEFWRV9PUEVO
R0xfRVNfMyBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOU1NMIE9OKQogU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogI1NFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VUX1NFUlZFUiAke0VOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGYxMjZiYzYyNjlj
Li4zYmJjZWMyZTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlv
bi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCkBAIC0z
OCw2ICszOCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MQVlP
VVRfRk9STUFUVElOR19DT05URVhUIFBSSVZBVEUgJHtFTkFCCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBQUklWQVRFICR7RU5BQkxFX0VY
UEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfU0VSVklDRV9XT1JLRVIgUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVS
RVN9KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIFBSSVZB
VEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKK1dFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQ1JZUFRPIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTfSkKIAogIyBGZWF0dXJlcyB0byBpbnZlc3RpZ2F0ZQogIwpAQCAtNTksNyAr
NjAsNiBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTk9USUZJQ0FU
SU9OUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9TVkdfRk9OVFMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTIFBSSVZBVEUgT0ZGKQot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFU
RSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfWFNMVCBQUklW
QVRFIE9GRikKIAogV0VCS0lUX09QVElPTl9FTkQoKQpAQCAtMTA3LDYgKzEwNyw5IEBAIGZpbmRf
cGFja2FnZShXZWJQIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFdQRSBSRVFVSVJFRCkKIGZpbmRf
cGFja2FnZShaTElCIFJFUVVJUkVEKQogCisjIFRPRE86IEFkZCBhIGNoZWNrIGZvciBIQVZFX1JT
QV9QU1MgZm9yIHN1cHBvcnQgb2YgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUworIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjM1CisKICMgRW11bGF0ZSB3aGF0IHBr
Zy1jb25maWcgd291bGQgZG8gd2l0aCBzdGF0aWNhbGx5IGNvbXBpbGVkIGxpYnJhcmllcwogIyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjQxMAogbGlz
dChBUFBFTkQgQ0FJUk9fTElCUkFSSUVTICR7UElYTUFOX0xJQlJBUklFU30pCkBAIC0xMjEsNiAr
MTI0LDcgQEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBTRVRfQU5EX0VY
UE9TRV9UT19CVUlMRChVU0VfRlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfSEFSRkJVWlogT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQor
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX09QRU5TU0wgT04pCiBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfV1BFX1JFTkRFUkVSIE9OKQogCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUn0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlCmluZGV4IDEwMTlmY2U5NGQ1Li45MzVhN2ZkMTM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW4uY21ha2UKQEAgLTY4LDcgKzY4LDYgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1hTTFQgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1NNT09USF9TQ1JPTExJTkcgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVVNFUlNFTEVDVF9BTEwgUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFJJVkFURSBPRkYp
Ci1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklW
QVRFIE9GRikKIAogIyBGSVhNRTogUG9ydCBibWFsbG9jIHRvIFdpbmRvd3MuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzMTAKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCkBAIC05MSwxNyArOTAs
MjAgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NFUlZJQ0VfV09SS0VSIFBSSVZBVEUgJHtFTkFCTEVf
RVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFM
X0ZFQVRVUkVTfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
V0VCRFJJVkVSIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTfSkKKyAgICBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRF
ICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30pCiAKICAgICAjIEZJWE1FOiBJbXBsZW1l
bnQgcGx1Z2luIHByb2Nlc3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQogZWxzZSAoKQog
ICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfQ09NUE9TSVRJ
TkcgUFVCTElDIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBP
TikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJM
SUMgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdB
Q1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUIFBSSVZBVEUgT0ZGKQotICAgIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJHTCBQVUJMSUMgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRU1PVEVfSU5TUEVD
VE9SIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9VU0VSX01FU1NBR0VfSEFORExFUlMgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIFBVQkxJQyBPRkYpCisgICAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYp
CisKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShVU0VfVkVSU0lPTl9TVEFN
UEVSIFBSSVZBVEUgT04pCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpp
bmRleCAyZWUyYWFkZDJjYi4uYmFmY2IwOTI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5j
bWFrZQpAQCAtMzEsNiArMzEsOSBAQCBpZiAoV0VCUF9GT1VORCkKICAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfV0VCUCBPTikKIGVuZGlmICgpCiAKKyMgVE9ETzogQWRkIGEgY2hlY2sg
Zm9yIEhBVkVfUlNBX1BTUyBmb3Igc3VwcG9ydCBvZiBDcnlwdG9BbGdvcml0aG1SU0FfUFNTCisj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2MzUKKwogc2V0KFVT
RV9BTkdMRV9FR0wgT04pCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikK
QEAgLTM5LDYgKzQyLDcgQEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBT
RVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfRUdMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX09QRU5HTF9FUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfT1BFTkdM
X0VTXzMgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTlNTTCBPTikKIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUiBPTikKIFNFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUl9HTCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9NRURJQV9GT1VOREFUSU9OIE9OKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>