<?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>233903</bug_id>
          
          <creation_ts>2021-12-06 16:56:26 -0800</creation_ts>
          <short_desc>Add web push message decryption routines</short_desc>
          <delta_ts>2022-01-29 21:22:45 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>nham</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820822</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 16:56:26 -0800</bug_when>
    <thetext>Add web push message decryption routines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820824</commentid>
    <comment_count>1</comment_count>
      <attachid>446100</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 16:58:23 -0800</bug_when>
    <thetext>Created attachment 446100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820827</commentid>
    <comment_count>2</comment_count>
      <attachid>446102</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 17:05:18 -0800</bug_when>
    <thetext>Created attachment 446102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820834</commentid>
    <comment_count>3</comment_count>
      <attachid>446105</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 17:16:12 -0800</bug_when>
    <thetext>Created attachment 446105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820869</commentid>
    <comment_count>4</comment_count>
      <attachid>446113</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 19:40:19 -0800</bug_when>
    <thetext>Created attachment 446113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820879</commentid>
    <comment_count>5</comment_count>
      <attachid>446117</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 20:41:04 -0800</bug_when>
    <thetext>Created attachment 446117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820892</commentid>
    <comment_count>6</comment_count>
      <attachid>446121</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-06 22:11:57 -0800</bug_when>
    <thetext>Created attachment 446121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821049</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 08:40:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/86158111&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823837</commentid>
    <comment_count>8</comment_count>
      <attachid>446121</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-13 16:38:09 -0800</bug_when>
    <thetext>Comment on attachment 446121
Patch

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

&gt; Source/WebCore/Modules/push-api/PushCrypto.cpp:35
&gt; +namespace WebCore {
&gt; +
&gt; +namespace PushCrypto {

namespace WebCore::PushCrypto {

&gt; Source/WebCore/Modules/push-api/PushCrypto.h:36
&gt; +namespace WebCore {
&gt; +
&gt; +namespace PushCrypto {

namespace WebCore::PushCrypto {

&gt; Source/WebCore/Modules/push-api/PushMessageCrypto.cpp:37
&gt; +namespace WebCore {
&gt; +
&gt; +namespace PushCrypto {

namespace WebCore::PushCrypto {

&gt; Source/WebCore/Modules/push-api/PushMessageCrypto.h:37
&gt; +namespace WebCore {
&gt; +
&gt; +namespace PushCrypto {

namespace WebCore::PushCrypto {

&gt; Source/WebCore/Modules/push-api/cocoa/PushCryptoCocoa.cpp:37
&gt; +namespace WebCore {
&gt; +
&gt; +namespace PushCrypto {

namespace WebCore::PushCrypto {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823913</commentid>
    <comment_count>9</comment_count>
      <attachid>447110</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-13 23:14:06 -0800</bug_when>
    <thetext>Created attachment 447110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823915</commentid>
    <comment_count>10</comment_count>
      <attachid>447111</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2021-12-13 23:19:45 -0800</bug_when>
    <thetext>Created attachment 447111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823921</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-14 00:19:11 -0800</bug_when>
    <thetext>Committed r287015 (245220@main): &lt;https://commits.webkit.org/245220@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447111.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835300</commentid>
    <comment_count>12</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-01-29 11:53:17 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835301</commentid>
    <comment_count>13</comment_count>
      <attachid>450329</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-01-29 11:53:19 -0800</bug_when>
    <thetext>Created attachment 450329
Add unit tests that were left out of original patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835356</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-29 21:22:42 -0800</bug_when>
    <thetext>Committed r288796 (246573@main): &lt;https://commits.webkit.org/246573@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450329.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446100</attachid>
            <date>2021-12-06 16:58:23 -0800</date>
            <delta_ts>2021-12-06 17:17:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206165822.patch</filename>
            <type>text/plain</type>
            <size>47088</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODUwNmFhZTA3NjY2MzMwYzM3NzZkZGIzYmU3N2Ew
MzMxNTgxMGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY2FsbCB0byBvc19zaWducG9zdCB0byB0YWcg
YSBtb21lbnR1bSBzY3JvbGwgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTEwODEz
YzIxOTc0N2ZmZThjYmI3NjY2OTRhYzMyN2VhYTY3NTUwLi5mMDZkNDU5ZDZjOTdlOGQxYmUzMDRj
YjY5MDljMWQxYzljZTNmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
IHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJ
Lmg6IEFkZCBBRVMtR0NNIGRlY3J5cHRpb24gU1BJLgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQg
b2YgaW1hZ2UgY29udHJvbCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMTUzZWRkODA1
NTcyZGEwNWFhNmFkOTk5YTE3ZDJmMjA1YWJmMWEuLjA2MGVkZjk0MzU5ZDc4MjVhOWNhOTU2Y2E0
MGI4N2I2OWM3MmYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjg4LDYgKzI4OCw4IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Blcm1pc3Np
b25zL1Blcm1pc3Npb25PYnNlcnZlci5oCiAgICAgTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNz
aW9uU3RhdGUuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmgKICAgICBNb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2UxYWJhNDFiYjBjMWNhMDEyYWE5ZTc4YTIzYTZkMmFmYTdlY2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKworUDI1NkRIS2V5
UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2Vj
cmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBr
ZXlQYWlyKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
Y3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90Piwg
U3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM2MWM5NGUyYmVkNTU4NGYzZWJlMTQzZjllMTQ2ZjFjMmYyNGNjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggPSA2NTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFNoYXJl
ZFNlY3JldExlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2hhMjU2RGlnZXN0
TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhZXMxMjhHQ01UYWdMZW5ndGgg
PSAxNjsKKworc3RydWN0IFAyNTZESEtleVBhaXIgeworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJs
aWNLZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVLZXk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUDI1NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKK307CisKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWly
Jik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29u
c3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25z
dCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlw
dG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTg3NzczNjQ0YzllYmE3MjRkODhhODVlYWZj
YTUzOTRjMGIxY2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIK
KyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8vIEFyYml0cmFyeSBs
aW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBBUE5TIHNob3VsZCBl
dmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNoUGF5bG9hZExlbmd0
aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
YWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJhdGUoKQoreworICAg
IHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVuZ3RoXTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hh
cmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhfdD4geyBzaGFyZWRB
dXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07Cit9CisKK3N0YXRp
YyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRL
ZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGlj
S2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgg
JiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3Ro
KGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAgIC8qCisgICAgICog
Q29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODggU2VjdGlvbiAyOgor
ICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICogICB8ICAgZGF0YSAg
ICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICoKKyAgICAgKiBw
YWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1pdGVyIG9jdGV0ICgw
eDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgorICAgICAqLworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBjb25zdCB1aW50
OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBjdXIgPSBlbmQg
LSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAwKSkKKyAgICAgICAg
LS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOwor
CisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNsaWVudEtl
eUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVhZGVyIGFzIGRl
c2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsKKyAgICAgICAg
dWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9yZWRbNF07Cisg
ICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZlclB1YmxpY0tl
eVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
blB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAvKiBtaW5QYWRk
aW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBheWxvYWQuc2l6
ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQdXNoUGF5
bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBheWxvYWRI
ZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEoKSwgc2l6ZW9m
KGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRoUHVibGljS2V5
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAgICAgKiBU
aGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5MSAzLjQuCisg
ICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhfc2VjcmV0ID0g
RUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBlY2RoU2VjcmV0
UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVyUHVibGljS2V5
LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNkaFNlY3JldFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAgICogIyBI
S0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQorICAgICAqIFBS
S19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqLwor
ICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQs
ICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUktf
a2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2ViUHVzaDogaW5m
byIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtNID0gSE1BQy1T
SEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAgc3RydWN0IEtl
eUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6IGluZm8iIH07
CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAg
ICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVp
bnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEtleUlu
Zm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5KGtleUluZm8u
Y2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5LmRhdGEo
KSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5zZXJ2ZXJLZXks
IGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisKKyAgICBh
dXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAgICAqICMgSEtE
Ri1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2FsdCwgSUtN
KQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2FsdCwgaWttKTsK
KworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBMX2Nlaz0xNikK
KyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20iIHx8IDB4MDAK
KyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0K
KyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihw
cmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNlay5zaHJpbmso
MTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2VfaW5mbywgTF9u
b25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIiB8
fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4
MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1td
ID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8gbm9uY2UgPSBo
bWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOwor
ICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVT
MTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRvIGNpcGhl
clRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6
ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlw
dEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBsYWluVGV4dFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UZXh0
ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBhZGRpbmdM
ZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0YSgpLCBw
bGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01BWCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJpbmsocGxhaW5U
ZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRleHQ7Cit9CisK
K3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3QgdWludDhfdCAq
YmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRlIHBhZGRpbmcg
bGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRpb24tZW5jb2Rp
bmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKiAgIHwg
cGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKgor
ICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQgaW50ZWdlciBp
biBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBudW1iZXIgb2Yg
MHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVzLgorICAgICAq
LworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICB1
aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0aCwgYmVnaW4s
IDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsKKworICAgIGNv
bnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBi
ZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRpbmdMZW5ndGg7
CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRpbmdMZWZ0KSB7
CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0KKworICAgIGlm
IChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgcmV0dXJuIGN1
ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFF
U0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2Fs
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50
S2V5TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXpl
KCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUg
YXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQg
aW4gdGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcu
CisgICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXls
b2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJv
bSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZv
ciBhIFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFz
X3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1
NkRIU2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYo
YXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktf
Y29tYmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNh
bHQsIElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0g
IkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0g
aG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0
KTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywg
c2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAg
ICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAg
ICAgIDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3
ZSBhbHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBh
bmQgbm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQg
dHJhaWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29u
dGV4dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5
RGVyaXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xp
ZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgp
OworICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2Vr
X2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAg
ICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVu
dC1FbmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9I
ZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hl
YWRlciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVv
ZihjZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRv
IGNlayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKwor
ICAgIC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwg
MHgwMCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90
IG5vbmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVh
ZGVyKSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2
KHByaywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxs
eSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRl
eHQuCisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9u
Y2UsIHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJl
c3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlm
IChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRk
aW5nTGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmFhNzYzYTNkODc4
MDkxOTc2ODE5NjVhOWUyYTczMGNiYjQwYjdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgUHVzaENyeXB0byB7CisKK3N0cnVjdCBDbGllbnRLZXlzIHsKKyAgICBQMjU2REhLZXlQYWly
IGNsaWVudFAyNTZESEtleVBhaXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNy
ZXQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2xpZW50S2V5cyBnZW5lcmF0ZSgpOwor
fTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXMxMjhn
Y20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gUkZDODI5MS4KK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKTsKKwor
Ly8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVu
dC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24t
MDQuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2VydmVyUDI1NkRIUHVibGljS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9Q
dXNoQ3J5cHRvQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2Nv
YS9QdXNoQ3J5cHRvQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY1MWQ2N2YxNzAwNzczNmJiNDM0
YWM4ODIyZjBlOGQzMmE1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENyeXB0by5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkhNQUMuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBQdXNoQ3J5cHRvIHsKKworUDI1NkRIS2V5UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0
ZSh2b2lkKQoreworICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKKyAg
ICBDQ0VDQ3J5cHRvclJlZiBjY1ByaXZhdGVLZXkgPSBudWxscHRyOworICAgIGF1dG8gcmVsZWFz
ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoWyZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleV0oKSB7
CisgICAgICAgIGlmIChjY1B1YmxpY0tleSkKKyAgICAgICAgICAgIENDRUNDcnlwdG9yUmVsZWFz
ZShjY1B1YmxpY0tleSk7CisgICAgICAgIGlmIChjY1ByaXZhdGVLZXkpCisgICAgICAgICAgICBD
Q0VDQ3J5cHRvclJlbGVhc2UoY2NQcml2YXRlS2V5KTsKKyAgICB9KTsKKworICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckdlbmVyYXRlUGFpcigyNTYsICZjY1B1YmxpY0tl
eSwgJmNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nl
c3MpOworCisgICAgdWludDhfdCBwdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAg
ICBzaXplX3QgcHVibGljS2V5TGVuZ3RoID0gc2l6ZW9mKHB1YmxpY0tleSk7CisgICAgc3RhdHVz
ID0gQ0NFQ0NyeXB0b3JFeHBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXksICZw
dWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsIGNjUHVibGljS2V5KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBwdWJsaWNLZXlMZW5ndGggPT0gc2l6ZW9m
KHB1YmxpY0tleSkpOworCisgICAgLy8gQ29tbW9uQ3J5cHRvIGV4cGVjdHMgdGhlIGJpbmFyeSBm
b3JtYXQgdG8gYmUgNjUgYnl0ZSBwdWJsaWMga2V5IGZvbGxvd2VkIGJ5IHRoZSAzMiBieXRlIHBy
aXZhdGUga2V5LCBzbyB3ZSB3YW50IHRvIGV4dHJhY3QgdGhlIGxhc3QgMzIgYnl0ZXMgZnJvbSB0
aGUgYnVmZmVyLgorICAgIHVpbnQ4X3Qga2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aCArIHAyNTZk
aFByaXZhdGVLZXlMZW5ndGhdOworICAgIHNpemVfdCBrZXlMZW5ndGggPSBzaXplb2Yoa2V5KTsK
KyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIGtl
eSwgJmtleUxlbmd0aCwgY2NFQ0tleVByaXZhdGUsIGNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nlc3MgJiYga2V5TGVuZ3RoID09IHNpemVvZihrZXkp
KTsKKworICAgIHJldHVybiBQMjU2REhLZXlQYWlyIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHsgcHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfSwKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHsga2V5ICsgcDI1NmRoUHVibGljS2V5TGVuZ3RoLCBwMjU2ZGhQcml2YXRlS2V5TGVu
Z3RoIH0KKyAgICB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3Qg
UDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVibGljS2V5LnNpemUoKSAhPSBw
MjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZk
aFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpICE9IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBDQ0VD
Q3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQ
cml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJs
aWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAg
ICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNj
UHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0ND
SW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgs
IGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0byBleHBlY3RzIHRoZSBiaW5h
cnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0
ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
KyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHkoa2V5QnVmLCBrZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGtleUJ1
ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2YXRlS2V5LmRhdGEoKSwgcDI1
NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0lt
cG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tleVByaXZhdGUsICZj
Y1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNoYXJlZFNlY3JldExl
bmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9IHNoYXJlZFNlY3JldC5zaXpl
KCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChjY1ByaXZhdGVLZXks
IGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNlY3JldExlbmd0aCkg
IT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRoU2hhcmVkU2VjcmV0
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNoYXJl
ZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50
OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdT
SEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhf
dD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhl
clRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgPCBhZXMx
MjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdD
TVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlw
dChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYu
c2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRh
TGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNp
emUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVyVGV4dFdp
dGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0
bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21t
b25DcnlwdG9TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCmluZGV4IGU1ZGFiZTBmMGYyMWEwMjViNjQyOTIzZTMzYjc0YjllYWFhNDQ3ODku
LmFjMWQzYTcyMzI1Y2FhNzBkOGM5OTFkOWJkMjEwOWU0OTA0ZjYyYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCkBAIC0xMTgs
NiArMTE4LDcgQEAgZXh0ZXJuICJDIiBDQ1N0YXR1cyBDQ0Rlcml2ZUtleShjb25zdCBDQ0tERlBh
cmFtZXRlcnNSZWYgcGFyYW1zLCBDQ0RpZ2VzdEFsZ29yaXQKIGV4dGVybiAiQyIgQ0NTdGF0dXMg
Q0NLREZQYXJhbWV0ZXJzQ3JlYXRlSGtkZihDQ0tERlBhcmFtZXRlcnNSZWYgKnBhcmFtcywgY29u
c3Qgdm9pZCAqc2FsdCwgc2l6ZV90IHNhbHRMZW4sIGNvbnN0IHZvaWQgKmNvbnRleHQsIHNpemVf
dCBjb250ZXh0TGVuKTsKIGV4dGVybiAiQyIgdm9pZCBDQ0tERlBhcmFtZXRlcnNEZXN0cm95KEND
S0RGUGFyYW1ldGVyc1JlZiBwYXJhbXMpOwogZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0ND
cnlwdG9yR0NNKENDT3BlcmF0aW9uIG9wLCBDQ0FsZ29yaXRobSBhbGcsIGNvbnN0IHZvaWQqIGtl
eSwgc2l6ZV90IGtleUxlbmd0aCwgY29uc3Qgdm9pZCogaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qg
dm9pZCogYURhdGEsIHNpemVfdCBhRGF0YUxlbiwgY29uc3Qgdm9pZCogZGF0YUluLCBzaXplX3Qg
ZGF0YUluTGVuZ3RoLCB2b2lkKiBkYXRhT3V0LCB2b2lkKiB0YWcsIHNpemVfdCogdGFnTGVuZ3Ro
KTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDQ3J5cHRvckdDTU9uZXNob3REZWNyeXB0
KENDQWxnb3JpdGhtIGFsZywgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5TGVuZ3RoLCBjb25z
dCB2b2lkICAqaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qgdm9pZCAgKmFEYXRhLCBzaXplX3QgYURh
dGFMZW4sIGNvbnN0IHZvaWQgKmRhdGFJbiwgc2l6ZV90IGRhdGFJbkxlbmd0aCwgdm9pZCAgICAg
ICAgKmRhdGFPdXQsIGNvbnN0IHZvaWQgICp0YWdJbiwgc2l6ZV90IHRhZ0xlbmd0aCk7CiBleHRl
cm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JDcmVhdGVGcm9tRGF0YShDQ1JTQUtl
eVR5cGUga2V5VHlwZSwgY29uc3QgdWludDhfdCAqbW9kdWx1cywgc2l6ZV90IG1vZHVsdXNMZW5n
dGgsIGNvbnN0IHVpbnQ4X3QgKmV4cG9uZW50LCBzaXplX3QgZXhwb25lbnRMZW5ndGgsIGNvbnN0
IHVpbnQ4X3QgKnAsIHNpemVfdCBwTGVuZ3RoLCBjb25zdCB1aW50OF90ICpxLCBzaXplX3QgcUxl
bmd0aCwgQ0NSU0FDcnlwdG9yUmVmICpyZWYpOwogCiAjZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVjMDNiNTI0NDliZDQ3ZWUxM2ViOWZkNjUzOTI4
M2RkZWJjMjgyZWEuLmFkMWU3ZTFkYTBiZWFhYWFmMWVhZWQ4Mzk0NTIxYWQxYmQyZGE1ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yNTYsNyArMjU2LDkgQEAgTW9kdWxlcy9waWN0dXJlaW5waWN0dXJl
L0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9F
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9I
VE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGlj
dHVyZS9QaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcAorTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5
cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCitNb2R1bGVzL3B1c2gtYXBp
L1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZURhdGEu
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCiBNb2R1bGVzL3B1c2gt
YXBpL1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGM3OWZjNGQ3OGM2MjEwNTE4OTYxZWYxYzY0MTMyMzdhNWFjNzQ0MGQuLmUwZDNkZmNk
MTYzMjRmMGI0ODBmN2JiM2E2MzU2ODRiMDA2NWMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMTA2LDYgKzEwNiw3IEBAIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyLm1tCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlckNsaWVudC5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsUGxheWVyLm1tCitNb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9D
b2NvYS5jcHAKIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQog
TW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkZmJlNDQ0
ZDBmMWRkODUwZmRjNmIzYmQ5NmVkYWU2YWRjZTY0ZGQuLmMyMjFkYTMxZDhmMTllODM4OGQ5ODAy
Y2NjNWZhOTcxNzgwZTU3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MzAsNiArNTQzMCw4IEBACiAJCUVCMjhFRDQ0Mjcx
N0FDMTEwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyOEVENDEyNzE3QUJBOTAwNUYwMzkzIC8q
IFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRUIzQzI5QjYyNzI5QzM4ODAwRkI2NUI0IC8qIFB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUIzQzI5QjQyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudC5oICovOyB9OwogCQlFQjNDMjlCNzI3MjlDMzhDMDBGQjY1QjQgLyogUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUIzQzI5QjEyNzI5QzM2RDAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudEluaXQuaCAqLzsgfTsKKwkJRUJBNzVDNDYyNzVFQzYxQTAwRDZEMzFDIC8q
IFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRUJBNzVDNDcyNzVFQzYyMTAw
RDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzgwMjcxMDA2NTQwMDc3
MzJFRiAvKiBQdXNoTWFuYWdlci5oICovOyB9OwogCQlFQkI5NzM4MjI3MTAwNjc2MDA3NzMyRUYg
LyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9u
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1
c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVC
Qjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQ
SS5oICovOyB9OwpAQCAtMTc1NTksNiArMTc1NjEsMTEgQEAKIAkJRUIzQzI5QjIyNzI5QzM2RTAw
RkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQjNDMjlCMzI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
QjNDMjlCNDI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUMzRTI3NUVCREFBMDBE
NkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MDI3
NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVz
aE1lc3NhZ2VDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDEy
NzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVz
aENyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQyMjc1RUJE
QUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hDcnlwdG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDUyNzVFQzU4RTAwRDZEMzFDIC8q
IFB1c2hDcnlwdG9Db2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoQ3J5cHRvQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3ODI3MTAwNjUxMDA3NzMy
RUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUGVybWlzc2lv
blN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQjk3MzdBMjcxMDA2NTIw
MDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQ
dXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTAwNyw2ICsyMTAx
NCw5IEBACiAJCTQxOEZDQkI4MjcwNkU0QkQwMEY5NkVDQSAvKiBwdXNoLWFwaSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRUJBNzVDNDQyNzVFQzU2MDAw
RDZEMzFDIC8qIGNvY29hICovLAorCQkJCUVCQTc1QzQxMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0
by5oICovLAogCQkJCUVCMEZCNkZEMjcwRDBBRTgwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktl
eU5hbWUuaCAqLywKIAkJCQlFQjBGQjcwMDI3MEQwQUVBMDBGNzgxMEQgLyogUHVzaEVuY3J5cHRp
b25LZXlOYW1lLmlkbCAqLywKIAkJCQk0MThGQ0JCQjI3MDZFNEY2MDBGOTZFQ0EgLyogUHVzaEV2
ZW50LmNwcCAqLywKQEAgLTIxMDE3LDYgKzIxMDI3LDggQEAKIAkJCQlFQkI5NzM3QzI3MTAwNjUy
MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuY3BwICovLAogCQkJCUVCQjk3MzgwMjcxMDA2NTQwMDc3
MzJFRiAvKiBQdXNoTWFuYWdlci5oICovLAogCQkJCUVCQjk3MzdFMjcxMDA2NTMwMDc3MzJFRiAv
KiBQdXNoTWFuYWdlci5pZGwgKi8sCisJCQkJRUJBNzVDM0UyNzVFQkRBQTAwRDZEMzFDIC8qIFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyog
UHVzaE1lc3NhZ2VDcnlwdG8uaCAqLywKIAkJCQk0MThGQ0JCRTI3MDZFNEY3MDBGOTZFQ0EgLyog
UHVzaE1lc3NhZ2VEYXRhLmNwcCAqLywKIAkJCQk0MThGQ0JCQzI3MDZFNEY2MDBGOTZFQ0EgLyog
UHVzaE1lc3NhZ2VEYXRhLmggKi8sCiAJCQkJNDE4RkNCQkEyNzA2RTRGNTAwRjk2RUNBIC8qIFB1
c2hNZXNzYWdlRGF0YS5pZGwgKi8sCkBAIC0zMTE5MSw2ICszMTIwMywxNCBAQAogCQkJcGF0aCA9
ICJjb250YWN0LXBpY2tlciI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlF
QkE3NUM0NDI3NUVDNTYwMDBENkQzMUMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUVCQTc1QzQ1Mjc1RUM1OEUwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvQ29jb2EuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzYzNTMsMTAg
KzM2MzczLDEyIEBACiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgxRkYwMDE2QjBBMkQzMDA4QUFB
N0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0RTE1QzdF
MDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUJBNzVD
NDYyNzVFQzYxQTAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUVC
MEZCNzA4MjcwRDBCMTAwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOEZDQkMxMjcwNkU0RkIwMEY5NkVDQSAvKiBQdXNoRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOEZDQkMyMjcwNkU1MDEwMEY5NkVDQSAvKiBQdXNoRXZlbnRJbml0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCQTc1QzQ3Mjc1RUM2MjEwMEQ2RDMxQyAvKiBQ
dXNoTWVzc2FnZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJCOTczODIyNzEwMDY3NjAw
NzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDUx
MUY2MjUwQzFDQkYwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUVCMEZCNzA5MjcwRDBCMTgwMEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkZWFiZmZiZmI0ZTg5NmQyZTlmOTYwZmQ5OGQwNTA4Y2ZlZTQzOTZmLi4yNzc2YjdkYjA1ZmVk
MDBjMzQ1NmYxYWI0NTVhMjg0YWYzYTAwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDYgIEJlbiBO
aGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3NhZ2UgZGVj
cnlwdGlvbiByb3V0aW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3Nh
Z2VDcnlwdG8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11c3RCYXNlNjRV
UkxEZWNvZGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFUzEyOEdDTUNsaWVudEtl
eXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFU0dDTUNsaWVudEtleXMpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTItMDYgIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBHUFUgUHJvY2VzcyBmZWF0dXJlIGZsYWdz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyNmZlNTBkZWY4YmY3MmYwYzc1NWY5NTJmMWRm
MTNiNWFjZWM2MjguLjNhNGNjYjVjZGIzMzI4M2U5ZjNmODE2NDZlNTAyNjEyZmQxYzI1YzcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTIsNiArOTkyLDcgQEAKIAkJRTVBQTQyRjIyNTkx
MjhBRTAwNDEwQTNEIC8qIFVzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE0MkYxMjU5MTI4QUUwMDQxMEEz
RCAvKiBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gKi87IH07CiAJCUU1QUE4RDFEMjUxNTFD
QzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5w
dXRUZXN0cy5tbSAqLzsgfTsKIAkJRUIyMzBENDEyNDVFODEzRjAwQzY2QUQxIC8qIElEQkNoZWNr
cG9pbnRXQUwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFQjIzMEQzRDI0NUU3MjJFMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5o
dG1sICovOyB9OworCQlFQkE3NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlw
dG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJB
NzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLzsgfTsKIAkJ
RUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDcz
MUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MDEwQjgwMjREQTI0QUMwMEE4
NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDEwQjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0
aW9uU3dpcGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQwMTBCODMyNERBMjY3RjAwQTg3NkUyIC8qIFBv
c2VBc0NsYXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwMTBCODEyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwpAQCAt
MjkxNiw2ICsyOTE3LDcgQEAKIAkJRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1
dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJD
aGVja3BvaW50V0FMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3Bv
aW50V0FMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcy
NjMwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSURCQ2hlY2twb2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8q
IFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNG
QzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3Qu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM3MDYsNiArMzcwOCw3
IEBACiAJCQkJQUE5NkNBQjQyMUM3REI0MjAwRkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk2QjBBMDdGNjIxRkE5QzJCMDBENTczOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwICovLAogCQkJCTA0MUExRTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZm
aXguY3BwICovLAorCQkJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNy
eXB0by5jcHAgKi8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxl
RG9tYWluLmNwcCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJl
Y3RUZXN0cy5jcHAgKi8sCiAJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovLApAQCAtNTU5Nyw2ICs1NjAwLDcgQEAKIAkJCQk0
NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRUMyQTg1NjI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNT
dWZmaXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUJBNzVDNDkyNzVFRDdDNzAwRDZEMzFDIC8q
IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCNEU4NjFDMjIyMEE1
NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFQzkxQTQxMUE3RTAwNDQ3QzRDIC8qIFJlbmRlcmVkSW1hZ2VG
cm9tRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYz
OTQ2OGUxNDQ0MDRmOGQ5ZjE3M2ZjN2VjM2M3YzZjZGNkNzhhMwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAK
QEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpQ
dXNoQ3J5cHRvOworCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG11c3RCYXNlNjRVUkxEZWNvZGUo
Y29uc3QgU3RyaW5nJiBlbmNvZGVkKQoreworICAgIHJldHVybiBiYXNlNjRVUkxEZWNvZGUoZW5j
b2RlZCkudmFsdWUoKTsKK30KKworc3RhdGljIENsaWVudEtleXMgbWFrZUFFUzEyOEdDTUNsaWVu
dEtleXModm9pZCkKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIFJGQzgyOTEgU2VjdGlv
biA1LgorICAgIGF1dG8gcHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQkNWeHNyN05f
ZU5nVlJxdkh0RDB6VFpzRWM2LVZWLUp2TGV4aHFVek9SY3hhT3ppNi1BWVdYdlRCSG00Ymp5UGpz
N1ZkOHBaR0g2U1Jwa050b0lBaXc0Il9zKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBtdXN0QmFz
ZTY0VVJMRGVjb2RlKCJxMWRYcHczVXBUNVZPbXVfY2ZfdjZpaDA3QWVtczNuanhJLUpXZ0xjTTk0
Il9zKTsKKyAgICBhdXRvIHNlY3JldCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJUQlpNcUhINnI0
VHRzN0pfYVNJZ2ciX3MpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2
REhLZXlQYWlyIHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0sCisg
ICAgICAgIFdURk1vdmUoc2VjcmV0KQorICAgIH07Cit9CisKK3N0YXRpYyBDbGllbnRLZXlzIG1h
a2VBRVNHQ01DbGllbnRLZXlzKHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2YWx1ZXMgZnJvbSBk
cmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNCBTZWN0aW9uIDUuCisgICAgYXV0byBwdWJs
aWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCQ0VrQmp6TDhaM0Mtb2kyUTdvRTV0Mk5wLXA3
b3NqR0xnOTNxVVAwd3ZxUlQyMUVFV3lmMGNRRFFjYWtRTXF6NGhRS1lPUTNpbDJuTlpjdDRIZ0FV
UVUiX3MpOworICAgIGF1dG8gcHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjlGV2wx
NV9RVVFBV0RhRDNrM2w1MFpCWlFKNGF1MjdGMVY0RjB1TFNEX00iX3MpOworICAgIGF1dG8gc2Vj
cmV0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiUjI5dklHZHZieUJuSnlCcWIyOWlJUSJfcyk7CisK
KyAgICByZXR1cm4gQ2xpZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBhaXIgeyBXVEZNb3Zl
KHB1YmxpY0tleSksIFdURk1vdmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAgV1RGTW92ZShzZWNy
ZXQpCisgICAgfTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTMTI4R0NNUGF5bG9h
ZFdpdGhNaW5pbWFsUGFkZGluZykKK3sKKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTMTI4
R0NNQ2xpZW50S2V5cygpOworCisgICAgLy8gRXhhbXBsZSBwYXlsb2FkIGZyb20gUkZDODI5MSBT
ZWN0aW9uIDUuCisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiREd2NnJh
MW5sWWdEQ1MxRlJuYnpsd0FBRUFCQkJQNHo5S3NONm5HUlRiVllJX2M3VkpTUFFUQnRrZ2N5Mjdt
bG1sTW9aSUlnRGxsNmUzdkNZTG9jSW5tWVdBbVM2VGx6QUM4d0VxS0s2UEJydTNqbDdBX3lsOTVi
UXB1NmNWUFRwSzRNcWdrZjFDWHp0TFZCU3QyS3Mzb1p3YnV3WFBYTFd5b3VCV0xWV0dOV1FleFNn
U3hzal9RdWxjeTRhLWZOIl9zKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ01Q
YXlsb2FkKGNsaWVudEtleXMsIHBheWxvYWQpOworCisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhh
c192YWx1ZSgpKTsKKyAgICBhdXRvIGFjdHVhbCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqcmVz
dWx0KSk7CisgICAgQVNTRVJUX0VRKCJXaGVuIEkgZ3JvdyB1cCwgSSB3YW50IHRvIGJlIGEgd2F0
ZXJtZWxvbiJfcywgYWN0dWFsKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NN
UGF5bG9hZFdpdGhNaW5pbWFsUGFkZGluZykKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9t
IGRyYWZ0LWlldGYtd2VicHVzaC1lbmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIGNs
aWVudEtleXMgPSBtYWtlQUVTR0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gc2FsdCA9IG11c3RC
YXNlNjRVUkxEZWNvZGUoImxuZ2FyYnlLZk1vaTlaNzV4WVhta2ciX3MpOworICAgIGF1dG8gc2Vy
dmVyUHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQk5vUkRiYjg0SkdtOGc1WjVDRnh1
clNxc1hXSjExSXRmWEVXWVZMRTg1WTdDWWtEalhzSUVjNGFxeFlhUTFHOEJxa1hDSjZEUHBEcld0
ZFdqX211Z0hVIl9zKTsKKworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUo
IjZucUFRVU1FOGhOcXc1SjNrbDhjcFZWSnlsWEtZcVpPZXNlWkc4VXVlS3BBIl9zKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1Ymxp
Y0tleSwgc2FsdCwgcGF5bG9hZCk7CisKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVl
KCkpOworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsK
KyAgICBBU1NFUlRfRVEoIkkgYW0gdGhlIHdhbHJ1cyJfcywgYWN0dWFsKTsKK30KKworfQorCisj
ZW5kaWYK
</data>
<flag name="commit-queue"
          id="471434"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446102</attachid>
            <date>2021-12-06 17:05:18 -0800</date>
            <delta_ts>2021-12-06 17:30:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206170517.patch</filename>
            <type>text/plain</type>
            <size>47309</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODUwNmFhZTA3NjY2MzMwYzM3NzZkZGIzYmU3N2Ew
MzMxNTgxMGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY2FsbCB0byBvc19zaWducG9zdCB0byB0YWcg
YSBtb21lbnR1bSBzY3JvbGwgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTEwODEz
YzIxOTc0N2ZmZThjYmI3NjY2OTRhYzMyN2VhYTY3NTUwLi5mMDZkNDU5ZDZjOTdlOGQxYmUzMDRj
YjY5MDljMWQxYzljZTNmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
IHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJ
Lmg6IEFkZCBBRVMtR0NNIGRlY3J5cHRpb24gU1BJLgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQg
b2YgaW1hZ2UgY29udHJvbCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMTUzZWRkODA1
NTcyZGEwNWFhNmFkOTk5YTE3ZDJmMjA1YWJmMWEuLjA2MGVkZjk0MzU5ZDc4MjVhOWNhOTU2Y2E0
MGI4N2I2OWM3MmYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjg4LDYgKzI4OCw4IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Blcm1pc3Np
b25zL1Blcm1pc3Npb25PYnNlcnZlci5oCiAgICAgTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNz
aW9uU3RhdGUuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmgKICAgICBNb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2UxYWJhNDFiYjBjMWNhMDEyYWE5ZTc4YTIzYTZkMmFmYTdlY2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKworUDI1NkRIS2V5
UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2Vj
cmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBr
ZXlQYWlyKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
Y3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90Piwg
U3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM2MWM5NGUyYmVkNTU4NGYzZWJlMTQzZjllMTQ2ZjFjMmYyNGNjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggPSA2NTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFNoYXJl
ZFNlY3JldExlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2hhMjU2RGlnZXN0
TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhZXMxMjhHQ01UYWdMZW5ndGgg
PSAxNjsKKworc3RydWN0IFAyNTZESEtleVBhaXIgeworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJs
aWNLZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVLZXk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUDI1NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKK307CisKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWly
Jik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29u
c3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25z
dCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlw
dG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTg3NzczNjQ0YzllYmE3MjRkODhhODVlYWZj
YTUzOTRjMGIxY2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIK
KyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8vIEFyYml0cmFyeSBs
aW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBBUE5TIHNob3VsZCBl
dmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNoUGF5bG9hZExlbmd0
aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
YWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJhdGUoKQoreworICAg
IHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVuZ3RoXTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hh
cmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhfdD4geyBzaGFyZWRB
dXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07Cit9CisKK3N0YXRp
YyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRL
ZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGlj
S2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgg
JiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3Ro
KGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAgIC8qCisgICAgICog
Q29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODggU2VjdGlvbiAyOgor
ICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICogICB8ICAgZGF0YSAg
ICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICoKKyAgICAgKiBw
YWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1pdGVyIG9jdGV0ICgw
eDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgorICAgICAqLworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBjb25zdCB1aW50
OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBjdXIgPSBlbmQg
LSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAwKSkKKyAgICAgICAg
LS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOwor
CisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNsaWVudEtl
eUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVhZGVyIGFzIGRl
c2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsKKyAgICAgICAg
dWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9yZWRbNF07Cisg
ICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZlclB1YmxpY0tl
eVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
blB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAvKiBtaW5QYWRk
aW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBheWxvYWQuc2l6
ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQdXNoUGF5
bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBheWxvYWRI
ZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEoKSwgc2l6ZW9m
KGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRoUHVibGljS2V5
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAgICAgKiBU
aGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5MSAzLjQuCisg
ICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhfc2VjcmV0ID0g
RUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBlY2RoU2VjcmV0
UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVyUHVibGljS2V5
LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNkaFNlY3JldFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAgICogIyBI
S0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQorICAgICAqIFBS
S19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqLwor
ICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQs
ICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUktf
a2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2ViUHVzaDogaW5m
byIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtNID0gSE1BQy1T
SEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAgc3RydWN0IEtl
eUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6IGluZm8iIH07
CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAg
ICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVp
bnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEtleUlu
Zm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5KGtleUluZm8u
Y2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5LmRhdGEo
KSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5zZXJ2ZXJLZXks
IGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisKKyAgICBh
dXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAgICAqICMgSEtE
Ri1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2FsdCwgSUtN
KQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2FsdCwgaWttKTsK
KworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBMX2Nlaz0xNikK
KyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20iIHx8IDB4MDAK
KyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0K
KyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihw
cmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNlay5zaHJpbmso
MTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2VfaW5mbywgTF9u
b25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIiB8
fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4
MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1td
ID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8gbm9uY2UgPSBo
bWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOwor
ICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVT
MTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRvIGNpcGhl
clRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6
ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlw
dEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBsYWluVGV4dFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UZXh0
ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBhZGRpbmdM
ZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0YSgpLCBw
bGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01BWCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJpbmsocGxhaW5U
ZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRleHQ7Cit9CisK
K3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3QgdWludDhfdCAq
YmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRlIHBhZGRpbmcg
bGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRpb24tZW5jb2Rp
bmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKiAgIHwg
cGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKgor
ICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQgaW50ZWdlciBp
biBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBudW1iZXIgb2Yg
MHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVzLgorICAgICAq
LworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICB1
aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0aCwgYmVnaW4s
IDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsKKworICAgIGNv
bnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBi
ZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRpbmdMZW5ndGg7
CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRpbmdMZWZ0KSB7
CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0KKworICAgIGlm
IChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgcmV0dXJuIGN1
ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFF
U0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2Fs
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50
S2V5TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXpl
KCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUg
YXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQg
aW4gdGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcu
CisgICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXls
b2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJv
bSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZv
ciBhIFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFz
X3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1
NkRIU2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYo
YXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktf
Y29tYmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNh
bHQsIElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0g
IkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0g
aG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0
KTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywg
c2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAg
ICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAg
ICAgIDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3
ZSBhbHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBh
bmQgbm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQg
dHJhaWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29u
dGV4dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5
RGVyaXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xp
ZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgp
OworICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2Vr
X2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAg
ICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVu
dC1FbmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9I
ZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hl
YWRlciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVv
ZihjZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRv
IGNlayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKwor
ICAgIC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwg
MHgwMCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90
IG5vbmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVh
ZGVyKSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2
KHByaywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxs
eSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRl
eHQuCisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9u
Y2UsIHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJl
c3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlm
IChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRk
aW5nTGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmFhNzYzYTNkODc4
MDkxOTc2ODE5NjVhOWUyYTczMGNiYjQwYjdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgUHVzaENyeXB0byB7CisKK3N0cnVjdCBDbGllbnRLZXlzIHsKKyAgICBQMjU2REhLZXlQYWly
IGNsaWVudFAyNTZESEtleVBhaXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNy
ZXQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2xpZW50S2V5cyBnZW5lcmF0ZSgpOwor
fTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXMxMjhn
Y20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gUkZDODI5MS4KK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKTsKKwor
Ly8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVu
dC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24t
MDQuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2VydmVyUDI1NkRIUHVibGljS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9Q
dXNoQ3J5cHRvQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2Nv
YS9QdXNoQ3J5cHRvQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY1MWQ2N2YxNzAwNzczNmJiNDM0
YWM4ODIyZjBlOGQzMmE1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENyeXB0by5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkhNQUMuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBQdXNoQ3J5cHRvIHsKKworUDI1NkRIS2V5UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0
ZSh2b2lkKQoreworICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKKyAg
ICBDQ0VDQ3J5cHRvclJlZiBjY1ByaXZhdGVLZXkgPSBudWxscHRyOworICAgIGF1dG8gcmVsZWFz
ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoWyZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleV0oKSB7
CisgICAgICAgIGlmIChjY1B1YmxpY0tleSkKKyAgICAgICAgICAgIENDRUNDcnlwdG9yUmVsZWFz
ZShjY1B1YmxpY0tleSk7CisgICAgICAgIGlmIChjY1ByaXZhdGVLZXkpCisgICAgICAgICAgICBD
Q0VDQ3J5cHRvclJlbGVhc2UoY2NQcml2YXRlS2V5KTsKKyAgICB9KTsKKworICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckdlbmVyYXRlUGFpcigyNTYsICZjY1B1YmxpY0tl
eSwgJmNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nl
c3MpOworCisgICAgdWludDhfdCBwdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAg
ICBzaXplX3QgcHVibGljS2V5TGVuZ3RoID0gc2l6ZW9mKHB1YmxpY0tleSk7CisgICAgc3RhdHVz
ID0gQ0NFQ0NyeXB0b3JFeHBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXksICZw
dWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsIGNjUHVibGljS2V5KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBwdWJsaWNLZXlMZW5ndGggPT0gc2l6ZW9m
KHB1YmxpY0tleSkpOworCisgICAgLy8gQ29tbW9uQ3J5cHRvIGV4cGVjdHMgdGhlIGJpbmFyeSBm
b3JtYXQgdG8gYmUgNjUgYnl0ZSBwdWJsaWMga2V5IGZvbGxvd2VkIGJ5IHRoZSAzMiBieXRlIHBy
aXZhdGUga2V5LCBzbyB3ZSB3YW50IHRvIGV4dHJhY3QgdGhlIGxhc3QgMzIgYnl0ZXMgZnJvbSB0
aGUgYnVmZmVyLgorICAgIHVpbnQ4X3Qga2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aCArIHAyNTZk
aFByaXZhdGVLZXlMZW5ndGhdOworICAgIHNpemVfdCBrZXlMZW5ndGggPSBzaXplb2Yoa2V5KTsK
KyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIGtl
eSwgJmtleUxlbmd0aCwgY2NFQ0tleVByaXZhdGUsIGNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nlc3MgJiYga2V5TGVuZ3RoID09IHNpemVvZihrZXkp
KTsKKworICAgIHJldHVybiBQMjU2REhLZXlQYWlyIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHsgcHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfSwKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHsga2V5ICsgcDI1NmRoUHVibGljS2V5TGVuZ3RoLCBwMjU2ZGhQcml2YXRlS2V5TGVu
Z3RoIH0KKyAgICB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3Qg
UDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVibGljS2V5LnNpemUoKSAhPSBw
MjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZk
aFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpICE9IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBDQ0VD
Q3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQ
cml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJs
aWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAg
ICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNj
UHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0ND
SW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgs
IGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0byBleHBlY3RzIHRoZSBiaW5h
cnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0
ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
KyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHkoa2V5QnVmLCBrZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGtleUJ1
ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2YXRlS2V5LmRhdGEoKSwgcDI1
NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0lt
cG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tleVByaXZhdGUsICZj
Y1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNoYXJlZFNlY3JldExl
bmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9IHNoYXJlZFNlY3JldC5zaXpl
KCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChjY1ByaXZhdGVLZXks
IGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNlY3JldExlbmd0aCkg
IT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRoU2hhcmVkU2VjcmV0
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNoYXJl
ZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50
OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdT
SEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhf
dD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhl
clRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgPCBhZXMx
MjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdD
TVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlw
dChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYu
c2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRh
TGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNp
emUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVyVGV4dFdp
dGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0
bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21t
b25DcnlwdG9TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCmluZGV4IGU1ZGFiZTBmMGYyMWEwMjViNjQyOTIzZTMzYjc0YjllYWFhNDQ3ODku
LjFlYjJmODRlN2E4YmU3YWFjNTBkMGVlNjQ5ZWZhZmVmZGU0NmNhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCisjaW5jbHVkZSA8Q29t
bW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25D
cnlwdG9yU1BJLmg+CiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdFNQSS5oPgog
I2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25FQ0NyeXB0b3IuaD4KQEAgLTExOCw2ICsxMTks
NyBAQCBleHRlcm4gIkMiIENDU3RhdHVzIENDRGVyaXZlS2V5KGNvbnN0IENDS0RGUGFyYW1ldGVy
c1JlZiBwYXJhbXMsIENDRGlnZXN0QWxnb3JpdAogZXh0ZXJuICJDIiBDQ1N0YXR1cyBDQ0tERlBh
cmFtZXRlcnNDcmVhdGVIa2RmKENDS0RGUGFyYW1ldGVyc1JlZiAqcGFyYW1zLCBjb25zdCB2b2lk
ICpzYWx0LCBzaXplX3Qgc2FsdExlbiwgY29uc3Qgdm9pZCAqY29udGV4dCwgc2l6ZV90IGNvbnRl
eHRMZW4pOwogZXh0ZXJuICJDIiB2b2lkIENDS0RGUGFyYW1ldGVyc0Rlc3Ryb3koQ0NLREZQYXJh
bWV0ZXJzUmVmIHBhcmFtcyk7CiBleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ0NyeXB0b3JH
Q00oQ0NPcGVyYXRpb24gb3AsIENDQWxnb3JpdGhtIGFsZywgY29uc3Qgdm9pZCoga2V5LCBzaXpl
X3Qga2V5TGVuZ3RoLCBjb25zdCB2b2lkKiBpdiwgc2l6ZV90IGl2TGVuLCBjb25zdCB2b2lkKiBh
RGF0YSwgc2l6ZV90IGFEYXRhTGVuLCBjb25zdCB2b2lkKiBkYXRhSW4sIHNpemVfdCBkYXRhSW5M
ZW5ndGgsIHZvaWQqIGRhdGFPdXQsIHZvaWQqIHRhZywgc2l6ZV90KiB0YWdMZW5ndGgpOworZXh0
ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0NDcnlwdG9yR0NNT25lc2hvdERlY3J5cHQoQ0NBbGdv
cml0aG0gYWxnLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlMZW5ndGgsIGNvbnN0IHZvaWQg
ICppdiwgc2l6ZV90IGl2TGVuLCBjb25zdCB2b2lkICAqYURhdGEsIHNpemVfdCBhRGF0YUxlbiwg
Y29uc3Qgdm9pZCAqZGF0YUluLCBzaXplX3QgZGF0YUluTGVuZ3RoLCB2b2lkICAgICAgICAqZGF0
YU91dCwgY29uc3Qgdm9pZCAgKnRhZ0luLCBzaXplX3QgdGFnTGVuZ3RoKTsKIGV4dGVybiAiQyIg
Q0NDcnlwdG9yU3RhdHVzIENDUlNBQ3J5cHRvckNyZWF0ZUZyb21EYXRhKENDUlNBS2V5VHlwZSBr
ZXlUeXBlLCBjb25zdCB1aW50OF90ICptb2R1bHVzLCBzaXplX3QgbW9kdWx1c0xlbmd0aCwgY29u
c3QgdWludDhfdCAqZXhwb25lbnQsIHNpemVfdCBleHBvbmVudExlbmd0aCwgY29uc3QgdWludDhf
dCAqcCwgc2l6ZV90IHBMZW5ndGgsIGNvbnN0IHVpbnQ4X3QgKnEsIHNpemVfdCBxTGVuZ3RoLCBD
Q1JTQUNyeXB0b3JSZWYgKnJlZik7CiAKICNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNWMwM2I1MjQ0OWJkNDdlZTEzZWI5ZmQ2NTM5MjgzZGRlYmMy
ODJlYS4uYWQxZTdlMWRhMGJlYWFhYWYxZWFlZDgzOTQ1MjFhZDFiZDJkYTU4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTI1Niw3ICsyNTYsOSBAQCBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1l
bnRQaWN0dXJlSW5QaWN0dXJlLmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRl
b0VsZW1lbnRQaWN0dXJlSW5QaWN0dXJlLmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL1Bp
Y3R1cmVJblBpY3R1cmVXaW5kb3cuY3BwCitNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
CiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hFdmVudC5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
Yzc5ZmM0ZDc4YzYyMTA1MTg5NjFlZjFjNjQxMzIzN2E1YWM3NDQwZC4uZTBkM2RmY2QxNjMyNGYw
YjQ4MGY3YmIzYTYzNTY4NGIwMDY1YzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0x
MDYsNiArMTA2LDcgQEAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9k
ZWxMb2FkZXIubW0KIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVs
TG9hZGVyQ2xpZW50Lm1tCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxQbGF5ZXIubW0KK01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNw
cAogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gv
Y29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWRmYmU0NDRkMGYxZGQ4
NTBmZGM2YjNiZDk2ZWRhZTZhZGNlNjRkZC4uYzIyMWRhMzFkOGYxOWU4Mzg4ZDk4MDJjY2M1ZmE5
NzE3ODBlNTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTQzMCw2ICs1NDMwLDggQEAKIAkJRUIyOEVENDQyNzE3QUMxMTAw
NUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjI4RUQ0MTI3MTdBQkE5MDA1RjAzOTMgLyogUHVzaFN1
YnNjcmlwdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFQjNDMjlCNjI3MjlDMzg4MDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNo
YW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjNDMjlCNDI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
LmggKi87IH07CiAJCUVCM0MyOUI3MjcyOUMzOEMwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9u
Q2hhbmdlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQjNDMjlCMTI3MjlDMzZEMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5n
ZUV2ZW50SW5pdC5oICovOyB9OworCQlFQkE3NUM0NjI3NUVDNjFBMDBENkQzMUMgLyogUHVzaENy
eXB0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJB
NzVDNDIyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFQkE3NUM0NzI3NUVDNjIxMDBENkQzMUMg
LyogUHVzaE1lc3NhZ2VDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVCQTc1QzQwMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVC
Qjk3MzgxMjcxMDA2NzEwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8q
IFB1c2hNYW5hZ2VyLmggKi87IH07CiAJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNo
UGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQkI5NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3
MzgzMjcxMDA2ODQwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczN0Ey
NzEwMDY1MjAwNzczMkVGIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmggKi87
IH07CkBAIC0xNzU1OSw2ICsxNzU2MSwxMSBAQAogCQlFQjNDMjlCMjI3MjlDMzZFMDBGQjY1QjQg
LyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUVCM0MyOUIzMjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCM0MyOUI0
MjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzNFMjc1RUJEQUEwMEQ2RDMxQyAv
KiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNy
eXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQwMjc1RUJEQUEw
MEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoTWVzc2Fn
ZUNyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MTI3NUVCREFC
MDBENkQzMUMgLyogUHVzaENyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoQ3J5cHRv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDIyNzVFQkRBQjAwRDZE
MzFDIC8qIFB1c2hDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaENyeXB0by5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0NTI3NUVDNThFMDBENkQzMUMgLyogUHVzaENy
eXB0b0NvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hDcnlwdG9Db2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQjk3Mzc4MjcxMDA2NTEwMDc3MzJFRiAvKiBQ
dXNoUGVybWlzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hQZXJtaXNzaW9uU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJCOTczN0EyNzEwMDY1MjAwNzczMkVG
IC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUVCQjk3MzdCMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uK1B1c2hBUEkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9ICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uK1B1c2hBUEku
aWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDA3LDYgKzIxMDE0LDkgQEAK
IAkJNDE4RkNCQjgyNzA2RTRCRDAwRjk2RUNBIC8qIHB1c2gtYXBpICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFQkE3NUM0NDI3NUVDNTYwMDBENkQzMUMg
LyogY29jb2EgKi8sCisJCQkJRUJBNzVDNDEyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8u
Y3BwICovLAorCQkJCUVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi8s
CiAJCQkJRUIwRkI2RkQyNzBEMEFFODAwRjc4MTBEIC8qIFB1c2hFbmNyeXB0aW9uS2V5TmFtZS5o
ICovLAogCQkJCUVCMEZCNzAwMjcwRDBBRUEwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5h
bWUuaWRsICovLAogCQkJCTQxOEZDQkJCMjcwNkU0RjYwMEY5NkVDQSAvKiBQdXNoRXZlbnQuY3Bw
ICovLApAQCAtMjEwMTcsNiArMjEwMjcsOCBAQAogCQkJCUVCQjk3MzdDMjcxMDA2NTIwMDc3MzJF
RiAvKiBQdXNoTWFuYWdlci5jcHAgKi8sCiAJCQkJRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8q
IFB1c2hNYW5hZ2VyLmggKi8sCiAJCQkJRUJCOTczN0UyNzEwMDY1MzAwNzczMkVGIC8qIFB1c2hN
YW5hZ2VyLmlkbCAqLywKKwkJCQlFQkE3NUMzRTI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uY3BwICovLAorCQkJCUVCQTc1QzQwMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVz
c2FnZUNyeXB0by5oICovLAogCQkJCTQxOEZDQkJFMjcwNkU0RjcwMEY5NkVDQSAvKiBQdXNoTWVz
c2FnZURhdGEuY3BwICovLAogCQkJCTQxOEZDQkJDMjcwNkU0RjYwMEY5NkVDQSAvKiBQdXNoTWVz
c2FnZURhdGEuaCAqLywKIAkJCQk0MThGQ0JCQTI3MDZFNEY1MDBGOTZFQ0EgLyogUHVzaE1lc3Nh
Z2VEYXRhLmlkbCAqLywKQEAgLTMxMTkxLDYgKzMxMjAzLDE0IEBACiAJCQlwYXRoID0gImNvbnRh
Y3QtcGlja2VyIjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUVCQTc1QzQ0
Mjc1RUM1NjAwMEQ2RDMxQyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRUJBNzVDNDUyNzVFQzU4RTAwRDZEMzFDIC8qIFB1c2hDcnlwdG9D
b2NvYS5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNjM1MywxMCArMzYzNzMs
MTIgQEAKIAkJCQk1NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlh
bFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQ
dWJsaWNTdWZmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5
OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFQkE3NUM0NjI3NUVD
NjFBMDBENkQzMUMgLyogUHVzaENyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MDgy
NzBEMEIxMDAwRjc4MTBEIC8qIFB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE4RkNCQzEyNzA2RTRGQjAwRjk2RUNBIC8qIFB1c2hFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE4RkNCQzIyNzA2RTUwMTAwRjk2RUNBIC8qIFB1c2hFdmVudEluaXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUVCQjk3MzgxMjcxMDA2NzEwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRUJBNzVDNDcyNzVFQzYyMTAwRDZEMzFDIC8qIFB1c2hNZXNz
YWdlQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkI5NzM4MjI3MTAwNjc2MDA3NzMyRUYg
LyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENTExRjYyNTBD
MUNCRjAwMkVEQzUxIC8qIFB1c2hQdWxsRklGTy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3
MDkyNzBEMEIxODAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlYWJm
ZmJmYjRlODk2ZDJlOWY5NjBmZDk4ZDA1MDhjZmVlNDM5NmYuLjI3NzZiN2RiMDVmZWQwMGMzNDU2
ZjFhYjQ1NWEyODRhZjNhMDBmMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2ViIHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9u
IHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0
by5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVzdEJhc2U2NFVSTERlY29k
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQUVTMTI4R0NNQ2xpZW50S2V5cyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlQUVTR0NNQ2xpZW50S2V5cyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0wNiAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXBkYXRlIEdQVSBQcm9jZXNzIGZlYXR1cmUgZmxhZ3MKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTI2ZmU1MGRlZjhiZjcyZjBjNzU1Zjk1MmYxZGYxM2I1YWNl
YzYyOC4uM2E0Y2NiNWNkYjMzMjgzZTlmM2Y4MTY0NmU1MDI2MTJmZDFjMjVjNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTk5Miw2ICs5OTIsNyBAQAogCQlFNUFBNDJGMjI1OTEyOEFFMDA0
MTBBM0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVBQTQyRjEyNTkxMjhBRTAwNDEwQTNEIC8qIFVz
ZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSAqLzsgfTsKIAkJRTVBQThEMUQyNTE1MUNDNjAwNTFD
QzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3Rz
Lm1tICovOyB9OwogCQlFQjIzMEQ0MTI0NUU4MTNGMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdB
TC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi87
IH07CisJCUVCQTc1QzQ5Mjc1RUQ3QzcwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0ODI3
NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovOyB9OwogCQlFQ0E2ODBD
RTFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8q
IFN0cmluZ1V0aWxpdGllcy5tbSAqLzsgfTsKIAkJRjQwMTBCODAyNERBMjRBQzAwQTg3NkUyIC8q
IE5hdmlnYXRpb25Td2lwZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQwMTBCN0YyNERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25Td2lw
ZVRlc3RzLm1tICovOyB9OwogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xh
c3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAx
MEI4MTI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CkBAIC0yOTE2LDYg
KzI5MTcsNyBAQAogCQlFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRlSW5wdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8qIElEQkNoZWNrcG9p
bnRXQUwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0UyNDVFNzI2MzAwQzY2
QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5n
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3Ry
aW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEz
Njc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzcwNiw2ICszNzA4LDcgQEAKIAkJ
CQlBQTk2Q0FCNDIxQzdEQjQyMDBGRDJGOTcgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLAog
CQkJCTZCMEEwN0Y2MjFGQTlDMkIwMEQ1NzM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5j
cHAgKi8sCiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAg
Ki8sCisJCQkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNw
cCAqLywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4u
Y3BwICovLAogCQkJCUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3Rz
LmNwcCAqLywKIAkJCQk0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXJUZXN0cy5jcHAgKi8sCkBAIC01NTk3LDYgKzU2MDAsNyBAQAogCQkJCTQ2NDdCMTI2
MUVCQTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZFQzJBODU2MjRDRUI2NUYwMEFEQkMzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDQxQTFFMzQyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFQkE3NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkI0RTg2MUMyMjIwQTU1MjAwMjJG
Mzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBE
MUE0MTFBRTYwMDQ0N0M0QyAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VDOTFBNDExQTdFMDA0NDdDNEMgLyogUmVuZGVyZWRJbWFnZUZyb21ET01O
b2RlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjM5NDY4ZTE0
NDQwNGY4ZDlmMTczZmM3ZWMzYzdjNmNkY2Q3OGEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
c3QuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPFdlYkNvcmUv
UHVzaE1lc3NhZ2VDcnlwdG8uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OlB1c2hDcnlw
dG87CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gbXVzdEJhc2U2NFVSTERlY29kZShjb25zdCBT
dHJpbmcmIGVuY29kZWQpCit7CisgICAgcmV0dXJuIGJhc2U2NFVSTERlY29kZShlbmNvZGVkKS52
YWx1ZSgpOworfQorCitzdGF0aWMgQ2xpZW50S2V5cyBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cyh2
b2lkKQoreworICAgIC8vIEV4YW1wbGUgdmFsdWVzIGZyb20gUkZDODI5MSBTZWN0aW9uIDUuCisg
ICAgYXV0byBwdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCQ1Z4c3I3Tl9lTmdWUnF2
SHREMHpUWnNFYzYtVlYtSnZMZXhocVV6T1JjeGFPemk2LUFZV1h2VEJIbTRianlQanM3VmQ4cFpH
SDZTUnBrTnRvSUFpdzQiX3MpOworICAgIGF1dG8gcHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxE
ZWNvZGUoInExZFhwdzNVcFQ1Vk9tdV9jZl92NmloMDdBZW1zM25qeEktSldnTGNNOTQiX3MpOwor
ICAgIGF1dG8gc2VjcmV0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQlRCWk1xSEg2cjRUdHM3Sl9h
U0lnZyJfcyk7CisKKyAgICByZXR1cm4gQ2xpZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBh
aXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdURk1vdmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAg
V1RGTW92ZShzZWNyZXQpCisgICAgfTsKK30KKworc3RhdGljIENsaWVudEtleXMgbWFrZUFFU0dD
TUNsaWVudEtleXModm9pZCkKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIGRyYWZ0LWll
dGYtd2VicHVzaC1lbmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIHB1YmxpY0tleSA9
IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJDRWtCanpMOFozQy1vaTJRN29FNXQyTnAtcDdvc2pHTGc5
M3FVUDB3dnFSVDIxRUVXeWYwY1FEUWNha1FNcXo0aFFLWU9RM2lsMm5OWmN0NEhnQVVRVSJfcyk7
CisgICAgYXV0byBwcml2YXRlS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiOUZXbDE1X1FVUUFX
RGFEM2szbDUwWkJaUUo0YXUyN0YxVjRGMHVMU0RfTSJfcyk7CisgICAgYXV0byBzZWNyZXQgPSBt
dXN0QmFzZTY0VVJMRGVjb2RlKCJSMjl2SUdkdmJ5Qm5KeUJxYjI5aUlRIl9zKTsKKworICAgIHJl
dHVybiBDbGllbnRLZXlzIHsKKyAgICAgICAgUDI1NkRIS2V5UGFpciB7IFdURk1vdmUocHVibGlj
S2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9LAorICAgICAgICBXVEZNb3ZlKHNlY3JldCkKKyAg
ICB9OworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVMxMjhHQ01QYXlsb2FkV2l0aE1p
bmltYWxQYWRkaW5nKQoreworICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVMxMjhHQ01DbGll
bnRLZXlzKCk7CisKKyAgICAvLyBFeGFtcGxlIHBheWxvYWQgZnJvbSBSRkM4MjkxIFNlY3Rpb24g
NS4KKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJER3Y2cmExbmxZZ0RD
UzFGUm5iemx3QUFFQUJCQlA0ejlLc042bkdSVGJWWUlfYzdWSlNQUVRCdGtnY3kyN21sbWxNb1pJ
SWdEbGw2ZTN2Q1lMb2NJbm1ZV0FtUzZUbHpBQzh3RXFLSzZQQnJ1M2psN0FfeWw5NWJRcHU2Y1ZQ
VHBLNE1xZ2tmMUNYenRMVkJTdDJLczNvWndidXdYUFhMV3lvdUJXTFZXR05XUWV4U2dTeHNqX1F1
bGN5NGEtZk4iX3MpOworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQo
Y2xpZW50S2V5cywgcGF5bG9hZCk7CisKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVl
KCkpOworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsK
KyAgICBBU1NFUlRfRVEoIldoZW4gSSBncm93IHVwLCBJIHdhbnQgdG8gYmUgYSB3YXRlcm1lbG9u
Il9zLCBhY3R1YWwpOworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2Fk
V2l0aE1pbmltYWxQYWRkaW5nKQoreworICAgIC8vIEV4YW1wbGUgdmFsdWVzIGZyb20gZHJhZnQt
aWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24tMDQgU2VjdGlvbiA1LgorICAgIGF1dG8gY2xpZW50S2V5
cyA9IG1ha2VBRVNHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJhc2U2NFVS
TERlY29kZSgibG5nYXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2ZXJQdWJs
aWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVyU3FzWFdK
MTFJdGZYRVdZVkxFODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3RkV2pfbXVn
SFUiX3MpOworCisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiNm5xQVFV
TUU4aE5xdzVKM2tsOGNwVlZKeWxYS1lxWk9lc2VaRzhVdWVLcEEiX3MpOworICAgIGF1dG8gcmVz
dWx0ID0gZGVjcnlwdEFFU0dDTVBheWxvYWQoY2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBz
YWx0LCBwYXlsb2FkKTsKKworICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7Cisg
ICAgYXV0byBhY3R1YWwgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIEFT
U0VSVF9FUSgiSSBhbSB0aGUgd2FscnVzIl9zLCBhY3R1YWwpOworfQorCit9CisKKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="471436"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446105</attachid>
            <date>2021-12-06 17:16:12 -0800</date>
            <delta_ts>2021-12-06 20:00:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206171611.patch</filename>
            <type>text/plain</type>
            <size>47354</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODUwNmFhZTA3NjY2MzMwYzM3NzZkZGIzYmU3N2Ew
MzMxNTgxMGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY2FsbCB0byBvc19zaWducG9zdCB0byB0YWcg
YSBtb21lbnR1bSBzY3JvbGwgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTEwODEz
YzIxOTc0N2ZmZThjYmI3NjY2OTRhYzMyN2VhYTY3NTUwLi5mMDZkNDU5ZDZjOTdlOGQxYmUzMDRj
YjY5MDljMWQxYzljZTNmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
IHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJ
Lmg6IEFkZCBBRVMtR0NNIGRlY3J5cHRpb24gU1BJLgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQg
b2YgaW1hZ2UgY29udHJvbCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMTUzZWRkODA1
NTcyZGEwNWFhNmFkOTk5YTE3ZDJmMjA1YWJmMWEuLjA2MGVkZjk0MzU5ZDc4MjVhOWNhOTU2Y2E0
MGI4N2I2OWM3MmYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjg4LDYgKzI4OCw4IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Blcm1pc3Np
b25zL1Blcm1pc3Npb25PYnNlcnZlci5oCiAgICAgTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNz
aW9uU3RhdGUuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmgKICAgICBNb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2UxYWJhNDFiYjBjMWNhMDEyYWE5ZTc4YTIzYTZkMmFmYTdlY2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKworUDI1NkRIS2V5
UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2Vj
cmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBr
ZXlQYWlyKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
Y3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90Piwg
U3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM2MWM5NGUyYmVkNTU4NGYzZWJlMTQzZjllMTQ2ZjFjMmYyNGNjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggPSA2NTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFNoYXJl
ZFNlY3JldExlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2hhMjU2RGlnZXN0
TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhZXMxMjhHQ01UYWdMZW5ndGgg
PSAxNjsKKworc3RydWN0IFAyNTZESEtleVBhaXIgeworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJs
aWNLZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVLZXk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUDI1NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKK307CisKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWly
Jik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29u
c3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25z
dCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlw
dG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTg3NzczNjQ0YzllYmE3MjRkODhhODVlYWZj
YTUzOTRjMGIxY2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIK
KyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8vIEFyYml0cmFyeSBs
aW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBBUE5TIHNob3VsZCBl
dmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNoUGF5bG9hZExlbmd0
aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
YWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJhdGUoKQoreworICAg
IHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVuZ3RoXTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hh
cmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhfdD4geyBzaGFyZWRB
dXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07Cit9CisKK3N0YXRp
YyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRL
ZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGlj
S2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgg
JiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3Ro
KGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAgIC8qCisgICAgICog
Q29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODggU2VjdGlvbiAyOgor
ICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICogICB8ICAgZGF0YSAg
ICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICoKKyAgICAgKiBw
YWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1pdGVyIG9jdGV0ICgw
eDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgorICAgICAqLworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBjb25zdCB1aW50
OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBjdXIgPSBlbmQg
LSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAwKSkKKyAgICAgICAg
LS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOwor
CisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNsaWVudEtl
eUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVhZGVyIGFzIGRl
c2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsKKyAgICAgICAg
dWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9yZWRbNF07Cisg
ICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZlclB1YmxpY0tl
eVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
blB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAvKiBtaW5QYWRk
aW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBheWxvYWQuc2l6
ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQdXNoUGF5
bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBheWxvYWRI
ZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEoKSwgc2l6ZW9m
KGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRoUHVibGljS2V5
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAgICAgKiBU
aGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5MSAzLjQuCisg
ICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhfc2VjcmV0ID0g
RUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBlY2RoU2VjcmV0
UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVyUHVibGljS2V5
LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNkaFNlY3JldFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAgICogIyBI
S0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQorICAgICAqIFBS
S19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqLwor
ICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQs
ICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUktf
a2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2ViUHVzaDogaW5m
byIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtNID0gSE1BQy1T
SEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAgc3RydWN0IEtl
eUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6IGluZm8iIH07
CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAg
ICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVp
bnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEtleUlu
Zm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5KGtleUluZm8u
Y2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5LmRhdGEo
KSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5zZXJ2ZXJLZXks
IGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisKKyAgICBh
dXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAgICAqICMgSEtE
Ri1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2FsdCwgSUtN
KQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2FsdCwgaWttKTsK
KworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBMX2Nlaz0xNikK
KyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20iIHx8IDB4MDAK
KyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0K
KyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihw
cmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNlay5zaHJpbmso
MTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2VfaW5mbywgTF9u
b25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIiB8
fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4
MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1td
ID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8gbm9uY2UgPSBo
bWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOwor
ICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVT
MTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRvIGNpcGhl
clRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6
ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlw
dEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBsYWluVGV4dFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UZXh0
ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBhZGRpbmdM
ZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0YSgpLCBw
bGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01BWCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJpbmsocGxhaW5U
ZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRleHQ7Cit9CisK
K3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3QgdWludDhfdCAq
YmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRlIHBhZGRpbmcg
bGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRpb24tZW5jb2Rp
bmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKiAgIHwg
cGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKgor
ICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQgaW50ZWdlciBp
biBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBudW1iZXIgb2Yg
MHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVzLgorICAgICAq
LworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICB1
aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0aCwgYmVnaW4s
IDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsKKworICAgIGNv
bnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBi
ZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRpbmdMZW5ndGg7
CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRpbmdMZWZ0KSB7
CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0KKworICAgIGlm
IChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgcmV0dXJuIGN1
ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFF
U0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2Fs
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50
S2V5TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXpl
KCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUg
YXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQg
aW4gdGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcu
CisgICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXls
b2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJv
bSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZv
ciBhIFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFz
X3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1
NkRIU2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYo
YXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktf
Y29tYmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNh
bHQsIElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0g
IkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0g
aG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0
KTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywg
c2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAg
ICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAg
ICAgIDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3
ZSBhbHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBh
bmQgbm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQg
dHJhaWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29u
dGV4dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5
RGVyaXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xp
ZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgp
OworICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2Vr
X2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAg
ICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVu
dC1FbmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9I
ZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hl
YWRlciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVv
ZihjZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRv
IGNlayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKwor
ICAgIC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwg
MHgwMCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90
IG5vbmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVh
ZGVyKSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2
KHByaywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxs
eSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRl
eHQuCisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9u
Y2UsIHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJl
c3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlm
IChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRk
aW5nTGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmFhNzYzYTNkODc4
MDkxOTc2ODE5NjVhOWUyYTczMGNiYjQwYjdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgUHVzaENyeXB0byB7CisKK3N0cnVjdCBDbGllbnRLZXlzIHsKKyAgICBQMjU2REhLZXlQYWly
IGNsaWVudFAyNTZESEtleVBhaXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNy
ZXQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2xpZW50S2V5cyBnZW5lcmF0ZSgpOwor
fTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXMxMjhn
Y20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gUkZDODI5MS4KK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKTsKKwor
Ly8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVu
dC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24t
MDQuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2VydmVyUDI1NkRIUHVibGljS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9Q
dXNoQ3J5cHRvQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2Nv
YS9QdXNoQ3J5cHRvQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY1MWQ2N2YxNzAwNzczNmJiNDM0
YWM4ODIyZjBlOGQzMmE1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENyeXB0by5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkhNQUMuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBQdXNoQ3J5cHRvIHsKKworUDI1NkRIS2V5UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0
ZSh2b2lkKQoreworICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKKyAg
ICBDQ0VDQ3J5cHRvclJlZiBjY1ByaXZhdGVLZXkgPSBudWxscHRyOworICAgIGF1dG8gcmVsZWFz
ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoWyZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleV0oKSB7
CisgICAgICAgIGlmIChjY1B1YmxpY0tleSkKKyAgICAgICAgICAgIENDRUNDcnlwdG9yUmVsZWFz
ZShjY1B1YmxpY0tleSk7CisgICAgICAgIGlmIChjY1ByaXZhdGVLZXkpCisgICAgICAgICAgICBD
Q0VDQ3J5cHRvclJlbGVhc2UoY2NQcml2YXRlS2V5KTsKKyAgICB9KTsKKworICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckdlbmVyYXRlUGFpcigyNTYsICZjY1B1YmxpY0tl
eSwgJmNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nl
c3MpOworCisgICAgdWludDhfdCBwdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAg
ICBzaXplX3QgcHVibGljS2V5TGVuZ3RoID0gc2l6ZW9mKHB1YmxpY0tleSk7CisgICAgc3RhdHVz
ID0gQ0NFQ0NyeXB0b3JFeHBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXksICZw
dWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsIGNjUHVibGljS2V5KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBwdWJsaWNLZXlMZW5ndGggPT0gc2l6ZW9m
KHB1YmxpY0tleSkpOworCisgICAgLy8gQ29tbW9uQ3J5cHRvIGV4cGVjdHMgdGhlIGJpbmFyeSBm
b3JtYXQgdG8gYmUgNjUgYnl0ZSBwdWJsaWMga2V5IGZvbGxvd2VkIGJ5IHRoZSAzMiBieXRlIHBy
aXZhdGUga2V5LCBzbyB3ZSB3YW50IHRvIGV4dHJhY3QgdGhlIGxhc3QgMzIgYnl0ZXMgZnJvbSB0
aGUgYnVmZmVyLgorICAgIHVpbnQ4X3Qga2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aCArIHAyNTZk
aFByaXZhdGVLZXlMZW5ndGhdOworICAgIHNpemVfdCBrZXlMZW5ndGggPSBzaXplb2Yoa2V5KTsK
KyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIGtl
eSwgJmtleUxlbmd0aCwgY2NFQ0tleVByaXZhdGUsIGNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nlc3MgJiYga2V5TGVuZ3RoID09IHNpemVvZihrZXkp
KTsKKworICAgIHJldHVybiBQMjU2REhLZXlQYWlyIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHsgcHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfSwKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHsga2V5ICsgcDI1NmRoUHVibGljS2V5TGVuZ3RoLCBwMjU2ZGhQcml2YXRlS2V5TGVu
Z3RoIH0KKyAgICB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3Qg
UDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVibGljS2V5LnNpemUoKSAhPSBw
MjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZk
aFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpICE9IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBDQ0VD
Q3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQ
cml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJs
aWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAg
ICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNj
UHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0ND
SW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgs
IGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0byBleHBlY3RzIHRoZSBiaW5h
cnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0
ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
KyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHkoa2V5QnVmLCBrZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGtleUJ1
ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2YXRlS2V5LmRhdGEoKSwgcDI1
NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0lt
cG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tleVByaXZhdGUsICZj
Y1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNoYXJlZFNlY3JldExl
bmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9IHNoYXJlZFNlY3JldC5zaXpl
KCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChjY1ByaXZhdGVLZXks
IGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNlY3JldExlbmd0aCkg
IT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRoU2hhcmVkU2VjcmV0
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNoYXJl
ZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50
OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdT
SEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhf
dD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhl
clRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgPCBhZXMx
MjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdD
TVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlw
dChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYu
c2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRh
TGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNp
emUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVyVGV4dFdp
dGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0
bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21t
b25DcnlwdG9TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCmluZGV4IGU1ZGFiZTBmMGYyMWEwMjViNjQyOTIzZTMzYjc0YjllYWFhNDQ3ODku
LmFhOTQ2NmNmOWM5MmM5MzQyMTBhYzViZGViMDI4MDFhNDZiZjQ1ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCkBAIC0yNyw2
ICsyNyw4IEBACiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCisjaW5jbHVkZSA8Q29t
bW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25D
cnlwdG9FcnJvci5oPgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG9yU1BJLmg+
CiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdFNQSS5oPgogI2luY2x1ZGUgPENv
bW1vbkNyeXB0by9Db21tb25FQ0NyeXB0b3IuaD4KQEAgLTExOCw2ICsxMjAsNyBAQCBleHRlcm4g
IkMiIENDU3RhdHVzIENDRGVyaXZlS2V5KGNvbnN0IENDS0RGUGFyYW1ldGVyc1JlZiBwYXJhbXMs
IENDRGlnZXN0QWxnb3JpdAogZXh0ZXJuICJDIiBDQ1N0YXR1cyBDQ0tERlBhcmFtZXRlcnNDcmVh
dGVIa2RmKENDS0RGUGFyYW1ldGVyc1JlZiAqcGFyYW1zLCBjb25zdCB2b2lkICpzYWx0LCBzaXpl
X3Qgc2FsdExlbiwgY29uc3Qgdm9pZCAqY29udGV4dCwgc2l6ZV90IGNvbnRleHRMZW4pOwogZXh0
ZXJuICJDIiB2b2lkIENDS0RGUGFyYW1ldGVyc0Rlc3Ryb3koQ0NLREZQYXJhbWV0ZXJzUmVmIHBh
cmFtcyk7CiBleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ0NyeXB0b3JHQ00oQ0NPcGVyYXRp
b24gb3AsIENDQWxnb3JpdGhtIGFsZywgY29uc3Qgdm9pZCoga2V5LCBzaXplX3Qga2V5TGVuZ3Ro
LCBjb25zdCB2b2lkKiBpdiwgc2l6ZV90IGl2TGVuLCBjb25zdCB2b2lkKiBhRGF0YSwgc2l6ZV90
IGFEYXRhTGVuLCBjb25zdCB2b2lkKiBkYXRhSW4sIHNpemVfdCBkYXRhSW5MZW5ndGgsIHZvaWQq
IGRhdGFPdXQsIHZvaWQqIHRhZywgc2l6ZV90KiB0YWdMZW5ndGgpOworZXh0ZXJuICJDIiBDQ0Ny
eXB0b3JTdGF0dXMgQ0NDcnlwdG9yR0NNT25lc2hvdERlY3J5cHQoQ0NBbGdvcml0aG0gYWxnLCBj
b25zdCB2b2lkICprZXksIHNpemVfdCBrZXlMZW5ndGgsIGNvbnN0IHZvaWQgICppdiwgc2l6ZV90
IGl2TGVuLCBjb25zdCB2b2lkICAqYURhdGEsIHNpemVfdCBhRGF0YUxlbiwgY29uc3Qgdm9pZCAq
ZGF0YUluLCBzaXplX3QgZGF0YUluTGVuZ3RoLCB2b2lkICAgICAgICAqZGF0YU91dCwgY29uc3Qg
dm9pZCAgKnRhZ0luLCBzaXplX3QgdGFnTGVuZ3RoKTsKIGV4dGVybiAiQyIgQ0NDcnlwdG9yU3Rh
dHVzIENDUlNBQ3J5cHRvckNyZWF0ZUZyb21EYXRhKENDUlNBS2V5VHlwZSBrZXlUeXBlLCBjb25z
dCB1aW50OF90ICptb2R1bHVzLCBzaXplX3QgbW9kdWx1c0xlbmd0aCwgY29uc3QgdWludDhfdCAq
ZXhwb25lbnQsIHNpemVfdCBleHBvbmVudExlbmd0aCwgY29uc3QgdWludDhfdCAqcCwgc2l6ZV90
IHBMZW5ndGgsIGNvbnN0IHVpbnQ4X3QgKnEsIHNpemVfdCBxTGVuZ3RoLCBDQ1JTQUNyeXB0b3JS
ZWYgKnJlZik7CiAKICNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNWMwM2I1MjQ0OWJkNDdlZTEzZWI5ZmQ2NTM5MjgzZGRlYmMyODJlYS4uYWQxZTdl
MWRhMGJlYWFhYWYxZWFlZDgzOTQ1MjFhZDFiZDJkYTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI1
Niw3ICsyNTYsOSBAQCBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRG9jdW1lbnRQaWN0dXJlSW5Q
aWN0dXJlLmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0VudGVyUGljdHVyZUluUGljdHVy
ZUV2ZW50LmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0hUTUxWaWRlb0VsZW1lbnRQaWN0
dXJlSW5QaWN0dXJlLmNwcAogTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL1BpY3R1cmVJblBpY3R1
cmVXaW5kb3cuY3BwCitNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCiBNb2R1bGVzL3B1
c2gtYXBpL1B1c2hFdmVudC5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8u
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlRGF0YS5jcHAKIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkNoYW5nZUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYzc5ZmM0ZDc4YzYy
MTA1MTg5NjFlZjFjNjQxMzIzN2E1YWM3NDQwZC4uZTBkM2RmY2QxNjMyNGYwYjQ4MGY3YmIzYTYz
NTY4NGIwMDY1YzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMDYsNiArMTA2LDcg
QEAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXIubW0K
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyQ2xpZW50
Lm1tCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVT
RC5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxQbGF5ZXIu
bW0KK01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcAogTW9kdWxlcy9z
cGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2Nv
YS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWRmYmU0NDRkMGYxZGQ4NTBmZGM2YjNiZDk2
ZWRhZTZhZGNlNjRkZC4uYzIyMWRhMzFkOGYxOWU4Mzg4ZDk4MDJjY2M1ZmE5NzE3ODBlNTcxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTQzMCw2ICs1NDMwLDggQEAKIAkJRUIyOEVENDQyNzE3QUMxMTAwNUYwMzkzIC8qIFB1
c2hTdWJzY3JpcHRpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFQjI4RUQ0MTI3MTdBQkE5MDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
QjNDMjlCNjI3MjlDMzg4MDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjNDMjlCNDI3
MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmggKi87IH07CiAJ
CUVCM0MyOUI3MjcyOUMzOEMwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRJ
bml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjND
MjlCMTI3MjlDMzZEMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5o
ICovOyB9OworCQlFQkE3NUM0NjI3NUVDNjFBMDBENkQzMUMgLyogUHVzaENyeXB0by5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJBNzVDNDIyNzVFQkRB
QjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFQkE3NUM0NzI3NUVDNjIxMDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVCQTc1QzQwMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgxMjcxMDA2
NzEwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2Vy
LmggKi87IH07CiAJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5
NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCQjk3MzgzMjcxMDA2ODQw
MDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczN0EyNzEwMDY1MjAwNzcz
MkVGIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmggKi87IH07CkBAIC0xNzU1
OSw2ICsxNzU2MSwxMSBAQAogCQlFQjNDMjlCMjI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUVCM0MyOUIzMjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCM0MyOUI0MjcyOUMzNkUwMEZC
NjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzNFMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVzc2Fn
ZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQwMjc1RUJEQUEwMEQ2RDMxQyAvKiBQ
dXNoTWVzc2FnZUNyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MTI3NUVCREFCMDBENkQzMUMgLyog
UHVzaENyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoQ3J5cHRvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDIyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hD
cnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaENyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFQkE3NUM0NTI3NUVDNThFMDBENkQzMUMgLyogUHVzaENyeXB0b0NvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hDcnlwdG9Db2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUVCQjk3Mzc4MjcxMDA2NTEwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lv
blN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hQZXJtaXNzaW9uU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJCOTczN0EyNzEwMDY1MjAwNzczMkVGIC8qIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25QdXNoQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQjk3
MzdCMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uK1B1c2hBUEku
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9ICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uK1B1c2hBUEkuaWRsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDA3LDYgKzIxMDE0LDkgQEAKIAkJNDE4RkNCQjgy
NzA2RTRCRDAwRjk2RUNBIC8qIHB1c2gtYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFQkE3NUM0NDI3NUVDNTYwMDBENkQzMUMgLyogY29jb2EgKi8s
CisJCQkJRUJBNzVDNDEyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uY3BwICovLAorCQkJ
CUVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi8sCiAJCQkJRUIwRkI2
RkQyNzBEMEFFODAwRjc4MTBEIC8qIFB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oICovLAogCQkJCUVC
MEZCNzAwMjcwRDBBRUEwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaWRsICovLAog
CQkJCTQxOEZDQkJCMjcwNkU0RjYwMEY5NkVDQSAvKiBQdXNoRXZlbnQuY3BwICovLApAQCAtMjEw
MTcsNiArMjEwMjcsOCBAQAogCQkJCUVCQjk3MzdDMjcxMDA2NTIwMDc3MzJFRiAvKiBQdXNoTWFu
YWdlci5jcHAgKi8sCiAJCQkJRUJCOTczODAyNzEwMDY1NDAwNzczMkVGIC8qIFB1c2hNYW5hZ2Vy
LmggKi8sCiAJCQkJRUJCOTczN0UyNzEwMDY1MzAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmlkbCAq
LywKKwkJCQlFQkE3NUMzRTI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3Bw
ICovLAorCQkJCUVCQTc1QzQwMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5o
ICovLAogCQkJCTQxOEZDQkJFMjcwNkU0RjcwMEY5NkVDQSAvKiBQdXNoTWVzc2FnZURhdGEuY3Bw
ICovLAogCQkJCTQxOEZDQkJDMjcwNkU0RjYwMEY5NkVDQSAvKiBQdXNoTWVzc2FnZURhdGEuaCAq
LywKIAkJCQk0MThGQ0JCQTI3MDZFNEY1MDBGOTZFQ0EgLyogUHVzaE1lc3NhZ2VEYXRhLmlkbCAq
LywKQEAgLTMxMTkxLDYgKzMxMjAzLDE0IEBACiAJCQlwYXRoID0gImNvbnRhY3QtcGlja2VyIjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUVCQTc1QzQ0Mjc1RUM1NjAwMEQ2
RDMxQyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJRUJBNzVDNDUyNzVFQzU4RTAwRDZEMzFDIC8qIFB1c2hDcnlwdG9Db2NvYS5jcHAgKi8s
CisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJRUQ1MDFEQzkwQjI0OUYzOTAwQUUxOEQ5IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNjM1MywxMCArMzYzNzMsMTIgQEAKIAkJCQk1
NzMwM0JFQjIwMDk3RjQwMDAzNTU5NjUgLyogUHVibGljS2V5Q3JlZGVudGlhbFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwODFGRjAwMTZCMEEyRDMwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFQkE3NUM0NjI3NUVDNjFBMDBENkQzMUMg
LyogUHVzaENyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MDgyNzBEMEIxMDAwRjc4
MTBEIC8qIFB1c2hFbmNyeXB0aW9uS2V5TmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4RkNC
QzEyNzA2RTRGQjAwRjk2RUNBIC8qIFB1c2hFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4
RkNCQzIyNzA2RTUwMTAwRjk2RUNBIC8qIFB1c2hFdmVudEluaXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUVCQjk3MzgxMjcxMDA2NzEwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRUJBNzVDNDcyNzVFQzYyMTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFQkI5NzM4MjI3MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1p
c3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENTExRjYyNTBDMUNCRjAwMkVEQzUx
IC8qIFB1c2hQdWxsRklGTy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUIwRkI3MDkyNzBEMEIxODAw
Rjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlYWJmZmJmYjRlODk2ZDJl
OWY5NjBmZDk4ZDA1MDhjZmVlNDM5NmYuLjI3NzZiN2RiMDVmZWQwMGMzNDU2ZjFhYjQ1NWEyODRh
ZjNhMDBmMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgd2ViIHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVzdEJhc2U2NFVSTERlY29kZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjptYWtlQUVTMTI4R0NNQ2xpZW50S2V5cyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjptYWtlQUVTR0NNQ2xpZW50S2V5cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0xMi0wNiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIEdQVSBQcm9jZXNzIGZlYXR1cmUgZmxhZ3MKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTI2ZmU1MGRlZjhiZjcyZjBjNzU1Zjk1MmYxZGYxM2I1YWNlYzYyOC4uM2E0Y2Ni
NWNkYjMzMjgzZTlmM2Y4MTY0NmU1MDI2MTJmZDFjMjVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk5Miw2ICs5OTIsNyBAQAogCQlFNUFBNDJGMjI1OTEyOEFFMDA0MTBBM0QgLyogVXNl
ckludGVyZmFjZUlkaW9tVXBkYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTVBQTQyRjEyNTkxMjhBRTAwNDEwQTNEIC8qIFVzZXJJbnRlcmZhY2VJ
ZGlvbVVwZGF0ZS5tbSAqLzsgfTsKIAkJRTVBQThEMUQyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJ
bnB1dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovOyB9Owog
CQlFQjIzMEQ0MTI0NUU4MTNGMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjMwRDNE
MjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi87IH07CisJCUVCQTc1
QzQ5Mjc1RUQ3QzcwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0ODI3NUVEN0JFMDBENkQz
MUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovOyB9OwogCQlFQ0E2ODBDRTFFNjhDQzA5MDA3
MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxp
dGllcy5tbSAqLzsgfTsKIAkJRjQwMTBCODAyNERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25T
d2lwZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwMTBCN0YyNERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25Td2lwZVRlc3RzLm1tICov
OyB9OwogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAxMEI4MTI0REEyNjdG
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CkBAIC0yOTE2LDYgKzI5MTcsNyBAQAog
CQlFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEYXRlSW5wdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0UyNDVFNzI2MzAwQzY2QUQxIC8qIElEQkNo
ZWNrcG9pbnRXQUwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJ
REJDaGVja3BvaW50V0FMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0
ODI3NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4QjczMDAxMjZB
NjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzcwNiw2ICszNzA4LDcgQEAKIAkJCQlBQTk2Q0FCNDIx
QzdEQjQyMDBGRDJGOTcgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLAogCQkJCTZCMEEwN0Y2
MjFGQTlDMkIwMEQ1NzM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgKi8sCiAJCQkJ
MDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi8sCisJCQkJRUJB
NzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLywKIAkJCQk2
QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwICovLAogCQkJ
CUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAqLywKIAkJ
CQk0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0
cy5jcHAgKi8sCkBAIC01NTk3LDYgKzU2MDAsNyBAQAogCQkJCTQ2NDdCMTI2MUVCQTNCODUwMDQx
RDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFQzJB
ODU2MjRDRUI2NUYwMEFEQkMzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDQxQTFFMzQyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFQkE3NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkI0RTg2MUMyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lz
dHJhYmxlRG9tYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBEMUE0MTFBRTYwMDQ0
N0M0QyAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VDOTFBNDExQTdFMDA0NDdDNEMgLyogUmVuZGVyZWRJbWFnZUZyb21ET01Ob2RlLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjM5NDY4ZTE0NDQwNGY4ZDlmMTcz
ZmM3ZWMzYzdjNmNkY2Q3OGEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApAQCAtMCwwICsxLDk4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvUHVzaE1lc3NhZ2VD
cnlwdG8uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OlB1c2hDcnlwdG87CisKK3N0YXRp
YyBWZWN0b3I8dWludDhfdD4gbXVzdEJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGVuY29k
ZWQpCit7CisgICAgcmV0dXJuIGJhc2U2NFVSTERlY29kZShlbmNvZGVkKS52YWx1ZSgpOworfQor
CitzdGF0aWMgQ2xpZW50S2V5cyBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cyh2b2lkKQoreworICAg
IC8vIEV4YW1wbGUgdmFsdWVzIGZyb20gUkZDODI5MSBTZWN0aW9uIDUuCisgICAgYXV0byBwdWJs
aWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCQ1Z4c3I3Tl9lTmdWUnF2SHREMHpUWnNFYzYt
VlYtSnZMZXhocVV6T1JjeGFPemk2LUFZV1h2VEJIbTRianlQanM3VmQ4cFpHSDZTUnBrTnRvSUFp
dzQiX3MpOworICAgIGF1dG8gcHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoInExZFhw
dzNVcFQ1Vk9tdV9jZl92NmloMDdBZW1zM25qeEktSldnTGNNOTQiX3MpOworICAgIGF1dG8gc2Vj
cmV0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQlRCWk1xSEg2cjRUdHM3Sl9hU0lnZyJfcyk7CisK
KyAgICByZXR1cm4gQ2xpZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBhaXIgeyBXVEZNb3Zl
KHB1YmxpY0tleSksIFdURk1vdmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAgV1RGTW92ZShzZWNy
ZXQpCisgICAgfTsKK30KKworc3RhdGljIENsaWVudEtleXMgbWFrZUFFU0dDTUNsaWVudEtleXMo
dm9pZCkKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIGRyYWZ0LWlldGYtd2VicHVzaC1l
bmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIHB1YmxpY0tleSA9IG11c3RCYXNlNjRV
UkxEZWNvZGUoIkJDRWtCanpMOFozQy1vaTJRN29FNXQyTnAtcDdvc2pHTGc5M3FVUDB3dnFSVDIx
RUVXeWYwY1FEUWNha1FNcXo0aFFLWU9RM2lsMm5OWmN0NEhnQVVRVSJfcyk7CisgICAgYXV0byBw
cml2YXRlS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiOUZXbDE1X1FVUUFXRGFEM2szbDUwWkJa
UUo0YXUyN0YxVjRGMHVMU0RfTSJfcyk7CisgICAgYXV0byBzZWNyZXQgPSBtdXN0QmFzZTY0VVJM
RGVjb2RlKCJSMjl2SUdkdmJ5Qm5KeUJxYjI5aUlRIl9zKTsKKworICAgIHJldHVybiBDbGllbnRL
ZXlzIHsKKyAgICAgICAgUDI1NkRIS2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92
ZShwcml2YXRlS2V5KSB9LAorICAgICAgICBXVEZNb3ZlKHNlY3JldCkKKyAgICB9OworfQorCitU
RVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVMxMjhHQ01QYXlsb2FkV2l0aE1pbmltYWxQYWRkaW5n
KQoreworICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKCk7CisK
KyAgICAvLyBFeGFtcGxlIHBheWxvYWQgZnJvbSBSRkM4MjkxIFNlY3Rpb24gNS4KKyAgICBhdXRv
IHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJER3Y2cmExbmxZZ0RDUzFGUm5iemx3QUFF
QUJCQlA0ejlLc042bkdSVGJWWUlfYzdWSlNQUVRCdGtnY3kyN21sbWxNb1pJSWdEbGw2ZTN2Q1lM
b2NJbm1ZV0FtUzZUbHpBQzh3RXFLSzZQQnJ1M2psN0FfeWw5NWJRcHU2Y1ZQVHBLNE1xZ2tmMUNY
enRMVkJTdDJLczNvWndidXdYUFhMV3lvdUJXTFZXR05XUWV4U2dTeHNqX1F1bGN5NGEtZk4iX3Mp
OworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50S2V5cywg
cGF5bG9hZCk7CisKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgIGF1
dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRf
RVEoIldoZW4gSSBncm93IHVwLCBJIHdhbnQgdG8gYmUgYSB3YXRlcm1lbG9uIl9zLCBhY3R1YWwp
OworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2FkV2l0aE1pbmltYWxQ
YWRkaW5nKQoreworICAgIC8vIEV4YW1wbGUgdmFsdWVzIGZyb20gZHJhZnQtaWV0Zi13ZWJwdXNo
LWVuY3J5cHRpb24tMDQgU2VjdGlvbiA1LgorICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVNH
Q01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgibG5n
YXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBtdXN0
QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVyU3FzWFdKMTFJdGZYRVdZVkxF
ODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3RkV2pfbXVnSFUiX3MpOworCisg
ICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiNm5xQVFVTUU4aE5xdzVKM2ts
OGNwVlZKeWxYS1lxWk9lc2VaRzhVdWVLcEEiX3MpOworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlw
dEFFU0dDTVBheWxvYWQoY2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBzYWx0LCBwYXlsb2Fk
KTsKKworICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgYXV0byBhY3R1
YWwgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIEFTU0VSVF9FUSgiSSBh
bSB0aGUgd2FscnVzIl9zLCBhY3R1YWwpOworfQorCit9CisKKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="471448"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446113</attachid>
            <date>2021-12-06 19:40:19 -0800</date>
            <delta_ts>2021-12-06 20:41:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206194018.patch</filename>
            <type>text/plain</type>
            <size>47241</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODUwNmFhZTA3NjY2MzMwYzM3NzZkZGIzYmU3N2Ew
MzMxNTgxMGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY2FsbCB0byBvc19zaWducG9zdCB0byB0YWcg
YSBtb21lbnR1bSBzY3JvbGwgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTEwODEz
YzIxOTc0N2ZmZThjYmI3NjY2OTRhYzMyN2VhYTY3NTUwLi5mMDZkNDU5ZDZjOTdlOGQxYmUzMDRj
YjY5MDljMWQxYzljZTNmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
IHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJ
Lmg6IEFkZCBBRVMtR0NNIGRlY3J5cHRpb24gU1BJLgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQg
b2YgaW1hZ2UgY29udHJvbCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMTUzZWRkODA1
NTcyZGEwNWFhNmFkOTk5YTE3ZDJmMjA1YWJmMWEuLjA2MGVkZjk0MzU5ZDc4MjVhOWNhOTU2Y2E0
MGI4N2I2OWM3MmYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjg4LDYgKzI4OCw4IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Blcm1pc3Np
b25zL1Blcm1pc3Npb25PYnNlcnZlci5oCiAgICAgTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNz
aW9uU3RhdGUuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmgKICAgICBNb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2UxYWJhNDFiYjBjMWNhMDEyYWE5ZTc4YTIzYTZkMmFmYTdlY2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKworUDI1NkRIS2V5
UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2Vj
cmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBr
ZXlQYWlyKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
Y3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90Piwg
U3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM2MWM5NGUyYmVkNTU4NGYzZWJlMTQzZjllMTQ2ZjFjMmYyNGNjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggPSA2NTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFNoYXJl
ZFNlY3JldExlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2hhMjU2RGlnZXN0
TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhZXMxMjhHQ01UYWdMZW5ndGgg
PSAxNjsKKworc3RydWN0IFAyNTZESEtleVBhaXIgeworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJs
aWNLZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVLZXk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUDI1NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKK307CisKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWly
Jik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29u
c3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25z
dCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlw
dG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTg3NzczNjQ0YzllYmE3MjRkODhhODVlYWZj
YTUzOTRjMGIxY2M2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIK
KyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8vIEFyYml0cmFyeSBs
aW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBBUE5TIHNob3VsZCBl
dmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNoUGF5bG9hZExlbmd0
aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
YWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJhdGUoKQoreworICAg
IHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVuZ3RoXTsKKyAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hh
cmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhfdD4geyBzaGFyZWRB
dXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07Cit9CisKK3N0YXRp
YyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRL
ZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGlj
S2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgg
JiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFyZWRBdXRoU2VjcmV0
TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3Ro
KGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAgIC8qCisgICAgICog
Q29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODggU2VjdGlvbiAyOgor
ICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICogICB8ICAgZGF0YSAg
ICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICoKKyAgICAgKiBw
YWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1pdGVyIG9jdGV0ICgw
eDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgorICAgICAqLworICAg
IGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBjb25zdCB1aW50
OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBjdXIgPSBlbmQg
LSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAwKSkKKyAgICAgICAg
LS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOwor
CisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNsaWVudEtl
eUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVhZGVyIGFzIGRl
c2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsKKyAgICAgICAg
dWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9yZWRbNF07Cisg
ICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZlclB1YmxpY0tl
eVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
blB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAvKiBtaW5QYWRk
aW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBheWxvYWQuc2l6
ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQdXNoUGF5
bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBheWxvYWRI
ZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEoKSwgc2l6ZW9m
KGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRoUHVibGljS2V5
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAgICAgKiBU
aGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5MSAzLjQuCisg
ICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhfc2VjcmV0ID0g
RUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBlY2RoU2VjcmV0
UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVyUHVibGljS2V5
LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNkaFNlY3JldFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAgICogIyBI
S0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQorICAgICAqIFBS
S19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqLwor
ICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQs
ICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUktf
a2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2ViUHVzaDogaW5m
byIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtNID0gSE1BQy1T
SEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAgc3RydWN0IEtl
eUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6IGluZm8iIH07
CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAg
ICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVp
bnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEtleUlu
Zm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5KGtleUluZm8u
Y2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5LmRhdGEo
KSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5zZXJ2ZXJLZXks
IGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisKKyAgICBh
dXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAgICAqICMgSEtE
Ri1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2FsdCwgSUtN
KQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2FsdCwgaWttKTsK
KworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBMX2Nlaz0xNikK
KyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20iIHx8IDB4MDAK
KyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0K
KyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihw
cmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNlay5zaHJpbmso
MTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2VfaW5mbywgTF9u
b25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIiB8
fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZvIHx8IDB4
MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNlSW5mb1td
ID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8gbm9uY2UgPSBo
bWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0gMSkpOwor
ICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVT
MTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRvIGNpcGhl
clRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxvYWQuc2l6
ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0gZGVjcnlw
dEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBsYWluVGV4dFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UZXh0
ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBhZGRpbmdM
ZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0YSgpLCBw
bGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01BWCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJpbmsocGxhaW5U
ZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRleHQ7Cit9CisK
K3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3QgdWludDhfdCAq
YmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRlIHBhZGRpbmcg
bGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRpb24tZW5jb2Rp
bmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKiAgIHwg
cGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgKgor
ICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQgaW50ZWdlciBp
biBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBudW1iZXIgb2Yg
MHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVzLgorICAgICAq
LworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICB1
aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0aCwgYmVnaW4s
IDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsKKworICAgIGNv
bnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBi
ZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRpbmdMZW5ndGg7
CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRpbmdMZWZ0KSB7
CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0KKworICAgIGlm
IChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgcmV0dXJuIGN1
ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFF
U0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2Fs
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50
S2V5TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXpl
KCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUg
YXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQg
aW4gdGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcu
CisgICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXls
b2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJv
bSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZv
ciBhIFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFz
X3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1
NkRIU2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYo
YXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktf
Y29tYmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNh
bHQsIElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0g
IkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0g
aG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0
KTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywg
c2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAg
ICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAg
ICAgIDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3
ZSBhbHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBh
bmQgbm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQg
dHJhaWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29u
dGV4dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5
RGVyaXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xp
ZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgp
OworICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2Vr
X2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAg
ICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVu
dC1FbmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9I
ZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hl
YWRlciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVv
ZihjZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRv
IGNlayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKwor
ICAgIC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwg
MHgwMCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90
IG5vbmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVh
ZGVyKSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2
KHByaywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxs
eSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRl
eHQuCisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9u
Y2UsIHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJl
c3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlm
IChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRk
aW5nTGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmFhNzYzYTNkODc4
MDkxOTc2ODE5NjVhOWUyYTczMGNiYjQwYjdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgUHVzaENyeXB0byB7CisKK3N0cnVjdCBDbGllbnRLZXlzIHsKKyAgICBQMjU2REhLZXlQYWly
IGNsaWVudFAyNTZESEtleVBhaXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNy
ZXQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2xpZW50S2V5cyBnZW5lcmF0ZSgpOwor
fTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXMxMjhn
Y20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gUkZDODI5MS4KK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwYXlsb2FkKTsKKwor
Ly8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVu
dC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24t
MDQuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2VydmVyUDI1NkRIUHVibGljS2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9Q
dXNoQ3J5cHRvQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2Nv
YS9QdXNoQ3J5cHRvQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWY1MWQ2N2YxNzAwNzczNmJiNDM0
YWM4ODIyZjBlOGQzMmE1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENyeXB0by5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkhNQUMuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBQdXNoQ3J5cHRvIHsKKworUDI1NkRIS2V5UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0
ZSh2b2lkKQoreworICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGljS2V5ID0gbnVsbHB0cjsKKyAg
ICBDQ0VDQ3J5cHRvclJlZiBjY1ByaXZhdGVLZXkgPSBudWxscHRyOworICAgIGF1dG8gcmVsZWFz
ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoWyZjY1B1YmxpY0tleSwgJmNjUHJpdmF0ZUtleV0oKSB7
CisgICAgICAgIGlmIChjY1B1YmxpY0tleSkKKyAgICAgICAgICAgIENDRUNDcnlwdG9yUmVsZWFz
ZShjY1B1YmxpY0tleSk7CisgICAgICAgIGlmIChjY1ByaXZhdGVLZXkpCisgICAgICAgICAgICBD
Q0VDQ3J5cHRvclJlbGVhc2UoY2NQcml2YXRlS2V5KTsKKyAgICB9KTsKKworICAgIENDQ3J5cHRv
clN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckdlbmVyYXRlUGFpcigyNTYsICZjY1B1YmxpY0tl
eSwgJmNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nl
c3MpOworCisgICAgdWludDhfdCBwdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAg
ICBzaXplX3QgcHVibGljS2V5TGVuZ3RoID0gc2l6ZW9mKHB1YmxpY0tleSk7CisgICAgc3RhdHVz
ID0gQ0NFQ0NyeXB0b3JFeHBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXksICZw
dWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsIGNjUHVibGljS2V5KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBwdWJsaWNLZXlMZW5ndGggPT0gc2l6ZW9m
KHB1YmxpY0tleSkpOworCisgICAgLy8gQ29tbW9uQ3J5cHRvIGV4cGVjdHMgdGhlIGJpbmFyeSBm
b3JtYXQgdG8gYmUgNjUgYnl0ZSBwdWJsaWMga2V5IGZvbGxvd2VkIGJ5IHRoZSAzMiBieXRlIHBy
aXZhdGUga2V5LCBzbyB3ZSB3YW50IHRvIGV4dHJhY3QgdGhlIGxhc3QgMzIgYnl0ZXMgZnJvbSB0
aGUgYnVmZmVyLgorICAgIHVpbnQ4X3Qga2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aCArIHAyNTZk
aFByaXZhdGVLZXlMZW5ndGhdOworICAgIHNpemVfdCBrZXlMZW5ndGggPSBzaXplb2Yoa2V5KTsK
KyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIGtl
eSwgJmtleUxlbmd0aCwgY2NFQ0tleVByaXZhdGUsIGNjUHJpdmF0ZUtleSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nlc3MgJiYga2V5TGVuZ3RoID09IHNpemVvZihrZXkp
KTsKKworICAgIHJldHVybiBQMjU2REhLZXlQYWlyIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHsgcHVibGljS2V5LCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfSwKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHsga2V5ICsgcDI1NmRoUHVibGljS2V5TGVuZ3RoLCBwMjU2ZGhQcml2YXRlS2V5TGVu
Z3RoIH0KKyAgICB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3Qg
UDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVibGljS2V5LnNpemUoKSAhPSBw
MjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZk
aFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpICE9IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBDQ0VD
Q3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQ
cml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJs
aWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAg
ICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNj
UHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0ND
SW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgs
IGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0byBleHBlY3RzIHRoZSBiaW5h
cnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0
ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
KyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHkoa2V5QnVmLCBrZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGtleUJ1
ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2YXRlS2V5LmRhdGEoKSwgcDI1
NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0lt
cG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tleVByaXZhdGUsICZj
Y1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNoYXJlZFNlY3JldExl
bmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9IHNoYXJlZFNlY3JldC5zaXpl
KCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChjY1ByaXZhdGVLZXks
IGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNlY3JldExlbmd0aCkg
IT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRoU2hhcmVkU2VjcmV0
TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNoYXJl
ZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50
OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdT
SEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNp
emUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhf
dD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhl
clRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgPCBhZXMx
MjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdD
TVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlw
dChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYu
c2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRh
TGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNp
emUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVyVGV4dFdp
dGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0
bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21t
b25DcnlwdG9TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCmluZGV4IGU1ZGFiZTBmMGYyMWEwMjViNjQyOTIzZTMzYjc0YjllYWFhNDQ3ODku
LjNkNjVlM2VjZjQwMmQ5ODIyMDFjNmY2M2JhMTdiYWM2ZDBkZGFjYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCkBAIC0yNSw2
ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1v
bkNyeXB0by5oPgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2luY2x1ZGUgPENv
bW1vbkNyeXB0by9Db21tb25DcnlwdG9yU1BJLmg+CkBAIC0xMTgsNiArMTIwLDcgQEAgZXh0ZXJu
ICJDIiBDQ1N0YXR1cyBDQ0Rlcml2ZUtleShjb25zdCBDQ0tERlBhcmFtZXRlcnNSZWYgcGFyYW1z
LCBDQ0RpZ2VzdEFsZ29yaXQKIGV4dGVybiAiQyIgQ0NTdGF0dXMgQ0NLREZQYXJhbWV0ZXJzQ3Jl
YXRlSGtkZihDQ0tERlBhcmFtZXRlcnNSZWYgKnBhcmFtcywgY29uc3Qgdm9pZCAqc2FsdCwgc2l6
ZV90IHNhbHRMZW4sIGNvbnN0IHZvaWQgKmNvbnRleHQsIHNpemVfdCBjb250ZXh0TGVuKTsKIGV4
dGVybiAiQyIgdm9pZCBDQ0tERlBhcmFtZXRlcnNEZXN0cm95KENDS0RGUGFyYW1ldGVyc1JlZiBw
YXJhbXMpOwogZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0NDcnlwdG9yR0NNKENDT3BlcmF0
aW9uIG9wLCBDQ0FsZ29yaXRobSBhbGcsIGNvbnN0IHZvaWQqIGtleSwgc2l6ZV90IGtleUxlbmd0
aCwgY29uc3Qgdm9pZCogaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qgdm9pZCogYURhdGEsIHNpemVf
dCBhRGF0YUxlbiwgY29uc3Qgdm9pZCogZGF0YUluLCBzaXplX3QgZGF0YUluTGVuZ3RoLCB2b2lk
KiBkYXRhT3V0LCB2b2lkKiB0YWcsIHNpemVfdCogdGFnTGVuZ3RoKTsKK2V4dGVybiAiQyIgQ0ND
cnlwdG9yU3RhdHVzIENDQ3J5cHRvckdDTU9uZXNob3REZWNyeXB0KENDQWxnb3JpdGhtIGFsZywg
Y29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5TGVuZ3RoLCBjb25zdCB2b2lkICAqaXYsIHNpemVf
dCBpdkxlbiwgY29uc3Qgdm9pZCAgKmFEYXRhLCBzaXplX3QgYURhdGFMZW4sIGNvbnN0IHZvaWQg
KmRhdGFJbiwgc2l6ZV90IGRhdGFJbkxlbmd0aCwgdm9pZCAgICAgICAgKmRhdGFPdXQsIGNvbnN0
IHZvaWQgICp0YWdJbiwgc2l6ZV90IHRhZ0xlbmd0aCk7CiBleHRlcm4gIkMiIENDQ3J5cHRvclN0
YXR1cyBDQ1JTQUNyeXB0b3JDcmVhdGVGcm9tRGF0YShDQ1JTQUtleVR5cGUga2V5VHlwZSwgY29u
c3QgdWludDhfdCAqbW9kdWx1cywgc2l6ZV90IG1vZHVsdXNMZW5ndGgsIGNvbnN0IHVpbnQ4X3Qg
KmV4cG9uZW50LCBzaXplX3QgZXhwb25lbnRMZW5ndGgsIGNvbnN0IHVpbnQ4X3QgKnAsIHNpemVf
dCBwTGVuZ3RoLCBjb25zdCB1aW50OF90ICpxLCBzaXplX3QgcUxlbmd0aCwgQ0NSU0FDcnlwdG9y
UmVmICpyZWYpOwogCiAjZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDVjMDNiNTI0NDliZDQ3ZWUxM2ViOWZkNjUzOTI4M2RkZWJjMjgyZWEuLmFkMWU3
ZTFkYTBiZWFhYWFmMWVhZWQ4Mzk0NTIxYWQxYmQyZGE1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTYsNyArMjU2LDkgQEAgTW9kdWxlcy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUlu
UGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1
cmVFdmVudC5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGlj
dHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5QaWN0
dXJlV2luZG93LmNwcAorTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcAogTW9kdWxlcy9w
dXNoLWFwaS9QdXNoRXZlbnQuY3BwCitNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRv
LmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZURhdGEuY3BwCiBNb2R1bGVzL3B1c2gt
YXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM3OWZjNGQ3OGM2
MjEwNTE4OTYxZWYxYzY0MTMyMzdhNWFjNzQ0MGQuLmUwZDNkZmNkMTYzMjRmMGI0ODBmN2JiM2E2
MzU2ODRiMDA2NWMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTA2LDYgKzEwNiw3
IEBAIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyLm1t
CiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlckNsaWVu
dC5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJV
U0QubW0KIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsUGxheWVy
Lm1tCitNb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKIE1vZHVsZXMv
c3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29j
b2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkZmJlNDQ0ZDBmMWRkODUwZmRjNmIzYmQ5
NmVkYWU2YWRjZTY0ZGQuLmMyMjFkYTMxZDhmMTllODM4OGQ5ODAyY2NjNWZhOTcxNzgwZTU3MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTU0MzAsNiArNTQzMCw4IEBACiAJCUVCMjhFRDQ0MjcxN0FDMTEwMDVGMDM5MyAvKiBQ
dXNoU3Vic2NyaXB0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUIyOEVENDEyNzE3QUJBOTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25E
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RUIzQzI5QjYyNzI5QzM4ODAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIzQzI5QjQy
NzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oICovOyB9Owog
CQlFQjNDMjlCNzI3MjlDMzhDMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50
SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIz
QzI5QjEyNzI5QzM2RDAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQu
aCAqLzsgfTsKKwkJRUJBNzVDNDYyNzVFQzYxQTAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQTc1QzQyMjc1RUJE
QUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRUJBNzVDNDcyNzVFQzYyMTAwRDZEMzFDIC8qIFB1c2hNZXNz
YWdlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MTI3MTAw
NjcxMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzgwMjcxMDA2NTQwMDc3MzJFRiAvKiBQdXNoTWFuYWdl
ci5oICovOyB9OwogCQlFQkI5NzM4MjI3MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25T
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJC
OTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0
MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3
MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovOyB9OwpAQCAtMTc1
NTksNiArMTc1NjEsMTEgQEAKIAkJRUIzQzI5QjIyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJz
Y3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFQjNDMjlCMzI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjNDMjlCNDI3MjlDMzZFMDBG
QjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFQkE3NUMzRTI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyog
UHVzaE1lc3NhZ2VDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDEyNzVFQkRBQjAwRDZEMzFDIC8q
IFB1c2hDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaENyeXB0by5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRUJBNzVDNDUyNzVFQzU4RTAwRDZEMzFDIC8qIFB1c2hDcnlwdG9Db2NvYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoQ3J5cHRvQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQkI5NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Np
b25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uUHVzaEFQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5
NzM3QjI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJ
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTAwNyw2ICsyMTAxNCw5IEBACiAJCTQxOEZDQkI4
MjcwNkU0QkQwMEY5NkVDQSAvKiBwdXNoLWFwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJRUJBNzVDNDQyNzVFQzU2MDAwRDZEMzFDIC8qIGNvY29hICov
LAorCQkJCUVCQTc1QzQxMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmNwcCAqLywKKwkJ
CQlFQkE3NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0by5oICovLAogCQkJCUVCMEZC
NkZEMjcwRDBBRTgwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaCAqLywKIAkJCQlF
QjBGQjcwMDI3MEQwQUVBMDBGNzgxMEQgLyogUHVzaEVuY3J5cHRpb25LZXlOYW1lLmlkbCAqLywK
IAkJCQk0MThGQ0JCQjI3MDZFNEY2MDBGOTZFQ0EgLyogUHVzaEV2ZW50LmNwcCAqLywKQEAgLTIx
MDE3LDYgKzIxMDI3LDggQEAKIAkJCQlFQkI5NzM3QzI3MTAwNjUyMDA3NzMyRUYgLyogUHVzaE1h
bmFnZXIuY3BwICovLAogCQkJCUVCQjk3MzgwMjcxMDA2NTQwMDc3MzJFRiAvKiBQdXNoTWFuYWdl
ci5oICovLAogCQkJCUVCQjk3MzdFMjcxMDA2NTMwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5pZGwg
Ki8sCisJCQkJRUJBNzVDM0UyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNw
cCAqLywKKwkJCQlFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8u
aCAqLywKIAkJCQk0MThGQ0JCRTI3MDZFNEY3MDBGOTZFQ0EgLyogUHVzaE1lc3NhZ2VEYXRhLmNw
cCAqLywKIAkJCQk0MThGQ0JCQzI3MDZFNEY2MDBGOTZFQ0EgLyogUHVzaE1lc3NhZ2VEYXRhLmgg
Ki8sCiAJCQkJNDE4RkNCQkEyNzA2RTRGNTAwRjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5pZGwg
Ki8sCkBAIC0zMTE5MSw2ICszMTIwMywxNCBAQAogCQkJcGF0aCA9ICJjb250YWN0LXBpY2tlciI7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFQkE3NUM0NDI3NUVDNTYwMDBE
NkQzMUMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUVCQTc1QzQ1Mjc1RUM1OEUwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvQ29jb2EuY3BwICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzYzNTMsMTAgKzM2MzczLDEyIEBACiAJCQkJ
NTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwMDgxRkYwMDE2QjBBMkQzMDA4QUFBN0EgLyogUHVibGljU3VmZml4
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGlj
VVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUJBNzVDNDYyNzVFQzYxQTAwRDZEMzFD
IC8qIFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzA4MjcwRDBCMTAwMEY3
ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEZD
QkMxMjcwNkU0RkIwMEY5NkVDQSAvKiBQdXNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
OEZDQkMyMjcwNkU1MDEwMEY5NkVDQSAvKiBQdXNoRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUVCQTc1QzQ3Mjc1RUM2MjEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRUJCOTczODIyNzEwMDY3NjAwNzczMkVGIC8qIFB1c2hQZXJt
aXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDUxMUY2MjUwQzFDQkYwMDJFREM1
MSAvKiBQdXNoUHVsbEZJRk8uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCMEZCNzA5MjcwRDBCMTgw
MEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWFiZmZiZmI0ZTg5NmQy
ZTlmOTYwZmQ5OGQwNTA4Y2ZlZTQzOTZmLi4yNzc2YjdkYjA1ZmVkMDBjMzQ1NmYxYWI0NTVhMjg0
YWYzYTAwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDYgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3NhZ2UgZGVjcnlwdGlvbiByb3V0aW5lcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11c3RCYXNlNjRVUkxEZWNvZGUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFUzEyOEdDTUNsaWVudEtleXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6bWFrZUFFU0dDTUNsaWVudEtleXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMTItMDYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBHUFUgUHJvY2VzcyBmZWF0dXJlIGZsYWdzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDUyNmZlNTBkZWY4YmY3MmYwYzc1NWY5NTJmMWRmMTNiNWFjZWM2MjguLjNhNGNj
YjVjZGIzMzI4M2U5ZjNmODE2NDZlNTAyNjEyZmQxYzI1YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05OTIsNiArOTkyLDcgQEAKIAkJRTVBQTQyRjIyNTkxMjhBRTAwNDEwQTNEIC8qIFVz
ZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU1QUE0MkYxMjU5MTI4QUUwMDQxMEEzRCAvKiBVc2VySW50ZXJmYWNl
SWRpb21VcGRhdGUubW0gKi87IH07CiAJCUU1QUE4RDFEMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRl
SW5wdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSAqLzsgfTsK
IAkJRUIyMzBENDEyNDVFODEzRjAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjIzMEQz
RDI0NUU3MjJFMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICovOyB9OworCQlFQkE3
NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJBNzVDNDgyNzVFRDdCRTAwRDZE
MzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLzsgfTsKIAkJRUNBNjgwQ0UxRTY4Q0MwOTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGls
aXRpZXMubW0gKi87IH07CiAJCUY0MDEwQjgwMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9u
U3dpcGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MDEwQjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbSAq
LzsgfTsKIAkJRjQwMTBCODMyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwMTBCODEyNERBMjY3
RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwpAQCAtMjkxNiw2ICsyOTE3LDcgQEAK
IAkJRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFEMSAvKiBJREJD
aGVja3BvaW50V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SURCQ2hlY2twb2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVD
NDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGll
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2
QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM3MDYsNiArMzcwOCw3IEBACiAJCQkJQUE5NkNBQjQy
MUM3REI0MjAwRkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKIAkJCQk2QjBBMDdG
NjIxRkE5QzJCMDBENTczOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwICovLAogCQkJ
CTA0MUExRTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwICovLAorCQkJCUVC
QTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8sCiAJCQkJ
NkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCAqLywKIAkJ
CQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8sCiAJ
CQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVz
dHMuY3BwICovLApAQCAtNTU5Nyw2ICs1NjAwLDcgQEAKIAkJCQk0NjQ3QjEyNjFFQkEzQjg1MDA0
MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUMy
QTg1NjI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRUJBNzVDNDkyNzVFRDdDNzAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRv
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdp
c3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRDFBNDExQUU2MDA0
NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFQzkxQTQxMUE3RTAwNDQ3QzRDIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9NTm9kZS5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1B1c2hNZXNzYWdlQ3J5cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYzOTQ2OGUxNDQ0MDRmOGQ5ZjE3
M2ZjN2VjM2M3YzZjZGNkNzhhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1B1c2hNZXNzYWdl
Q3J5cHRvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpQdXNoQ3J5cHRvOworCitzdGF0
aWMgVmVjdG9yPHVpbnQ4X3Q+IG11c3RCYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBlbmNv
ZGVkKQoreworICAgIHJldHVybiBiYXNlNjRVUkxEZWNvZGUoZW5jb2RlZCkudmFsdWUoKTsKK30K
Kworc3RhdGljIENsaWVudEtleXMgbWFrZUFFUzEyOEdDTUNsaWVudEtleXModm9pZCkKK3sKKyAg
ICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIFJGQzgyOTEgU2VjdGlvbiA1LgorICAgIGF1dG8gcHVi
bGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQkNWeHNyN05fZU5nVlJxdkh0RDB6VFpzRWM2
LVZWLUp2TGV4aHFVek9SY3hhT3ppNi1BWVdYdlRCSG00Ymp5UGpzN1ZkOHBaR0g2U1Jwa050b0lB
aXc0Il9zKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJxMWRY
cHczVXBUNVZPbXVfY2ZfdjZpaDA3QWVtczNuanhJLUpXZ0xjTTk0Il9zKTsKKyAgICBhdXRvIHNl
Y3JldCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJUQlpNcUhINnI0VHRzN0pfYVNJZ2ciX3MpOwor
CisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2REhLZXlQYWlyIHsgV1RGTW92
ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0sCisgICAgICAgIFdURk1vdmUoc2Vj
cmV0KQorICAgIH07Cit9CisKK3N0YXRpYyBDbGllbnRLZXlzIG1ha2VBRVNHQ01DbGllbnRLZXlz
KHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2YWx1ZXMgZnJvbSBkcmFmdC1pZXRmLXdlYnB1c2gt
ZW5jcnlwdGlvbi0wNCBTZWN0aW9uIDUuCisgICAgYXV0byBwdWJsaWNLZXkgPSBtdXN0QmFzZTY0
VVJMRGVjb2RlKCJCQ0VrQmp6TDhaM0Mtb2kyUTdvRTV0Mk5wLXA3b3NqR0xnOTNxVVAwd3ZxUlQy
MUVFV3lmMGNRRFFjYWtRTXF6NGhRS1lPUTNpbDJuTlpjdDRIZ0FVUVUiX3MpOworICAgIGF1dG8g
cHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjlGV2wxNV9RVVFBV0RhRDNrM2w1MFpC
WlFKNGF1MjdGMVY0RjB1TFNEX00iX3MpOworICAgIGF1dG8gc2VjcmV0ID0gbXVzdEJhc2U2NFVS
TERlY29kZSgiUjI5dklHZHZieUJuSnlCcWIyOWlJUSJfcyk7CisKKyAgICByZXR1cm4gQ2xpZW50
S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBhaXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdURk1v
dmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAgV1RGTW92ZShzZWNyZXQpCisgICAgfTsKK30KKwor
VEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTMTI4R0NNUGF5bG9hZFdpdGhNaW5pbWFsUGFkZGlu
ZykKK3sKKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cygpOwor
CisgICAgLy8gRXhhbXBsZSBwYXlsb2FkIGZyb20gUkZDODI5MSBTZWN0aW9uIDUuCisgICAgYXV0
byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiREd2NnJhMW5sWWdEQ1MxRlJuYnpsd0FB
RUFCQkJQNHo5S3NONm5HUlRiVllJX2M3VkpTUFFUQnRrZ2N5MjdtbG1sTW9aSUlnRGxsNmUzdkNZ
TG9jSW5tWVdBbVM2VGx6QUM4d0VxS0s2UEJydTNqbDdBX3lsOTViUXB1NmNWUFRwSzRNcWdrZjFD
WHp0TFZCU3QyS3Mzb1p3YnV3WFBYTFd5b3VCV0xWV0dOV1FleFNnU3hzal9RdWxjeTRhLWZOIl9z
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNsaWVudEtleXMs
IHBheWxvYWQpOworCisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICBh
dXRvIGFjdHVhbCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqcmVzdWx0KSk7CisgICAgQVNTRVJU
X0VRKCJXaGVuIEkgZ3JvdyB1cCwgSSB3YW50IHRvIGJlIGEgd2F0ZXJtZWxvbiJfcywgYWN0dWFs
KTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5bG9hZFdpdGhNaW5pbWFs
UGFkZGluZykKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIGRyYWZ0LWlldGYtd2VicHVz
aC1lbmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVT
R0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gc2FsdCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoImxu
Z2FyYnlLZk1vaTlaNzV4WVhta2ciX3MpOworICAgIGF1dG8gc2VydmVyUHVibGljS2V5ID0gbXVz
dEJhc2U2NFVSTERlY29kZSgiQk5vUkRiYjg0SkdtOGc1WjVDRnh1clNxc1hXSjExSXRmWEVXWVZM
RTg1WTdDWWtEalhzSUVjNGFxeFlhUTFHOEJxa1hDSjZEUHBEcld0ZFdqX211Z0hVIl9zKTsKKwor
ICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjZucUFRVU1FOGhOcXc1SjNr
bDhjcFZWSnlsWEtZcVpPZXNlWkc4VXVlS3BBIl9zKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5
cHRBRVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tleSwgc2FsdCwgcGF5bG9h
ZCk7CisKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgIGF1dG8gYWN0
dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoIkkg
YW0gdGhlIHdhbHJ1cyJfcywgYWN0dWFsKTsKK30KKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446117</attachid>
            <date>2021-12-06 20:41:04 -0800</date>
            <delta_ts>2021-12-06 22:11:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206204103.patch</filename>
            <type>text/plain</type>
            <size>47269</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODUwNmFhZTA3NjY2MzMwYzM3NzZkZGIzYmU3N2Ew
MzMxNTgxMGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBN
b2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6
UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY2FsbCB0byBvc19zaWducG9zdCB0byB0YWcg
YSBtb21lbnR1bSBzY3JvbGwgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4MTEwODEz
YzIxOTc0N2ZmZThjYmI3NjY2OTRhYzMyN2VhYTY3NTUwLi5mMDZkNDU5ZDZjOTdlOGQxYmUzMDRj
YjY5MDljMWQxYzljZTNmMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMi0wNiAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgd2Vi
IHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJ
Lmg6IEFkZCBBRVMtR0NNIGRlY3J5cHRpb24gU1BJLgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQg
b2YgaW1hZ2UgY29udHJvbCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMTUzZWRkODA1
NTcyZGEwNWFhNmFkOTk5YTE3ZDJmMjA1YWJmMWEuLjA2MGVkZjk0MzU5ZDc4MjVhOWNhOTU2Y2E0
MGI4N2I2OWM3MmYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjg4LDYgKzI4OCw4IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL3Blcm1pc3Np
b25zL1Blcm1pc3Npb25PYnNlcnZlci5oCiAgICAgTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNz
aW9uU3RhdGUuaAogCisgICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmgKICAgICBNb2R1bGVzL3B1c2gtYXBpL1B1
c2hQZXJtaXNzaW9uU3RhdGUuaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2UxYWJhNDFiYjBjMWNhMDEyYWE5ZTc4YTIzYTZkMmFmYTdlY2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKworUDI1NkRIS2V5
UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQoreworICAgIHJldHVybiB7IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2Vj
cmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBr
ZXlQYWlyKQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRl
Y3J5cHRBRVMxMjhHQ00oU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90Piwg
U3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjM2MWM5NGUyYmVkNTU4NGYzZWJlMTQzZjllMTQ2ZjFjMmYyNGNjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggPSA2NTsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFNoYXJl
ZFNlY3JldExlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2hhMjU2RGlnZXN0
TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhZXMxMjhHQ01UYWdMZW5ndGgg
PSAxNjsKKworc3RydWN0IFAyNTZESEtleVBhaXIgeworICAgIFZlY3Rvcjx1aW50OF90PiBwdWJs
aWNLZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVLZXk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUDI1NkRIS2V5UGFpciBnZW5lcmF0ZSh2b2lkKTsKK307CisKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWly
Jik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29u
c3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25z
dCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlw
dG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
TWVzc2FnZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQyZmI4YjhlODgwYWU2MTA3YzFhYzAyNTAw
Y2UwY2MyNTYyNWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwzMDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIK
KyNpbmNsdWRlIDx3dGYvQnl0ZU9yZGVyLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFB1
c2hDcnlwdG8geworCisvLyBBcmJpdHJhcnkgbGltaXQgdGhhdCdzIGxhcmdlciB0aGFuIHRoZSBs
YXJnZXN0IHBheWxvYWQgQVBOUyBzaG91bGQgZXZlciBnaXZlIHVzLgorc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgbWF4UHVzaFBheWxvYWRMZW5ndGggPSA2NTUzNTsKKworLy8gRnJvbSBSRkM4Mjkx
Lgorc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2FsdExlbmd0aCA9IDE2Oworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc2hhcmVkQXV0aFNlY3JldExlbmd0aCA9IDE2OworCitDbGllbnRLZXlzIENs
aWVudEtleXM6OmdlbmVyYXRlKCkKK3sKKyAgICB1aW50OF90IHNoYXJlZEF1dGhTZWNyZXRbc2hh
cmVkQXV0aFNlY3JldExlbmd0aF07CisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMo
c2hhcmVkQXV0aFNlY3JldCwgc2l6ZW9mKHNoYXJlZEF1dGhTZWNyZXQpKTsKKworICAgIHJldHVy
biBDbGllbnRLZXlzIHsKKyAgICAgICAgUDI1NkRIS2V5UGFpcjo6Z2VuZXJhdGUoKSwKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHsgc2hhcmVkQXV0aFNlY3JldCwgc2l6ZW9mKHNoYXJlZEF1dGhT
ZWNyZXQpIH0KKyAgICB9OworfQorCitzdGF0aWMgYm9vbCBhcmVDbGllbnRLZXlMZW5ndGhzVmFs
aWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cykKK3sKKyAgICByZXR1cm4gY2xpZW50S2V5
cy5jbGllbnRQMjU2REhLZXlQYWlyLnB1YmxpY0tleS5zaXplKCkgPT0gcDI1NmRoUHVibGljS2V5
TGVuZ3RoICYmIGNsaWVudEtleXMuY2xpZW50UDI1NkRIS2V5UGFpci5wcml2YXRlS2V5LnNpemUo
KSA9PSBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoICYmIGNsaWVudEtleXMuc2hhcmVkQXV0aFNlY3Jl
dC5zaXplKCkgPT0gc2hhcmVkQXV0aFNlY3JldExlbmd0aDsKK30KKworc3RhdGljIHNpemVfdCBj
b21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChjb25zdCB1aW50OF90ICpiZWdpbiwgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICAvKgorICAgICAqIENvbXB1dGUgcGFkZGluZyBsZW5ndGggYXMgZGVm
aW5lZCBpbiBSRkM4MTg4IFNlY3Rpb24gMjoKKyAgICAgKgorICAgICAqICAgKy0tLS0tLS0tLS0t
Ky0tLS0tKworICAgICAqICAgfCAgIGRhdGEgICAgfCBwYWQgfAorICAgICAqICAgKy0tLS0tLS0t
LS0tKy0tLS0tKworICAgICAqCisgICAgICogcGFkIG11c3QgYmUgb2Ygbm9uLXplcm8gbGVuZ3Ro
IGFuZCBpcyBhIGRlbGltaXRlciBvY3RldCAoMHgwMikgZm9sbG93ZWQgYnkgYW55IG51bWJlciBv
ZiAweDAwIG9jdGV0cy4KKyAgICAgKi8KKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IFNJWkVfTUFYOworCisgICAgY29uc3QgdWludDhfdCogZW5kID0gYmVnaW4gKyBsZW5ndGg7Cisg
ICAgY29uc3QgdWludDhfdCogY3VyID0gZW5kIC0gMTsKKyAgICB3aGlsZSAoY3VyID4gYmVnaW4g
JiYgKCpjdXIgPT0gMHgwMCkpCisgICAgICAgIC0tY3VyOworICAgIGlmICgqY3VyICE9IDB4MDIp
CisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKworICAgIHJldHVybiBlbmQgLSBjdXI7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChj
b25zdCBDbGllbnRLZXlzJiBjbGllbnRLZXlzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBheWxv
YWQpCit7CisgICAgaWYgKCFhcmVDbGllbnRLZXlMZW5ndGhzVmFsaWQoY2xpZW50S2V5cykpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBFeHRyYWN0IGVuY3J5cHRpb24g
cGFyYW1ldGVycyBmcm9tIGhlYWRlciBhcyBkZXNjcmliZWQgaW4gUkZDODE4OC4KKyAgICBzdHJ1
Y3QgUGF5bG9hZEhlYWRlciB7CisgICAgICAgIHVpbnQ4X3Qgc2FsdFtzYWx0TGVuZ3RoXTsKKyAg
ICAgICAgdWludDhfdCBpZ25vcmVkWzRdOworICAgICAgICB1aW50OF90IGtleUxlbmd0aDsKKyAg
ICAgICAgdWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAg
ICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBheWxvYWRIZWFkZXIpID09IDg2KTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5QdXNoUGF5bG9hZExlbmd0aCA9IHNpemVvZihQ
YXlsb2FkSGVhZGVyKSArIDEgLyogbWluUGFkZGluZ0xlbmd0aCAqLyArIGFlczEyOEdDTVRhZ0xl
bmd0aDsKKworICAgIGlmIChwYXlsb2FkLnNpemUoKSA8IG1pblB1c2hQYXlsb2FkTGVuZ3RoIHx8
IHBheWxvYWQuc2l6ZSgpID4gbWF4UHVzaFBheWxvYWRMZW5ndGgpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBQYXlsb2FkSGVhZGVyIGhlYWRlcjsKKyAgICBtZW1jcHkoJmhl
YWRlciwgcGF5bG9hZC5kYXRhKCksIHNpemVvZihoZWFkZXIpKTsKKworICAgIGlmIChoZWFkZXIu
a2V5TGVuZ3RoICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIC8qCisgICAgICogVGhlIHJlc3Qgb2YgdGhlIGNvbW1lbnRzIGFyZSBz
bmlwcGV0cyBmcm9tIFJGQzgyOTEgMy40LgorICAgICAqCisgICAgICogLS0gRm9yIGEgdXNlciBh
Z2VudDoKKyAgICAgKiBlY2RoX3NlY3JldCA9IEVDREgodWFfcHJpdmF0ZSwgYXNfcHVibGljKQor
ICAgICAqLworICAgIGF1dG8gZWNkaFNlY3JldFJlc3VsdCA9IGNvbXB1dGVQMjU2REhTaGFyZWRT
ZWNyZXQoaGVhZGVyLnNlcnZlclB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQMjU2REhLZXlQ
YWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAvKgorICAgICAqICMgSEtERi1FeHRyYWN0KHNhbHQ9YXV0aF9zZWNyZXQs
IElLTT1lY2RoX3NlY3JldCkKKyAgICAgKiBQUktfa2V5ID0gSE1BQy1TSEEtMjU2KGF1dGhfc2Vj
cmV0LCBlY2RoX3NlY3JldCkKKyAgICAgKi8KKyAgICBhdXRvIHBya0tleSA9IGhtYWNTSEEyNTYo
Y2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LCAqZWNkaFNlY3JldFJlc3VsdCk7CisKKyAgICAv
KgorICAgICAqICMgSEtERi1FeHBhbmQoUFJLX2tleSwga2V5X2luZm8sIExfa2V5PTMyKQorICAg
ICAqIGtleV9pbmZvID0gIldlYlB1c2g6IGluZm8iIHx8IDB4MDAgfHwgdWFfcHVibGljIHx8IGFz
X3B1YmxpYworICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktfa2V5LCBrZXlfaW5mbyB8fCAw
eDAxKQorICAgICAqLworICAgIHN0cnVjdCBLZXlJbmZvIHsKKyAgICAgICAgdWludDhfdCBsYWJl
bFsxNF0gPSB7ICJXZWJQdXNoOiBpbmZvIiB9OworICAgICAgICB1aW50OF90IGNsaWVudEtleVtw
MjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgICAgICB1aW50OF90IHNlcnZlcktleVtwMjU2ZGhQ
dWJsaWNLZXlMZW5ndGhdOworICAgICAgICB1aW50OF90IGVuZCA9IDB4MDE7CisgICAgfTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihLZXlJbmZvKSA9PSAxNDUpOworCisgICAgS2V5SW5mbyBr
ZXlJbmZvOworICAgIG1lbWNweShrZXlJbmZvLmNsaWVudEtleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyLnB1YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7Cisg
ICAgbWVtY3B5KGtleUluZm8uc2VydmVyS2V5LCBoZWFkZXIuc2VydmVyUHVibGljS2V5LCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGgpOworCisgICAgYXV0byBpa20gPSBobWFjU0hBMjU2KHBya0tleSwg
U3BhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigma2V5SW5mbyksIHNpemVvZihrZXlJbmZv
KSkpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXh0cmFjdChzYWx0LCBJS00pCisgICAgICog
UFJLID0gSE1BQy1TSEEtMjU2KHNhbHQsIElLTSkKKyAgICAgKi8KKyAgICBhdXRvIHByayA9IGht
YWNTSEEyNTYoaGVhZGVyLnNhbHQsIGlrbSk7CisKKyAgICAvKgorICAgICAqICMgSEtERi1FeHBh
bmQoUFJLLCBjZWtfaW5mbywgTF9jZWs9MTYpCisgICAgICogY2VrX2luZm8gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzMTI4Z2NtIiB8fCAweDAwCisgICAgICogQ0VLID0gSE1BQy1TSEEtMjU2KFBS
SywgY2VrX2luZm8gfHwgMHgwMSlbMC4uMTVdCisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVp
bnQ4X3QgY2VrSW5mb1tdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGFlczEyOGdjbVx4MDBceDAxIjsK
KyAgICBhdXRvIGNlayA9IGhtYWNTSEEyNTYocHJrLCBTcGFuKGNla0luZm8sIHNpemVvZihjZWtJ
bmZvKSAtIDEpKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKworICAgIC8qCisgICAgICogIyBIS0RG
LUV4cGFuZChQUkssIG5vbmNlX2luZm8sIExfbm9uY2U9MTIpCisgICAgICogbm9uY2VfaW5mbyA9
ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwgMHgwMAorICAgICAqIE5PTkNFID0gSE1BQy1T
SEEtMjU2KFBSSywgbm9uY2VfaW5mbyB8fCAweDAxKVswLi4xMV0KKyAgICAgKi8KKyAgICBzdGF0
aWMgY29uc3QgdWludDhfdCBub25jZUluZm9bXSA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZVx4
MDBceDAxIjsKKyAgICBhdXRvIG5vbmNlID0gaG1hY1NIQTI1NihwcmssIFNwYW4obm9uY2VJbmZv
LCBzaXplb2Yobm9uY2VJbmZvKSAtIDEpKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAg
Ly8gRmluYWxseSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRl
ZCBwbGFpbnRleHQuCisgICAgYXV0byBjaXBoZXJUZXh0ID0gU3BhbihwYXlsb2FkLmRhdGEoKSAr
IHNpemVvZihoZWFkZXIpLCBwYXlsb2FkLnNpemUoKSAtIHNpemVvZihoZWFkZXIpKTsKKyAgICBh
dXRvIHBsYWluVGV4dFJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ00oY2VrLCBub25jZSwgY2lwaGVy
VGV4dCk7CisgICAgaWYgKCFwbGFpblRleHRSZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0UmVzdWx0LnZh
bHVlKCkpOworICAgIHNpemVfdCBwYWRkaW5nTGVuZ3RoID0gY29tcHV0ZUFFUzEyOEdDTVBhZGRp
bmdMZW5ndGgocGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CisgICAgaWYgKHBh
ZGRpbmdMZW5ndGggPT0gU0laRV9NQVgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBwbGFpblRleHQuc2hyaW5rKHBsYWluVGV4dC5zaXplKCkgLSBwYWRkaW5nTGVuZ3RoKTsK
KyAgICByZXR1cm4gcGxhaW5UZXh0OworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAg
IC8qCisgICAgICogQ29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIGRyYWZ0LWll
dGYtaHR0cGJpcy1lbmNyeXB0aW9uLWVuY29kaW5nLTAzOgorICAgICAqCisgICAgICogICArLS0t
LS0rLS0tLS0tLS0tLS0rCisgICAgICogICB8IHBhZCB8ICAgZGF0YSAgICB8CisgICAgICogICAr
LS0tLS0rLS0tLS0tLS0tLS0rCisgICAgICoKKyAgICAgKiBQYWRkaW5nIGNvbnNpc3RzIG9mIGEg
dHdvIG9jdGV0IHVuc2lnbmVkIGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLCBmb2xsb3dl
ZCBieSB0aGF0CisgICAgICogbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLiBUaGUgbWluaW11bSBwYWRk
aW5nIHNpemUgaXMgMiBieXRlcy4KKyAgICAgKi8KKyAgICBpZiAobGVuZ3RoIDwgMikKKyAgICAg
ICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgdWludDE2X3QgcGFkZGluZ0xlbmd0aDsKKyAgICBt
ZW1jcHkoJnBhZGRpbmdMZW5ndGgsIGJlZ2luLCAyKTsKKyAgICBwYWRkaW5nTGVuZ3RoID0gbnRv
aHMocGFkZGluZ0xlbmd0aCk7CisKKyAgICBjb25zdCB1aW50OF90KiBjdXIgPSBiZWdpbiArIDI7
CisgICAgY29uc3QgdWludDhfdCogZW5kID0gYmVnaW4gKyBsZW5ndGg7CisgICAgdWludDE2X3Qg
cGFkZGluZ0xlZnQgPSBwYWRkaW5nTGVuZ3RoOworICAgIHdoaWxlIChjdXIgPCBlbmQgJiYgKCpj
dXIgPT0gMHgwKSAmJiBwYWRkaW5nTGVmdCkgeworICAgICAgICArK2N1cjsKKyAgICAgICAgLS1w
YWRkaW5nTGVmdDsKKyAgICB9CisKKyAgICBpZiAocGFkZGluZ0xlZnQpCisgICAgICAgIHJldHVy
biBTSVpFX01BWDsKKworICAgIHJldHVybiBjdXIgLSBiZWdpbjsKK30KKworc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMm
IGNsaWVudEtleXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2VydmVyUDI1NkRIUHVibGljS2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5
bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSB8
fCBzZXJ2ZXJQMjU2REhQdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB8
fCBzYWx0LnNpemUoKSAhPSBzYWx0TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgLy8gUGFkZGluZyBtdXN0IGJlIGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB0d28g
b2N0ZXQgdW5zaWduZWQgaW50ZWdlciB1c2VkIGluIHRoZSBwYWRkaW5nIHNjaGVtZSBwbHVzIHRo
ZSBzaXplIG9mIHRoZSBBRVMxMjhHQ00gdGFnLgorICAgIGlmIChwYXlsb2FkLnNpemUoKSA8IDIg
KyBhZXMxMjhHQ01UYWdMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQdXNoUGF5bG9hZExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAgICogVGhl
c2UgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRp
b24tMDQuCisgICAgICoKKyAgICAgKiAtLSBGb3IgYSBVc2VyIEFnZW50OgorICAgICAqIGVjZGhf
c2VjcmV0ID0gRUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBl
Y2RoU2VjcmV0UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChzZXJ2ZXJQMjU2REhQ
dWJsaWNLZXksIGNsaWVudEtleXMuY2xpZW50UDI1NkRIS2V5UGFpcik7CisgICAgaWYgKCFlY2Ro
U2VjcmV0UmVzdWx0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAg
ICAgKiBhdXRoX2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYXV0aCIgfHwgMHgwMAorICAgICAq
IFBSS19jb21iaW5lID0gSE1BQy1TSEEtMjU2KGF1dGhfc2VjcmV0LCBlY2RoX3NlY3JldCkKKyAg
ICAgKiBJS00gPSBITUFDLVNIQS0yNTYoUFJLX2NvbWJpbmUsIGF1dGhfaW5mbyB8fCAweDAxKQor
ICAgICAqIFBSSyA9IEhNQUMtU0hBLTI1NihzYWx0LCBJS00pCisgICAgICovCisgICAgc3RhdGlj
IGNvbnN0IHVpbnQ4X3QgYXV0aEluZm9bXSA9ICJDb250ZW50LUVuY29kaW5nOiBhdXRoXHgwMFx4
MDEiOworICAgIGF1dG8gcHJrQ29tYmluZSA9IGhtYWNTSEEyNTYoY2xpZW50S2V5cy5zaGFyZWRB
dXRoU2VjcmV0LCAqZWNkaFNlY3JldFJlc3VsdCk7CisgICAgYXV0byBpa20gPSBobWFjU0hBMjU2
KHBya0NvbWJpbmUsIFNwYW4oYXV0aEluZm8sIHNpemVvZihhdXRoSW5mbykgLSAxKSk7CisgICAg
YXV0byBwcmsgPSBobWFjU0hBMjU2KHNhbHQsIGlrbSk7CisKKyAgICAvKgorICAgICAqIGNvbnRl
eHQgPSAiUC0yNTYiIHx8IDB4MDAgfHwKKyAgICAgKiAgICAgICAgICAgMHgwMCB8fCAweDQxIHx8
IHVhX3B1YmxpYyB8fAorICAgICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgYXNfcHVibGlj
CisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgd2UgYWxzbyBhcHBlbmQgYSAweDAxIGJ5dGUgYXQg
dGhlIGVuZCBoZXJlIHNpbmNlIHRoZSBjZWsgYW5kIG5vbmNlCisgICAgICogZGVyaXZhdGlvbiBm
dW5jdGlvbnMgYmVsb3cgcmVxdWlyZSB0aGF0IHRyYWlsaW5nIDB4MDEgYnl0ZS4KKyAgICAgKi8K
KyAgICBzdHJ1Y3QgS2V5RGVyaXZhdGlvbkNvbnRleHQgeworICAgICAgICB1aW50OF90IGxhYmVs
WzZdID0geyAiUC0yNTYiIH07CisgICAgICAgIHVpbnQ4X3QgY2xpZW50UHVibGljS2V5TGVuZ3Ro
WzJdID0geyAwLCAweDQxIH07CisgICAgICAgIHVpbnQ4X3QgY2xpZW50UHVibGljS2V5W3AyNTZk
aFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVpbnQ4X3Qgc2VydmVyUHVibGljS2V5TGVuZ3Ro
WzJdID0geyAwLCAweDQxIH07CisgICAgICAgIHVpbnQ4X3Qgc2VydmVyUHVibGljS2V5W3AyNTZk
aFB1YmxpY0tleUxlbmd0aF07CisgICAgICAgIHVpbnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9Owor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEtleURlcml2YXRpb25Db250ZXh0KSA9PSAxNDEpOwor
ICAgIEtleURlcml2YXRpb25Db250ZXh0IGNvbnRleHQ7CisgICAgbWVtY3B5KGNvbnRleHQuY2xp
ZW50UHVibGljS2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5LmRh
dGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoY29udGV4dC5zZXJ2ZXJQ
dWJsaWNLZXksIHNlcnZlclAyNTZESFB1YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxl
bmd0aCk7CisKKyAgICAvKgorICAgICAqIGNla19pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGFl
c2djbSIgfHwgMHgwMCB8fCBjb250ZXh0CisgICAgICogQ0VLID0gSE1BQy1TSEEtMjU2KFBSSywg
Y2VrX2luZm8gfHwgMHgwMSlbMC4uMTVdCisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVpbnQ4
X3QgY2VrSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGFlc2djbSI7CisgICAgdWlu
dDhfdCBjZWtJbmZvW3NpemVvZihjZWtJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KGNla0luZm8sIGNla0luZm9IZWFkZXIsIHNpemVvZihjZWtJbmZvSGVhZGVyKSk7
CisgICAgbWVtY3B5KGNla0luZm8gKyBzaXplb2YoY2VrSW5mb0hlYWRlciksICZjb250ZXh0LCBz
aXplb2YoY29udGV4dCkpOworCisgICAgYXV0byBjZWsgPSBobWFjU0hBMjU2KHByaywgY2VrSW5m
byk7CisgICAgY2VrLnNocmluaygxNik7CisKKyAgICAvKgorICAgICAqIG5vbmNlX2luZm8gPSAi
Q29udGVudC1FbmNvZGluZzogbm9uY2UiIHx8IDB4MDAgfHwgY29udGV4dAorICAgICAqIE5PTkNF
ID0gSE1BQy1TSEEtMjU2KFBSSywgbm9uY2VfaW5mbyB8fCAweDAxKVswLi4xMV0KKyAgICAgKi8K
KyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBub25jZUluZm9IZWFkZXJbXSA9ICJDb250ZW50LUVu
Y29kaW5nOiBub25jZSI7CisgICAgdWludDhfdCBub25jZUluZm9bc2l6ZW9mKG5vbmNlSW5mb0hl
YWRlcikgKyBzaXplb2YoY29udGV4dCldOworICAgIG1lbWNweShub25jZUluZm8sIG5vbmNlSW5m
b0hlYWRlciwgc2l6ZW9mKG5vbmNlSW5mb0hlYWRlcikpOworICAgIG1lbWNweShub25jZUluZm8g
KyBzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisK
KyAgICBhdXRvIG5vbmNlID0gaG1hY1NIQTI1NihwcmssIG5vbmNlSW5mbyk7CisgICAgbm9uY2Uu
c2hyaW5rKDEyKTsKKworICAgIC8vIEZpbmFsbHksIGRlY3J5cHQgd2l0aCBBRVMxMjhHQ00gYW5k
IHJldHVybiB0aGUgdW5wYWRkZWQgcGxhaW50ZXh0LgorICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0
ID0gZGVjcnlwdEFFUzEyOEdDTShjZWssIG5vbmNlLCBwYXlsb2FkKTsKKyAgICBpZiAoIXBsYWlu
VGV4dFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBh
ZGRpbmdMZW5ndGggPSBjb21wdXRlQUVTR0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0YSgp
LCBwbGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01BWCkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBWZWN0b3I8dWludDhf
dD4geyBwbGFpblRleHQuZGF0YSgpICsgcGFkZGluZ0xlbmd0aCwgcGxhaW5UZXh0LnNpemUoKSAt
IHBhZGRpbmdMZW5ndGggfTsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0bworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5
cHRvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRv
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzJhYTc2M2EzZDg3ODA5MTk3NjgxOTY1YTllMmE3MzBjYmI0MGI3Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1l
c3NhZ2VDcnlwdG8uaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJQdXNoQ3J5cHRvLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitzdHJ1Y3QgQ2xp
ZW50S2V5cyB7CisgICAgUDI1NkRIS2V5UGFpciBjbGllbnRQMjU2REhLZXlQYWlyOworICAgIFZl
Y3Rvcjx1aW50OF90PiBzaGFyZWRBdXRoU2VjcmV0OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIENsaWVudEtleXMgZ2VuZXJhdGUoKTsKK307CisKKy8vIERlY3J5cHRzIGEgcHVzaCBwYXls
b2FkIGVuY29kZWQgd2l0aCB0aGUgYWVzMTI4Z2NtIENvbnRlbnQtRW5jb2RpbmcgYXMgZGVzY3Jp
YmVkIGluIFJGQzgyOTEuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcGF5bG9hZCk7CisKKy8vIERlY3J5cHRzIGEgcHVzaCBwYXlsb2FkIGVu
Y29kZWQgd2l0aCB0aGUgYWVzZ2NtIENvbnRlbnQtRW5jb2RpbmcgYXMgZGVzY3JpYmVkIGluIGRy
YWZ0LWlldGYtd2VicHVzaC1lbmNyeXB0aW9uLTA0LgorV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtl
eXMmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNlcnZlclAyNTZESFB1YmxpY0tleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBheWxvYWQpOwor
Cit9IC8vIG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjlmNTFkNjdmMTcwMDc3MzZiYjQzNGFjODgyMmYwZThkMzJhNTI1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRv
Q29jb2EuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25ITUFDLmg+CisjaW5jbHVkZSA8cGFs
L3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKK1AyNTZESEtl
eVBhaXIgUDI1NkRIS2V5UGFpcjo6Z2VuZXJhdGUodm9pZCkKK3sKKyAgICBDQ0VDQ3J5cHRvclJl
ZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQcml2YXRlS2V5
ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFsmY2NQ
dWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJsaWNLZXkpCisg
ICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAgICAgICBpZiAo
Y2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNjUHJpdmF0ZUtl
eSk7CisgICAgfSk7CisKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NFQ0NyeXB0b3JH
ZW5lcmF0ZVBhaXIoMjU2LCAmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXkpOworICAgIFJFTEVB
U0VfQVNTRVJUKHN0YXR1cyA9PSBrQ0NTdWNjZXNzKTsKKworICAgIHVpbnQ4X3QgcHVibGljS2V5
W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAgc2l6ZV90IHB1YmxpY0tleUxlbmd0aCA9IHNp
emVvZihwdWJsaWNLZXkpOworICAgIHN0YXR1cyA9IENDRUNDcnlwdG9yRXhwb3J0S2V5KGtDQ0lt
cG9ydEtleUJpbmFyeSwgcHVibGljS2V5LCAmcHVibGljS2V5TGVuZ3RoLCBjY0VDS2V5UHVibGlj
LCBjY1B1YmxpY0tleSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdHVzID09IGtDQ1N1Y2Nlc3Mg
JiYgcHVibGljS2V5TGVuZ3RoID09IHNpemVvZihwdWJsaWNLZXkpKTsKKworICAgIC8vIENvbW1v
bkNyeXB0byBleHBlY3RzIHRoZSBiaW5hcnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtl
eSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0ZSBwcml2YXRlIGtleSwgc28gd2Ugd2FudCB0byBleHRy
YWN0IHRoZSBsYXN0IDMyIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlci4KKyAgICB1aW50OF90IGtleVtw
MjU2ZGhQdWJsaWNLZXlMZW5ndGggKyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBzaXpl
X3Qga2V5TGVuZ3RoID0gc2l6ZW9mKGtleSk7CisgICAgc3RhdHVzID0gQ0NFQ0NyeXB0b3JFeHBv
cnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBrZXksICZrZXlMZW5ndGgsIGNjRUNLZXlQcml2YXRl
LCBjY1ByaXZhdGVLZXkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0YXR1cyA9PSBrQ0NTdWNjZXNz
ICYmIGtleUxlbmd0aCA9PSBzaXplb2Yoa2V5KSk7CisKKyAgICByZXR1cm4gUDI1NkRIS2V5UGFp
ciB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7IHB1YmxpY0tleSwgcDI1NmRoUHVibGljS2V5
TGVuZ3RoIH0sCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7IGtleSArIHAyNTZkaFB1YmxpY0tl
eUxlbmd0aCwgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCB9CisgICAgfTsKK30KKworc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQMjU2REhTaGFyZWRTZWNyZXQoU3Bhbjxjb25z
dCB1aW50OF90PiBwdWJsaWNLZXksIGNvbnN0IFAyNTZESEtleVBhaXImIGtleVBhaXIpCit7Cisg
ICAgaWYgKHB1YmxpY0tleS5zaXplKCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IGtleVBh
aXIucHVibGljS2V5LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5w
cml2YXRlS2V5LnNpemUoKSAhPSBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBudWxs
cHRyOworICAgIENDRUNDcnlwdG9yUmVmIGNjUHJpdmF0ZUtleSA9IG51bGxwdHI7CisgICAgYXV0
byByZWxlYXNlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbJmNjUHVibGljS2V5LCAmY2NQcml2YXRl
S2V5XSgpIHsKKyAgICAgICAgaWYgKGNjUHVibGljS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0
b3JSZWxlYXNlKGNjUHVibGljS2V5KTsKKyAgICAgICAgaWYgKGNjUHJpdmF0ZUtleSkKKyAgICAg
ICAgICAgIENDRUNDcnlwdG9yUmVsZWFzZShjY1ByaXZhdGVLZXkpOworICAgIH0pOworCisgICAg
aWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwgcHVibGljS2V5LmRh
dGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoLCBjY0VDS2V5UHVibGljLCAmY2NQdWJsaWNLZXkp
ICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBD
b21tb25DcnlwdG8gZXhwZWN0cyB0aGUgYmluYXJ5IGZvcm1hdCB0byBiZSA2NSBieXRlIHB1Ymxp
YyBrZXkgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgcHJpdmF0ZSBrZXkuCisgICAgdWludDhfdCBr
ZXlCdWZbcDI1NmRoUHVibGljS2V5TGVuZ3RoICsgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aF07Cisg
ICAgbWVtY3B5KGtleUJ1Ziwga2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNL
ZXlMZW5ndGgpOworICAgIG1lbWNweShrZXlCdWYgKyBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgsIGtl
eVBhaXIucHJpdmF0ZUtleS5kYXRhKCksIHAyNTZkaFByaXZhdGVLZXlMZW5ndGgpOworICAgIGlm
IChDQ0VDQ3J5cHRvckltcG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIGtleUJ1Ziwgc2l6ZW9m
KGtleUJ1ZiksIGNjRUNLZXlQcml2YXRlLCAmY2NQcml2YXRlS2V5KSAhPSBrQ0NTdWNjZXNzKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNoYXJl
ZFNlY3JldChwMjU2ZGhTaGFyZWRTZWNyZXRMZW5ndGgpOworICAgIHNpemVfdCBzaGFyZWRTZWNy
ZXRMZW5ndGggPSBzaGFyZWRTZWNyZXQuc2l6ZSgpOworICAgIGlmIChDQ0VDQ3J5cHRvckNvbXB1
dGVTaGFyZWRTZWNyZXQoY2NQcml2YXRlS2V5LCBjY1B1YmxpY0tleSwgc2hhcmVkU2VjcmV0LmJl
Z2luKCksICZzaGFyZWRTZWNyZXRMZW5ndGgpICE9IGtDQ1N1Y2Nlc3MgfHwgc2hhcmVkU2VjcmV0
TGVuZ3RoICE9IHAyNTZkaFNoYXJlZFNlY3JldExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiBzaGFyZWRTZWNyZXQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
IG1lc3NhZ2UpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChzaGEyNTZEaWdlc3RMZW5n
dGgpOworICAgIENDSG1hYyhrQ0NIbWFjQWxnU0hBMjU2LCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgp
LCBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCksIHJlc3VsdC5iZWdpbigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFUzEyOEdDTShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBp
diwgU3Bhbjxjb25zdCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZykKK3sKKyAgICBpZiAoY2lw
aGVyVGV4dFdpdGhUYWcuc2l6ZSgpIDwgYWVzMTI4R0NNVGFnTGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dChjaXBoZXJU
ZXh0V2l0aFRhZy5zaXplKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0
ID0gQ0NDcnlwdG9yR0NNT25lc2hvdERlY3J5cHQoa0NDQWxnb3JpdGhtQUVTLCBrZXkuZGF0YSgp
LCBrZXkuc2l6ZSgpLCBpdi5kYXRhKCksIGl2LnNpemUoKSwgbnVsbHB0ciAvKiBhZGRpdGlvbmFs
RGF0YSAqLywgMCAvKiBhZGRpdGlvbmFsRGF0YUxlbmd0aCAqLywgY2lwaGVyVGV4dFdpdGhUYWcu
ZGF0YSgpLCBjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIHBs
YWluVGV4dC5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLmVuZCgpIC0gYWVzMTI4R0NNVGFnTGVu
Z3RoLCBhZXMxMjhHQ01UYWdMZW5ndGgpOworICAgIGlmIChyZXN1bHQgIT0ga0NDU3VjY2VzcykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBwbGFpblRleHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaAppbmRleCBlNWRhYmUwZjBmMjFh
MDI1YjY0MjkyM2UzM2I3NGI5ZWFhYTQ0Nzg5Li4zZDY1ZTNlY2Y0MDJkOTgyMjAxYzZmNjNiYTE3
YmFjNmQwZGRhY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9Db21tb25DcnlwdG9TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9Db21tb25DcnlwdG9TUEkuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKwogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvclNQSS5o
PgpAQCAtMTE4LDYgKzEyMCw3IEBAIGV4dGVybiAiQyIgQ0NTdGF0dXMgQ0NEZXJpdmVLZXkoY29u
c3QgQ0NLREZQYXJhbWV0ZXJzUmVmIHBhcmFtcywgQ0NEaWdlc3RBbGdvcml0CiBleHRlcm4gIkMi
IENDU3RhdHVzIENDS0RGUGFyYW1ldGVyc0NyZWF0ZUhrZGYoQ0NLREZQYXJhbWV0ZXJzUmVmICpw
YXJhbXMsIGNvbnN0IHZvaWQgKnNhbHQsIHNpemVfdCBzYWx0TGVuLCBjb25zdCB2b2lkICpjb250
ZXh0LCBzaXplX3QgY29udGV4dExlbik7CiBleHRlcm4gIkMiIHZvaWQgQ0NLREZQYXJhbWV0ZXJz
RGVzdHJveShDQ0tERlBhcmFtZXRlcnNSZWYgcGFyYW1zKTsKIGV4dGVybiAiQyIgQ0NDcnlwdG9y
U3RhdHVzIENDQ3J5cHRvckdDTShDQ09wZXJhdGlvbiBvcCwgQ0NBbGdvcml0aG0gYWxnLCBjb25z
dCB2b2lkKiBrZXksIHNpemVfdCBrZXlMZW5ndGgsIGNvbnN0IHZvaWQqIGl2LCBzaXplX3QgaXZM
ZW4sIGNvbnN0IHZvaWQqIGFEYXRhLCBzaXplX3QgYURhdGFMZW4sIGNvbnN0IHZvaWQqIGRhdGFJ
biwgc2l6ZV90IGRhdGFJbkxlbmd0aCwgdm9pZCogZGF0YU91dCwgdm9pZCogdGFnLCBzaXplX3Qq
IHRhZ0xlbmd0aCk7CitleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ0NyeXB0b3JHQ01PbmVz
aG90RGVjcnlwdChDQ0FsZ29yaXRobSBhbGcsIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleUxl
bmd0aCwgY29uc3Qgdm9pZCAgKml2LCBzaXplX3QgaXZMZW4sIGNvbnN0IHZvaWQgICphRGF0YSwg
c2l6ZV90IGFEYXRhTGVuLCBjb25zdCB2b2lkICpkYXRhSW4sIHNpemVfdCBkYXRhSW5MZW5ndGgs
IHZvaWQgICAgICAgICpkYXRhT3V0LCBjb25zdCB2b2lkICAqdGFnSW4sIHNpemVfdCB0YWdMZW5n
dGgpOwogZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0NSU0FDcnlwdG9yQ3JlYXRlRnJvbURh
dGEoQ0NSU0FLZXlUeXBlIGtleVR5cGUsIGNvbnN0IHVpbnQ4X3QgKm1vZHVsdXMsIHNpemVfdCBt
b2R1bHVzTGVuZ3RoLCBjb25zdCB1aW50OF90ICpleHBvbmVudCwgc2l6ZV90IGV4cG9uZW50TGVu
Z3RoLCBjb25zdCB1aW50OF90ICpwLCBzaXplX3QgcExlbmd0aCwgY29uc3QgdWludDhfdCAqcSwg
c2l6ZV90IHFMZW5ndGgsIENDUlNBQ3J5cHRvclJlZiAqcmVmKTsKIAogI2VuZGlmIC8vICFVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1YzAzYjUyNDQ5YmQ0N2VlMTNl
YjlmZDY1MzkyODNkZGViYzI4MmVhLi5hZDFlN2UxZGEwYmVhYWFhZjFlYWVkODM5NDUyMWFkMWJk
MmRhNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjU2LDcgKzI1Niw5IEBAIE1vZHVsZXMvcGljdHVy
ZWlucGljdHVyZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCiBNb2R1bGVzL3BpY3R1cmVp
bnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwCiBNb2R1bGVzL3BpY3R1cmVp
bnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJblBpY3R1cmUuY3BwCiBNb2R1bGVzL3Bp
Y3R1cmVpbnBpY3R1cmUvUGljdHVyZUluUGljdHVyZVdpbmRvdy5jcHAKK01vZHVsZXMvcHVzaC1h
cGkvUHVzaENyeXB0by5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaEV2ZW50LmNwcAorTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1l
c3NhZ2VEYXRhLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAogTW9k
dWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAppbmRleCBjNzlmYzRkNzhjNjIxMDUxODk2MWVmMWM2NDEzMjM3YTVhYzc0NDBk
Li5lMGQzZGZjZDE2MzI0ZjBiNDgwZjdiYjNhNjM1Njg0YjAwNjVjMjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTEwNiw2ICsxMDYsNyBAQCBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlci5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJDbGllbnQubW0KIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
c2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5tbQorTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9Q
dXNoQ3J5cHRvQ29jb2EuY3BwCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVy
Q29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1t
CiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxZGZiZTQ0NGQwZjFkZDg1MGZkYzZiM2JkOTZlZGFlNmFkY2U2NGRkLi5jMjIxZGEzMWQ4ZjE5
ZTgzODhkOTgwMmNjYzVmYTk3MTc4MGU1NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDMwLDYgKzU0MzAsOCBAQAogCQlF
QjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMjhFRDQxMjcxN0FCQTkw
MDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCM0MyOUI2MjcyOUMzODgwMEZCNjVCNCAvKiBQ
dXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVCM0MyOUI0MjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnQuaCAqLzsgfTsKIAkJRUIzQzI5QjcyNzI5QzM4QzAwRkI2NUI0IC8q
IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCM0MyOUIxMjcyOUMzNkQwMEZCNjVCNCAvKiBQdXNo
U3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRJbml0LmggKi87IH07CisJCUVCQTc1QzQ2Mjc1RUM2MUEw
MEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFQkE3NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0by5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUVCQTc1QzQ3
Mjc1RUM2MjEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJBNzVDNDAyNzVFQkRBQTAwRDZEMzFDIC8q
IFB1c2hNZXNzYWdlQ3J5cHRvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRUJCOTczODEyNzEwMDY3MTAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM4MDI3
MTAwNjU0MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCAqLzsgfTsKIAkJRUJCOTczODIyNzEwMDY3
NjAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3Mzc4MjcxMDA2NTEwMDc3MzJFRiAvKiBQdXNo
UGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRUJCOTczODMyNzEwMDY4NDAwNzczMkVGIC8qIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25QdXNoQVBJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQkI5NzM3QTI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblB1c2hBUEkuaCAqLzsgfTsKQEAgLTE3NTU5LDYgKzE3NTYxLDExIEBACiAJCUVCM0MyOUIy
MjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRJbml0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRJbml0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIzQzI5QjMyNzI5QzM2RTAwRkI2NUI0
IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRUIzQzI5QjQyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDM0Uy
NzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RUJBNzVDNDAyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUVCQTc1QzQxMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFB1c2hDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3
NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNo
Q3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQ1Mjc1RUM1OEUw
MEQ2RDMxQyAvKiBQdXNoQ3J5cHRvQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaENy
eXB0b0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJCOTczNzgyNzEw
MDY1MTAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVz
aFBlcm1pc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3
QTI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJCOTczN0IyNzEwMDY1MjAwNzczMkVGIC8qIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24rUHVzaEFQSS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24rUHVzaEFQSS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEw
MDcsNiArMjEwMTQsOSBAQAogCQk0MThGQ0JCODI3MDZFNEJEMDBGOTZFQ0EgLyogcHVzaC1hcGkg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUVCQTc1QzQ0
Mjc1RUM1NjAwMEQ2RDMxQyAvKiBjb2NvYSAqLywKKwkJCQlFQkE3NUM0MTI3NUVCREFCMDBENkQz
MUMgLyogUHVzaENyeXB0by5jcHAgKi8sCisJCQkJRUJBNzVDNDIyNzVFQkRBQjAwRDZEMzFDIC8q
IFB1c2hDcnlwdG8uaCAqLywKIAkJCQlFQjBGQjZGRDI3MEQwQUU4MDBGNzgxMEQgLyogUHVzaEVu
Y3J5cHRpb25LZXlOYW1lLmggKi8sCiAJCQkJRUIwRkI3MDAyNzBEMEFFQTAwRjc4MTBEIC8qIFB1
c2hFbmNyeXB0aW9uS2V5TmFtZS5pZGwgKi8sCiAJCQkJNDE4RkNCQkIyNzA2RTRGNjAwRjk2RUNB
IC8qIFB1c2hFdmVudC5jcHAgKi8sCkBAIC0yMTAxNyw2ICsyMTAyNyw4IEBACiAJCQkJRUJCOTcz
N0MyNzEwMDY1MjAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmNwcCAqLywKIAkJCQlFQkI5NzM4MDI3
MTAwNjU0MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCAqLywKIAkJCQlFQkI5NzM3RTI3MTAwNjUz
MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaWRsICovLAorCQkJCUVCQTc1QzNFMjc1RUJEQUEwMEQ2
RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8sCisJCQkJRUJBNzVDNDAyNzVFQkRBQTAw
RDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggKi8sCiAJCQkJNDE4RkNCQkUyNzA2RTRGNzAw
Rjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5jcHAgKi8sCiAJCQkJNDE4RkNCQkMyNzA2RTRGNjAw
Rjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5oICovLAogCQkJCTQxOEZDQkJBMjcwNkU0RjUwMEY5
NkVDQSAvKiBQdXNoTWVzc2FnZURhdGEuaWRsICovLApAQCAtMzExOTEsNiArMzEyMDMsMTQgQEAK
IAkJCXBhdGggPSAiY29udGFjdC1waWNrZXIiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJRUJBNzVDNDQyNzVFQzU2MDAwRDZEMzFDIC8qIGNvY29hICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFQkE3NUM0NTI3NUVDNThFMDBENkQz
MUMgLyogUHVzaENyeXB0b0NvY29hLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4
RDkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTM2MzUzLDEwICszNjM3MywxMiBAQAogCQkJCTU3MzAzQkVCMjAwOTdGNDAwMDM1NTk2NSAvKiBQ
dWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDA4MUZGMDAxNkIw
QTJEMzAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTBGQjA4
NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUVCQTc1QzQ2Mjc1RUM2MUEwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFQjBGQjcwODI3MEQwQjEwMDBGNzgxMEQgLyogUHVzaEVuY3J5cHRpb25LZXlOYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGQ0JDMTI3MDZFNEZCMDBGOTZFQ0EgLyogUHVzaEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGQ0JDMjI3MDZFNTAxMDBGOTZFQ0EgLyogUHVz
aEV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJCOTczODEyNzEwMDY3MTAwNzczMkVG
IC8qIFB1c2hNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFQkE3NUM0NzI3NUVDNjIxMDBE
NkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUVCQjk3Mzgy
MjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEgLyogUHVzaFB1bGxGSUZPLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFQjBGQjcwOTI3MEQwQjE4MDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZGVhYmZmYmZiNGU4OTZkMmU5Zjk2MGZkOThkMDUwOGNmZWU0Mzk2Zi4uMjc3
NmI3ZGIwNWZlZDAwYzM0NTZmMWFiNDU1YTI4NGFmM2EwMGYxNCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEy
LTA2ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBt
ZXNzYWdlIGRlY3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1B1c2hNZXNzYWdlQ3J5cHRvLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpt
dXN0QmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VBRVMxMjhH
Q01DbGllbnRLZXlzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VBRVNHQ01DbGllbnRL
ZXlzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEyLTA2ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgR1BVIFByb2Nlc3MgZmVh
dHVyZSBmbGFncwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MjZmZTUwZGVmOGJmNzJmMGM3
NTVmOTUyZjFkZjEzYjVhY2VjNjI4Li4zYTRjY2I1Y2RiMzMyODNlOWYzZjgxNjQ2ZTUwMjYxMmZk
MWMyNWM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTkyLDYgKzk5Miw3IEBACiAJCUU1
QUE0MkYyMjU5MTI4QUUwMDQxMEEzRCAvKiBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUFBNDJGMTI1OTEy
OEFFMDA0MTBBM0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tICovOyB9OwogCQlFNUFB
OEQxRDI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUg
LyogRGF0ZUlucHV0VGVzdHMubW0gKi87IH07CiAJCUVCMjMwRDQxMjQ1RTgxM0YwMEM2NkFEMSAv
KiBJREJDaGVja3BvaW50V0FMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8qIElEQkNoZWNr
cG9pbnRXQUwuaHRtbCAqLzsgfTsKKwkJRUJBNzVDNDkyNzVFRDdDNzAwRDZEMzFDIC8qIFB1c2hN
ZXNzYWdlQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAg
Ki87IH07CiAJCUVDQTY4MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDRDFF
NjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDAxMEI4MDI0
REEyNEFDMDBBODc2RTIgLyogTmF2aWdhdGlvblN3aXBlVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAxMEI3RjI0REEyNEFDMDBBODc2RTIg
LyogTmF2aWdhdGlvblN3aXBlVGVzdHMubW0gKi87IH07CiAJCUY0MDEwQjgzMjREQTI2N0YwMEE4
NzZFMiAvKiBQb3NlQXNDbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MDEwQjgxMjREQTI2N0YwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5tbSAq
LzsgfTsKQEAgLTI5MTYsNiArMjkxNyw3IEBACiAJCUU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAv
KiBEYXRlSW5wdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGVJbnB1dFRlc3Rz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIzMEQzRDI0NUU3MjJFMDBDNjZB
RDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
SURCQ2hlY2twb2ludFdBTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIz
MEQzRTI0NUU3MjYzMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVz
c2FnZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAv
KiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJr
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MENEMUU2OENDMDkw
MDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9
IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0zNzA2
LDYgKzM3MDgsNyBAQAogCQkJCUFBOTZDQUI0MjFDN0RCNDIwMEZEMkY5NyAvKiBQYXJzZWRDb250
ZW50VHlwZS5jcHAgKi8sCiAJCQkJNkIwQTA3RjYyMUZBOUMyQjAwRDU3MzkxIC8qIFByaXZhdGVD
bGlja01lYXN1cmVtZW50LmNwcCAqLywKIAkJCQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyog
UHVibGljU3VmZml4LmNwcCAqLywKKwkJCQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMgLyogUHVz
aE1lc3NhZ2VDcnlwdG8uY3BwICovLAogCQkJCTZCNEU4NjFCMjIyMEE1NTIwMDIyRjM4OSAvKiBS
ZWdpc3RyYWJsZURvbWFpbi5jcHAgKi8sCiAJCQkJRjQxOEJFMTQxRjcxQjdEQzAwMTk3MEU2IC8q
IFJvdW5kZWRSZWN0VGVzdHMuY3BwICovLAogCQkJCTQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAv
KiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLywKQEAgLTU1OTcsNiArNTYwMCw3
IEBACiAJCQkJNDY0N0IxMjYxRUJBM0I4NTAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVDMkE4NTYyNENFQjY1RjAwQURCQzM1IC8qIFByb3Bl
cnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlFMEEg
LyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVCQTc1QzQ5Mjc1RUQ3Qzcw
MEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2QjRF
ODYxQzIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdGMEQxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM5MUE0MTFBN0UwMDQ0N0M0QyAvKiBSZW5k
ZXJlZEltYWdlRnJvbURPTU5vZGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmMzk0NjhlMTQ0NDA0ZjhkOWYxNzNmYzdlYzNjN2M2Y2RjZDc4YTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VD
cnlwdG8uY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisj
aW5jbHVkZSA8V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTo6UHVzaENyeXB0bzsKKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBtdXN0QmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3sKKyAgICByZXR1cm4gYmFzZTY0VVJM
RGVjb2RlKGVuY29kZWQpLnZhbHVlKCk7Cit9CisKK3N0YXRpYyBDbGllbnRLZXlzIG1ha2VBRVMx
MjhHQ01DbGllbnRLZXlzKHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2YWx1ZXMgZnJvbSBSRkM4
MjkxIFNlY3Rpb24gNS4KKyAgICBhdXRvIHB1YmxpY0tleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUo
IkJDVnhzcjdOX2VOZ1ZScXZIdEQwelRac0VjNi1WVi1KdkxleGhxVXpPUmN4YU96aTYtQVlXWHZU
QkhtNGJqeVBqczdWZDhwWkdINlNScGtOdG9JQWl3NCJfcyk7CisgICAgYXV0byBwcml2YXRlS2V5
ID0gbXVzdEJhc2U2NFVSTERlY29kZSgicTFkWHB3M1VwVDVWT211X2NmX3Y2aWgwN0FlbXMzbmp4
SS1KV2dMY005NCJfcyk7CisgICAgYXV0byBzZWNyZXQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJC
VEJaTXFISDZyNFR0czdKX2FTSWdnIl9zKTsKKworICAgIHJldHVybiBDbGllbnRLZXlzIHsKKyAg
ICAgICAgUDI1NkRIS2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRl
S2V5KSB9LAorICAgICAgICBXVEZNb3ZlKHNlY3JldCkKKyAgICB9OworfQorCitzdGF0aWMgQ2xp
ZW50S2V5cyBtYWtlQUVTR0NNQ2xpZW50S2V5cyh2b2lkKQoreworICAgIC8vIEV4YW1wbGUgdmFs
dWVzIGZyb20gZHJhZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24tMDQgU2VjdGlvbiA1LgorICAg
IGF1dG8gcHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQkNFa0Jqekw4WjNDLW9pMlE3
b0U1dDJOcC1wN29zakdMZzkzcVVQMHd2cVJUMjFFRVd5ZjBjUURRY2FrUU1xejRoUUtZT1EzaWwy
bk5aY3Q0SGdBVVFVIl9zKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBtdXN0QmFzZTY0VVJMRGVj
b2RlKCI5RldsMTVfUVVRQVdEYUQzazNsNTBaQlpRSjRhdTI3RjFWNEYwdUxTRF9NIl9zKTsKKyAg
ICBhdXRvIHNlY3JldCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIlIyOXZJR2R2YnlCbkp5QnFiMjlp
SVEiX3MpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2REhLZXlQYWly
IHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0sCisgICAgICAgIFdU
Rk1vdmUoc2VjcmV0KQorICAgIH07Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFUzEy
OEdDTVBheWxvYWRXaXRoTWluaW1hbFBhZGRpbmcpCit7CisgICAgYXV0byBjbGllbnRLZXlzID0g
bWFrZUFFUzEyOEdDTUNsaWVudEtleXMoKTsKKworICAgIC8vIEV4YW1wbGUgcGF5bG9hZCBmcm9t
IFJGQzgyOTEgU2VjdGlvbiA1LgorICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNv
ZGUoIkRHdjZyYTFubFlnRENTMUZSbmJ6bHdBQUVBQkJCUDR6OUtzTjZuR1JUYlZZSV9jN1ZKU1BR
VEJ0a2djeTI3bWxtbE1vWklJZ0RsbDZlM3ZDWUxvY0lubVlXQW1TNlRsekFDOHdFcUtLNlBCcnUz
amw3QV95bDk1YlFwdTZjVlBUcEs0TXFna2YxQ1h6dExWQlN0MktzM29ad2J1d1hQWExXeW91QldM
VldHTldRZXhTZ1N4c2pfUXVsY3k0YS1mTiJfcyk7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0
QUVTMTI4R0NNUGF5bG9hZChjbGllbnRLZXlzLCBwYXlsb2FkKTsKKworICAgIEFTU0VSVF9UUlVF
KHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgYXV0byBhY3R1YWwgPSBTdHJpbmc6OmFkb3B0KFdU
Rk1vdmUoKnJlc3VsdCkpOworICAgIEFTU0VSVF9FUSgiV2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0
byBiZSBhIHdhdGVybWVsb24iX3MsIGFjdHVhbCk7Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlw
dG8sIEFFU0dDTVBheWxvYWRXaXRoTWluaW1hbFBhZGRpbmcpCit7CisgICAgLy8gRXhhbXBsZSB2
YWx1ZXMgZnJvbSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNCBTZWN0aW9uIDUuCisg
ICAgYXV0byBjbGllbnRLZXlzID0gbWFrZUFFU0dDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHNh
bHQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJsbmdhcmJ5S2ZNb2k5Wjc1eFlYbWtnIl9zKTsKKyAg
ICBhdXRvIHNlcnZlclB1YmxpY0tleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJOb1JEYmI4NEpH
bThnNVo1Q0Z4dXJTcXNYV0oxMUl0ZlhFV1lWTEU4NVk3Q1lrRGpYc0lFYzRhcXhZYVExRzhCcWtY
Q0o2RFBwRHJXdGRXal9tdWdIVSJfcyk7CisKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0
VVJMRGVjb2RlKCI2bnFBUVVNRThoTnF3NUoza2w4Y3BWVkp5bFhLWXFaT2VzZVpHOFV1ZUtwQSJf
cyk7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVTR0NNUGF5bG9hZChjbGllbnRLZXlzLCBz
ZXJ2ZXJQdWJsaWNLZXksIHNhbHQsIHBheWxvYWQpOworCisgICAgQVNTRVJUX1RSVUUocmVzdWx0
Lmhhc192YWx1ZSgpKTsKKyAgICBhdXRvIGFjdHVhbCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgq
cmVzdWx0KSk7CisgICAgQVNTRVJUX0VRKCJJIGFtIHRoZSB3YWxydXMiX3MsIGFjdHVhbCk7Cit9
CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446121</attachid>
            <date>2021-12-06 22:11:57 -0800</date>
            <delta_ts>2021-12-13 23:14:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211206221156.patch</filename>
            <type>text/plain</type>
            <size>52325</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlMWM0ODhlNzY0ODdk
YzM0ZDNlOWRjMTViNzllZjdjNjY5NDgzOC4uODcxM2EwOGYyNDNlNTU4MWJhMmYzY2ZmYmE5MWNh
NDU1NjcyY2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgYWRkcyByb3V0aW5lcyB0byBkZWNyeXB0IHB1c2ggcGF5bG9hZHMgZW5j
b2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gYW5kIGFlc2djbSBzY2hlbWVzLgorICAgICAgICBUaGUg
Y3J5cHRvIHByaW1pdGl2ZXMgdGhhdCB3ZSBkZXBlbmQgYXJlIGltcGxlbWVudGVkIGluIFB1c2hD
cnlwdG8sIHdoaWxlIHRoZSBsb2dpYyB0byB1c2UKKyAgICAgICAgdGhvc2UgcHJpbWl0aXZlcyB0
byBkZWNyeXB0IG1lc3NhZ2UgcGF5bG9hZHMgaXMgaW4gUHVzaE1lc3NhZ2VDcnlwdG8uCisKKyAg
ICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS5QdXNoTWVzc2FnZUNyeXB0bworCisgICAgICAgICog
SGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OnZhbGlkYXRlUDI1NkRIUHVi
bGljS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVQMjU2REhTaGFy
ZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6aG1hY1NIQTI1Nik6Cisg
ICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4R0NNKToKKyAgICAgICAg
KiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdXNoTWFuYWdl
cjo6c3Vic2NyaWJlKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5
cHRvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpDbGllbnRLZXlz
OjpnZW5lcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjphcmVDbGllbnRLZXlM
ZW5ndGhzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6Y29tcHV0ZUFFUzEy
OEdDTVBhZGRpbmdMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlw
dEFFUzEyOEdDTVBheWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6Y29tcHV0
ZUFFU0dDTVBhZGRpbmdMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVj
cnlwdEFFU0dDTVBheWxvYWQpOgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3Nh
Z2VDcnlwdG8uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNo
Q3J5cHRvQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OlAy
NTZESEtleVBhaXI6OmdlbmVyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OnZh
bGlkYXRlUDI1NkRIUHVibGljS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNv
bXB1dGVQMjU2REhTaGFyZWRTZWNyZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6
aG1hY1NIQTI1Nik6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpkZWNyeXB0QUVTMTI4
R0NNKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0x
Mi0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBjYWxsIHRvIG9zX3NpZ25wb3N0IHRvIHRhZyBhIG1vbWVudHVtIHNjcm9sbCBhbmltYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDgxMTA4MTNjMjE5NzQ3ZmZlOGNiYjc2NjY5NGFjMzI3
ZWFhNjc1NTAuLmYwNmQ0NTlkNmM5N2U4ZDFiZTMwNGNiNjkwOWMxZDFjOWNlM2YzOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTA2ICBCZW4gTmhhbSAgPG5o
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRlY3J5cHRpb24g
cm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaDogQWRkIEFFUy1HQ00gZGVjcnlwdGlv
biBTUEkuCisKIDIwMjEtMTItMDIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZS1hZGQgc3VwcG9ydCBvZiBpbWFnZSBjb250cm9sIG1lbnVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggMzMxNTNlZGQ4MDU1NzJkYTA1YWE2YWQ5OTlhMTdkMmYyMDVh
YmYxYS4uMDYwZWRmOTQzNTlkNzgyNWE5Y2E5NTZjYTQwYjg3YjY5YzcyZjM5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0yODgsNiArMjg4LDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIE1vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbk9ic2VydmVyLmgK
ICAgICBNb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25TdGF0ZS5oCiAKKyAgICBNb2R1bGVz
L3B1c2gtYXBpL1B1c2hDcnlwdG8uaAorICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VD
cnlwdG8uaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0ZS5oCiAgICAg
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZWM4MmU5
Mzc5ZjY3Nzg3MTk4ZTZmODA4M2MxYTIzYTJiZTliYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENyeXB0
by5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCisj
aWYgIVBMQVRGT1JNKENPQ09BKQorCitQMjU2REhLZXlQYWlyIFAyNTZESEtleVBhaXI6OmdlbmVy
YXRlKHZvaWQpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCB2YWxpZGF0ZVAyNTZESFB1
YmxpY0tleShTcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQMjU2REhTaGFyZWRTZWNyZXQo
U3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXksIGNvbnN0IFAyNTZESEtleVBhaXImIGtleVBh
aXIpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGht
YWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90PikKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlw
dEFFUzEyOEdDTShTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+KQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYjE2ZTg1NGQ5NDM2MTQxNzVjMzdhZTdiM2VhNjliOTk0ZmViMDNlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvU3Bh
bi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgUHVzaENyeXB0byB7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZkaFB1
YmxpY0tleUxlbmd0aCA9IDY1Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcDI1NmRoUHJpdmF0
ZUtleUxlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcDI1NmRoU2hhcmVkU2Vj
cmV0TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGEyNTZEaWdlc3RMZW5n
dGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFlczEyOEdDTVRhZ0xlbmd0aCA9IDE2
OworCitzdHJ1Y3QgUDI1NkRIS2V5UGFpciB7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0tl
eTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUtleTsKKworICAgIHN0YXRpYyBQMjU2REhL
ZXlQYWlyIGdlbmVyYXRlKHZvaWQpOworfTsKKworYm9vbCB2YWxpZGF0ZVAyNTZESFB1YmxpY0tl
eShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSk7CisKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KFNwYW48
Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJik7CisKK1dFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhfdD4g
a2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25zdCB1aW50OF90PiBj
aXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAppbmRleCAz
NzFlOGRjYmY5ZGIzNjZmZDg1ZDI0NTBkMGEwNDY2NGEwNGRiMmZlLi40YzcxNTYyY2QwNDY0N2Ix
MDc3ODQ0OTUxYWUyZTdlOGE3YzVhYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1ZGUg
IkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTUHVzaFBl
cm1pc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIkpTUHVzaFN1YnNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIlB1c2hDcnlwdG8uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CkBAIC0xMDEsMTQgKzEwMSw3IEBAIHZvaWQgUHVzaE1hbmFnZXI6OnN1
YnNjcmliZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBz
dGQ6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShXRUJfQ1JZ
UFRPKQotICAgICAgICBhdXRvIGtleURhdGEgPSBrZXlEYXRhUmVzdWx0LnJldHVyblZhbHVlKCk7
Ci0gICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQSwgIlAtMjU2Il9zLCBXVEZNb3ZlKGtleURhdGEpLCBmYWxzZSwg
Q3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwotI2Vsc2UKLSAgICAgICAgYXV0byBrZXkgPSBudWxscHRy
OwotI2VuZGlmCi0KLSAgICAgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgaWYgKCFQdXNoQ3J5cHRv
Ojp2YWxpZGF0ZVAyNTZESFB1YmxpY0tleShrZXlEYXRhUmVzdWx0LnJldHVyblZhbHVlKCkpKSB7
CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IsICJhcHBsaWNhdGlvblNlcnZlcktleSBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQLTI1NiBwdWJs
aWMga2V5Il9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjYzEyNGI4NWE1ZTI3YzIyYmE4M2Y1ZWU5ZTRhNzI5MDdlNjg2NmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdl
Q3J5cHRvLmNwcApAQCAtMCwwICsxLDMwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUNyeXB0by5oIgorCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCisjaW5jbHVkZSAiUHVzaENyeXB0by5oIgorI2luY2x1ZGUgPHd0Zi9CeXRl
T3JkZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8vIEFy
Yml0cmFyeSBsaW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBBUE5T
IHNob3VsZCBldmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNoUGF5
bG9hZExlbmd0aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBzYWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFyZWRB
dXRoU2VjcmV0TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJhdGUo
KQoreworICAgIHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVuZ3Ro
XTsKKyAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0LCBz
aXplb2Yoc2hhcmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAg
ICAgICBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhfdD4g
eyBzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07Cit9
CisKK3N0YXRpYyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRLZXlz
JiBjbGllbnRLZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBh
aXIucHVibGljS2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50S2V5
cy5jbGllbnRQMjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZhdGVL
ZXlMZW5ndGggJiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFyZWRB
dXRoU2VjcmV0TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01QYWRk
aW5nTGVuZ3RoKGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAgIC8q
CisgICAgICogQ29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODggU2Vj
dGlvbiAyOgorICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICogICB8
ICAgZGF0YSAgICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICoK
KyAgICAgKiBwYWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1pdGVy
IG9jdGV0ICgweDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgorICAg
ICAqLworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBj
b25zdCB1aW50OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBj
dXIgPSBlbmQgLSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAwKSkK
KyAgICAgICAgLS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJuIFNJ
WkVfTUFYOworCisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmIGNs
aWVudEtleXMsIFNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFyZUNs
aWVudEtleUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVhZGVy
IGFzIGRlc2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsKKyAg
ICAgICAgdWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9yZWRb
NF07CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZlclB1
YmxpY0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1pblB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAvKiBt
aW5QYWRkaW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBheWxv
YWQuc2l6ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBtYXhQ
dXNoUGF5bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFBh
eWxvYWRIZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEoKSwg
c2l6ZW9mKGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRoUHVi
bGljS2V5TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAg
ICAgKiBUaGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5MSAz
LjQuCisgICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhfc2Vj
cmV0ID0gRUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBlY2Ro
U2VjcmV0UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVyUHVi
bGljS2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNkaFNl
Y3JldFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisgICAg
ICogIyBIS0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQorICAg
ICAqIFBSS19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAg
ICAqLworICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhT
ZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFu
ZChQUktfa2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2ViUHVz
aDogaW5mbyIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtNID0g
SE1BQy1TSEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAgc3Ry
dWN0IEtleUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6IGlu
Zm8iIH07CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07
CisgICAgICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07CisgICAg
ICAgIHVpbnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEtleUluZm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5KGtl
eUluZm8uY2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGljS2V5
LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5zZXJ2
ZXJLZXksIGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisK
KyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAgICAq
ICMgSEtERi1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2Fs
dCwgSUtNKQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBMX2Nl
az0xNikKKyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20iIHx8
IDB4MDAKKyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVsw
Li4xNV0KKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAiQ29u
dGVudC1FbmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1hY1NI
QTI1NihwcmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNlay5z
aHJpbmsoMTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2VfaW5m
bywgTF9ub25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5v
bmNlIiB8fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZv
IHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNl
SW5mb1tdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8gbm9u
Y2UgPSBobWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8pIC0g
MSkpOworICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdp
dGggQUVTMTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRv
IGNpcGhlclRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBheWxv
YWQuc2l6ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0ID0g
ZGVjcnlwdEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBsYWlu
VGV4dFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90IHBh
ZGRpbmdMZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQuZGF0
YSgpLCBwbGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpFX01B
WCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJpbmso
cGxhaW5UZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRleHQ7
Cit9CisKK3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3QgdWlu
dDhfdCAqYmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRlIHBh
ZGRpbmcgbGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRpb24t
ZW5jb2RpbmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAgICAg
KiAgIHwgcGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAg
ICAgKgorICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQgaW50
ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBudW1i
ZXIgb2YgMHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVzLgor
ICAgICAqLworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisK
KyAgICB1aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0aCwg
YmVnaW4sIDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsKKwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90KiBl
bmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRpbmdM
ZW5ndGg7CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRpbmdM
ZWZ0KSB7CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0KKwor
ICAgIGlmIChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAgcmV0
dXJuIGN1ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVj
cnlwdEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgU3Bhbjxjb25z
dCB1aW50OF90PiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIFNwYW48Y29uc3QgdWludDhfdD4gc2Fs
dCwgU3Bhbjxjb25zdCB1aW50OF90PiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50S2V5
TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXplKCkg
IT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUgYXQg
bGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQgaW4g
dGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcuCisg
ICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXlsb2Fk
LnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJvbSBk
cmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZvciBh
IFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFzX3B1
YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1NkRI
U2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQMjU2
REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVuY29k
aW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYoYXV0
aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktfY29t
YmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNhbHQs
IElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0gIkNv
bnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0gaG1h
Y1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0KTsK
KyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywgc2l6
ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwgaWtt
KTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAgICAq
ICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAgICAg
IDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3ZSBh
bHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBhbmQg
bm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQgdHJh
aWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29udGV4
dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAgdWlu
dDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAgdWlu
dDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAgdWlu
dDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAgdWlu
dDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAgdWlu
dDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5RGVy
aXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29udGV4
dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xpZW50
UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgpOwor
ICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGljS2V5
LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2VrX2lu
Zm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAgICAg
KiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAgICAg
Ki8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVudC1F
bmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9IZWFk
ZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hlYWRl
ciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVvZihj
ZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRvIGNl
ayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKworICAg
IC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwgMHgw
MCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9pbmZv
IHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5vbmNl
SW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90IG5v
bmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07CisgICAg
bWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVhZGVy
KSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAmY29u
dGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2KHBy
aywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxseSwg
ZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRleHQu
CisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9uY2Us
IHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJlc3Vs
dC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01QYWRk
aW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlmIChw
YWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRkaW5n
TGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Njk0OWUwMWJlMDliNGEy
OTdhYTE4ZjEwNTMxYmE5NmJhNTU2MTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworc3RydWN0IENsaWVudEtleXMg
eworICAgIFAyNTZESEtleVBhaXIgY2xpZW50UDI1NkRIS2V5UGFpcjsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gc2hhcmVkQXV0aFNlY3JldDsKKworICAgIHN0YXRpYyBDbGllbnRLZXlzIGdlbmVyYXRl
KCk7Cit9OworCisvLyBEZWNyeXB0cyBhIHB1c2ggcGF5bG9hZCBlbmNvZGVkIHdpdGggdGhlIGFl
czEyOGdjbSBDb250ZW50LUVuY29kaW5nIGFzIGRlc2NyaWJlZCBpbiBSRkM4MjkxLgorV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ01Q
YXlsb2FkKGNvbnN0IENsaWVudEtleXMmLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHBheWxvYWQpOwor
CisvLyBEZWNyeXB0cyBhIHB1c2ggcGF5bG9hZCBlbmNvZGVkIHdpdGggdGhlIGFlc2djbSBDb250
ZW50LUVuY29kaW5nIGFzIGRlc2NyaWJlZCBpbiBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlv
bi0wNC4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNy
eXB0QUVTR0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiwgU3Bhbjxjb25zdCB1aW50OF90PiBz
ZXJ2ZXJQMjU2REhQdWJsaWNLZXksIFNwYW48Y29uc3QgdWludDhfdD4gc2FsdCwgU3Bhbjxjb25z
dCB1aW50OF90PiBwYXlsb2FkKTsKKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0bworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlw
dG9Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hD
cnlwdG9Db2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU4ZTExMjRhNDExOTE3MDdlNWM2YjY4MmNhMGUz
MjQ5MTRjZGU2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQdXNoQ3J5cHRvLmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9u
SE1BQy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJLmg+CisjaW5j
bHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFB1
c2hDcnlwdG8geworCitQMjU2REhLZXlQYWlyIFAyNTZESEtleVBhaXI6OmdlbmVyYXRlKHZvaWQp
Cit7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBudWxscHRyOworICAgIENDRUND
cnlwdG9yUmVmIGNjUHJpdmF0ZUtleSA9IG51bGxwdHI7CisgICAgYXV0byByZWxlYXNlciA9IFdU
Rjo6bWFrZVNjb3BlRXhpdChbJmNjUHVibGljS2V5LCAmY2NQcml2YXRlS2V5XSgpIHsKKyAgICAg
ICAgaWYgKGNjUHVibGljS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNjUHVi
bGljS2V5KTsKKyAgICAgICAgaWYgKGNjUHJpdmF0ZUtleSkKKyAgICAgICAgICAgIENDRUNDcnlw
dG9yUmVsZWFzZShjY1ByaXZhdGVLZXkpOworICAgIH0pOworCisgICAgQ0NDcnlwdG9yU3RhdHVz
IHN0YXR1cyA9IENDRUNDcnlwdG9yR2VuZXJhdGVQYWlyKDI1NiwgJmNjUHVibGljS2V5LCAmY2NQ
cml2YXRlS2V5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2Vzcyk7CisK
KyAgICB1aW50OF90IHB1YmxpY0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIHNpemVf
dCBwdWJsaWNLZXlMZW5ndGggPSBzaXplb2YocHVibGljS2V5KTsKKyAgICBzdGF0dXMgPSBDQ0VD
Q3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIHB1YmxpY0tleSwgJnB1YmxpY0tl
eUxlbmd0aCwgY2NFQ0tleVB1YmxpYywgY2NQdWJsaWNLZXkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHN0YXR1cyA9PSBrQ0NTdWNjZXNzICYmIHB1YmxpY0tleUxlbmd0aCA9PSBzaXplb2YocHVibGlj
S2V5KSk7CisKKyAgICAvLyBDb21tb25DcnlwdG8gZXhwZWN0cyB0aGUgYmluYXJ5IGZvcm1hdCB0
byBiZSA2NSBieXRlIHB1YmxpYyBrZXkgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgcHJpdmF0ZSBr
ZXksIHNvIHdlIHdhbnQgdG8gZXh0cmFjdCB0aGUgbGFzdCAzMiBieXRlcyBmcm9tIHRoZSBidWZm
ZXIuCisgICAgdWludDhfdCBrZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoICsgcDI1NmRoUHJpdmF0
ZUtleUxlbmd0aF07CisgICAgc2l6ZV90IGtleUxlbmd0aCA9IHNpemVvZihrZXkpOworICAgIHN0
YXR1cyA9IENDRUNDcnlwdG9yRXhwb3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwga2V5LCAma2V5
TGVuZ3RoLCBjY0VDS2V5UHJpdmF0ZSwgY2NQcml2YXRlS2V5KTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBrZXlMZW5ndGggPT0gc2l6ZW9mKGtleSkpOworCisg
ICAgcmV0dXJuIFAyNTZESEtleVBhaXIgeworICAgICAgICBWZWN0b3I8dWludDhfdD4geyBwdWJs
aWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCB9LAorICAgICAgICBWZWN0b3I8dWludDhfdD4g
eyBrZXkgKyBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgsIHAyNTZkaFByaXZhdGVLZXlMZW5ndGggfQor
ICAgIH07Cit9CisKK2Jvb2wgdmFsaWRhdGVQMjU2REhQdWJsaWNLZXkoU3Bhbjxjb25zdCB1aW50
OF90PiBwdWJsaWNLZXkpCit7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBudWxs
cHRyOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckltcG9ydEtleShr
Q0NJbXBvcnRLZXlCaW5hcnksIHB1YmxpY0tleS5kYXRhKCksIHB1YmxpY0tleS5zaXplKCksIGNj
RUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSk7CisgICAgaWYgKCFjY1B1YmxpY0tleSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIENDRUNDcnlwdG9yUmVsZWFzZShjY1B1YmxpY0tleSk7Cisg
ICAgcmV0dXJuIHN0YXR1cyA9PSBrQ0NTdWNjZXNzOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHB1YmxpY0tleSwgY29uc3QgUDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVi
bGljS2V5LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNL
ZXkuc2l6ZSgpICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXku
c2l6ZSgpICE9IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBDQ0VDQ3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAg
Q0NFQ0NyeXB0b3JSZWYgY2NQcml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2Vy
ID0gV1RGOjptYWtlU2NvcGVFeGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgewor
ICAgICAgICBpZiAoY2NQdWJsaWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2Uo
Y2NQdWJsaWNLZXkpOworICAgICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NF
Q0NyeXB0b3JSZWxlYXNlKGNjUHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0Ny
eXB0b3JJbXBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2
ZGhQdWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3Vj
Y2VzcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0
byBleHBlY3RzIHRoZSBiaW5hcnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xs
b3dlZCBieSB0aGUgMzIgYnl0ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2
ZGhQdWJsaWNLZXlMZW5ndGggKyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHko
a2V5QnVmLCBrZXlQYWlyLnB1YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7
CisgICAgbWVtY3B5KGtleUJ1ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2
YXRlS2V5LmRhdGEoKSwgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlw
dG9ySW1wb3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwg
Y2NFQ0tleVByaXZhdGUsICZjY1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAy
NTZkaFNoYXJlZFNlY3JldExlbmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9
IHNoYXJlZFNlY3JldC5zaXplKCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNl
Y3JldChjY1ByaXZhdGVLZXksIGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNo
YXJlZFNlY3JldExlbmd0aCkgIT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0g
cDI1NmRoU2hhcmVkU2VjcmV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHNoYXJlZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEy
NTYoU3Bhbjxjb25zdCB1aW50OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkK
K3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAg
Q0NIbWFjKGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2Uu
ZGF0YSgpLCBtZXNzYWdlLnNpemUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NN
KFNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0
aFRhZy5zaXplKCkgPCBhZXMxMjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFn
LnNpemUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0
b3JHQ01PbmVzaG90RGVjcnlwdChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXpl
KCksIGl2LmRhdGEoKSwgaXYuc2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAw
IC8qIGFkZGl0aW9uYWxEYXRhTGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNp
cGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRh
dGEoKSwgY2lwaGVyVGV4dFdpdGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEy
OEdDTVRhZ0xlbmd0aCk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBu
YW1lc3BhY2UgUHVzaENyeXB0bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCmluZGV4IGU1ZGFiZTBmMGYyMWEwMjViNjQyOTIz
ZTMzYjc0YjllYWFhNDQ3ODkuLjNkNjVlM2VjZjQwMmQ5ODIyMDFjNmY2M2JhMTdiYWM2ZDBkZGFj
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNy
eXB0b1NQSS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIAogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG9yU1BJLmg+CkBAIC0xMTgs
NiArMTIwLDcgQEAgZXh0ZXJuICJDIiBDQ1N0YXR1cyBDQ0Rlcml2ZUtleShjb25zdCBDQ0tERlBh
cmFtZXRlcnNSZWYgcGFyYW1zLCBDQ0RpZ2VzdEFsZ29yaXQKIGV4dGVybiAiQyIgQ0NTdGF0dXMg
Q0NLREZQYXJhbWV0ZXJzQ3JlYXRlSGtkZihDQ0tERlBhcmFtZXRlcnNSZWYgKnBhcmFtcywgY29u
c3Qgdm9pZCAqc2FsdCwgc2l6ZV90IHNhbHRMZW4sIGNvbnN0IHZvaWQgKmNvbnRleHQsIHNpemVf
dCBjb250ZXh0TGVuKTsKIGV4dGVybiAiQyIgdm9pZCBDQ0tERlBhcmFtZXRlcnNEZXN0cm95KEND
S0RGUGFyYW1ldGVyc1JlZiBwYXJhbXMpOwogZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMgQ0ND
cnlwdG9yR0NNKENDT3BlcmF0aW9uIG9wLCBDQ0FsZ29yaXRobSBhbGcsIGNvbnN0IHZvaWQqIGtl
eSwgc2l6ZV90IGtleUxlbmd0aCwgY29uc3Qgdm9pZCogaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qg
dm9pZCogYURhdGEsIHNpemVfdCBhRGF0YUxlbiwgY29uc3Qgdm9pZCogZGF0YUluLCBzaXplX3Qg
ZGF0YUluTGVuZ3RoLCB2b2lkKiBkYXRhT3V0LCB2b2lkKiB0YWcsIHNpemVfdCogdGFnTGVuZ3Ro
KTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDQ3J5cHRvckdDTU9uZXNob3REZWNyeXB0
KENDQWxnb3JpdGhtIGFsZywgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5TGVuZ3RoLCBjb25z
dCB2b2lkICAqaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qgdm9pZCAgKmFEYXRhLCBzaXplX3QgYURh
dGFMZW4sIGNvbnN0IHZvaWQgKmRhdGFJbiwgc2l6ZV90IGRhdGFJbkxlbmd0aCwgdm9pZCAgICAg
ICAgKmRhdGFPdXQsIGNvbnN0IHZvaWQgICp0YWdJbiwgc2l6ZV90IHRhZ0xlbmd0aCk7CiBleHRl
cm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JDcmVhdGVGcm9tRGF0YShDQ1JTQUtl
eVR5cGUga2V5VHlwZSwgY29uc3QgdWludDhfdCAqbW9kdWx1cywgc2l6ZV90IG1vZHVsdXNMZW5n
dGgsIGNvbnN0IHVpbnQ4X3QgKmV4cG9uZW50LCBzaXplX3QgZXhwb25lbnRMZW5ndGgsIGNvbnN0
IHVpbnQ4X3QgKnAsIHNpemVfdCBwTGVuZ3RoLCBjb25zdCB1aW50OF90ICpxLCBzaXplX3QgcUxl
bmd0aCwgQ0NSU0FDcnlwdG9yUmVmICpyZWYpOwogCiAjZW5kaWYgLy8gIVVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVjMDNiNTI0NDliZDQ3ZWUxM2ViOWZkNjUzOTI4
M2RkZWJjMjgyZWEuLmFkMWU3ZTFkYTBiZWFhYWFmMWVhZWQ4Mzk0NTIxYWQxYmQyZGE1ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yNTYsNyArMjU2LDkgQEAgTW9kdWxlcy9waWN0dXJlaW5waWN0dXJl
L0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9F
bnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9I
VE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMvcGljdHVyZWlucGlj
dHVyZS9QaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcAorTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5
cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3BwCitNb2R1bGVzL3B1c2gtYXBp
L1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZURhdGEu
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCiBNb2R1bGVzL3B1c2gt
YXBpL1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IGM3OWZjNGQ3OGM2MjEwNTE4OTYxZWYxYzY0MTMyMzdhNWFjNzQ0MGQuLmUwZDNkZmNk
MTYzMjRmMGI0ODBmN2JiM2E2MzU2ODRiMDA2NWMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtMTA2LDYgKzEwNiw3IEBAIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2Vu
ZUtpdE1vZGVsTG9hZGVyLm1tCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVL
aXRNb2RlbExvYWRlckNsaWVudC5tbQogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1Nj
ZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9T
Y2VuZUtpdE1vZGVsUGxheWVyLm1tCitNb2R1bGVzL3B1c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9D
b2NvYS5jcHAKIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQog
TW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkZmJlNDQ0
ZDBmMWRkODUwZmRjNmIzYmQ5NmVkYWU2YWRjZTY0ZGQuLmMyMjFkYTMxZDhmMTllODM4OGQ5ODAy
Y2NjNWZhOTcxNzgwZTU3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MzAsNiArNTQzMCw4IEBACiAJCUVCMjhFRDQ0Mjcx
N0FDMTEwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyOEVENDEyNzE3QUJBOTAwNUYwMzkzIC8q
IFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRUIzQzI5QjYyNzI5QzM4ODAwRkI2NUI0IC8qIFB1c2hTdWJzY3Jp
cHRpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUIzQzI5QjQyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFu
Z2VFdmVudC5oICovOyB9OwogCQlFQjNDMjlCNzI3MjlDMzhDMDBGQjY1QjQgLyogUHVzaFN1YnNj
cmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUIzQzI5QjEyNzI5QzM2RDAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRp
b25DaGFuZ2VFdmVudEluaXQuaCAqLzsgfTsKKwkJRUJBNzVDNDYyNzVFQzYxQTAwRDZEMzFDIC8q
IFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRUJBNzVDNDcyNzVFQzYyMTAw
RDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3MzgwMjcxMDA2NTQwMDc3
MzJFRiAvKiBQdXNoTWFuYWdlci5oICovOyB9OwogCQlFQkI5NzM4MjI3MTAwNjc2MDA3NzMyRUYg
LyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9u
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1
c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVC
Qjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQ
SS5oICovOyB9OwpAQCAtMTc1NTksNiArMTc1NjEsMTEgQEAKIAkJRUIzQzI5QjIyNzI5QzM2RTAw
RkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQjNDMjlCMzI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1
YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdXNoU3Vi
c2NyaXB0aW9uQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
QjNDMjlCNDI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUMzRTI3NUVCREFBMDBE
NkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MDI3
NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVz
aE1lc3NhZ2VDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDEy
NzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVz
aENyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQyMjc1RUJE
QUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hDcnlwdG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDUyNzVFQzU4RTAwRDZEMzFDIC8q
IFB1c2hDcnlwdG9Db2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoQ3J5cHRvQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3ODI3MTAwNjUxMDA3NzMy
RUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoUGVybWlzc2lv
blN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQjk3MzdBMjcxMDA2NTIw
MDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQ
dXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTAwNyw2ICsyMTAx
NCw5IEBACiAJCTQxOEZDQkI4MjcwNkU0QkQwMEY5NkVDQSAvKiBwdXNoLWFwaSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRUJBNzVDNDQyNzVFQzU2MDAw
RDZEMzFDIC8qIGNvY29hICovLAorCQkJCUVCQTc1QzQxMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0
by5oICovLAogCQkJCUVCMEZCNkZEMjcwRDBBRTgwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktl
eU5hbWUuaCAqLywKIAkJCQlFQjBGQjcwMDI3MEQwQUVBMDBGNzgxMEQgLyogUHVzaEVuY3J5cHRp
b25LZXlOYW1lLmlkbCAqLywKIAkJCQk0MThGQ0JCQjI3MDZFNEY2MDBGOTZFQ0EgLyogUHVzaEV2
ZW50LmNwcCAqLywKQEAgLTIxMDE3LDYgKzIxMDI3LDggQEAKIAkJCQlFQkI5NzM3QzI3MTAwNjUy
MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuY3BwICovLAogCQkJCUVCQjk3MzgwMjcxMDA2NTQwMDc3
MzJFRiAvKiBQdXNoTWFuYWdlci5oICovLAogCQkJCUVCQjk3MzdFMjcxMDA2NTMwMDc3MzJFRiAv
KiBQdXNoTWFuYWdlci5pZGwgKi8sCisJCQkJRUJBNzVDM0UyNzVFQkRBQTAwRDZEMzFDIC8qIFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyog
UHVzaE1lc3NhZ2VDcnlwdG8uaCAqLywKIAkJCQk0MThGQ0JCRTI3MDZFNEY3MDBGOTZFQ0EgLyog
UHVzaE1lc3NhZ2VEYXRhLmNwcCAqLywKIAkJCQk0MThGQ0JCQzI3MDZFNEY2MDBGOTZFQ0EgLyog
UHVzaE1lc3NhZ2VEYXRhLmggKi8sCiAJCQkJNDE4RkNCQkEyNzA2RTRGNTAwRjk2RUNBIC8qIFB1
c2hNZXNzYWdlRGF0YS5pZGwgKi8sCkBAIC0zMTE5MSw2ICszMTIwMywxNCBAQAogCQkJcGF0aCA9
ICJjb250YWN0LXBpY2tlciI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlF
QkE3NUM0NDI3NUVDNTYwMDBENkQzMUMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUVCQTc1QzQ1Mjc1RUM1OEUwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvQ29jb2EuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUVENTAxREM5MEIyNDlGMzkwMEFFMThEOSAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzYzNTMsMTAg
KzM2MzczLDEyIEBACiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1OTY1IC8qIFB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgxRkYwMDE2QjBBMkQzMDA4QUFB
N0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMEZCMDg0QjE0RTE1QzdF
MDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUJBNzVD
NDYyNzVFQzYxQTAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCUVC
MEZCNzA4MjcwRDBCMTAwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxOEZDQkMxMjcwNkU0RkIwMEY5NkVDQSAvKiBQdXNoRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxOEZDQkMyMjcwNkU1MDEwMEY5NkVDQSAvKiBQdXNoRXZlbnRJbml0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCQTc1QzQ3Mjc1RUM2MjEwMEQ2RDMxQyAvKiBQ
dXNoTWVzc2FnZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJCOTczODIyNzEwMDY3NjAw
NzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDUx
MUY2MjUwQzFDQkYwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUVCMEZCNzA5MjcwRDBCMTgwMEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkZWFiZmZiZmI0ZTg5NmQyZTlmOTYwZmQ5OGQwNTA4Y2ZlZTQzOTZmLi5mNzI5ZjljYjVjODdl
YjkwNDQ2Nzg5MmUyYmI2OTRhNTQ2OTVhMzA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDYgIEJlbiBO
aGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3NhZ2UgZGVj
cnlwdGlvbiByb3V0aW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3Nh
Z2VDcnlwdG8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11c3RCYXNlNjRV
UkxEZWNvZGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFUzEyOEdDTUNsaWVudEtl
eXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjptYWtlQUVTR0NNQ2xpZW50S2V5cyk6CisKIDIwMjEtMTItMDYgIEpvbiBMZWUgIDxqb25s
ZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBHUFUgUHJvY2VzcyBmZWF0dXJlIGZsYWdz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyNmZlNTBkZWY4YmY3MmYwYzc1NWY5NTJmMWRm
MTNiNWFjZWM2MjguLjNhNGNjYjVjZGIzMzI4M2U5ZjNmODE2NDZlNTAyNjEyZmQxYzI1YzcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTIsNiArOTkyLDcgQEAKIAkJRTVBQTQyRjIyNTkx
MjhBRTAwNDEwQTNEIC8qIFVzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE0MkYxMjU5MTI4QUUwMDQxMEEz
RCAvKiBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gKi87IH07CiAJCUU1QUE4RDFEMjUxNTFD
QzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5w
dXRUZXN0cy5tbSAqLzsgfTsKIAkJRUIyMzBENDEyNDVFODEzRjAwQzY2QUQxIC8qIElEQkNoZWNr
cG9pbnRXQUwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFQjIzMEQzRDI0NUU3MjJFMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5o
dG1sICovOyB9OworCQlFQkE3NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlw
dG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJB
NzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLzsgfTsKIAkJ
RUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDcz
MUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MDEwQjgwMjREQTI0QUMwMEE4
NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDEwQjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0
aW9uU3dpcGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQwMTBCODMyNERBMjY3RjAwQTg3NkUyIC8qIFBv
c2VBc0NsYXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwMTBCODEyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwpAQCAt
MjkxNiw2ICsyOTE3LDcgQEAKIAkJRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1
dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJD
aGVja3BvaW50V0FMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3Bv
aW50V0FMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcy
NjMwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSURCQ2hlY2twb2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8q
IFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNG
QzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3Qu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTM3MDYsNiArMzcwOCw3
IEBACiAJCQkJQUE5NkNBQjQyMUM3REI0MjAwRkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk2QjBBMDdGNjIxRkE5QzJCMDBENTczOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwICovLAogCQkJCTA0MUExRTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZm
aXguY3BwICovLAorCQkJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNy
eXB0by5jcHAgKi8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxl
RG9tYWluLmNwcCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJl
Y3RUZXN0cy5jcHAgKi8sCiAJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovLApAQCAtNTU5Nyw2ICs1NjAwLDcgQEAKIAkJCQk0
NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRUMyQTg1NjI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNT
dWZmaXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUJBNzVDNDkyNzVFRDdDNzAwRDZEMzFDIC8q
IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCNEU4NjFDMjIyMEE1
NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFQzkxQTQxMUE3RTAwNDQ3QzRDIC8qIFJlbmRlcmVkSW1hZ2VG
cm9tRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRm
MWY0NDRiMGRkZDk3ZGVmZmNmOTc1MWI5YWZiYWFlY2U1Mzk1MwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAK
QEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGVzdC5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6
UHVzaENyeXB0bzsKKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBtdXN0QmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3sKKyAgICByZXR1cm4gYmFzZTY0VVJMRGVjb2RlKGVu
Y29kZWQpLnZhbHVlKCk7Cit9CisKK3N0YXRpYyBDbGllbnRLZXlzIG1ha2VBRVMxMjhHQ01DbGll
bnRLZXlzKHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2YWx1ZXMgZnJvbSBSRkM4MjkxIFNlY3Rp
b24gNS4KKyAgICBhdXRvIHB1YmxpY0tleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJDVnhzcjdO
X2VOZ1ZScXZIdEQwelRac0VjNi1WVi1KdkxleGhxVXpPUmN4YU96aTYtQVlXWHZUQkhtNGJqeVBq
czdWZDhwWkdINlNScGtOdG9JQWl3NCJfcyk7CisgICAgYXV0byBwcml2YXRlS2V5ID0gbXVzdEJh
c2U2NFVSTERlY29kZSgicTFkWHB3M1VwVDVWT211X2NmX3Y2aWgwN0FlbXMzbmp4SS1KV2dMY005
NCJfcyk7CisgICAgYXV0byBzZWNyZXQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCVEJaTXFISDZy
NFR0czdKX2FTSWdnIl9zKTsKKworICAgIHJldHVybiBDbGllbnRLZXlzIHsKKyAgICAgICAgUDI1
NkRIS2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9LAor
ICAgICAgICBXVEZNb3ZlKHNlY3JldCkKKyAgICB9OworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5
cHRvLCBBRVMxMjhHQ01QYXlsb2FkV2l0aE1pbmltYWxQYWRkaW5nKQoreworICAgIC8vIEV4YW1w
bGUgcGF5bG9hZCBmcm9tIFJGQzgyOTEgU2VjdGlvbiA1LgorICAgIGF1dG8gY2xpZW50S2V5cyA9
IG1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2
NFVSTERlY29kZSgiREd2NnJhMW5sWWdEQ1MxRlJuYnpsd0FBRUFCQkJQNHo5S3NONm5HUlRiVllJ
X2M3VkpTUFFUQnRrZ2N5MjdtbG1sTW9aSUlnRGxsNmUzdkNZTG9jSW5tWVdBbVM2VGx6QUM4d0Vx
S0s2UEJydTNqbDdBX3lsOTViUXB1NmNWUFRwSzRNcWdrZjFDWHp0TFZCU3QyS3Mzb1p3YnV3WFBY
TFd5b3VCV0xWV0dOV1FleFNnU3hzal9RdWxjeTRhLWZOIl9zKTsKKworICAgIGF1dG8gcmVzdWx0
ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50S2V5cywgcGF5bG9hZCk7CisgICAgQVNT
RVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5n
OjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoIldoZW4gSSBncm93IHVw
LCBJIHdhbnQgdG8gYmUgYSB3YXRlcm1lbG9uIl9zLCBhY3R1YWwpOworfQorCitURVNUKFB1c2hN
ZXNzYWdlQ3J5cHRvLCBBRVMxMjhHQ01QYXlsb2FkV2l0aFBhZGRpbmcpCit7CisgICAgYXV0byBj
bGllbnRLZXlzID0gbWFrZUFFUzEyOEdDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHBheWxvYWQg
PSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJER3Y2cmExbmxZZ0RDUzFGUm5iemx3QUFFQUJCQlA0ejlL
c042bkdSVGJWWUlfYzdWSlNQUVRCdGtnY3kyN21sbWxNb1pJSWdEbGw2ZTN2Q1lMb2NJbm1ZV0Ft
UzZUbHpBQzh3RXFLSzZQQnJ1M2psN0FfRGtOUlhBNkNZRmlHODA1RlZOcVBicjl2OUVXOWxmd3Bu
eTBjIik7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNsaWVu
dEtleXMsIHBheWxvYWQpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisK
KyAgICBhdXRvIGFjdHVhbCA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqcmVzdWx0KSk7CisgICAg
QVNTRVJUX0VRKCJmb29iYXIiX3MsIGFjdHVhbCk7Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlw
dG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoSW5jb3JyZWN0UGFkZGluZykKK3sKKyAgICBhdXRvIGNs
aWVudEtleXMgPSBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gcGF5bG9hZCA9
IG11c3RCYXNlNjRVUkxEZWNvZGUoIkRHdjZyYTFubFlnRENTMUZSbmJ6bHdBQUVBQkJCUDR6OUtz
TjZuR1JUYlZZSV9jN1ZKU1BRVEJ0a2djeTI3bWxtbE1vWklJZ0RsbDZlM3ZDWUxvY0lubVlXQW1T
NlRsekFDOHdFcUtLNlBCcnUzamw3QV9Ea05SWEE2Q2JGaUc4MHpLNkJmMUlSSUw5b3ZqSHA3aUxq
Q3ciKTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50
S2V5cywgcGF5bG9hZCk7CisgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7Cit9
CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoRW1wdHlQbGFp
bnRleHQpCit7CisgICAgYXV0byBjbGllbnRLZXlzID0gbWFrZUFFUzEyOEdDTUNsaWVudEtleXMo
KTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJER3Y2cmExbmxZZ0RD
UzFGUm5iemx3QUFFQUJCQlA0ejlLc042bkdSVGJWWUlfYzdWSlNQUVRCdGtnY3kyN21sbWxNb1pJ
SWdEbGw2ZTN2Q1lMb2NJbm1ZV0FtUzZUbHpBQzh3RXFLSzZQQnJ1M2psN0EtbldBOUpGTFZlUTMy
RVJVTEg4WUVVY0EiKTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxv
YWQoY2xpZW50S2V5cywgcGF5bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1
ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQtPmlzRW1wdHkoKSk7Cit9CisKK3N0YXRpYyBD
bGllbnRLZXlzIG1ha2VBRVNHQ01DbGllbnRLZXlzKHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2
YWx1ZXMgZnJvbSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNCBTZWN0aW9uIDUuCisg
ICAgYXV0byBwdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCQ0VrQmp6TDhaM0Mtb2ky
UTdvRTV0Mk5wLXA3b3NqR0xnOTNxVVAwd3ZxUlQyMUVFV3lmMGNRRFFjYWtRTXF6NGhRS1lPUTNp
bDJuTlpjdDRIZ0FVUVUiX3MpOworICAgIGF1dG8gcHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxE
ZWNvZGUoIjlGV2wxNV9RVVFBV0RhRDNrM2w1MFpCWlFKNGF1MjdGMVY0RjB1TFNEX00iX3MpOwor
ICAgIGF1dG8gc2VjcmV0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiUjI5dklHZHZieUJuSnlCcWIy
OWlJUSJfcyk7CisKKyAgICByZXR1cm4gQ2xpZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBh
aXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdURk1vdmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAg
V1RGTW92ZShzZWNyZXQpCisgICAgfTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVT
R0NNUGF5bG9hZFdpdGhNaW5pbWFsUGFkZGluZykKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBm
cm9tIGRyYWZ0LWlldGYtd2VicHVzaC1lbmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRv
IGNsaWVudEtleXMgPSBtYWtlQUVTR0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gc2FsdCA9IG11
c3RCYXNlNjRVUkxEZWNvZGUoImxuZ2FyYnlLZk1vaTlaNzV4WVhta2ciX3MpOworICAgIGF1dG8g
c2VydmVyUHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQk5vUkRiYjg0SkdtOGc1WjVD
Rnh1clNxc1hXSjExSXRmWEVXWVZMRTg1WTdDWWtEalhzSUVjNGFxeFlhUTFHOEJxa1hDSjZEUHBE
cld0ZFdqX211Z0hVIl9zKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2Rl
KCI2bnFBUVVNRThoTnF3NUoza2w4Y3BWVkp5bFhLWXFaT2VzZVpHOFV1ZUtwQSJfcyk7CisKKyAg
ICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1
YmxpY0tleSwgc2FsdCwgcGF5bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1
ZSgpKTsKKworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQp
KTsKKyAgICBBU1NFUlRfRVEoIkkgYW0gdGhlIHdhbHJ1cyJfcywgYWN0dWFsKTsKK30KKworVEVT
VChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5bG9hZFdpdGhQYWRkaW5nKQoreworICAgIGF1
dG8gY2xpZW50S2V5cyA9IG1ha2VBRVNHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0g
bXVzdEJhc2U2NFVSTERlY29kZSgibG5nYXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0
byBzZXJ2ZXJQdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVa
NUNGeHVyU3FzWFdKMTFJdGZYRVdZVkxFODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQ
cERyV3RkV2pfbXVnSFUiX3MpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNv
ZGUoIjZubkpZU0lQdlFoZ3g4QXBERkRrV1k2djVOOUtBdXVyM052NiJfcyk7CisKKyAgICBhdXRv
IHJlc3VsdCA9IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tl
eSwgc2FsdCwgcGF5bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsK
KworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAg
ICBBU1NFUlRfRVEoImZvb2JhciJfcywgYWN0dWFsKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNy
eXB0bywgQUVTR0NNUGF5bG9hZFdpdGhJbmNvcnJlY3RQYWRkaW5nKQoreworICAgIGF1dG8gY2xp
ZW50S2V5cyA9IG1ha2VBRVNHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJh
c2U2NFVSTERlY29kZSgibG5nYXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2
ZXJQdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVy
U3FzWFdKMTFJdGZYRVdZVkxFODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3Rk
V2pfbXVnSFUiX3MpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjZu
N0pZU05wdEFodHhOTnlBNVl0R3l3S1pHeHdjYkVzQlBxYXV3Il9zKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gZGVjcnlwdEFFU0dDTVBheWxvYWQoY2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBz
YWx0LCBwYXlsb2FkKTsKKyAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKK30K
KworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5bG9hZFdpdGhFbXB0eVBsYWludGV4
dCkKK3sKKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTR0NNQ2xpZW50S2V5cygpOworICAg
IGF1dG8gc2FsdCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoImxuZ2FyYnlLZk1vaTlaNzV4WVhta2ci
X3MpOworICAgIGF1dG8gc2VydmVyUHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQk5v
UkRiYjg0SkdtOGc1WjVDRnh1clNxc1hXSjExSXRmWEVXWVZMRTg1WTdDWWtEalhzSUVjNGFxeFlh
UTFHOEJxa1hDSjZEUHBEcld0ZFdqX211Z0hVIl9zKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0
QmFzZTY0VVJMRGVjb2RlKCI2bm9nUV9wdGJtS3BJQjh5aTRfNEgwTFMiX3MpOworCisgICAgYXV0
byByZXN1bHQgPSBkZWNyeXB0QUVTR0NNUGF5bG9hZChjbGllbnRLZXlzLCBzZXJ2ZXJQdWJsaWNL
ZXksIHNhbHQsIHBheWxvYWQpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7
CisgICAgQVNTRVJUX1RSVUUocmVzdWx0LT5pc0VtcHR5KCkpOworfQorCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447110</attachid>
            <date>2021-12-13 23:14:06 -0800</date>
            <delta_ts>2021-12-13 23:19:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211213231405.patch</filename>
            <type>text/plain</type>
            <size>52412</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM2MGJhNDZjYjFiMGUx
NDEyM2Y5MDg4OWViNWJhYjE2NTdhYTU4Zi4uMTUyYzRkOTIxZjFiNmZkNGMwODNiNTg1N2FlNTY4
NjQ0MjcyNDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBUaGlzIGFkZHMgcm91dGluZXMgdG8gZGVjcnlwdCBwdXNoIHBheWxvYWRzIGVuY29k
ZWQgd2l0aCB0aGUgYWVzMTI4Z2NtIGFuZCBhZXNnY20gc2NoZW1lcy4KKyAgICAgICAgVGhlIGNy
eXB0byBwcmltaXRpdmVzIHRoYXQgd2UgZGVwZW5kIGFyZSBpbXBsZW1lbnRlZCBpbiBQdXNoQ3J5
cHRvLCB3aGlsZSB0aGUgbG9naWMgdG8gdXNlCisgICAgICAgIHRob3NlIHByaW1pdGl2ZXMgdG8g
ZGVjcnlwdCBtZXNzYWdlIHBheWxvYWRzIGlzIGluIFB1c2hNZXNzYWdlQ3J5cHRvLgorCisgICAg
ICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkuUHVzaE1lc3NhZ2VDcnlwdG8KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5l
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjp2YWxpZGF0ZVAyNTZESFB1Ymxp
Y0tleSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAg
ICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFnZXI6
OnN1YnNjcmliZSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0
by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6
Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVu
Z3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhH
Q01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRB
RVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVB
RVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5
cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdl
Q3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENy
eXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjp2YWxp
ZGF0ZVAyNTZESFB1YmxpY0tleSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21w
dXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86Omht
YWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdD
TSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTIt
MTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29udGVudCBwcm9jZXNzIGNyYXNoZXMgYXQgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdDo6bWF0Y2hlc0FsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMWY4OWQwNzU0OTgxY2IxMWY2
YzY1ODVkYzlkZWQyMmFiZjhlOGJhOS4uMDk5Y2FiMWYwNzFjOGYxYWY5NGJmOWJhMTliM2M0ZmYw
MjVlZmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMDYg
IEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3Nh
Z2UgZGVjcnlwdGlvbiByb3V0aW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaDogQWRkIEFFUy1H
Q00gZGVjcnlwdGlvbiBTUEkuCisKIDIwMjEtMTItMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2ODkz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZTQ3YTRiYWNiYTkzMDAzYzllODc4MzRhMjc5ZWI5M2Ew
MmY5NzNjMy4uMjRlNDYxZTdkZWU4M2IwYmM4ZWVhNjkyZjAyM2ZlMTdjMDVhMjY0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0yOTAsNiArMjkwLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbk9ic2VydmVy
LmgKICAgICBNb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25TdGF0ZS5oCiAKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaAorICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3Nh
Z2VDcnlwdG8uaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0ZS5oCiAg
ICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZWM4
MmU5Mzc5ZjY3Nzg3MTk4ZTZmODA4M2MxYTIzYTJiZTliYzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCkBAIC0wLDAgKzEs
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENy
eXB0by5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFB1c2hDcnlwdG8gewor
CisjaWYgIVBMQVRGT1JNKENPQ09BKQorCitQMjU2REhLZXlQYWlyIFAyNTZESEtleVBhaXI6Omdl
bmVyYXRlKHZvaWQpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCB2YWxpZGF0ZVAyNTZE
SFB1YmxpY0tleShTcGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVQMjU2REhTaGFyZWRTZWNy
ZXQoU3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXksIGNvbnN0IFAyNTZESEtleVBhaXImIGtl
eVBhaXIpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90PikKK3sK
KyAgICByZXR1cm4geyB9OworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVj
cnlwdEFFUzEyOEdDTShTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+LCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+KQoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRv
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYjE2ZTg1NGQ5NDM2MTQxNzVjMzdhZTdiM2VhNjliOTk0ZmViMDNlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
U3Bhbi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHAyNTZk
aFB1YmxpY0tleUxlbmd0aCA9IDY1Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcDI1NmRoUHJp
dmF0ZUtleUxlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcDI1NmRoU2hhcmVk
U2VjcmV0TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGEyNTZEaWdlc3RM
ZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFlczEyOEdDTVRhZ0xlbmd0aCA9
IDE2OworCitzdHJ1Y3QgUDI1NkRIS2V5UGFpciB7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHB1Ymxp
Y0tleTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUtleTsKKworICAgIHN0YXRpYyBQMjU2
REhLZXlQYWlyIGdlbmVyYXRlKHZvaWQpOworfTsKKworYm9vbCB2YWxpZGF0ZVAyNTZESFB1Ymxp
Y0tleShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSk7CisKK1dFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KFNw
YW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJik7CisKK1dF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48Y29uc3QgdWludDhf
dD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTShTcGFuPGNvbnN0
IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxjb25zdCB1aW50OF90
PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFB1c2hDcnlwdG8KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAppbmRl
eCAzNzFlOGRjYmY5ZGIzNjZmZDg1ZDI0NTBkMGEwNDY2NGEwNGRiMmZlLi40YzcxNTYyY2QwNDY0
N2IxMDc3ODQ0OTUxYWUyZTdlOGE3YzVhYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hNYW5hZ2VyLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTUHVz
aFBlcm1pc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIkpTUHVzaFN1YnNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIlB1c2hDcnlwdG8uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xMDEsMTQgKzEwMSw3IEBAIHZvaWQgUHVzaE1hbmFnZXI6
OnN1YnNjcmliZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBzdGQ6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKQotICAgICAgICBhdXRvIGtleURhdGEgPSBrZXlEYXRhUmVzdWx0LnJldHVyblZhbHVl
KCk7Ci0gICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpFQ0RTQSwgIlAtMjU2Il9zLCBXVEZNb3ZlKGtleURhdGEpLCBmYWxz
ZSwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwotI2Vsc2UKLSAgICAgICAgYXV0byBrZXkgPSBudWxs
cHRyOwotI2VuZGlmCi0KLSAgICAgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgaWYgKCFQdXNoQ3J5
cHRvOjp2YWxpZGF0ZVAyNTZESFB1YmxpY0tleShrZXlEYXRhUmVzdWx0LnJldHVyblZhbHVlKCkp
KSB7CiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNz
RXJyb3IsICJhcHBsaWNhdGlvblNlcnZlcktleSBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQLTI1NiBw
dWJsaWMga2V5Il9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRjYzEyNGI4NWE1ZTI3YzIyYmE4M2Y1ZWU5ZTRhNzI5MDdlNjg2NmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNz
YWdlQ3J5cHRvLmNwcApAQCAtMCwwICsxLDMwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUNyeXB0by5oIgorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiUHVzaENyeXB0by5oIgorI2luY2x1ZGUgPHd0Zi9C
eXRlT3JkZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgUHVzaENyeXB0byB7CisKKy8v
IEFyYml0cmFyeSBsaW1pdCB0aGF0J3MgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgcGF5bG9hZCBB
UE5TIHNob3VsZCBldmVyIGdpdmUgdXMuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhQdXNo
UGF5bG9hZExlbmd0aCA9IDY1NTM1OworCisvLyBGcm9tIFJGQzgyOTEuCitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBzYWx0TGVuZ3RoID0gMTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaGFy
ZWRBdXRoU2VjcmV0TGVuZ3RoID0gMTY7CisKK0NsaWVudEtleXMgQ2xpZW50S2V5czo6Z2VuZXJh
dGUoKQoreworICAgIHVpbnQ4X3Qgc2hhcmVkQXV0aFNlY3JldFtzaGFyZWRBdXRoU2VjcmV0TGVu
Z3RoXTsKKyAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhzaGFyZWRBdXRoU2VjcmV0
LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgewor
ICAgICAgICBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSgpLAorICAgICAgICBWZWN0b3I8dWludDhf
dD4geyBzaGFyZWRBdXRoU2VjcmV0LCBzaXplb2Yoc2hhcmVkQXV0aFNlY3JldCkgfQorICAgIH07
Cit9CisKK3N0YXRpYyBib29sIGFyZUNsaWVudEtleUxlbmd0aHNWYWxpZChjb25zdCBDbGllbnRL
ZXlzJiBjbGllbnRLZXlzKQoreworICAgIHJldHVybiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtl
eVBhaXIucHVibGljS2V5LnNpemUoKSA9PSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggJiYgY2xpZW50
S2V5cy5jbGllbnRQMjU2REhLZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpID09IHAyNTZkaFByaXZh
dGVLZXlMZW5ndGggJiYgY2xpZW50S2V5cy5zaGFyZWRBdXRoU2VjcmV0LnNpemUoKSA9PSBzaGFy
ZWRBdXRoU2VjcmV0TGVuZ3RoOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXB1dGVBRVMxMjhHQ01Q
YWRkaW5nTGVuZ3RoKGNvbnN0IHVpbnQ4X3QgKmJlZ2luLCBzaXplX3QgbGVuZ3RoKQoreworICAg
IC8qCisgICAgICogQ29tcHV0ZSBwYWRkaW5nIGxlbmd0aCBhcyBkZWZpbmVkIGluIFJGQzgxODgg
U2VjdGlvbiAyOgorICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgICog
ICB8ICAgZGF0YSAgICB8IHBhZCB8CisgICAgICogICArLS0tLS0tLS0tLS0rLS0tLS0rCisgICAg
ICoKKyAgICAgKiBwYWQgbXVzdCBiZSBvZiBub24temVybyBsZW5ndGggYW5kIGlzIGEgZGVsaW1p
dGVyIG9jdGV0ICgweDAyKSBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDB4MDAgb2N0ZXRzLgor
ICAgICAqLworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAg
ICBjb25zdCB1aW50OF90KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICBjb25zdCB1aW50OF90
KiBjdXIgPSBlbmQgLSAxOworICAgIHdoaWxlIChjdXIgPiBiZWdpbiAmJiAoKmN1ciA9PSAweDAw
KSkKKyAgICAgICAgLS1jdXI7CisgICAgaWYgKCpjdXIgIT0gMHgwMikKKyAgICAgICAgcmV0dXJu
IFNJWkVfTUFYOworCisgICAgcmV0dXJuIGVuZCAtIGN1cjsKK30KKworc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMm
IGNsaWVudEtleXMsIFNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCkKK3sKKyAgICBpZiAoIWFy
ZUNsaWVudEtleUxlbmd0aHNWYWxpZChjbGllbnRLZXlzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIC8vIEV4dHJhY3QgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzIGZyb20gaGVh
ZGVyIGFzIGRlc2NyaWJlZCBpbiBSRkM4MTg4LgorICAgIHN0cnVjdCBQYXlsb2FkSGVhZGVyIHsK
KyAgICAgICAgdWludDhfdCBzYWx0W3NhbHRMZW5ndGhdOworICAgICAgICB1aW50OF90IGlnbm9y
ZWRbNF07CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoOworICAgICAgICB1aW50OF90IHNlcnZl
clB1YmxpY0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIH07CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoUGF5bG9hZEhlYWRlcikgPT0gODYpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1pblB1c2hQYXlsb2FkTGVuZ3RoID0gc2l6ZW9mKFBheWxvYWRIZWFkZXIpICsgMSAv
KiBtaW5QYWRkaW5nTGVuZ3RoICovICsgYWVzMTI4R0NNVGFnTGVuZ3RoOworCisgICAgaWYgKHBh
eWxvYWQuc2l6ZSgpIDwgbWluUHVzaFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZC5zaXplKCkgPiBt
YXhQdXNoUGF5bG9hZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IFBheWxvYWRIZWFkZXIgaGVhZGVyOworICAgIG1lbWNweSgmaGVhZGVyLCBwYXlsb2FkLmRhdGEo
KSwgc2l6ZW9mKGhlYWRlcikpOworCisgICAgaWYgKGhlYWRlci5rZXlMZW5ndGggIT0gcDI1NmRo
UHVibGljS2V5TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoK
KyAgICAgKiBUaGUgcmVzdCBvZiB0aGUgY29tbWVudHMgYXJlIHNuaXBwZXRzIGZyb20gUkZDODI5
MSAzLjQuCisgICAgICoKKyAgICAgKiAtLSBGb3IgYSB1c2VyIGFnZW50OgorICAgICAqIGVjZGhf
c2VjcmV0ID0gRUNESCh1YV9wcml2YXRlLCBhc19wdWJsaWMpCisgICAgICovCisgICAgYXV0byBl
Y2RoU2VjcmV0UmVzdWx0ID0gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChoZWFkZXIuc2VydmVy
UHVibGljS2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAgIGlmICghZWNk
aFNlY3JldFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8qCisg
ICAgICogIyBIS0RGLUV4dHJhY3Qoc2FsdD1hdXRoX3NlY3JldCwgSUtNPWVjZGhfc2VjcmV0KQor
ICAgICAqIFBSS19rZXkgPSBITUFDLVNIQS0yNTYoYXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQor
ICAgICAqLworICAgIGF1dG8gcHJrS2V5ID0gaG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1
dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0KTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4
cGFuZChQUktfa2V5LCBrZXlfaW5mbywgTF9rZXk9MzIpCisgICAgICoga2V5X2luZm8gPSAiV2Vi
UHVzaDogaW5mbyIgfHwgMHgwMCB8fCB1YV9wdWJsaWMgfHwgYXNfcHVibGljCisgICAgICogSUtN
ID0gSE1BQy1TSEEtMjU2KFBSS19rZXksIGtleV9pbmZvIHx8IDB4MDEpCisgICAgICovCisgICAg
c3RydWN0IEtleUluZm8geworICAgICAgICB1aW50OF90IGxhYmVsWzE0XSA9IHsgIldlYlB1c2g6
IGluZm8iIH07CisgICAgICAgIHVpbnQ4X3QgY2xpZW50S2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0
aF07CisgICAgICAgIHVpbnQ4X3Qgc2VydmVyS2V5W3AyNTZkaFB1YmxpY0tleUxlbmd0aF07Cisg
ICAgICAgIHVpbnQ4X3QgZW5kID0gMHgwMTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKEtleUluZm8pID09IDE0NSk7CisKKyAgICBLZXlJbmZvIGtleUluZm87CisgICAgbWVtY3B5
KGtleUluZm8uY2xpZW50S2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIucHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKyAgICBtZW1jcHkoa2V5SW5mby5z
ZXJ2ZXJLZXksIGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7
CisKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrS2V5LCBTcGFuKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZrZXlJbmZvKSwgc2l6ZW9mKGtleUluZm8pKSk7CisKKyAgICAvKgorICAg
ICAqICMgSEtERi1FeHRyYWN0KHNhbHQsIElLTSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYo
c2FsdCwgSUtNKQorICAgICAqLworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihoZWFkZXIuc2Fs
dCwgaWttKTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4cGFuZChQUkssIGNla19pbmZvLCBM
X2Nlaz0xNikKKyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMxMjhnY20i
IHx8IDB4MDAKKyAgICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAx
KVswLi4xNV0KKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvW10gPSAi
Q29udGVudC1FbmNvZGluZzogYWVzMTI4Z2NtXHgwMFx4MDEiOworICAgIGF1dG8gY2VrID0gaG1h
Y1NIQTI1NihwcmssIFNwYW4oY2VrSW5mbywgc2l6ZW9mKGNla0luZm8pIC0gMSkpOworICAgIGNl
ay5zaHJpbmsoMTYpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgbm9uY2Vf
aW5mbywgTF9ub25jZT0xMikKKyAgICAgKiBub25jZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6
IG5vbmNlIiB8fCAweDAwCisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb1tdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlXHgwMFx4MDEiOworICAgIGF1dG8g
bm9uY2UgPSBobWFjU0hBMjU2KHByaywgU3Bhbihub25jZUluZm8sIHNpemVvZihub25jZUluZm8p
IC0gMSkpOworICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0
IHdpdGggQUVTMTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBh
dXRvIGNpcGhlclRleHQgPSBTcGFuKHBheWxvYWQuZGF0YSgpICsgc2l6ZW9mKGhlYWRlciksIHBh
eWxvYWQuc2l6ZSgpIC0gc2l6ZW9mKGhlYWRlcikpOworICAgIGF1dG8gcGxhaW5UZXh0UmVzdWx0
ID0gZGVjcnlwdEFFUzEyOEdDTShjZWssIG5vbmNlLCBjaXBoZXJUZXh0KTsKKyAgICBpZiAoIXBs
YWluVGV4dFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8g
cGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHRSZXN1bHQudmFsdWUoKSk7CisgICAgc2l6ZV90
IHBhZGRpbmdMZW5ndGggPSBjb21wdXRlQUVTMTI4R0NNUGFkZGluZ0xlbmd0aChwbGFpblRleHQu
ZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKTsKKyAgICBpZiAocGFkZGluZ0xlbmd0aCA9PSBTSVpF
X01BWCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHBsYWluVGV4dC5zaHJp
bmsocGxhaW5UZXh0LnNpemUoKSAtIHBhZGRpbmdMZW5ndGgpOworICAgIHJldHVybiBwbGFpblRl
eHQ7Cit9CisKK3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgoY29uc3Qg
dWludDhfdCAqYmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRl
IHBhZGRpbmcgbGVuZ3RoIGFzIGRlZmluZWQgaW4gZHJhZnQtaWV0Zi1odHRwYmlzLWVuY3J5cHRp
b24tZW5jb2RpbmctMDM6CisgICAgICoKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsKKyAg
ICAgKiAgIHwgcGFkIHwgICBkYXRhICAgIHwKKyAgICAgKiAgICstLS0tLSstLS0tLS0tLS0tLSsK
KyAgICAgKgorICAgICAqIFBhZGRpbmcgY29uc2lzdHMgb2YgYSB0d28gb2N0ZXQgdW5zaWduZWQg
aW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIsIGZvbGxvd2VkIGJ5IHRoYXQKKyAgICAgKiBu
dW1iZXIgb2YgMHgwMCBvY3RldHMuIFRoZSBtaW5pbXVtIHBhZGRpbmcgc2l6ZSBpcyAyIGJ5dGVz
LgorICAgICAqLworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7
CisKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVuZ3RoOworICAgIG1lbWNweSgmcGFkZGluZ0xlbmd0
aCwgYmVnaW4sIDIpOworICAgIHBhZGRpbmdMZW5ndGggPSBudG9ocyhwYWRkaW5nTGVuZ3RoKTsK
KworICAgIGNvbnN0IHVpbnQ4X3QqIGN1ciA9IGJlZ2luICsgMjsKKyAgICBjb25zdCB1aW50OF90
KiBlbmQgPSBiZWdpbiArIGxlbmd0aDsKKyAgICB1aW50MTZfdCBwYWRkaW5nTGVmdCA9IHBhZGRp
bmdMZW5ndGg7CisgICAgd2hpbGUgKGN1ciA8IGVuZCAmJiAoKmN1ciA9PSAweDApICYmIHBhZGRp
bmdMZWZ0KSB7CisgICAgICAgICsrY3VyOworICAgICAgICAtLXBhZGRpbmdMZWZ0OworICAgIH0K
KworICAgIGlmIChwYWRkaW5nTGVmdCkKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworCisgICAg
cmV0dXJuIGN1ciAtIGJlZ2luOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
ZGVjcnlwdEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgU3Bhbjxj
b25zdCB1aW50OF90PiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIFNwYW48Y29uc3QgdWludDhfdD4g
c2FsdCwgU3Bhbjxjb25zdCB1aW50OF90PiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50
S2V5TGVuZ3Roc1ZhbGlkKGNsaWVudEtleXMpIHx8IHNlcnZlclAyNTZESFB1YmxpY0tleS5zaXpl
KCkgIT0gcDI1NmRoUHVibGljS2V5TGVuZ3RoIHx8IHNhbHQuc2l6ZSgpICE9IHNhbHRMZW5ndGgp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBQYWRkaW5nIG11c3QgYmUg
YXQgbGVhc3QgdGhlIHNpemUgb2YgdGhlIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIHVzZWQg
aW4gdGhlIHBhZGRpbmcgc2NoZW1lIHBsdXMgdGhlIHNpemUgb2YgdGhlIEFFUzEyOEdDTSB0YWcu
CisgICAgaWYgKHBheWxvYWQuc2l6ZSgpIDwgMiArIGFlczEyOEdDTVRhZ0xlbmd0aCB8fCBwYXls
b2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgLyoKKyAgICAgKiBUaGVzZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJv
bSBkcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KKyAgICAgKgorICAgICAqIC0tIEZv
ciBhIFVzZXIgQWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3ByaXZhdGUsIGFz
X3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBjb21wdXRlUDI1
NkRIU2hhcmVkU2VjcmV0KHNlcnZlclAyNTZESFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQ
MjU2REhLZXlQYWlyKTsKKyAgICBpZiAoIWVjZGhTZWNyZXRSZXN1bHQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIGF1dGhfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhdXRoIiB8fCAweDAwCisgICAgICogUFJLX2NvbWJpbmUgPSBITUFDLVNIQS0yNTYo
YXV0aF9zZWNyZXQsIGVjZGhfc2VjcmV0KQorICAgICAqIElLTSA9IEhNQUMtU0hBLTI1NihQUktf
Y29tYmluZSwgYXV0aF9pbmZvIHx8IDB4MDEpCisgICAgICogUFJLID0gSE1BQy1TSEEtMjU2KHNh
bHQsIElLTSkKKyAgICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBhdXRoSW5mb1tdID0g
IkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGhceDAwXHgwMSI7CisgICAgYXV0byBwcmtDb21iaW5lID0g
aG1hY1NIQTI1NihjbGllbnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQsICplY2RoU2VjcmV0UmVzdWx0
KTsKKyAgICBhdXRvIGlrbSA9IGhtYWNTSEEyNTYocHJrQ29tYmluZSwgU3BhbihhdXRoSW5mbywg
c2l6ZW9mKGF1dGhJbmZvKSAtIDEpKTsKKyAgICBhdXRvIHByayA9IGhtYWNTSEEyNTYoc2FsdCwg
aWttKTsKKworICAgIC8qCisgICAgICogY29udGV4dCA9ICJQLTI1NiIgfHwgMHgwMCB8fAorICAg
ICAqICAgICAgICAgICAweDAwIHx8IDB4NDEgfHwgdWFfcHVibGljIHx8CisgICAgICogICAgICAg
ICAgIDB4MDAgfHwgMHg0MSB8fCBhc19wdWJsaWMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB3
ZSBhbHNvIGFwcGVuZCBhIDB4MDEgYnl0ZSBhdCB0aGUgZW5kIGhlcmUgc2luY2UgdGhlIGNlayBh
bmQgbm9uY2UKKyAgICAgKiBkZXJpdmF0aW9uIGZ1bmN0aW9ucyBiZWxvdyByZXF1aXJlIHRoYXQg
dHJhaWxpbmcgMHgwMSBieXRlLgorICAgICAqLworICAgIHN0cnVjdCBLZXlEZXJpdmF0aW9uQ29u
dGV4dCB7CisgICAgICAgIHVpbnQ4X3QgbGFiZWxbNl0gPSB7ICJQLTI1NiIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlMZW5ndGhbMl0gPSB7IDAsIDB4NDEgfTsKKyAgICAgICAg
dWludDhfdCBzZXJ2ZXJQdWJsaWNLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAg
dWludDhfdCBlbmQgPSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5
RGVyaXZhdGlvbkNvbnRleHQpID09IDE0MSk7CisgICAgS2V5RGVyaXZhdGlvbkNvbnRleHQgY29u
dGV4dDsKKyAgICBtZW1jcHkoY29udGV4dC5jbGllbnRQdWJsaWNLZXksIGNsaWVudEtleXMuY2xp
ZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgp
OworICAgIG1lbWNweShjb250ZXh0LnNlcnZlclB1YmxpY0tleSwgc2VydmVyUDI1NkRIUHVibGlj
S2V5LmRhdGEoKSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIC8qCisgICAgICogY2Vr
X2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogYWVzZ2NtIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBDRUsgPSBITUFDLVNIQS0yNTYoUFJLLCBjZWtfaW5mbyB8fCAweDAxKVswLi4xNV0KKyAg
ICAgKi8KKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBjZWtJbmZvSGVhZGVyW10gPSAiQ29udGVu
dC1FbmNvZGluZzogYWVzZ2NtIjsKKyAgICB1aW50OF90IGNla0luZm9bc2l6ZW9mKGNla0luZm9I
ZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkoY2VrSW5mbywgY2VrSW5mb0hl
YWRlciwgc2l6ZW9mKGNla0luZm9IZWFkZXIpKTsKKyAgICBtZW1jcHkoY2VrSW5mbyArIHNpemVv
ZihjZWtJbmZvSGVhZGVyKSwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7CisKKyAgICBhdXRv
IGNlayA9IGhtYWNTSEEyNTYocHJrLCBjZWtJbmZvKTsKKyAgICBjZWsuc2hyaW5rKDE2KTsKKwor
ICAgIC8qCisgICAgICogbm9uY2VfaW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBub25jZSIgfHwg
MHgwMCB8fCBjb250ZXh0CisgICAgICogTk9OQ0UgPSBITUFDLVNIQS0yNTYoUFJLLCBub25jZV9p
bmZvIHx8IDB4MDEpWzAuLjExXQorICAgICAqLworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IG5v
bmNlSW5mb0hlYWRlcltdID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIjsKKyAgICB1aW50OF90
IG5vbmNlSW5mb1tzaXplb2Yobm9uY2VJbmZvSGVhZGVyKSArIHNpemVvZihjb250ZXh0KV07Cisg
ICAgbWVtY3B5KG5vbmNlSW5mbywgbm9uY2VJbmZvSGVhZGVyLCBzaXplb2Yobm9uY2VJbmZvSGVh
ZGVyKSk7CisgICAgbWVtY3B5KG5vbmNlSW5mbyArIHNpemVvZihub25jZUluZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gbm9uY2UgPSBobWFjU0hBMjU2
KHByaywgbm9uY2VJbmZvKTsKKyAgICBub25jZS5zaHJpbmsoMTIpOworCisgICAgLy8gRmluYWxs
eSwgZGVjcnlwdCB3aXRoIEFFUzEyOEdDTSBhbmQgcmV0dXJuIHRoZSB1bnBhZGRlZCBwbGFpbnRl
eHQuCisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNKGNlaywgbm9u
Y2UsIHBheWxvYWQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dFJl
c3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNvbXB1dGVBRVNHQ01Q
YWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlm
IChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IHBsYWluVGV4dC5kYXRhKCkgKyBwYWRk
aW5nTGVuZ3RoLCBwbGFpblRleHQuc2l6ZSgpIC0gcGFkZGluZ0xlbmd0aCB9OworfQorCit9IC8v
IG5hbWVzcGFjZSBQdXNoQ3J5cHRvCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjI4NDQ3NDUwZGM0
NjRiNWYxMzhjZmJmMDMyNzM1MWI1M2JjMGM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBQdXNoQ3J5cHRvIHsKKworc3RydWN0IENsaWVudEtl
eXMgeworICAgIFAyNTZESEtleVBhaXIgY2xpZW50UDI1NkRIS2V5UGFpcjsKKyAgICBWZWN0b3I8
dWludDhfdD4gc2hhcmVkQXV0aFNlY3JldDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
bGllbnRLZXlzIGdlbmVyYXRlKCk7Cit9OworCisvLyBEZWNyeXB0cyBhIHB1c2ggcGF5bG9hZCBl
bmNvZGVkIHdpdGggdGhlIGFlczEyOGdjbSBDb250ZW50LUVuY29kaW5nIGFzIGRlc2NyaWJlZCBp
biBSRkM4MjkxLgorV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNvbnN0IENsaWVudEtleXMmLCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IHBheWxvYWQpOworCisvLyBEZWNyeXB0cyBhIHB1c2ggcGF5bG9hZCBlbmNvZGVkIHdp
dGggdGhlIGFlc2djbSBDb250ZW50LUVuY29kaW5nIGFzIGRlc2NyaWJlZCBpbiBkcmFmdC1pZXRm
LXdlYnB1c2gtZW5jcnlwdGlvbi0wNC4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTR0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiwgU3Bh
bjxjb25zdCB1aW50OF90PiBzZXJ2ZXJQMjU2REhQdWJsaWNLZXksIFNwYW48Y29uc3QgdWludDhf
dD4gc2FsdCwgU3Bhbjxjb25zdCB1aW50OF90PiBwYXlsb2FkKTsKKworfSAvLyBuYW1lc3BhY2Ug
UHVzaENyeXB0bworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gt
YXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU4ZTExMjRhNDEx
OTE3MDdlNWM2YjY4MmNhMGUzMjQ5MTRjZGU2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENyeXB0b0NvY29hLmNwcApAQCAtMCww
ICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
dXNoQ3J5cHRvLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxD
b21tb25DcnlwdG8vQ29tbW9uSE1BQy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29tbW9u
Q3J5cHRvU1BJLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworbmFtZXNwYWNlIFB1c2hDcnlwdG8geworCitQMjU2REhLZXlQYWlyIFAyNTZESEtleVBh
aXI6OmdlbmVyYXRlKHZvaWQpCit7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBu
dWxscHRyOworICAgIENDRUNDcnlwdG9yUmVmIGNjUHJpdmF0ZUtleSA9IG51bGxwdHI7CisgICAg
YXV0byByZWxlYXNlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbJmNjUHVibGljS2V5LCAmY2NQcml2
YXRlS2V5XSgpIHsKKyAgICAgICAgaWYgKGNjUHVibGljS2V5KQorICAgICAgICAgICAgQ0NFQ0Ny
eXB0b3JSZWxlYXNlKGNjUHVibGljS2V5KTsKKyAgICAgICAgaWYgKGNjUHJpdmF0ZUtleSkKKyAg
ICAgICAgICAgIENDRUNDcnlwdG9yUmVsZWFzZShjY1ByaXZhdGVLZXkpOworICAgIH0pOworCisg
ICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDRUNDcnlwdG9yR2VuZXJhdGVQYWlyKDI1Niwg
JmNjUHVibGljS2V5LCAmY2NQcml2YXRlS2V5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0dXMg
PT0ga0NDU3VjY2Vzcyk7CisKKyAgICB1aW50OF90IHB1YmxpY0tleVtwMjU2ZGhQdWJsaWNLZXlM
ZW5ndGhdOworICAgIHNpemVfdCBwdWJsaWNLZXlMZW5ndGggPSBzaXplb2YocHVibGljS2V5KTsK
KyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRvckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIHB1
YmxpY0tleSwgJnB1YmxpY0tleUxlbmd0aCwgY2NFQ0tleVB1YmxpYywgY2NQdWJsaWNLZXkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0YXR1cyA9PSBrQ0NTdWNjZXNzICYmIHB1YmxpY0tleUxlbmd0
aCA9PSBzaXplb2YocHVibGljS2V5KSk7CisKKyAgICAvLyBDb21tb25DcnlwdG8gZXhwZWN0cyB0
aGUgYmluYXJ5IGZvcm1hdCB0byBiZSA2NSBieXRlIHB1YmxpYyBrZXkgZm9sbG93ZWQgYnkgdGhl
IDMyIGJ5dGUgcHJpdmF0ZSBrZXksIHNvIHdlIHdhbnQgdG8gZXh0cmFjdCB0aGUgbGFzdCAzMiBi
eXRlcyBmcm9tIHRoZSBidWZmZXIuCisgICAgdWludDhfdCBrZXlbcDI1NmRoUHVibGljS2V5TGVu
Z3RoICsgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aF07CisgICAgc2l6ZV90IGtleUxlbmd0aCA9IHNp
emVvZihrZXkpOworICAgIHN0YXR1cyA9IENDRUNDcnlwdG9yRXhwb3J0S2V5KGtDQ0ltcG9ydEtl
eUJpbmFyeSwga2V5LCAma2V5TGVuZ3RoLCBjY0VDS2V5UHJpdmF0ZSwgY2NQcml2YXRlS2V5KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2VzcyAmJiBrZXlMZW5ndGggPT0g
c2l6ZW9mKGtleSkpOworCisgICAgcmV0dXJuIFAyNTZESEtleVBhaXIgeworICAgICAgICBWZWN0
b3I8dWludDhfdD4geyBwdWJsaWNLZXksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCB9LAorICAgICAg
ICBWZWN0b3I8dWludDhfdD4geyBrZXkgKyBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgsIHAyNTZkaFBy
aXZhdGVLZXlMZW5ndGggfQorICAgIH07Cit9CisKK2Jvb2wgdmFsaWRhdGVQMjU2REhQdWJsaWNL
ZXkoU3Bhbjxjb25zdCB1aW50OF90PiBwdWJsaWNLZXkpCit7CisgICAgQ0NFQ0NyeXB0b3JSZWYg
Y2NQdWJsaWNLZXkgPSBudWxscHRyOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ0VD
Q3J5cHRvckltcG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIHB1YmxpY0tleS5kYXRhKCksIHB1
YmxpY0tleS5zaXplKCksIGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSk7CisgICAgaWYgKCFj
Y1B1YmxpY0tleSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENDRUNDcnlwdG9yUmVsZWFz
ZShjY1B1YmxpY0tleSk7CisgICAgcmV0dXJuIHN0YXR1cyA9PSBrQ0NTdWNjZXNzOworfQorCitz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChT
cGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSwgY29uc3QgUDI1NkRIS2V5UGFpciYga2V5UGFp
cikKK3sKKyAgICBpZiAocHVibGljS2V5LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgg
fHwga2V5UGFpci5wdWJsaWNLZXkuc2l6ZSgpICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB8fCBr
ZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgpICE9IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBDQ0VDQ3J5cHRvclJlZiBjY1B1YmxpY0tl
eSA9IG51bGxwdHI7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQcml2YXRlS2V5ID0gbnVsbHB0cjsK
KyAgICBhdXRvIHJlbGVhc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFsmY2NQdWJsaWNLZXksICZj
Y1ByaXZhdGVLZXldKCkgeworICAgICAgICBpZiAoY2NQdWJsaWNLZXkpCisgICAgICAgICAgICBD
Q0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJsaWNLZXkpOworICAgICAgICBpZiAoY2NQcml2YXRlS2V5
KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNjUHJpdmF0ZUtleSk7CisgICAgfSk7
CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJbXBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJs
aWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsICZjY1B1
YmxpY0tleSkgIT0ga0NDU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIC8vIENvbW1vbkNyeXB0byBleHBlY3RzIHRoZSBiaW5hcnkgZm9ybWF0IHRvIGJlIDY1IGJ5
dGUgcHVibGljIGtleSBmb2xsb3dlZCBieSB0aGUgMzIgYnl0ZSBwcml2YXRlIGtleS4KKyAgICB1
aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJsaWNLZXlMZW5ndGggKyBwMjU2ZGhQcml2YXRlS2V5TGVu
Z3RoXTsKKyAgICBtZW1jcHkoa2V5QnVmLCBrZXlQYWlyLnB1YmxpY0tleS5kYXRhKCksIHAyNTZk
aFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGtleUJ1ZiArIHAyNTZkaFB1YmxpY0tleUxl
bmd0aCwga2V5UGFpci5wcml2YXRlS2V5LmRhdGEoKSwgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCk7
CisgICAgaWYgKENDRUNDcnlwdG9ySW1wb3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwga2V5QnVm
LCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tleVByaXZhdGUsICZjY1ByaXZhdGVLZXkpICE9IGtDQ1N1
Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhf
dD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNoYXJlZFNlY3JldExlbmd0aCk7CisgICAgc2l6ZV90IHNo
YXJlZFNlY3JldExlbmd0aCA9IHNoYXJlZFNlY3JldC5zaXplKCk7CisgICAgaWYgKENDRUNDcnlw
dG9yQ29tcHV0ZVNoYXJlZFNlY3JldChjY1ByaXZhdGVLZXksIGNjUHVibGljS2V5LCBzaGFyZWRT
ZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNlY3JldExlbmd0aCkgIT0ga0NDU3VjY2VzcyB8fCBzaGFy
ZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRoU2hhcmVkU2VjcmV0TGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHNoYXJlZFNlY3JldDsKK30KKworVmVjdG9y
PHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bhbjxjb25zdCB1aW50OF90PiBrZXksIFNwYW48Y29uc3Qg
dWludDhfdD4gbWVzc2FnZSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHNoYTI1NkRp
Z2VzdExlbmd0aCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtl
eS5zaXplKCksIG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUoKSwgcmVzdWx0LmJlZ2luKCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKQoreworICAg
IGlmIChjaXBoZXJUZXh0V2l0aFRhZy5zaXplKCkgPCBhZXMxMjhHQ01UYWdMZW5ndGgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0
KGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCk7CisgICAgYXV0
byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlwdChrQ0NBbGdvcml0aG1BRVMsIGtl
eS5kYXRhKCksIGtleS5zaXplKCksIGl2LmRhdGEoKSwgaXYuc2l6ZSgpLCBudWxscHRyIC8qIGFk
ZGl0aW9uYWxEYXRhICovLCAwIC8qIGFkZGl0aW9uYWxEYXRhTGVuZ3RoICovLCBjaXBoZXJUZXh0
V2l0aFRhZy5kYXRhKCksIGNpcGhlclRleHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdDTVRhZ0xl
bmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwgY2lwaGVyVGV4dFdpdGhUYWcuZW5kKCkgLSBhZXMxMjhH
Q01UYWdMZW5ndGgsIGFlczEyOEdDTVRhZ0xlbmd0aCk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ0NT
dWNjZXNzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHBsYWlu
VGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUHVzaENyeXB0bworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCmluZGV4IGU1ZGFi
ZTBmMGYyMWEwMjViNjQyOTIzZTMzYjc0YjllYWFhNDQ3ODkuLjNkNjVlM2VjZjQwMmQ5ODIyMDFj
NmY2M2JhMTdiYWM2ZDBkZGFjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NvY29hL0NvbW1vbkNyeXB0b1NQSS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25Dcnlw
dG9yU1BJLmg+CkBAIC0xMTgsNiArMTIwLDcgQEAgZXh0ZXJuICJDIiBDQ1N0YXR1cyBDQ0Rlcml2
ZUtleShjb25zdCBDQ0tERlBhcmFtZXRlcnNSZWYgcGFyYW1zLCBDQ0RpZ2VzdEFsZ29yaXQKIGV4
dGVybiAiQyIgQ0NTdGF0dXMgQ0NLREZQYXJhbWV0ZXJzQ3JlYXRlSGtkZihDQ0tERlBhcmFtZXRl
cnNSZWYgKnBhcmFtcywgY29uc3Qgdm9pZCAqc2FsdCwgc2l6ZV90IHNhbHRMZW4sIGNvbnN0IHZv
aWQgKmNvbnRleHQsIHNpemVfdCBjb250ZXh0TGVuKTsKIGV4dGVybiAiQyIgdm9pZCBDQ0tERlBh
cmFtZXRlcnNEZXN0cm95KENDS0RGUGFyYW1ldGVyc1JlZiBwYXJhbXMpOwogZXh0ZXJuICJDIiBD
Q0NyeXB0b3JTdGF0dXMgQ0NDcnlwdG9yR0NNKENDT3BlcmF0aW9uIG9wLCBDQ0FsZ29yaXRobSBh
bGcsIGNvbnN0IHZvaWQqIGtleSwgc2l6ZV90IGtleUxlbmd0aCwgY29uc3Qgdm9pZCogaXYsIHNp
emVfdCBpdkxlbiwgY29uc3Qgdm9pZCogYURhdGEsIHNpemVfdCBhRGF0YUxlbiwgY29uc3Qgdm9p
ZCogZGF0YUluLCBzaXplX3QgZGF0YUluTGVuZ3RoLCB2b2lkKiBkYXRhT3V0LCB2b2lkKiB0YWcs
IHNpemVfdCogdGFnTGVuZ3RoKTsKK2V4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDQ3J5cHRv
ckdDTU9uZXNob3REZWNyeXB0KENDQWxnb3JpdGhtIGFsZywgY29uc3Qgdm9pZCAqa2V5LCBzaXpl
X3Qga2V5TGVuZ3RoLCBjb25zdCB2b2lkICAqaXYsIHNpemVfdCBpdkxlbiwgY29uc3Qgdm9pZCAg
KmFEYXRhLCBzaXplX3QgYURhdGFMZW4sIGNvbnN0IHZvaWQgKmRhdGFJbiwgc2l6ZV90IGRhdGFJ
bkxlbmd0aCwgdm9pZCAgICAgICAgKmRhdGFPdXQsIGNvbnN0IHZvaWQgICp0YWdJbiwgc2l6ZV90
IHRhZ0xlbmd0aCk7CiBleHRlcm4gIkMiIENDQ3J5cHRvclN0YXR1cyBDQ1JTQUNyeXB0b3JDcmVh
dGVGcm9tRGF0YShDQ1JTQUtleVR5cGUga2V5VHlwZSwgY29uc3QgdWludDhfdCAqbW9kdWx1cywg
c2l6ZV90IG1vZHVsdXNMZW5ndGgsIGNvbnN0IHVpbnQ4X3QgKmV4cG9uZW50LCBzaXplX3QgZXhw
b25lbnRMZW5ndGgsIGNvbnN0IHVpbnQ4X3QgKnAsIHNpemVfdCBwTGVuZ3RoLCBjb25zdCB1aW50
OF90ICpxLCBzaXplX3QgcUxlbmd0aCwgQ0NSU0FDcnlwdG9yUmVmICpyZWYpOwogCiAjZW5kaWYg
Ly8gIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBiYzlhOGQ2MDM2
MWFmMTQ3MTc3ZWQ5OTA4ZGRmM2M0MTU1NzdlN2QuLjY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVjNDAz
NmE3OGZhYzM1YzE5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTcsNyArMjU3LDkgQEAgTW9kdWxl
cy9waWN0dXJlaW5waWN0dXJlL0RvY3VtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1vZHVsZXMv
cGljdHVyZWlucGljdHVyZS9FbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHAKIE1vZHVsZXMv
cGljdHVyZWlucGljdHVyZS9IVE1MVmlkZW9FbGVtZW50UGljdHVyZUluUGljdHVyZS5jcHAKIE1v
ZHVsZXMvcGljdHVyZWlucGljdHVyZS9QaWN0dXJlSW5QaWN0dXJlV2luZG93LmNwcAorTW9kdWxl
cy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRXZlbnQuY3Bw
CitNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAogTW9kdWxlcy9wdXNoLWFw
aS9QdXNoTWVzc2FnZURhdGEuY3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24u
Y3BwCiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ2YjM5MTJiZWQwNjU4ZmIzYWY3MWU3ZjgyY2NhOTAy
ZWE5YmY0NWEuLjBhNDBkYTU5MjBmODdlNGQ5MTA0ZTVlOTkxYWRkNzQ3MzdkNjNkM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtMTA2LDYgKzEwNiw3IEBAIE1vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyLm1tCiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlckNsaWVudC5tbQogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsUGxheWVyLm1tCitNb2R1bGVzL3B1c2gtYXBp
L2NvY29hL1B1c2hDcnlwdG9Db2NvYS5jcHAKIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJl
Y29nbml6ZXJDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2subW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9j
ay5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQ5MjcyOTcyNmI5MGFhYTIzYWY3NDM4NTJkNDBiNjdjNjA1NTAyMTMuLjQ3M2I3
ODliNDQzZTI4MDhmZWVjM2IxMTFiMmU2YjFlNDY3YjQzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MzYsNiArNTQzNiw4
IEBACiAJCUVCMjhFRDQ0MjcxN0FDMTEwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyOEVENDEy
NzE3QUJBOTAwNUYwMzkzIC8qIFB1c2hTdWJzY3JpcHRpb25EYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUIzQzI5QjYyNzI5QzM4ODAwRkI2
NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIzQzI5QjQyNzI5QzM2RTAwRkI2NUI0IC8qIFB1
c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oICovOyB9OwogCQlFQjNDMjlCNzI3MjlDMzhDMDBG
QjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIzQzI5QjEyNzI5QzM2RDAwRkI2NUI0
IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQuaCAqLzsgfTsKKwkJRUJBNzVDNDYy
NzVFQzYxQTAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5
cHRvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RUJBNzVDNDcyNzVFQzYyMTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0MDI3NUVCREFBMDBE
NkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MTI3MTAwNjcxMDA3NzMyRUYgLyogUHVzaE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVC
Qjk3MzgwMjcxMDA2NTQwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oICovOyB9OwogCQlFQkI5NzM4
MjI3MTAwNjc2MDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJCOTczNzgyNzEwMDY1MTAwNzczMkVG
IC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFQkI5NzM4MzI3MTAwNjg0MDA3NzMyRUYgLyogU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uUHVzaEFQSS5oICovOyB9OwpAQCAtMTc1ODEsNiArMTc1ODMsMTEgQEAKIAkJ
RUIzQzI5QjIyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudElu
aXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVu
dEluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjNDMjlCMzI3MjlDMzZF
MDBGQjY1QjQgLyogUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQjNDMjlCNDI3MjlDMzZFMDBGQjY1QjQgLyogUHVzaFN1YnNjcmlw
dGlvbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hT
dWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
QkE3NUMzRTI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFQkE3NUM0MDI3NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRUJBNzVDNDEyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHVzaENyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUVCQTc1QzQyMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFB1c2hDcnlwdG8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDUy
NzVFQzU4RTAwRDZEMzFDIC8qIFB1c2hDcnlwdG9Db2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQdXNoQ3J5cHRvQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5
NzM3ODI3MTAwNjUxMDA3NzMyRUYgLyogUHVzaFBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQdXNoUGVybWlzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCQjk3MzdBMjcxMDA2NTIwMDc3MzJFRiAvKiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVz
aEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uUHVzaEFQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkI5NzM3QjI3MTAwNjUyMDA3NzMyRUYg
LyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbitQdXNoQVBJLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMTAzNCw2ICsyMTA0MSw5IEBACiAJCTQxOEZDQkI4MjcwNkU0QkQwMEY5NkVDQSAvKiBw
dXNoLWFwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RUJBNzVDNDQyNzVFQzU2MDAwRDZEMzFDIC8qIGNvY29hICovLAorCQkJCUVCQTc1QzQxMjc1RUJE
QUIwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MjI3NUVCREFCMDBE
NkQzMUMgLyogUHVzaENyeXB0by5oICovLAogCQkJCUVCMEZCNkZEMjcwRDBBRTgwMEY3ODEwRCAv
KiBQdXNoRW5jcnlwdGlvbktleU5hbWUuaCAqLywKIAkJCQlFQjBGQjcwMDI3MEQwQUVBMDBGNzgx
MEQgLyogUHVzaEVuY3J5cHRpb25LZXlOYW1lLmlkbCAqLywKIAkJCQk0MThGQ0JCQjI3MDZFNEY2
MDBGOTZFQ0EgLyogUHVzaEV2ZW50LmNwcCAqLywKQEAgLTIxMDQ0LDYgKzIxMDU0LDggQEAKIAkJ
CQlFQkI5NzM3QzI3MTAwNjUyMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuY3BwICovLAogCQkJCUVC
Qjk3MzgwMjcxMDA2NTQwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5oICovLAogCQkJCUVCQjk3MzdF
MjcxMDA2NTMwMDc3MzJFRiAvKiBQdXNoTWFuYWdlci5pZGwgKi8sCisJCQkJRUJBNzVDM0UyNzVF
QkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLywKKwkJCQlFQkE3NUM0MDI3
NUVCREFBMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCAqLywKIAkJCQk0MThGQ0JCRTI3
MDZFNEY3MDBGOTZFQ0EgLyogUHVzaE1lc3NhZ2VEYXRhLmNwcCAqLywKIAkJCQk0MThGQ0JCQzI3
MDZFNEY2MDBGOTZFQ0EgLyogUHVzaE1lc3NhZ2VEYXRhLmggKi8sCiAJCQkJNDE4RkNCQkEyNzA2
RTRGNTAwRjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5pZGwgKi8sCkBAIC0zMTIzMSw2ICszMTI0
MywxNCBAQAogCQkJcGF0aCA9ICJjb250YWN0LXBpY2tlciI7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlFQkE3NUM0NDI3NUVDNTYwMDBENkQzMUMgLyogY29jb2EgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUVCQTc1QzQ1Mjc1RUM1
OEUwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvQ29jb2EuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBj
b2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUVENTAxREM5MEIyNDlG
MzkwMEFFMThEOSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMzY0MjQsMTAgKzM2NDQ0LDEyIEBACiAJCQkJNTczMDNCRUIyMDA5N0Y0MDAwMzU1
OTY1IC8qIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDgx
RkYwMDE2QjBBMkQzMDA4QUFBN0EgLyogUHVibGljU3VmZml4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMEZCMDg0QjE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRUJBNzVDNDYyNzVFQzYxQTAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUVCMEZCNzA4MjcwRDBCMTAwMEY3ODEwRCAvKiBQdXNoRW5jcnlwdGlv
bktleU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEZDQkMxMjcwNkU0RkIwMEY5NkVDQSAv
KiBQdXNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEZDQkMyMjcwNkU1MDEwMEY5NkVD
QSAvKiBQdXNoRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkI5NzM4MTI3MTAwNjcx
MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCQTc1QzQ3Mjc1
RUM2MjEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RUJCOTczODIyNzEwMDY3NjAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzRDUxMUY2MjUwQzFDQkYwMDJFREM1MSAvKiBQdXNoUHVsbEZJRk8uaCBp
biBIZWFkZXJzICovLAogCQkJCUVCMEZCNzA5MjcwRDBCMTgwMEY3ODEwRCAvKiBQdXNoU3Vic2Ny
aXB0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBhNDA2ODFhZDg0NjZmNDllNzgzN2RiODUwY2QzOGVlYTNjMjlm
MGM0Li5jZDdmMTJiOTlmODVlNzdiMjBlOTFkZWQ3YzNmNGRhMWFlYzczYjNhIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjEtMTItMDYgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdl
YiBwdXNoIG1lc3NhZ2UgZGVjcnlwdGlvbiByb3V0aW5lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjptdXN0QmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VB
RVMxMjhHQ01DbGllbnRLZXlzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFU0dDTUNsaWVudEtleXMpOgorCiAyMDIxLTEyLTEz
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWxsb3cgV0tDb250ZW50UnVsZUxpc3QgdG8gcnVuIHJlZ2V4ZXMgb24gY3VycmVudCBmcmFtZSdz
IFVSTCwgbm90IGp1c3QgdG9wIGZyYW1lJ3MgVVJMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDdmNjkxNTUzZTNlNDMzZDIyNWYzMzQzYTYxN2Y1MGQ0NjllZjgyODUuLjU5MTIwNmZkNjE1M2Yz
ZTZmYWJkZDI2NzQ5ZDY3ZjIyM2EwNGIzYmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
OTMsNiArOTkzLDcgQEAKIAkJRTVBQTQyRjIyNTkxMjhBRTAwNDEwQTNEIC8qIFVzZXJJbnRlcmZh
Y2VJZGlvbVVwZGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU1QUE0MkYxMjU5MTI4QUUwMDQxMEEzRCAvKiBVc2VySW50ZXJmYWNlSWRpb21VcGRh
dGUubW0gKi87IH07CiAJCUU1QUE4RDFEMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE4
RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSAqLzsgfTsKIAkJRUIyMzBE
NDEyNDVFODEzRjAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjIzMEQzRDI0NUU3MjJF
MDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICovOyB9OworCQlFQkE3NUM0OTI3NUVE
N0M3MDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLzsgfTsKIAkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8q
IFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
Ki87IH07CiAJCUY0MDEwQjgwMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDEw
QjdGMjREQTI0QUMwMEE4NzZFMiAvKiBOYXZpZ2F0aW9uU3dpcGVUZXN0cy5tbSAqLzsgfTsKIAkJ
RjQwMTBCODMyNERBMjY3RjAwQTg3NkUyIC8qIFBvc2VBc0NsYXNzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwMTBCODEyNERBMjY3RjAwQTg3NkUy
IC8qIFBvc2VBc0NsYXNzLm1tICovOyB9OwpAQCAtMjkyMSw2ICsyOTIyLDcgQEAKIAkJRTVBQThE
MUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVC
MjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50
V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCQ2hlY2tw
b2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDgyNzVFRDdC
RTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYx
NjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxp
Ymd0ZXN0LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBhcmNoaXZlLmFyOyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKQEAgLTM3MTUsNiArMzcxNyw3IEBACiAJCQkJQUE5NkNBQjQyMUM3REI0MjAw
RkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKIAkJCQk2QjBBMDdGNjIxRkE5QzJC
MDBENTczOTEgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwICovLAogCQkJCTA0MUExRTMz
MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwICovLAorCQkJCUVCQTc1QzQ4Mjc1
RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8sCiAJCQkJNkI0RTg2MUIy
MjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCAqLywKIAkJCQlGNDE4QkUx
NDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8sCiAJCQkJNDE4MUM2
MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICov
LApAQCAtNTYwOSw2ICs1NjEyLDcgQEAKIAkJCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyog
UHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUMyQTg1NjI0Q0VC
NjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA0MUEx
RTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRUJBNzVDNDkyNzVFRDdDNzAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURv
bWFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyog
UmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzkxQTQx
MUE3RTAwNDQ3QzRDIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9NTm9kZS5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNz
YWdlQ3J5cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoTWVz
c2FnZUNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmMWY0NDRiMGRkZDk3ZGVmZmNmOTc1MWI5YWZi
YWFlY2U1Mzk1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5jcHAKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6UHVzaENyeXB0bzsKKworc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBtdXN0QmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgZW5jb2RlZCkKK3sK
KyAgICByZXR1cm4gYmFzZTY0VVJMRGVjb2RlKGVuY29kZWQpLnZhbHVlKCk7Cit9CisKK3N0YXRp
YyBDbGllbnRLZXlzIG1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKHZvaWQpCit7CisgICAgLy8gRXhh
bXBsZSB2YWx1ZXMgZnJvbSBSRkM4MjkxIFNlY3Rpb24gNS4KKyAgICBhdXRvIHB1YmxpY0tleSA9
IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJDVnhzcjdOX2VOZ1ZScXZIdEQwelRac0VjNi1WVi1Kdkxl
eGhxVXpPUmN4YU96aTYtQVlXWHZUQkhtNGJqeVBqczdWZDhwWkdINlNScGtOdG9JQWl3NCJfcyk7
CisgICAgYXV0byBwcml2YXRlS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgicTFkWHB3M1VwVDVW
T211X2NmX3Y2aWgwN0FlbXMzbmp4SS1KV2dMY005NCJfcyk7CisgICAgYXV0byBzZWNyZXQgPSBt
dXN0QmFzZTY0VVJMRGVjb2RlKCJCVEJaTXFISDZyNFR0czdKX2FTSWdnIl9zKTsKKworICAgIHJl
dHVybiBDbGllbnRLZXlzIHsKKyAgICAgICAgUDI1NkRIS2V5UGFpciB7IFdURk1vdmUocHVibGlj
S2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9LAorICAgICAgICBXVEZNb3ZlKHNlY3JldCkKKyAg
ICB9OworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVMxMjhHQ01QYXlsb2FkV2l0aE1p
bmltYWxQYWRkaW5nKQoreworICAgIC8vIEV4YW1wbGUgcGF5bG9hZCBmcm9tIFJGQzgyOTEgU2Vj
dGlvbiA1LgorICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKCk7
CisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiREd2NnJhMW5sWWdEQ1Mx
RlJuYnpsd0FBRUFCQkJQNHo5S3NONm5HUlRiVllJX2M3VkpTUFFUQnRrZ2N5MjdtbG1sTW9aSUln
RGxsNmUzdkNZTG9jSW5tWVdBbVM2VGx6QUM4d0VxS0s2UEJydTNqbDdBX3lsOTViUXB1NmNWUFRw
SzRNcWdrZjFDWHp0TFZCU3QyS3Mzb1p3YnV3WFBYTFd5b3VCV0xWV0dOV1FleFNnU3hzal9RdWxj
eTRhLWZOIl9zKTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQo
Y2xpZW50S2V5cywgcGF5bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgp
KTsKKworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsK
KyAgICBBU1NFUlRfRVEoIldoZW4gSSBncm93IHVwLCBJIHdhbnQgdG8gYmUgYSB3YXRlcm1lbG9u
Il9zLCBhY3R1YWwpOworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVMxMjhHQ01QYXls
b2FkV2l0aFBhZGRpbmcpCit7CisgICAgYXV0byBjbGllbnRLZXlzID0gbWFrZUFFUzEyOEdDTUNs
aWVudEtleXMoKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJER3Y2
cmExbmxZZ0RDUzFGUm5iemx3QUFFQUJCQlA0ejlLc042bkdSVGJWWUlfYzdWSlNQUVRCdGtnY3ky
N21sbWxNb1pJSWdEbGw2ZTN2Q1lMb2NJbm1ZV0FtUzZUbHpBQzh3RXFLSzZQQnJ1M2psN0FfRGtO
UlhBNkNZRmlHODA1RlZOcVBicjl2OUVXOWxmd3BueTBjIik7CisKKyAgICBhdXRvIHJlc3VsdCA9
IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNsaWVudEtleXMsIHBheWxvYWQpOworICAgIEFTU0VS
VF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisKKyAgICBhdXRvIGFjdHVhbCA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZSgqcmVzdWx0KSk7CisgICAgQVNTRVJUX0VRKCJmb29iYXIiX3MsIGFjdHVh
bCk7Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoSW5j
b3JyZWN0UGFkZGluZykKK3sKKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTMTI4R0NNQ2xp
ZW50S2V5cygpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkRHdjZy
YTFubFlnRENTMUZSbmJ6bHdBQUVBQkJCUDR6OUtzTjZuR1JUYlZZSV9jN1ZKU1BRVEJ0a2djeTI3
bWxtbE1vWklJZ0RsbDZlM3ZDWUxvY0lubVlXQW1TNlRsekFDOHdFcUtLNlBCcnUzamw3QV9Ea05S
WEE2Q2JGaUc4MHpLNkJmMUlSSUw5b3ZqSHA3aUxqQ3ciKTsKKworICAgIGF1dG8gcmVzdWx0ID0g
ZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50S2V5cywgcGF5bG9hZCk7CisgICAgQVNTRVJU
X0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlwdG8s
IEFFUzEyOEdDTVBheWxvYWRXaXRoRW1wdHlQbGFpbnRleHQpCit7CisgICAgYXV0byBjbGllbnRL
ZXlzID0gbWFrZUFFUzEyOEdDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0
QmFzZTY0VVJMRGVjb2RlKCJER3Y2cmExbmxZZ0RDUzFGUm5iemx3QUFFQUJCQlA0ejlLc042bkdS
VGJWWUlfYzdWSlNQUVRCdGtnY3kyN21sbWxNb1pJSWdEbGw2ZTN2Q1lMb2NJbm1ZV0FtUzZUbHpB
Qzh3RXFLSzZQQnJ1M2psN0EtbldBOUpGTFZlUTMyRVJVTEg4WUVVY0EiKTsKKworICAgIGF1dG8g
cmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50S2V5cywgcGF5bG9hZCk7Cisg
ICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1
bHQtPmlzRW1wdHkoKSk7Cit9CisKK3N0YXRpYyBDbGllbnRLZXlzIG1ha2VBRVNHQ01DbGllbnRL
ZXlzKHZvaWQpCit7CisgICAgLy8gRXhhbXBsZSB2YWx1ZXMgZnJvbSBkcmFmdC1pZXRmLXdlYnB1
c2gtZW5jcnlwdGlvbi0wNCBTZWN0aW9uIDUuCisgICAgYXV0byBwdWJsaWNLZXkgPSBtdXN0QmFz
ZTY0VVJMRGVjb2RlKCJCQ0VrQmp6TDhaM0Mtb2kyUTdvRTV0Mk5wLXA3b3NqR0xnOTNxVVAwd3Zx
UlQyMUVFV3lmMGNRRFFjYWtRTXF6NGhRS1lPUTNpbDJuTlpjdDRIZ0FVUVUiX3MpOworICAgIGF1
dG8gcHJpdmF0ZUtleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjlGV2wxNV9RVVFBV0RhRDNrM2w1
MFpCWlFKNGF1MjdGMVY0RjB1TFNEX00iX3MpOworICAgIGF1dG8gc2VjcmV0ID0gbXVzdEJhc2U2
NFVSTERlY29kZSgiUjI5dklHZHZieUJuSnlCcWIyOWlJUSJfcyk7CisKKyAgICByZXR1cm4gQ2xp
ZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBhaXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdU
Rk1vdmUocHJpdmF0ZUtleSkgfSwKKyAgICAgICAgV1RGTW92ZShzZWNyZXQpCisgICAgfTsKK30K
KworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5bG9hZFdpdGhNaW5pbWFsUGFkZGlu
ZykKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIGRyYWZ0LWlldGYtd2VicHVzaC1lbmNy
eXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTR0NNQ2xp
ZW50S2V5cygpOworICAgIGF1dG8gc2FsdCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoImxuZ2FyYnlL
Zk1vaTlaNzV4WVhta2ciX3MpOworICAgIGF1dG8gc2VydmVyUHVibGljS2V5ID0gbXVzdEJhc2U2
NFVSTERlY29kZSgiQk5vUkRiYjg0SkdtOGc1WjVDRnh1clNxc1hXSjExSXRmWEVXWVZMRTg1WTdD
WWtEalhzSUVjNGFxeFlhUTFHOEJxa1hDSjZEUHBEcld0ZFdqX211Z0hVIl9zKTsKKyAgICBhdXRv
IHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCI2bnFBUVVNRThoTnF3NUoza2w4Y3BWVkp5
bFhLWXFaT2VzZVpHOFV1ZUtwQSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVNH
Q01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tleSwgc2FsdCwgcGF5bG9hZCk7Cisg
ICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8gYWN0dWFsID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoIkkgYW0gdGhl
IHdhbHJ1cyJfcywgYWN0dWFsKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NN
UGF5bG9hZFdpdGhQYWRkaW5nKQoreworICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVNHQ01D
bGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgibG5nYXJi
eUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBtdXN0QmFz
ZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVyU3FzWFdKMTFJdGZYRVdZVkxFODVZ
N0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3RkV2pfbXVnSFUiX3MpOworICAgIGF1
dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjZubkpZU0lQdlFoZ3g4QXBERkRrV1k2
djVOOUtBdXVyM052NiJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRBRVNHQ01QYXls
b2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tleSwgc2FsdCwgcGF5bG9hZCk7CisgICAgQVNT
RVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5n
OjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoImZvb2JhciJfcywgYWN0
dWFsKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5bG9hZFdpdGhJbmNv
cnJlY3RQYWRkaW5nKQoreworICAgIGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVNHQ01DbGllbnRL
ZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJhc2U2NFVSTERlY29kZSgibG5nYXJieUtmTW9p
OVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJM
RGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVyU3FzWFdKMTFJdGZYRVdZVkxFODVZN0NZa0Rq
WHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3RkV2pfbXVnSFUiX3MpOworICAgIGF1dG8gcGF5
bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjZuN0pZU05wdEFodHhOTnlBNVl0R3l3S1pHeHdj
YkVzQlBxYXV3Il9zKTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFU0dDTVBheWxvYWQo
Y2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBzYWx0LCBwYXlsb2FkKTsKKyAgICBBU1NFUlRf
RkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywg
QUVTR0NNUGF5bG9hZFdpdGhFbXB0eVBsYWludGV4dCkKK3sKKyAgICBhdXRvIGNsaWVudEtleXMg
PSBtYWtlQUVTR0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gc2FsdCA9IG11c3RCYXNlNjRVUkxE
ZWNvZGUoImxuZ2FyYnlLZk1vaTlaNzV4WVhta2ciX3MpOworICAgIGF1dG8gc2VydmVyUHVibGlj
S2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQk5vUkRiYjg0SkdtOGc1WjVDRnh1clNxc1hXSjEx
SXRmWEVXWVZMRTg1WTdDWWtEalhzSUVjNGFxeFlhUTFHOEJxa1hDSjZEUHBEcld0ZFdqX211Z0hV
Il9zKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCI2bm9nUV9wdGJt
S3BJQjh5aTRfNEgwTFMiX3MpOworCisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVTR0NNUGF5
bG9hZChjbGllbnRLZXlzLCBzZXJ2ZXJQdWJsaWNLZXksIHNhbHQsIHBheWxvYWQpOworICAgIEFT
U0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0LT5p
c0VtcHR5KCkpOworfQorCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447111</attachid>
            <date>2021-12-13 23:19:45 -0800</date>
            <delta_ts>2022-01-29 11:53:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233903-20211213231944.patch</filename>
            <type>text/plain</type>
            <size>40111</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM2MGJhNDZjYjFiMGUx
NDEyM2Y5MDg4OWViNWJhYjE2NTdhYTU4Zi4uMTUyYzRkOTIxZjFiNmZkNGMwODNiNTg1N2FlNTY4
NjQ0MjcyNDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTEyLTA2ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWIgcHVzaCBtZXNzYWdlIGRl
Y3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBUaGlzIGFkZHMgcm91dGluZXMgdG8gZGVjcnlwdCBwdXNoIHBheWxvYWRzIGVuY29k
ZWQgd2l0aCB0aGUgYWVzMTI4Z2NtIGFuZCBhZXNnY20gc2NoZW1lcy4KKyAgICAgICAgVGhlIGNy
eXB0byBwcmltaXRpdmVzIHRoYXQgd2UgZGVwZW5kIGFyZSBpbXBsZW1lbnRlZCBpbiBQdXNoQ3J5
cHRvLCB3aGlsZSB0aGUgbG9naWMgdG8gdXNlCisgICAgICAgIHRob3NlIHByaW1pdGl2ZXMgdG8g
ZGVjcnlwdCBtZXNzYWdlIHBheWxvYWRzIGlzIGluIFB1c2hNZXNzYWdlQ3J5cHRvLgorCisgICAg
ICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkuUHVzaE1lc3NhZ2VDcnlwdG8KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2REhLZXlQYWlyOjpnZW5l
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjp2YWxpZGF0ZVAyNTZESFB1Ymxp
Y0tleSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21wdXRlUDI1NkRIU2hhcmVk
U2VjcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmhtYWNTSEEyNTYpOgorICAg
ICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdDTSk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoQ3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVzaE1hbmFnZXI6
OnN1YnNjcmliZSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0
by5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6Q2xpZW50S2V5czo6
Z2VuZXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6YXJlQ2xpZW50S2V5TGVu
Z3Roc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVBRVMxMjhH
Q01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5cHRB
RVMxMjhHQ01QYXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmNvbXB1dGVB
RVNHQ01QYWRkaW5nTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86OmRlY3J5
cHRBRVNHQ01QYXlsb2FkKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdl
Q3J5cHRvLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvY29jb2EvUHVzaENy
eXB0b0NvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpQMjU2
REhLZXlQYWlyOjpnZW5lcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjp2YWxp
ZGF0ZVAyNTZESFB1YmxpY0tleSk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoQ3J5cHRvOjpjb21w
dXRlUDI1NkRIU2hhcmVkU2VjcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hDcnlwdG86Omht
YWNTSEEyNTYpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaENyeXB0bzo6ZGVjcnlwdEFFUzEyOEdD
TSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTIt
MTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQ29udGVudCBwcm9jZXNzIGNyYXNoZXMgYXQgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdDo6bWF0Y2hlc0FsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMWY4OWQwNzU0OTgxY2IxMWY2
YzY1ODVkYzlkZWQyMmFiZjhlOGJhOS4uMDk5Y2FiMWYwNzFjOGYxYWY5NGJmOWJhMTliM2M0ZmYw
MjVlZmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMDYg
IEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3Nh
Z2UgZGVjcnlwdGlvbiByb3V0aW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaDogQWRkIEFFUy1H
Q00gZGVjcnlwdGlvbiBTUEkuCisKIDIwMjEtMTItMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2ODkz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZTQ3YTRiYWNiYTkzMDAzYzllODc4MzRhMjc5ZWI5M2Ew
MmY5NzNjMy4uMjRlNDYxZTdkZWU4M2IwYmM4ZWVhNjkyZjAyM2ZlMTdjMDVhMjY0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0yOTAsNiArMjkwLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbk9ic2VydmVy
LmgKICAgICBNb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25TdGF0ZS5oCiAKKyAgICBNb2R1
bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaAorICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3Nh
Z2VDcnlwdG8uaAogICAgIE1vZHVsZXMvcHVzaC1hcGkvUHVzaFBlcm1pc3Npb25TdGF0ZS5oCiAg
ICAgTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNGEw
MzEzZjQyOWUwM2NjNWE4NDA5NTcyNjk5ZDA5ZDEwMjE1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHVzaENy
eXB0by5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlOjpQdXNoQ3J5cHRvIHsKKworI2lmICFQTEFURk9S
TShDT0NPQSkKKworUDI1NkRIS2V5UGFpciBQMjU2REhLZXlQYWlyOjpnZW5lcmF0ZSh2b2lkKQor
eworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgdmFsaWRhdGVQMjU2REhQdWJsaWNLZXkoU3Bh
bjxjb25zdCB1aW50OF90PikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KFNwYW48Y29uc3Qg
dWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQYWlyJiBrZXlQYWlyKQoreworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNw
YW48Y29uc3QgdWludDhfdD4sIFNwYW48Y29uc3QgdWludDhfdD4pCit7CisgICAgcmV0dXJuIHsg
fTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRBRVMxMjhHQ00o
U3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50OF90PiwgU3Bhbjxjb25zdCB1aW50
OF90PikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCisjZW5kaWYgLy8gIVBMQVRG
T1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQdXNoQ3J5cHRvCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hDcnlwdG8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaENyeXB0by5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZDMxNmI5ZDRmNmEyNjMxMzdkZTBiZWVj
ZGEzOTJhZDA0ZDkzZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hDcnlwdG8uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZTo6UHVzaENyeXB0byB7CisKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHAyNTZkaFB1YmxpY0tleUxlbmd0aCA9IDY1Oworc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCA9IDMyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
cDI1NmRoU2hhcmVkU2VjcmV0TGVuZ3RoID0gMzI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
aGEyNTZEaWdlc3RMZW5ndGggPSAzMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFlczEyOEdD
TVRhZ0xlbmd0aCA9IDE2OworCitzdHJ1Y3QgUDI1NkRIS2V5UGFpciB7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHB1YmxpY0tleTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUtleTsKKworICAg
IHN0YXRpYyBQMjU2REhLZXlQYWlyIGdlbmVyYXRlKHZvaWQpOworfTsKKworYm9vbCB2YWxpZGF0
ZVAyNTZESFB1YmxpY0tleShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1YmxpY0tleSk7CisKK1dFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlUDI1NkRIU2hh
cmVkU2VjcmV0KFNwYW48Y29uc3QgdWludDhfdD4gcHVibGljS2V5LCBjb25zdCBQMjU2REhLZXlQ
YWlyJik7CisKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBobWFjU0hBMjU2KFNwYW48
Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1lc3NhZ2UpOworCitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdD
TShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGtleSwgU3Bhbjxjb25zdCB1aW50OF90PiBpdiwgU3Bhbjxj
b25zdCB1aW50OF90PiBjaXBoZXJUZXh0V2l0aFRhZyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmU6OlB1c2hDcnlwdG8KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKaW5kZXggMzcx
ZThkY2JmOWRiMzY2ZmQ4NWQyNDUwZDBhMDQ2NjRhMDRkYjJmZS4uNGM3MTU2MmNkMDQ2NDdiMTA3
Nzg0NDk1MWFlMmU3ZThhN2M1YWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWFuYWdlci5jcHAKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKICNpbmNsdWRlICJF
dmVudExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU1B1c2hQZXJt
aXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJKU1B1c2hTdWJzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJQdXNoQ3J5cHRvLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgpAQCAtMTAxLDE0ICsxMDEsNyBAQCB2b2lkIFB1c2hNYW5hZ2VyOjpzdWJz
Y3JpYmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3Rk
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBFTkFCTEUoV0VCX0NSWVBU
TykKLSAgICAgICAgYXV0byBrZXlEYXRhID0ga2V5RGF0YVJlc3VsdC5yZXR1cm5WYWx1ZSgpOwot
ICAgICAgICBhdXRvIGtleSA9IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNEU0EsICJQLTI1NiJfcywgV1RGTW92ZShrZXlEYXRhKSwgZmFsc2UsIENy
eXB0b0tleVVzYWdlVmVyaWZ5KTsKLSNlbHNlCi0gICAgICAgIGF1dG8ga2V5ID0gbnVsbHB0cjsK
LSNlbmRpZgotCi0gICAgICAgIGlmICgha2V5KSB7CisgICAgICAgIGlmICghUHVzaENyeXB0bzo6
dmFsaWRhdGVQMjU2REhQdWJsaWNLZXkoa2V5RGF0YVJlc3VsdC5yZXR1cm5WYWx1ZSgpKSkgewog
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9y
LCAiYXBwbGljYXRpb25TZXJ2ZXJLZXkgbXVzdCBjb250YWluIGEgdmFsaWQgUC0yNTYgcHVibGlj
IGtleSJfcyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzU5N2Q4ZTQ5MWY1NTQ5MmRjY2RkM2FkOTkxYzlhZGNlZjJkNThjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNy
eXB0by5jcHAKQEAgLTAsMCArMSwzMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VDcnlwdG8uaCIKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZU9y
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlOjpQdXNoQ3J5cHRvIHsKKworLy8gQXJiaXRyYXJ5IGxpbWl0IHRo
YXQncyBsYXJnZXIgdGhhbiB0aGUgbGFyZ2VzdCBwYXlsb2FkIEFQTlMgc2hvdWxkIGV2ZXIgZ2l2
ZSB1cy4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heFB1c2hQYXlsb2FkTGVuZ3RoID0gNjU1
MzU7CisKKy8vIEZyb20gUkZDODI5MS4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNhbHRMZW5n
dGggPSAxNjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNoYXJlZEF1dGhTZWNyZXRMZW5ndGgg
PSAxNjsKKworQ2xpZW50S2V5cyBDbGllbnRLZXlzOjpnZW5lcmF0ZSgpCit7CisgICAgdWludDhf
dCBzaGFyZWRBdXRoU2VjcmV0W3NoYXJlZEF1dGhTZWNyZXRMZW5ndGhdOworICAgIGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tVmFsdWVzKHNoYXJlZEF1dGhTZWNyZXQsIHNpemVvZihzaGFyZWRBdXRo
U2VjcmV0KSk7CisKKyAgICByZXR1cm4gQ2xpZW50S2V5cyB7CisgICAgICAgIFAyNTZESEtleVBh
aXI6OmdlbmVyYXRlKCksCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7IHNoYXJlZEF1dGhTZWNy
ZXQsIHNpemVvZihzaGFyZWRBdXRoU2VjcmV0KSB9CisgICAgfTsKK30KKworc3RhdGljIGJvb2wg
YXJlQ2xpZW50S2V5TGVuZ3Roc1ZhbGlkKGNvbnN0IENsaWVudEtleXMmIGNsaWVudEtleXMpCit7
CisgICAgcmV0dXJuIGNsaWVudEtleXMuY2xpZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuc2l6
ZSgpID09IHAyNTZkaFB1YmxpY0tleUxlbmd0aCAmJiBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtl
eVBhaXIucHJpdmF0ZUtleS5zaXplKCkgPT0gcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCAmJiBjbGll
bnRLZXlzLnNoYXJlZEF1dGhTZWNyZXQuc2l6ZSgpID09IHNoYXJlZEF1dGhTZWNyZXRMZW5ndGg7
Cit9CisKK3N0YXRpYyBzaXplX3QgY29tcHV0ZUFFUzEyOEdDTVBhZGRpbmdMZW5ndGgoY29uc3Qg
dWludDhfdCAqYmVnaW4sIHNpemVfdCBsZW5ndGgpCit7CisgICAgLyoKKyAgICAgKiBDb21wdXRl
IHBhZGRpbmcgbGVuZ3RoIGFzIGRlZmluZWQgaW4gUkZDODE4OCBTZWN0aW9uIDI6CisgICAgICoK
KyAgICAgKiAgICstLS0tLS0tLS0tLSstLS0tLSsKKyAgICAgKiAgIHwgICBkYXRhICAgIHwgcGFk
IHwKKyAgICAgKiAgICstLS0tLS0tLS0tLSstLS0tLSsKKyAgICAgKgorICAgICAqIHBhZCBtdXN0
IGJlIG9mIG5vbi16ZXJvIGxlbmd0aCBhbmQgaXMgYSBkZWxpbWl0ZXIgb2N0ZXQgKDB4MDIpIGZv
bGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgMHgwMCBvY3RldHMuCisgICAgICovCisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKworICAgIGNvbnN0IHVpbnQ4X3QqIGVu
ZCA9IGJlZ2luICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIGN1ciA9IGVuZCAtIDE7Cisg
ICAgd2hpbGUgKGN1ciA+IGJlZ2luICYmICgqY3VyID09IDB4MDApKQorICAgICAgICAtLWN1cjsK
KyAgICBpZiAoKmN1ciAhPSAweDAyKQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICBy
ZXR1cm4gZW5kIC0gY3VyOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVj
cnlwdEFFUzEyOEdDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50S2V5cywgU3Bhbjxj
b25zdCB1aW50OF90PiBwYXlsb2FkKQoreworICAgIGlmICghYXJlQ2xpZW50S2V5TGVuZ3Roc1Zh
bGlkKGNsaWVudEtleXMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLy8g
RXh0cmFjdCBlbmNyeXB0aW9uIHBhcmFtZXRlcnMgZnJvbSBoZWFkZXIgYXMgZGVzY3JpYmVkIGlu
IFJGQzgxODguCisgICAgc3RydWN0IFBheWxvYWRIZWFkZXIgeworICAgICAgICB1aW50OF90IHNh
bHRbc2FsdExlbmd0aF07CisgICAgICAgIHVpbnQ4X3QgaWdub3JlZFs0XTsKKyAgICAgICAgdWlu
dDhfdCBrZXlMZW5ndGg7CisgICAgICAgIHVpbnQ4X3Qgc2VydmVyUHVibGljS2V5W3AyNTZkaFB1
YmxpY0tleUxlbmd0aF07CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihQYXlsb2Fk
SGVhZGVyKSA9PSA4Nik7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluUHVzaFBheWxv
YWRMZW5ndGggPSBzaXplb2YoUGF5bG9hZEhlYWRlcikgKyAxIC8qIG1pblBhZGRpbmdMZW5ndGgg
Ki8gKyBhZXMxMjhHQ01UYWdMZW5ndGg7CisKKyAgICBpZiAocGF5bG9hZC5zaXplKCkgPCBtaW5Q
dXNoUGF5bG9hZExlbmd0aCB8fCBwYXlsb2FkLnNpemUoKSA+IG1heFB1c2hQYXlsb2FkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgUGF5bG9hZEhlYWRlciBoZWFk
ZXI7CisgICAgbWVtY3B5KCZoZWFkZXIsIHBheWxvYWQuZGF0YSgpLCBzaXplb2YoaGVhZGVyKSk7
CisKKyAgICBpZiAoaGVhZGVyLmtleUxlbmd0aCAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgorICAgICAqIFRoZSByZXN0IG9m
IHRoZSBjb21tZW50cyBhcmUgc25pcHBldHMgZnJvbSBSRkM4MjkxIDMuNC4KKyAgICAgKgorICAg
ICAqIC0tIEZvciBhIHVzZXIgYWdlbnQ6CisgICAgICogZWNkaF9zZWNyZXQgPSBFQ0RIKHVhX3By
aXZhdGUsIGFzX3B1YmxpYykKKyAgICAgKi8KKyAgICBhdXRvIGVjZGhTZWNyZXRSZXN1bHQgPSBj
b21wdXRlUDI1NkRIU2hhcmVkU2VjcmV0KGhlYWRlci5zZXJ2ZXJQdWJsaWNLZXksIGNsaWVudEtl
eXMuY2xpZW50UDI1NkRIS2V5UGFpcik7CisgICAgaWYgKCFlY2RoU2VjcmV0UmVzdWx0KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXh0cmFj
dChzYWx0PWF1dGhfc2VjcmV0LCBJS009ZWNkaF9zZWNyZXQpCisgICAgICogUFJLX2tleSA9IEhN
QUMtU0hBLTI1NihhdXRoX3NlY3JldCwgZWNkaF9zZWNyZXQpCisgICAgICovCisgICAgYXV0byBw
cmtLZXkgPSBobWFjU0hBMjU2KGNsaWVudEtleXMuc2hhcmVkQXV0aFNlY3JldCwgKmVjZGhTZWNy
ZXRSZXN1bHQpOworCisgICAgLyoKKyAgICAgKiAjIEhLREYtRXhwYW5kKFBSS19rZXksIGtleV9p
bmZvLCBMX2tleT0zMikKKyAgICAgKiBrZXlfaW5mbyA9ICJXZWJQdXNoOiBpbmZvIiB8fCAweDAw
IHx8IHVhX3B1YmxpYyB8fCBhc19wdWJsaWMKKyAgICAgKiBJS00gPSBITUFDLVNIQS0yNTYoUFJL
X2tleSwga2V5X2luZm8gfHwgMHgwMSkKKyAgICAgKi8KKyAgICBzdHJ1Y3QgS2V5SW5mbyB7Cisg
ICAgICAgIHVpbnQ4X3QgbGFiZWxbMTRdID0geyAiV2ViUHVzaDogaW5mbyIgfTsKKyAgICAgICAg
dWludDhfdCBjbGllbnRLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAgdWludDhf
dCBzZXJ2ZXJLZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoXTsKKyAgICAgICAgdWludDhfdCBlbmQg
PSAweDAxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoS2V5SW5mbykgPT0gMTQ1
KTsKKworICAgIEtleUluZm8ga2V5SW5mbzsKKyAgICBtZW1jcHkoa2V5SW5mby5jbGllbnRLZXks
IGNsaWVudEtleXMuY2xpZW50UDI1NkRIS2V5UGFpci5wdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQ
dWJsaWNLZXlMZW5ndGgpOworICAgIG1lbWNweShrZXlJbmZvLnNlcnZlcktleSwgaGVhZGVyLnNl
cnZlclB1YmxpY0tleSwgcDI1NmRoUHVibGljS2V5TGVuZ3RoKTsKKworICAgIGF1dG8gaWttID0g
aG1hY1NIQTI1NihwcmtLZXksIFNwYW4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmtleUlu
Zm8pLCBzaXplb2Yoa2V5SW5mbykpKTsKKworICAgIC8qCisgICAgICogIyBIS0RGLUV4dHJhY3Qo
c2FsdCwgSUtNKQorICAgICAqIFBSSyA9IEhNQUMtU0hBLTI1NihzYWx0LCBJS00pCisgICAgICov
CisgICAgYXV0byBwcmsgPSBobWFjU0hBMjU2KGhlYWRlci5zYWx0LCBpa20pOworCisgICAgLyoK
KyAgICAgKiAjIEhLREYtRXhwYW5kKFBSSywgY2VrX2luZm8sIExfY2VrPTE2KQorICAgICAqIGNl
a19pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGFlczEyOGdjbSIgfHwgMHgwMAorICAgICAqIENF
SyA9IEhNQUMtU0hBLTI1NihQUkssIGNla19pbmZvIHx8IDB4MDEpWzAuLjE1XQorICAgICAqLwor
ICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGNla0luZm9bXSA9ICJDb250ZW50LUVuY29kaW5nOiBh
ZXMxMjhnY21ceDAwXHgwMSI7CisgICAgYXV0byBjZWsgPSBobWFjU0hBMjU2KHByaywgU3Bhbihj
ZWtJbmZvLCBzaXplb2YoY2VrSW5mbykgLSAxKSk7CisgICAgY2VrLnNocmluaygxNik7CisKKyAg
ICAvKgorICAgICAqICMgSEtERi1FeHBhbmQoUFJLLCBub25jZV9pbmZvLCBMX25vbmNlPTEyKQor
ICAgICAqIG5vbmNlX2luZm8gPSAiQ29udGVudC1FbmNvZGluZzogbm9uY2UiIHx8IDB4MDAKKyAg
ICAgKiBOT05DRSA9IEhNQUMtU0hBLTI1NihQUkssIG5vbmNlX2luZm8gfHwgMHgwMSlbMC4uMTFd
CisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgbm9uY2VJbmZvW10gPSAiQ29udGVu
dC1FbmNvZGluZzogbm9uY2VceDAwXHgwMSI7CisgICAgYXV0byBub25jZSA9IGhtYWNTSEEyNTYo
cHJrLCBTcGFuKG5vbmNlSW5mbywgc2l6ZW9mKG5vbmNlSW5mbykgLSAxKSk7CisgICAgbm9uY2Uu
c2hyaW5rKDEyKTsKKworICAgIC8vIEZpbmFsbHksIGRlY3J5cHQgd2l0aCBBRVMxMjhHQ00gYW5k
IHJldHVybiB0aGUgdW5wYWRkZWQgcGxhaW50ZXh0LgorICAgIGF1dG8gY2lwaGVyVGV4dCA9IFNw
YW4ocGF5bG9hZC5kYXRhKCkgKyBzaXplb2YoaGVhZGVyKSwgcGF5bG9hZC5zaXplKCkgLSBzaXpl
b2YoaGVhZGVyKSk7CisgICAgYXV0byBwbGFpblRleHRSZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NN
KGNlaywgbm9uY2UsIGNpcGhlclRleHQpOworICAgIGlmICghcGxhaW5UZXh0UmVzdWx0KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRleHQgPSBXVEZNb3Zl
KHBsYWluVGV4dFJlc3VsdC52YWx1ZSgpKTsKKyAgICBzaXplX3QgcGFkZGluZ0xlbmd0aCA9IGNv
bXB1dGVBRVMxMjhHQ01QYWRkaW5nTGVuZ3RoKHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5z
aXplKCkpOworICAgIGlmIChwYWRkaW5nTGVuZ3RoID09IFNJWkVfTUFYKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcGxhaW5UZXh0LnNocmluayhwbGFpblRleHQuc2l6ZSgp
IC0gcGFkZGluZ0xlbmd0aCk7CisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworc3RhdGljIHNp
emVfdCBjb21wdXRlQUVTR0NNUGFkZGluZ0xlbmd0aChjb25zdCB1aW50OF90ICpiZWdpbiwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICAvKgorICAgICAqIENvbXB1dGUgcGFkZGluZyBsZW5ndGggYXMg
ZGVmaW5lZCBpbiBkcmFmdC1pZXRmLWh0dHBiaXMtZW5jcnlwdGlvbi1lbmNvZGluZy0wMzoKKyAg
ICAgKgorICAgICAqICAgKy0tLS0tKy0tLS0tLS0tLS0tKworICAgICAqICAgfCBwYWQgfCAgIGRh
dGEgICAgfAorICAgICAqICAgKy0tLS0tKy0tLS0tLS0tLS0tKworICAgICAqCisgICAgICogUGFk
ZGluZyBjb25zaXN0cyBvZiBhIHR3byBvY3RldCB1bnNpZ25lZCBpbnRlZ2VyIGluIG5ldHdvcmsg
Ynl0ZSBvcmRlciwgZm9sbG93ZWQgYnkgdGhhdAorICAgICAqIG51bWJlciBvZiAweDAwIG9jdGV0
cy4gVGhlIG1pbmltdW0gcGFkZGluZyBzaXplIGlzIDIgYnl0ZXMuCisgICAgICovCisgICAgaWYg
KGxlbmd0aCA8IDIpCisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKworICAgIHVpbnQxNl90IHBh
ZGRpbmdMZW5ndGg7CisgICAgbWVtY3B5KCZwYWRkaW5nTGVuZ3RoLCBiZWdpbiwgMik7CisgICAg
cGFkZGluZ0xlbmd0aCA9IG50b2hzKHBhZGRpbmdMZW5ndGgpOworCisgICAgY29uc3QgdWludDhf
dCogY3VyID0gYmVnaW4gKyAyOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJlZ2luICsgbGVu
Z3RoOworICAgIHVpbnQxNl90IHBhZGRpbmdMZWZ0ID0gcGFkZGluZ0xlbmd0aDsKKyAgICB3aGls
ZSAoY3VyIDwgZW5kICYmICgqY3VyID09IDB4MCkgJiYgcGFkZGluZ0xlZnQpIHsKKyAgICAgICAg
KytjdXI7CisgICAgICAgIC0tcGFkZGluZ0xlZnQ7CisgICAgfQorCisgICAgaWYgKHBhZGRpbmdM
ZWZ0KQorICAgICAgICByZXR1cm4gU0laRV9NQVg7CisKKyAgICByZXR1cm4gY3VyIC0gYmVnaW47
Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTR0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRLZXlzLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNlcnZl
clAyNTZESFB1YmxpY0tleSwgU3Bhbjxjb25zdCB1aW50OF90PiBzYWx0LCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IHBheWxvYWQpCit7CisgICAgaWYgKCFhcmVDbGllbnRLZXlMZW5ndGhzVmFsaWQoY2xp
ZW50S2V5cykgfHwgc2VydmVyUDI1NkRIUHVibGljS2V5LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNL
ZXlMZW5ndGggfHwgc2FsdC5zaXplKCkgIT0gc2FsdExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIC8vIFBhZGRpbmcgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBv
ZiB0aGUgdHdvIG9jdGV0IHVuc2lnbmVkIGludGVnZXIgdXNlZCBpbiB0aGUgcGFkZGluZyBzY2hl
bWUgcGx1cyB0aGUgc2l6ZSBvZiB0aGUgQUVTMTI4R0NNIHRhZy4KKyAgICBpZiAocGF5bG9hZC5z
aXplKCkgPCAyICsgYWVzMTI4R0NNVGFnTGVuZ3RoIHx8IHBheWxvYWQuc2l6ZSgpID4gbWF4UHVz
aFBheWxvYWRMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvKgor
ICAgICAqIFRoZXNlIGNvbW1lbnRzIGFyZSBzbmlwcGV0cyBmcm9tIGRyYWZ0LWlldGYtd2VicHVz
aC1lbmNyeXB0aW9uLTA0LgorICAgICAqCisgICAgICogLS0gRm9yIGEgVXNlciBBZ2VudDoKKyAg
ICAgKiBlY2RoX3NlY3JldCA9IEVDREgodWFfcHJpdmF0ZSwgYXNfcHVibGljKQorICAgICAqLwor
ICAgIGF1dG8gZWNkaFNlY3JldFJlc3VsdCA9IGNvbXB1dGVQMjU2REhTaGFyZWRTZWNyZXQoc2Vy
dmVyUDI1NkRIUHVibGljS2V5LCBjbGllbnRLZXlzLmNsaWVudFAyNTZESEtleVBhaXIpOworICAg
IGlmICghZWNkaFNlY3JldFJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIC8qCisgICAgICogYXV0aF9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IGF1dGgiIHx8IDB4
MDAKKyAgICAgKiBQUktfY29tYmluZSA9IEhNQUMtU0hBLTI1NihhdXRoX3NlY3JldCwgZWNkaF9z
ZWNyZXQpCisgICAgICogSUtNID0gSE1BQy1TSEEtMjU2KFBSS19jb21iaW5lLCBhdXRoX2luZm8g
fHwgMHgwMSkKKyAgICAgKiBQUksgPSBITUFDLVNIQS0yNTYoc2FsdCwgSUtNKQorICAgICAqLwor
ICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGF1dGhJbmZvW10gPSAiQ29udGVudC1FbmNvZGluZzog
YXV0aFx4MDBceDAxIjsKKyAgICBhdXRvIHBya0NvbWJpbmUgPSBobWFjU0hBMjU2KGNsaWVudEtl
eXMuc2hhcmVkQXV0aFNlY3JldCwgKmVjZGhTZWNyZXRSZXN1bHQpOworICAgIGF1dG8gaWttID0g
aG1hY1NIQTI1NihwcmtDb21iaW5lLCBTcGFuKGF1dGhJbmZvLCBzaXplb2YoYXV0aEluZm8pIC0g
MSkpOworICAgIGF1dG8gcHJrID0gaG1hY1NIQTI1NihzYWx0LCBpa20pOworCisgICAgLyoKKyAg
ICAgKiBjb250ZXh0ID0gIlAtMjU2IiB8fCAweDAwIHx8CisgICAgICogICAgICAgICAgIDB4MDAg
fHwgMHg0MSB8fCB1YV9wdWJsaWMgfHwKKyAgICAgKiAgICAgICAgICAgMHgwMCB8fCAweDQxIHx8
IGFzX3B1YmxpYworICAgICAqCisgICAgICogTm90ZSB0aGF0IHdlIGFsc28gYXBwZW5kIGEgMHgw
MSBieXRlIGF0IHRoZSBlbmQgaGVyZSBzaW5jZSB0aGUgY2VrIGFuZCBub25jZQorICAgICAqIGRl
cml2YXRpb24gZnVuY3Rpb25zIGJlbG93IHJlcXVpcmUgdGhhdCB0cmFpbGluZyAweDAxIGJ5dGUu
CisgICAgICovCisgICAgc3RydWN0IEtleURlcml2YXRpb25Db250ZXh0IHsKKyAgICAgICAgdWlu
dDhfdCBsYWJlbFs2XSA9IHsgIlAtMjU2IiB9OworICAgICAgICB1aW50OF90IGNsaWVudFB1Ymxp
Y0tleUxlbmd0aFsyXSA9IHsgMCwgMHg0MSB9OworICAgICAgICB1aW50OF90IGNsaWVudFB1Ymxp
Y0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgICAgICB1aW50OF90IHNlcnZlclB1Ymxp
Y0tleUxlbmd0aFsyXSA9IHsgMCwgMHg0MSB9OworICAgICAgICB1aW50OF90IHNlcnZlclB1Ymxp
Y0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgICAgICB1aW50OF90IGVuZCA9IDB4MDE7
CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihLZXlEZXJpdmF0aW9uQ29udGV4dCkg
PT0gMTQxKTsKKyAgICBLZXlEZXJpdmF0aW9uQ29udGV4dCBjb250ZXh0OworICAgIG1lbWNweShj
b250ZXh0LmNsaWVudFB1YmxpY0tleSwgY2xpZW50S2V5cy5jbGllbnRQMjU2REhLZXlQYWlyLnB1
YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAgbWVtY3B5KGNvbnRl
eHQuc2VydmVyUHVibGljS2V5LCBzZXJ2ZXJQMjU2REhQdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQ
dWJsaWNLZXlMZW5ndGgpOworCisgICAgLyoKKyAgICAgKiBjZWtfaW5mbyA9ICJDb250ZW50LUVu
Y29kaW5nOiBhZXNnY20iIHx8IDB4MDAgfHwgY29udGV4dAorICAgICAqIENFSyA9IEhNQUMtU0hB
LTI1NihQUkssIGNla19pbmZvIHx8IDB4MDEpWzAuLjE1XQorICAgICAqLworICAgIHN0YXRpYyBj
b25zdCB1aW50OF90IGNla0luZm9IZWFkZXJbXSA9ICJDb250ZW50LUVuY29kaW5nOiBhZXNnY20i
OworICAgIHVpbnQ4X3QgY2VrSW5mb1tzaXplb2YoY2VrSW5mb0hlYWRlcikgKyBzaXplb2YoY29u
dGV4dCldOworICAgIG1lbWNweShjZWtJbmZvLCBjZWtJbmZvSGVhZGVyLCBzaXplb2YoY2VrSW5m
b0hlYWRlcikpOworICAgIG1lbWNweShjZWtJbmZvICsgc2l6ZW9mKGNla0luZm9IZWFkZXIpLCAm
Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKTsKKworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihw
cmssIGNla0luZm8pOworICAgIGNlay5zaHJpbmsoMTYpOworCisgICAgLyoKKyAgICAgKiBub25j
ZV9pbmZvID0gIkNvbnRlbnQtRW5jb2Rpbmc6IG5vbmNlIiB8fCAweDAwIHx8IGNvbnRleHQKKyAg
ICAgKiBOT05DRSA9IEhNQUMtU0hBLTI1NihQUkssIG5vbmNlX2luZm8gfHwgMHgwMSlbMC4uMTFd
CisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgbm9uY2VJbmZvSGVhZGVyW10gPSAi
Q29udGVudC1FbmNvZGluZzogbm9uY2UiOworICAgIHVpbnQ4X3Qgbm9uY2VJbmZvW3NpemVvZihu
b25jZUluZm9IZWFkZXIpICsgc2l6ZW9mKGNvbnRleHQpXTsKKyAgICBtZW1jcHkobm9uY2VJbmZv
LCBub25jZUluZm9IZWFkZXIsIHNpemVvZihub25jZUluZm9IZWFkZXIpKTsKKyAgICBtZW1jcHko
bm9uY2VJbmZvICsgc2l6ZW9mKG5vbmNlSW5mb0hlYWRlciksICZjb250ZXh0LCBzaXplb2YoY29u
dGV4dCkpOworCisgICAgYXV0byBub25jZSA9IGhtYWNTSEEyNTYocHJrLCBub25jZUluZm8pOwor
ICAgIG5vbmNlLnNocmluaygxMik7CisKKyAgICAvLyBGaW5hbGx5LCBkZWNyeXB0IHdpdGggQUVT
MTI4R0NNIGFuZCByZXR1cm4gdGhlIHVucGFkZGVkIHBsYWludGV4dC4KKyAgICBhdXRvIHBsYWlu
VGV4dFJlc3VsdCA9IGRlY3J5cHRBRVMxMjhHQ00oY2VrLCBub25jZSwgcGF5bG9hZCk7CisgICAg
aWYgKCFwbGFpblRleHRSZXN1bHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0UmVzdWx0LnZhbHVlKCkpOworICAg
IHNpemVfdCBwYWRkaW5nTGVuZ3RoID0gY29tcHV0ZUFFU0dDTVBhZGRpbmdMZW5ndGgocGxhaW5U
ZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CisgICAgaWYgKHBhZGRpbmdMZW5ndGggPT0g
U0laRV9NQVgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gVmVj
dG9yPHVpbnQ4X3Q+IHsgcGxhaW5UZXh0LmRhdGEoKSArIHBhZGRpbmdMZW5ndGgsIHBsYWluVGV4
dC5zaXplKCkgLSBwYWRkaW5nTGVuZ3RoIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OlB1c2hDcnlwdG8KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VDcnlwdG8uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NTUzZWMzMTVjZGI1YjI0ZjFiMWNkZDdkN2E5YzAxNDZkMDNkODc1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNy
eXB0by5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlB1c2hDcnlwdG8uaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZTo6UHVzaENyeXB0byB7CisKK3N0cnVjdCBD
bGllbnRLZXlzIHsKKyAgICBQMjU2REhLZXlQYWlyIGNsaWVudFAyNTZESEtleVBhaXI7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNyZXQ7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgQ2xpZW50S2V5cyBnZW5lcmF0ZSgpOworfTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBh
eWxvYWQgZW5jb2RlZCB3aXRoIHRoZSBhZXMxMjhnY20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNj
cmliZWQgaW4gUkZDODI5MS4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiwgU3Bhbjxj
b25zdCB1aW50OF90PiBwYXlsb2FkKTsKKworLy8gRGVjcnlwdHMgYSBwdXNoIHBheWxvYWQgZW5j
b2RlZCB3aXRoIHRoZSBhZXNnY20gQ29udGVudC1FbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gZHJh
ZnQtaWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24tMDQuCitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFU0dDTVBheWxvYWQoY29uc3QgQ2xpZW50S2V5
cyYsIFNwYW48Y29uc3QgdWludDhfdD4gc2VydmVyUDI1NkRIUHVibGljS2V5LCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+IHNhbHQsIFNwYW48Y29uc3QgdWludDhfdD4gcGF5bG9hZCk7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmU6OlB1c2hDcnlwdG8KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvY29jb2Ev
UHVzaENyeXB0b0NvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvY29j
b2EvUHVzaENyeXB0b0NvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWJmZTc3YjA3MGJhMDJiMWNkMTk0
Y2ZiNzZmNTRlM2RkMjhiYzI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1c2hDcnlwdG8u
aCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0
by9Db21tb25ITUFDLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEku
aD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmU6OlB1c2hDcnlw
dG8geworCitQMjU2REhLZXlQYWlyIFAyNTZESEtleVBhaXI6OmdlbmVyYXRlKHZvaWQpCit7Cisg
ICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBudWxscHRyOworICAgIENDRUNDcnlwdG9y
UmVmIGNjUHJpdmF0ZUtleSA9IG51bGxwdHI7CisgICAgYXV0byByZWxlYXNlciA9IFdURjo6bWFr
ZVNjb3BlRXhpdChbJmNjUHVibGljS2V5LCAmY2NQcml2YXRlS2V5XSgpIHsKKyAgICAgICAgaWYg
KGNjUHVibGljS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0b3JSZWxlYXNlKGNjUHVibGljS2V5
KTsKKyAgICAgICAgaWYgKGNjUHJpdmF0ZUtleSkKKyAgICAgICAgICAgIENDRUNDcnlwdG9yUmVs
ZWFzZShjY1ByaXZhdGVLZXkpOworICAgIH0pOworCisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1
cyA9IENDRUNDcnlwdG9yR2VuZXJhdGVQYWlyKDI1NiwgJmNjUHVibGljS2V5LCAmY2NQcml2YXRl
S2V5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0dXMgPT0ga0NDU3VjY2Vzcyk7CisKKyAgICB1
aW50OF90IHB1YmxpY0tleVtwMjU2ZGhQdWJsaWNLZXlMZW5ndGhdOworICAgIHNpemVfdCBwdWJs
aWNLZXlMZW5ndGggPSBzaXplb2YocHVibGljS2V5KTsKKyAgICBzdGF0dXMgPSBDQ0VDQ3J5cHRv
ckV4cG9ydEtleShrQ0NJbXBvcnRLZXlCaW5hcnksIHB1YmxpY0tleSwgJnB1YmxpY0tleUxlbmd0
aCwgY2NFQ0tleVB1YmxpYywgY2NQdWJsaWNLZXkpOworICAgIFJFTEVBU0VfQVNTRVJUKHN0YXR1
cyA9PSBrQ0NTdWNjZXNzICYmIHB1YmxpY0tleUxlbmd0aCA9PSBzaXplb2YocHVibGljS2V5KSk7
CisKKyAgICAvLyBDb21tb25DcnlwdG8gZXhwZWN0cyB0aGUgYmluYXJ5IGZvcm1hdCB0byBiZSA2
NSBieXRlIHB1YmxpYyBrZXkgZm9sbG93ZWQgYnkgdGhlIDMyIGJ5dGUgcHJpdmF0ZSBrZXksIHNv
IHdlIHdhbnQgdG8gZXh0cmFjdCB0aGUgbGFzdCAzMiBieXRlcyBmcm9tIHRoZSBidWZmZXIuCisg
ICAgdWludDhfdCBrZXlbcDI1NmRoUHVibGljS2V5TGVuZ3RoICsgcDI1NmRoUHJpdmF0ZUtleUxl
bmd0aF07CisgICAgc2l6ZV90IGtleUxlbmd0aCA9IHNpemVvZihrZXkpOworICAgIHN0YXR1cyA9
IENDRUNDcnlwdG9yRXhwb3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwga2V5LCAma2V5TGVuZ3Ro
LCBjY0VDS2V5UHJpdmF0ZSwgY2NQcml2YXRlS2V5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0
dXMgPT0ga0NDU3VjY2VzcyAmJiBrZXlMZW5ndGggPT0gc2l6ZW9mKGtleSkpOworCisgICAgcmV0
dXJuIFAyNTZESEtleVBhaXIgeworICAgICAgICBWZWN0b3I8dWludDhfdD4geyBwdWJsaWNLZXks
IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB9LAorICAgICAgICBWZWN0b3I8dWludDhfdD4geyBrZXkg
KyBwMjU2ZGhQdWJsaWNLZXlMZW5ndGgsIHAyNTZkaFByaXZhdGVLZXlMZW5ndGggfQorICAgIH07
Cit9CisKK2Jvb2wgdmFsaWRhdGVQMjU2REhQdWJsaWNLZXkoU3Bhbjxjb25zdCB1aW50OF90PiBw
dWJsaWNLZXkpCit7CisgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQdWJsaWNLZXkgPSBudWxscHRyOwor
ICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ0VDQ3J5cHRvckltcG9ydEtleShrQ0NJbXBv
cnRLZXlCaW5hcnksIHB1YmxpY0tleS5kYXRhKCksIHB1YmxpY0tleS5zaXplKCksIGNjRUNLZXlQ
dWJsaWMsICZjY1B1YmxpY0tleSk7CisgICAgaWYgKCFjY1B1YmxpY0tleSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIENDRUNDcnlwdG9yUmVsZWFzZShjY1B1YmxpY0tleSk7CisgICAgcmV0
dXJuIHN0YXR1cyA9PSBrQ0NTdWNjZXNzOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29tcHV0ZVAyNTZESFNoYXJlZFNlY3JldChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHB1Ymxp
Y0tleSwgY29uc3QgUDI1NkRIS2V5UGFpciYga2V5UGFpcikKK3sKKyAgICBpZiAocHVibGljS2V5
LnNpemUoKSAhPSBwMjU2ZGhQdWJsaWNLZXlMZW5ndGggfHwga2V5UGFpci5wdWJsaWNLZXkuc2l6
ZSgpICE9IHAyNTZkaFB1YmxpY0tleUxlbmd0aCB8fCBrZXlQYWlyLnByaXZhdGVLZXkuc2l6ZSgp
ICE9IHAyNTZkaFByaXZhdGVLZXlMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBDQ0VDQ3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CisgICAgQ0NFQ0Ny
eXB0b3JSZWYgY2NQcml2YXRlS2V5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlbGVhc2VyID0gV1RG
OjptYWtlU2NvcGVFeGl0KFsmY2NQdWJsaWNLZXksICZjY1ByaXZhdGVLZXldKCkgeworICAgICAg
ICBpZiAoY2NQdWJsaWNLZXkpCisgICAgICAgICAgICBDQ0VDQ3J5cHRvclJlbGVhc2UoY2NQdWJs
aWNLZXkpOworICAgICAgICBpZiAoY2NQcml2YXRlS2V5KQorICAgICAgICAgICAgQ0NFQ0NyeXB0
b3JSZWxlYXNlKGNjUHJpdmF0ZUtleSk7CisgICAgfSk7CisKKyAgICBpZiAoQ0NFQ0NyeXB0b3JJ
bXBvcnRLZXkoa0NDSW1wb3J0S2V5QmluYXJ5LCBwdWJsaWNLZXkuZGF0YSgpLCBwMjU2ZGhQdWJs
aWNLZXlMZW5ndGgsIGNjRUNLZXlQdWJsaWMsICZjY1B1YmxpY0tleSkgIT0ga0NDU3VjY2VzcykK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIENvbW1vbkNyeXB0byBleHBl
Y3RzIHRoZSBiaW5hcnkgZm9ybWF0IHRvIGJlIDY1IGJ5dGUgcHVibGljIGtleSBmb2xsb3dlZCBi
eSB0aGUgMzIgYnl0ZSBwcml2YXRlIGtleS4KKyAgICB1aW50OF90IGtleUJ1ZltwMjU2ZGhQdWJs
aWNLZXlMZW5ndGggKyBwMjU2ZGhQcml2YXRlS2V5TGVuZ3RoXTsKKyAgICBtZW1jcHkoa2V5QnVm
LCBrZXlQYWlyLnB1YmxpY0tleS5kYXRhKCksIHAyNTZkaFB1YmxpY0tleUxlbmd0aCk7CisgICAg
bWVtY3B5KGtleUJ1ZiArIHAyNTZkaFB1YmxpY0tleUxlbmd0aCwga2V5UGFpci5wcml2YXRlS2V5
LmRhdGEoKSwgcDI1NmRoUHJpdmF0ZUtleUxlbmd0aCk7CisgICAgaWYgKENDRUNDcnlwdG9ySW1w
b3J0S2V5KGtDQ0ltcG9ydEtleUJpbmFyeSwga2V5QnVmLCBzaXplb2Yoa2V5QnVmKSwgY2NFQ0tl
eVByaXZhdGUsICZjY1ByaXZhdGVLZXkpICE9IGtDQ1N1Y2Nlc3MpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2hhcmVkU2VjcmV0KHAyNTZkaFNo
YXJlZFNlY3JldExlbmd0aCk7CisgICAgc2l6ZV90IHNoYXJlZFNlY3JldExlbmd0aCA9IHNoYXJl
ZFNlY3JldC5zaXplKCk7CisgICAgaWYgKENDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChj
Y1ByaXZhdGVLZXksIGNjUHVibGljS2V5LCBzaGFyZWRTZWNyZXQuYmVnaW4oKSwgJnNoYXJlZFNl
Y3JldExlbmd0aCkgIT0ga0NDU3VjY2VzcyB8fCBzaGFyZWRTZWNyZXRMZW5ndGggIT0gcDI1NmRo
U2hhcmVkU2VjcmV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHNoYXJlZFNlY3JldDsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGhtYWNTSEEyNTYoU3Bh
bjxjb25zdCB1aW50OF90PiBrZXksIFNwYW48Y29uc3QgdWludDhfdD4gbWVzc2FnZSkKK3sKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHNoYTI1NkRpZ2VzdExlbmd0aCk7CisgICAgQ0NIbWFj
KGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIG1lc3NhZ2UuZGF0YSgp
LCBtZXNzYWdlLnNpemUoKSwgcmVzdWx0LmJlZ2luKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTMTI4R0NNKFNwYW48
Y29uc3QgdWludDhfdD4ga2V5LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGl2LCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGNpcGhlclRleHRXaXRoVGFnKQoreworICAgIGlmIChjaXBoZXJUZXh0V2l0aFRhZy5z
aXplKCkgPCBhZXMxMjhHQ01UYWdMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHRXaXRoVGFnLnNpemUo
KSAtIGFlczEyOEdDTVRhZ0xlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBDQ0NyeXB0b3JHQ01P
bmVzaG90RGVjcnlwdChrQ0NBbGdvcml0aG1BRVMsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGl2
LmRhdGEoKSwgaXYuc2l6ZSgpLCBudWxscHRyIC8qIGFkZGl0aW9uYWxEYXRhICovLCAwIC8qIGFk
ZGl0aW9uYWxEYXRhTGVuZ3RoICovLCBjaXBoZXJUZXh0V2l0aFRhZy5kYXRhKCksIGNpcGhlclRl
eHRXaXRoVGFnLnNpemUoKSAtIGFlczEyOEdDTVRhZ0xlbmd0aCwgcGxhaW5UZXh0LmRhdGEoKSwg
Y2lwaGVyVGV4dFdpdGhUYWcuZW5kKCkgLSBhZXMxMjhHQ01UYWdMZW5ndGgsIGFlczEyOEdDTVRh
Z0xlbmd0aCk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ0NTdWNjZXNzKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHBsYWluVGV4dDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZTo6UHVzaENyeXB0bworCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQ29tbW9uQ3J5
cHRvU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9T
UEkuaAppbmRleCBlNWRhYmUwZjBmMjFhMDI1YjY0MjkyM2UzM2I3NGI5ZWFhYTQ0Nzg5Li4zZDY1
ZTNlY2Y0MDJkOTgyMjAxYzZmNjNiYTE3YmFjNmQwZGRhY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db21tb25DcnlwdG9TUEkuaApAQCAtMjUsNiArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25Dcnlw
dG8uaD4KKwogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNpbmNsdWRlIDxDb21tb25D
cnlwdG8vQ29tbW9uQ3J5cHRvclNQSS5oPgpAQCAtMTE4LDYgKzEyMCw3IEBAIGV4dGVybiAiQyIg
Q0NTdGF0dXMgQ0NEZXJpdmVLZXkoY29uc3QgQ0NLREZQYXJhbWV0ZXJzUmVmIHBhcmFtcywgQ0NE
aWdlc3RBbGdvcml0CiBleHRlcm4gIkMiIENDU3RhdHVzIENDS0RGUGFyYW1ldGVyc0NyZWF0ZUhr
ZGYoQ0NLREZQYXJhbWV0ZXJzUmVmICpwYXJhbXMsIGNvbnN0IHZvaWQgKnNhbHQsIHNpemVfdCBz
YWx0TGVuLCBjb25zdCB2b2lkICpjb250ZXh0LCBzaXplX3QgY29udGV4dExlbik7CiBleHRlcm4g
IkMiIHZvaWQgQ0NLREZQYXJhbWV0ZXJzRGVzdHJveShDQ0tERlBhcmFtZXRlcnNSZWYgcGFyYW1z
KTsKIGV4dGVybiAiQyIgQ0NDcnlwdG9yU3RhdHVzIENDQ3J5cHRvckdDTShDQ09wZXJhdGlvbiBv
cCwgQ0NBbGdvcml0aG0gYWxnLCBjb25zdCB2b2lkKiBrZXksIHNpemVfdCBrZXlMZW5ndGgsIGNv
bnN0IHZvaWQqIGl2LCBzaXplX3QgaXZMZW4sIGNvbnN0IHZvaWQqIGFEYXRhLCBzaXplX3QgYURh
dGFMZW4sIGNvbnN0IHZvaWQqIGRhdGFJbiwgc2l6ZV90IGRhdGFJbkxlbmd0aCwgdm9pZCogZGF0
YU91dCwgdm9pZCogdGFnLCBzaXplX3QqIHRhZ0xlbmd0aCk7CitleHRlcm4gIkMiIENDQ3J5cHRv
clN0YXR1cyBDQ0NyeXB0b3JHQ01PbmVzaG90RGVjcnlwdChDQ0FsZ29yaXRobSBhbGcsIGNvbnN0
IHZvaWQgKmtleSwgc2l6ZV90IGtleUxlbmd0aCwgY29uc3Qgdm9pZCAgKml2LCBzaXplX3QgaXZM
ZW4sIGNvbnN0IHZvaWQgICphRGF0YSwgc2l6ZV90IGFEYXRhTGVuLCBjb25zdCB2b2lkICpkYXRh
SW4sIHNpemVfdCBkYXRhSW5MZW5ndGgsIHZvaWQgICAgICAgICpkYXRhT3V0LCBjb25zdCB2b2lk
ICAqdGFnSW4sIHNpemVfdCB0YWdMZW5ndGgpOwogZXh0ZXJuICJDIiBDQ0NyeXB0b3JTdGF0dXMg
Q0NSU0FDcnlwdG9yQ3JlYXRlRnJvbURhdGEoQ0NSU0FLZXlUeXBlIGtleVR5cGUsIGNvbnN0IHVp
bnQ4X3QgKm1vZHVsdXMsIHNpemVfdCBtb2R1bHVzTGVuZ3RoLCBjb25zdCB1aW50OF90ICpleHBv
bmVudCwgc2l6ZV90IGV4cG9uZW50TGVuZ3RoLCBjb25zdCB1aW50OF90ICpwLCBzaXplX3QgcExl
bmd0aCwgY29uc3QgdWludDhfdCAqcSwgc2l6ZV90IHFMZW5ndGgsIENDUlNBQ3J5cHRvclJlZiAq
cmVmKTsKIAogI2VuZGlmIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAwYmM5YThkNjAzNjFhZjE0NzE3N2VkOTkwOGRkZjNjNDE1NTc3ZTdkLi42NDA5NzI3ZWE0
ODEzY2IyZGM4YWZlYzQwMzZhNzhmYWMzNWMxOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjU3LDcg
KzI1Nyw5IEBAIE1vZHVsZXMvcGljdHVyZWlucGljdHVyZS9Eb2N1bWVudFBpY3R1cmVJblBpY3R1
cmUuY3BwCiBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZl
bnQuY3BwCiBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvSFRNTFZpZGVvRWxlbWVudFBpY3R1cmVJ
blBpY3R1cmUuY3BwCiBNb2R1bGVzL3BpY3R1cmVpbnBpY3R1cmUvUGljdHVyZUluUGljdHVyZVdp
bmRvdy5jcHAKK01vZHVsZXMvcHVzaC1hcGkvUHVzaENyeXB0by5jcHAKIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaEV2ZW50LmNwcAorTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNyeXB0by5jcHAK
IE1vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VEYXRhLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoU3Vic2NyaXB0aW9uLmNwcAogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uQ2hh
bmdlRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBkNmIzOTEyYmVkMDY1OGZi
M2FmNzFlN2Y4MmNjYTkwMmVhOWJmNDVhLi4wYTQwZGE1OTIwZjg3ZTRkOTEwNGU1ZTk5MWFkZDc0
NzM3ZDYzZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTEwNiw2ICsxMDYsNyBAQCBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlci5tbQogTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJDbGllbnQubW0K
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1t
CiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5tbQor
TW9kdWxlcy9wdXNoLWFwaS9jb2NvYS9QdXNoQ3J5cHRvQ29jb2EuY3BwCiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2subW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTI3Mjk3MjZiOTBhYWEyM2FmNzQzODUyZDQwYjY3
YzYwNTUwMjEzLi40NzNiNzg5YjQ0M2UyODA4ZmVlYzNiMTExYjJlNmIxZTQ2N2I0MzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01NDM2LDYgKzU0MzYsOCBAQAogCQlFQjI4RUQ0NDI3MTdBQzExMDA1RjAzOTMgLyogUHVzaFN1
YnNjcmlwdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVCMjhFRDQxMjcxN0FCQTkwMDVGMDM5MyAvKiBQdXNoU3Vic2NyaXB0aW9uRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVCM0My
OUI2MjcyOUMzODgwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCM0MyOUI0MjcyOUMz
NkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaCAqLzsgfTsKIAkJRUIz
QzI5QjcyNzI5QzM4QzAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudEluaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCM0MyOUIx
MjcyOUMzNkQwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnRJbml0LmggKi87
IH07CisJCUVCQTc1QzQ2Mjc1RUM2MUEwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0MjI3NUVCREFCMDBE
NkQzMUMgLyogUHVzaENyeXB0by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUVCQTc1QzQ3Mjc1RUM2MjEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNy
eXB0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJB
NzVDNDAyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUJCOTczODEyNzEwMDY3MTAw
NzczMkVGIC8qIFB1c2hNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFQkI5NzM4MDI3MTAwNjU0MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCAq
LzsgfTsKIAkJRUJCOTczODIyNzEwMDY3NjAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCQjk3Mzc4
MjcxMDA2NTEwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUJCOTczODMyNzEwMDY4NDAwNzcz
MkVGIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25QdXNoQVBJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkI5NzM3QTI3MTAwNjUyMDA3NzMyRUYg
LyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblB1c2hBUEkuaCAqLzsgfTsKQEAgLTE3NTgxLDYg
KzE3NTgzLDExIEBACiAJCUVCM0MyOUIyMjcyOUMzNkUwMEZCNjVCNCAvKiBQdXNoU3Vic2NyaXB0
aW9uQ2hhbmdlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQdXNoU3Vic2Ny
aXB0aW9uQ2hhbmdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUIzQzI5QjMyNzI5QzM2RTAwRkI2NUI0IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHVzaFN1YnNjcmlwdGlvbkNoYW5nZUV2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIzQzI5QjQyNzI5QzM2RTAwRkI2NUI0
IC8qIFB1c2hTdWJzY3JpcHRpb25DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQdXNoU3Vic2NyaXB0aW9uQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRUJBNzVDM0UyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5
cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUJBNzVDNDAyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hN
ZXNzYWdlQ3J5cHRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCQTc1QzQxMjc1RUJEQUIwMEQ2RDMxQyAvKiBQdXNo
Q3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hDcnlwdG8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFQkE3NUM0MjI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUVCQTc1QzQ1Mjc1RUM1OEUwMEQ2RDMxQyAvKiBQdXNoQ3J5cHRvQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHVzaENyeXB0b0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRUJCOTczNzgyNzEwMDY1MTAwNzczMkVGIC8qIFB1c2hQZXJtaXNzaW9uU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHVzaFBlcm1pc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQkI5NzM3QTI3MTAwNjUyMDA3NzMyRUYgLyogU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvblB1c2hBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvblB1c2hBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJCOTczN0Iy
NzEwMDY1MjAwNzczMkVGIC8qIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24rUHVzaEFQSS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24rUHVzaEFQSS5pZGwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjEwMzQsNiArMjEwNDEsOSBAQAogCQk0MThGQ0JCODI3MDZF
NEJEMDBGOTZFQ0EgLyogcHVzaC1hcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUVCQTc1QzQ0Mjc1RUM1NjAwMEQ2RDMxQyAvKiBjb2NvYSAqLywKKwkJ
CQlFQkE3NUM0MTI3NUVCREFCMDBENkQzMUMgLyogUHVzaENyeXB0by5jcHAgKi8sCisJCQkJRUJB
NzVDNDIyNzVFQkRBQjAwRDZEMzFDIC8qIFB1c2hDcnlwdG8uaCAqLywKIAkJCQlFQjBGQjZGRDI3
MEQwQUU4MDBGNzgxMEQgLyogUHVzaEVuY3J5cHRpb25LZXlOYW1lLmggKi8sCiAJCQkJRUIwRkI3
MDAyNzBEMEFFQTAwRjc4MTBEIC8qIFB1c2hFbmNyeXB0aW9uS2V5TmFtZS5pZGwgKi8sCiAJCQkJ
NDE4RkNCQkIyNzA2RTRGNjAwRjk2RUNBIC8qIFB1c2hFdmVudC5jcHAgKi8sCkBAIC0yMTA0NCw2
ICsyMTA1NCw4IEBACiAJCQkJRUJCOTczN0MyNzEwMDY1MjAwNzczMkVGIC8qIFB1c2hNYW5hZ2Vy
LmNwcCAqLywKIAkJCQlFQkI5NzM4MDI3MTAwNjU0MDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaCAq
LywKIAkJCQlFQkI5NzM3RTI3MTAwNjUzMDA3NzMyRUYgLyogUHVzaE1hbmFnZXIuaWRsICovLAor
CQkJCUVCQTc1QzNFMjc1RUJEQUEwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8s
CisJCQkJRUJBNzVDNDAyNzVFQkRBQTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmggKi8s
CiAJCQkJNDE4RkNCQkUyNzA2RTRGNzAwRjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5jcHAgKi8s
CiAJCQkJNDE4RkNCQkMyNzA2RTRGNjAwRjk2RUNBIC8qIFB1c2hNZXNzYWdlRGF0YS5oICovLAog
CQkJCTQxOEZDQkJBMjcwNkU0RjUwMEY5NkVDQSAvKiBQdXNoTWVzc2FnZURhdGEuaWRsICovLApA
QCAtMzEyMzEsNiArMzEyNDMsMTQgQEAKIAkJCXBhdGggPSAiY29udGFjdC1waWNrZXIiOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRUJBNzVDNDQyNzVFQzU2MDAwRDZEMzFD
IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlFQkE3NUM0NTI3NUVDNThFMDBENkQzMUMgLyogUHVzaENyeXB0b0NvY29hLmNwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQlFRDUwMURDOTBCMjQ5RjM5MDBBRTE4RDkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM2NDI0LDEwICszNjQ0NCwxMiBAQAogCQkJCTU3MzAz
QkVCMjAwOTdGNDAwMDM1NTk2NSAvKiBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDA4MUZGMDAxNkIwQTJEMzAwOEFBQTdBIC8qIFB1YmxpY1N1ZmZpeC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTBGQjA4NEIxNEUxNUM3RTAwQTNEQjk4IC8qIFB1YmxpY1VSTE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCQTc1QzQ2Mjc1RUM2MUEwMEQ2RDMxQyAvKiBQ
dXNoQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcwODI3MEQwQjEwMDBGNzgxMEQg
LyogUHVzaEVuY3J5cHRpb25LZXlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGQ0JDMTI3
MDZFNEZCMDBGOTZFQ0EgLyogUHVzaEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MThGQ0JD
MjI3MDZFNTAxMDBGOTZFQ0EgLyogUHVzaEV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RUJCOTczODEyNzEwMDY3MTAwNzczMkVGIC8qIFB1c2hNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFQkE3NUM0NzI3NUVDNjIxMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUVCQjk3MzgyMjcxMDA2NzYwMDc3MzJFRiAvKiBQdXNoUGVybWlzc2lv
blN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q1MTFGNjI1MEMxQ0JGMDAyRURDNTEgLyog
UHVzaFB1bGxGSUZPLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQjBGQjcwOTI3MEQwQjE4MDBGNzgx
MEQgLyogUHVzaFN1YnNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450329</attachid>
            <date>2022-01-29 11:53:19 -0800</date>
            <delta_ts>2022-01-29 21:22:44 -0800</delta_ts>
            <desc>Add unit tests that were left out of original patch for landing</desc>
            <filename>bug-233903-20220129115319.patch</filename>
            <type>text/plain</type>
            <size>12301</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDNkMDFkODZkNjU5MDU5MWVkZWUyMTdmMmY1MGM1ZGU3
ZWU3MTE3MS4uZjhhOTQ0M2RkMTk1ZGQ0MTY0ZmNhNjc2Yzk4MzBjOTY5OTk1M2MzYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTEyLTA2ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCB3ZWIgcHVzaCBtZXNzYWdlIGRlY3J5cHRpb24gcm91dGluZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBTb21laG93IHRoZSB1bml0IHRlc3RzIHdlcmUg
bGVmdCBvdXQgb2YgdGhlIG9yaWdpbmFsIHBhdGNoIHRoYXQgd2FzIGxhbmRlZC4gQWRkaW5nIHRo
ZW0gYmFjaworICAgICAgICBpbiB0aGlzIHBhdGNoLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcDogQWRkZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjptdXN0QmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Om1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUFFU0dDTUNsaWVudEtl
eXMpOgorCiAyMDIyLTAxLTI4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgc3VwcG9y
dCBwaXhlbCBkdW1wIGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGRlYThmM2E1M2VhMDRkYTA2Y2Q0OTlmOGJkZTY1ZjQ2ZTQwMjAwNzcu
LjJkNzEwMTg4YjcwODNhODc5NjVhYWI1NGRmNGEyMWMyMjkwNDlhOTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDAyLDYgKzEwMDIsNyBAQAogCQlFNUFBNDJGMjI1OTEyOEFFMDA0MTBB
M0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVBQTQyRjEyNTkxMjhBRTAwNDEwQTNEIC8qIFVzZXJJ
bnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSAqLzsgfTsKIAkJRTVBQThEMUQyNTE1MUNDNjAwNTFDQzQ1
IC8qIERhdGVJbnB1dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1t
ICovOyB9OwogCQlFQjIzMEQ0MTI0NUU4MTNGMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi87IH07
CisJCUVCQTc1QzQ5Mjc1RUQ3QzcwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkE3NUM0ODI3NUVE
N0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovOyB9OwogCQlFQ0E2ODBDRTFF
NjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0
cmluZ1V0aWxpdGllcy5tbSAqLzsgfTsKIAkJRjQwMTBCODAyNERBMjRBQzAwQTg3NkUyIC8qIE5h
dmlnYXRpb25Td2lwZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQwMTBCN0YyNERBMjRBQzAwQTg3NkUyIC8qIE5hdmlnYXRpb25Td2lwZVRl
c3RzLm1tICovOyB9OwogCQlGNDAxMEI4MzI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAxMEI4
MTI0REEyNjdGMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi87IH07CkBAIC0yOTU4LDYgKzI5
NTksNyBAQAogCQlFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRlSW5wdXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRX
QUwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0UyNDVFNzI2MzAwQzY2QUQx
IC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBJREJDaGVja3BvaW50V0FMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAgLyogU3RyaW5nVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5n
VXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0ZDM0VFMjEzNjc4
QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzc2OCw2ICszNzcwLDcgQEAKIAkJCQlB
QTk2Q0FCNDIxQzdEQjQyMDBGRDJGOTcgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLAogCQkJ
CTZCMEEwN0Y2MjFGQTlDMkIwMEQ1NzM5MSAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAg
Ki8sCiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi8s
CisJCQkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNwcCAq
LywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3Bw
ICovLAogCQkJCUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNw
cCAqLywKIAkJCQk0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJUZXN0cy5jcHAgKi8sCkBAIC01NjgzLDYgKzU2ODYsNyBAQAogCQkJCTQ2NDdCMTI2MUVC
QTNCODUwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFQzJBODU2MjRDRUI2NUYwMEFEQkMzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDQxQTFFMzQyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFQkE3NUM0OTI3NUVEN0M3MDBENkQzMUMgLyogUHVzaE1lc3Nh
Z2VDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkI0RTg2MUMyMjIwQTU1MjAwMjJGMzg5
IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBEMUE0
MTFBRTYwMDQ0N0M0QyAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VDOTFBNDExQTdFMDA0NDdDNEMgLyogUmVuZGVyZWRJbWFnZUZyb21ET01Ob2Rl
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGYxZjQ0NGIwZGRk
OTdkZWZmY2Y5NzUxYjlhZmJhYWVjZTUzOTUzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcApAQCAtMCwwICsx
LDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1B1
c2hNZXNzYWdlQ3J5cHRvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpQdXNoQ3J5cHRv
OworCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG11c3RCYXNlNjRVUkxEZWNvZGUoY29uc3QgU3Ry
aW5nJiBlbmNvZGVkKQoreworICAgIHJldHVybiBiYXNlNjRVUkxEZWNvZGUoZW5jb2RlZCkudmFs
dWUoKTsKK30KKworc3RhdGljIENsaWVudEtleXMgbWFrZUFFUzEyOEdDTUNsaWVudEtleXModm9p
ZCkKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9tIFJGQzgyOTEgU2VjdGlvbiA1LgorICAg
IGF1dG8gcHVibGljS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiQkNWeHNyN05fZU5nVlJxdkh0
RDB6VFpzRWM2LVZWLUp2TGV4aHFVek9SY3hhT3ppNi1BWVdYdlRCSG00Ymp5UGpzN1ZkOHBaR0g2
U1Jwa050b0lBaXc0Il9zKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBtdXN0QmFzZTY0VVJMRGVj
b2RlKCJxMWRYcHczVXBUNVZPbXVfY2ZfdjZpaDA3QWVtczNuanhJLUpXZ0xjTTk0Il9zKTsKKyAg
ICBhdXRvIHNlY3JldCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJUQlpNcUhINnI0VHRzN0pfYVNJ
Z2ciX3MpOworCisgICAgcmV0dXJuIENsaWVudEtleXMgeworICAgICAgICBQMjU2REhLZXlQYWly
IHsgV1RGTW92ZShwdWJsaWNLZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH0sCisgICAgICAgIFdU
Rk1vdmUoc2VjcmV0KQorICAgIH07Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFUzEy
OEdDTVBheWxvYWRXaXRoTWluaW1hbFBhZGRpbmcpCit7CisgICAgLy8gRXhhbXBsZSBwYXlsb2Fk
IGZyb20gUkZDODI5MSBTZWN0aW9uIDUuCisgICAgYXV0byBjbGllbnRLZXlzID0gbWFrZUFFUzEy
OEdDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHBheWxvYWQgPSBtdXN0QmFzZTY0VVJMRGVjb2Rl
KCJER3Y2cmExbmxZZ0RDUzFGUm5iemx3QUFFQUJCQlA0ejlLc042bkdSVGJWWUlfYzdWSlNQUVRC
dGtnY3kyN21sbWxNb1pJSWdEbGw2ZTN2Q1lMb2NJbm1ZV0FtUzZUbHpBQzh3RXFLSzZQQnJ1M2ps
N0FfeWw5NWJRcHU2Y1ZQVHBLNE1xZ2tmMUNYenRMVkJTdDJLczNvWndidXdYUFhMV3lvdUJXTFZX
R05XUWV4U2dTeHNqX1F1bGN5NGEtZk4iX3MpOworCisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0
QUVTMTI4R0NNUGF5bG9hZChjbGllbnRLZXlzLCBwYXlsb2FkKTsKKyAgICBBU1NFUlRfVFJVRShy
ZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgYXV0byBhY3R1YWwgPSBTdHJpbmc6OmFkb3B0KFdU
Rk1vdmUoKnJlc3VsdCkpOworICAgIEFTU0VSVF9FUSgiV2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0
byBiZSBhIHdhdGVybWVsb24iX3MsIGFjdHVhbCk7Cit9CisKK1RFU1QoUHVzaE1lc3NhZ2VDcnlw
dG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoUGFkZGluZykKK3sKKyAgICBhdXRvIGNsaWVudEtleXMg
PSBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cygpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNl
NjRVUkxEZWNvZGUoIkRHdjZyYTFubFlnRENTMUZSbmJ6bHdBQUVBQkJCUDR6OUtzTjZuR1JUYlZZ
SV9jN1ZKU1BRVEJ0a2djeTI3bWxtbE1vWklJZ0RsbDZlM3ZDWUxvY0lubVlXQW1TNlRsekFDOHdF
cUtLNlBCcnUzamw3QV9Ea05SWEE2Q1lGaUc4MDVGVk5xUGJyOXY5RVc5bGZ3cG55MGMiKTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gZGVjcnlwdEFFUzEyOEdDTVBheWxvYWQoY2xpZW50S2V5cywgcGF5
bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgIGF1dG8g
YWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEo
ImZvb2JhciJfcywgYWN0dWFsKTsKK30KKworVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTMTI4
R0NNUGF5bG9hZFdpdGhJbmNvcnJlY3RQYWRkaW5nKQoreworICAgIGF1dG8gY2xpZW50S2V5cyA9
IG1ha2VBRVMxMjhHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2
NFVSTERlY29kZSgiREd2NnJhMW5sWWdEQ1MxRlJuYnpsd0FBRUFCQkJQNHo5S3NONm5HUlRiVllJ
X2M3VkpTUFFUQnRrZ2N5MjdtbG1sTW9aSUlnRGxsNmUzdkNZTG9jSW5tWVdBbVM2VGx6QUM4d0Vx
S0s2UEJydTNqbDdBX0RrTlJYQTZDYkZpRzgweks2QmYxSVJJTDlvdmpIcDdpTGpDdyIpOworCisg
ICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjbGllbnRLZXlzLCBwYXls
b2FkKTsKKyAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKK30KKworVEVTVChQ
dXNoTWVzc2FnZUNyeXB0bywgQUVTMTI4R0NNUGF5bG9hZFdpdGhFbXB0eVBsYWludGV4dCkKK3sK
KyAgICBhdXRvIGNsaWVudEtleXMgPSBtYWtlQUVTMTI4R0NNQ2xpZW50S2V5cygpOworICAgIGF1
dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkRHdjZyYTFubFlnRENTMUZSbmJ6bHdB
QUVBQkJCUDR6OUtzTjZuR1JUYlZZSV9jN1ZKU1BRVEJ0a2djeTI3bWxtbE1vWklJZ0RsbDZlM3ZD
WUxvY0lubVlXQW1TNlRsekFDOHdFcUtLNlBCcnUzamw3QS1uV0E5SkZMVmVRMzJFUlVMSDhZRVVj
QSIpOworCisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjbGllbnRL
ZXlzLCBwYXlsb2FkKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAg
IEFTU0VSVF9UUlVFKHJlc3VsdC0+aXNFbXB0eSgpKTsKK30KKworc3RhdGljIENsaWVudEtleXMg
bWFrZUFFU0dDTUNsaWVudEtleXModm9pZCkKK3sKKyAgICAvLyBFeGFtcGxlIHZhbHVlcyBmcm9t
IGRyYWZ0LWlldGYtd2VicHVzaC1lbmNyeXB0aW9uLTA0IFNlY3Rpb24gNS4KKyAgICBhdXRvIHB1
YmxpY0tleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJDRWtCanpMOFozQy1vaTJRN29FNXQyTnAt
cDdvc2pHTGc5M3FVUDB3dnFSVDIxRUVXeWYwY1FEUWNha1FNcXo0aFFLWU9RM2lsMm5OWmN0NEhn
QVVRVSJfcyk7CisgICAgYXV0byBwcml2YXRlS2V5ID0gbXVzdEJhc2U2NFVSTERlY29kZSgiOUZX
bDE1X1FVUUFXRGFEM2szbDUwWkJaUUo0YXUyN0YxVjRGMHVMU0RfTSJfcyk7CisgICAgYXV0byBz
ZWNyZXQgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJSMjl2SUdkdmJ5Qm5KeUJxYjI5aUlRIl9zKTsK
KworICAgIHJldHVybiBDbGllbnRLZXlzIHsKKyAgICAgICAgUDI1NkRIS2V5UGFpciB7IFdURk1v
dmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9LAorICAgICAgICBXVEZNb3ZlKHNl
Y3JldCkKKyAgICB9OworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2Fk
V2l0aE1pbmltYWxQYWRkaW5nKQoreworICAgIC8vIEV4YW1wbGUgdmFsdWVzIGZyb20gZHJhZnQt
aWV0Zi13ZWJwdXNoLWVuY3J5cHRpb24tMDQgU2VjdGlvbiA1LgorICAgIGF1dG8gY2xpZW50S2V5
cyA9IG1ha2VBRVNHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0ID0gbXVzdEJhc2U2NFVS
TERlY29kZSgibG5nYXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAgYXV0byBzZXJ2ZXJQdWJs
aWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204ZzVaNUNGeHVyU3FzWFdK
MTFJdGZYRVdZVkxFODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENKNkRQcERyV3RkV2pfbXVn
SFUiX3MpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIjZucUFRVU1F
OGhOcXc1SjNrbDhjcFZWSnlsWEtZcVpPZXNlWkc4VXVlS3BBIl9zKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gZGVjcnlwdEFFU0dDTVBheWxvYWQoY2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBz
YWx0LCBwYXlsb2FkKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisg
ICAgYXV0byBhY3R1YWwgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIEFT
U0VSVF9FUSgiSSBhbSB0aGUgd2FscnVzIl9zLCBhY3R1YWwpOworfQorCitURVNUKFB1c2hNZXNz
YWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2FkV2l0aFBhZGRpbmcpCit7CisgICAgYXV0byBjbGllbnRL
ZXlzID0gbWFrZUFFU0dDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHNhbHQgPSBtdXN0QmFzZTY0
VVJMRGVjb2RlKCJsbmdhcmJ5S2ZNb2k5Wjc1eFlYbWtnIl9zKTsKKyAgICBhdXRvIHNlcnZlclB1
YmxpY0tleSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJOb1JEYmI4NEpHbThnNVo1Q0Z4dXJTcXNY
V0oxMUl0ZlhFV1lWTEU4NVk3Q1lrRGpYc0lFYzRhcXhZYVExRzhCcWtYQ0o2RFBwRHJXdGRXal9t
dWdIVSJfcyk7CisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiNm5uSllT
SVB2UWhneDhBcERGRGtXWTZ2NU45S0F1dXIzTnY2Il9zKTsKKworICAgIGF1dG8gcmVzdWx0ID0g
ZGVjcnlwdEFFU0dDTVBheWxvYWQoY2xpZW50S2V5cywgc2VydmVyUHVibGljS2V5LCBzYWx0LCBw
YXlsb2FkKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgYXV0
byBhY3R1YWwgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIEFTU0VSVF9F
USgiZm9vYmFyIl9zLCBhY3R1YWwpOworfQorCitURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVNH
Q01QYXlsb2FkV2l0aEluY29ycmVjdFBhZGRpbmcpCit7CisgICAgYXV0byBjbGllbnRLZXlzID0g
bWFrZUFFU0dDTUNsaWVudEtleXMoKTsKKyAgICBhdXRvIHNhbHQgPSBtdXN0QmFzZTY0VVJMRGVj
b2RlKCJsbmdhcmJ5S2ZNb2k5Wjc1eFlYbWtnIl9zKTsKKyAgICBhdXRvIHNlcnZlclB1YmxpY0tl
eSA9IG11c3RCYXNlNjRVUkxEZWNvZGUoIkJOb1JEYmI4NEpHbThnNVo1Q0Z4dXJTcXNYV0oxMUl0
ZlhFV1lWTEU4NVk3Q1lrRGpYc0lFYzRhcXhZYVExRzhCcWtYQ0o2RFBwRHJXdGRXal9tdWdIVSJf
cyk7CisgICAgYXV0byBwYXlsb2FkID0gbXVzdEJhc2U2NFVSTERlY29kZSgiNm43SllTTnB0QWh0
eE5OeUE1WXRHeXdLWkd4d2NiRXNCUHFhdXciX3MpOworCisgICAgYXV0byByZXN1bHQgPSBkZWNy
eXB0QUVTR0NNUGF5bG9hZChjbGllbnRLZXlzLCBzZXJ2ZXJQdWJsaWNLZXksIHNhbHQsIHBheWxv
YWQpOworICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworfQorCitURVNUKFB1
c2hNZXNzYWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2FkV2l0aEVtcHR5UGxhaW50ZXh0KQoreworICAg
IGF1dG8gY2xpZW50S2V5cyA9IG1ha2VBRVNHQ01DbGllbnRLZXlzKCk7CisgICAgYXV0byBzYWx0
ID0gbXVzdEJhc2U2NFVSTERlY29kZSgibG5nYXJieUtmTW9pOVo3NXhZWG1rZyJfcyk7CisgICAg
YXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBtdXN0QmFzZTY0VVJMRGVjb2RlKCJCTm9SRGJiODRKR204
ZzVaNUNGeHVyU3FzWFdKMTFJdGZYRVdZVkxFODVZN0NZa0RqWHNJRWM0YXF4WWFRMUc4QnFrWENK
NkRQcERyV3RkV2pfbXVnSFUiX3MpOworICAgIGF1dG8gcGF5bG9hZCA9IG11c3RCYXNlNjRVUkxE
ZWNvZGUoIjZub2dRX3B0Ym1LcElCOHlpNF80SDBMUyJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9
IGRlY3J5cHRBRVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tleSwgc2FsdCwg
cGF5bG9hZCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICBBU1NF
UlRfVFJVRShyZXN1bHQtPmlzRW1wdHkoKSk7Cit9CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>