<?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>239858</bug_id>
          
          <creation_ts>2022-04-28 10:30:09 -0700</creation_ts>
          <short_desc>[OpenSSL] Treat types as opaque</short_desc>
          <delta_ts>2022-06-02 22:03:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>basuke</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>pascoe</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865185</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-04-28 10:30:09 -0700</bug_when>
    <thetext>OpenSSL types should not be accessed directly. Instead use functions to access and modify instances.

LibreSSL made the types completely opaque in 3.5.x release so WebKit won&apos;t build with an updated library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865186</commentid>
    <comment_count>1</comment_count>
      <attachid>458533</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-04-28 10:38:00 -0700</bug_when>
    <thetext>Created attachment 458533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865201</commentid>
    <comment_count>2</comment_count>
      <attachid>458535</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-04-28 11:13:59 -0700</bug_when>
    <thetext>Created attachment 458535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865298</commentid>
    <comment_count>3</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2022-04-28 17:25:52 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #2)
&gt; Created attachment 458535 [details]
&gt; Patch

LGTM besides style warings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865555</commentid>
    <comment_count>4</comment_count>
      <attachid>458613</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-04-29 15:39:44 -0700</bug_when>
    <thetext>Created attachment 458613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866904</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-05 10:31:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/92805748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867778</commentid>
    <comment_count>6</comment_count>
      <attachid>459081</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-09 14:26:45 -0700</bug_when>
    <thetext>Created attachment 459081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867793</commentid>
    <comment_count>7</comment_count>
      <attachid>459081</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-05-09 15:09:14 -0700</bug_when>
    <thetext>Comment on attachment 459081
Patch

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

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:84
&gt; +    auto n = convertToBigNumber(keyData.modulus());

I think it should be wrapped by `BIGNUMPtr` if it&apos;s allocated. More to say, if convertToBigNumber always allocate a new memory, then it can return BIGNUMPtr wrapped result.

&gt; Source/WebCore/crypto/openssl/OpenSSLUtilities.h:47
&gt; +BIGNUM* convertToBigNumber(const Vector&lt;uint8_t&gt;&amp; bytes, BIGNUM* ret = nullptr);

If all usage doesn&apos;t pass second argument, why can&apos;t we remove the second argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867797</commentid>
    <comment_count>8</comment_count>
      <attachid>459081</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-09 15:12:58 -0700</bug_when>
    <thetext>Comment on attachment 459081
Patch

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

&gt;&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:84
&gt;&gt; +    auto n = convertToBigNumber(keyData.modulus());
&gt; 
&gt; I think it should be wrapped by `BIGNUMPtr` if it&apos;s allocated. More to say, if convertToBigNumber always allocate a new memory, then it can return BIGNUMPtr wrapped result.

When the associated `set` is called OpenSSL then takes over the BIGNUM so we wouldn&apos;t want it accidentally deleted.

&gt;&gt; Source/WebCore/crypto/openssl/OpenSSLUtilities.h:47
&gt;&gt; +BIGNUM* convertToBigNumber(const Vector&lt;uint8_t&gt;&amp; bytes, BIGNUM* ret = nullptr);
&gt; 
&gt; If all usage doesn&apos;t pass second argument, why can&apos;t we remove the second argument?

I&apos;m fine with removing it. Can add back later if its needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868011</commentid>
    <comment_count>9</comment_count>
      <attachid>459081</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-05-10 14:07:10 -0700</bug_when>
    <thetext>Comment on attachment 459081
Patch

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

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:86
&gt; +    if (!n || !e)

Then if n is assigned and e was failed, here comes a memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868035</commentid>
    <comment_count>10</comment_count>
      <attachid>459139</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-10 16:17:22 -0700</bug_when>
    <thetext>Created attachment 459139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868039</commentid>
    <comment_count>11</comment_count>
      <attachid>459139</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-05-10 16:32:44 -0700</bug_when>
    <thetext>Comment on attachment 459139
Patch

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

Always I feel it&apos;s difficult to use OpenSSL in C++ code.

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:98
&gt; +        if (!RSA_set0_factors(rsa.get(), p.release(), q.release()))

Do they release the parameter on failure?

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:110
&gt; +        if (!RSA_set0_crt_params(rsa.get(), dmp1.release(), dmq1.release(), iqmp.release()))

Ditto.

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:114
&gt; +    if (!RSA_set0_key(rsa.get(), n.release(), e.release(), d.release()))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868172</commentid>
    <comment_count>12</comment_count>
      <attachid>459172</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-11 10:32:25 -0700</bug_when>
    <thetext>Created attachment 459172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868173</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-11 10:33:20 -0700</bug_when>
    <thetext>Good catch Basuke! I made it so the release happens after success and I called out the ownership transfer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868181</commentid>
    <comment_count>14</comment_count>
      <attachid>459172</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-05-11 11:14:00 -0700</bug_when>
    <thetext>Comment on attachment 459172
Patch

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

For memory perspective, LGTM. Some extra note was added.

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:45
&gt; +    return RSA_bits(rsa) * 8;

Does this returns same value? The previous one seems bits. It sounds RSA_bits() already returns bits, not byte. I&apos;m not confident about this, but function names sounds confusing so that I&apos;m confirming it.

&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:95
&gt; +    e.release();

How about wrapping with scope instead of releasing explicitly? It&apos;s a bit noisy to see explicit release for smart pointers. Also scoping is a standard technique to be used to narrow the effectiveness of variables, not only for smart pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868183</commentid>
    <comment_count>15</comment_count>
      <attachid>459172</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-11 11:32:50 -0700</bug_when>
    <thetext>Comment on attachment 459172
Patch

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

&gt;&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:45
&gt;&gt; +    return RSA_bits(rsa) * 8;
&gt; 
&gt; Does this returns same value? The previous one seems bits. It sounds RSA_bits() already returns bits, not byte. I&apos;m not confident about this, but function names sounds confusing so that I&apos;m confirming it.

You&apos;re right it should `RSA_size`

From LibreSSL&apos;s implementation

int
RSA_bits(const RSA *r)
{
	return BN_num_bits(r-&gt;n);
}

vs

int
RSA_size(const RSA *r)
{
	return BN_num_bytes(r-&gt;n);
}

&gt;&gt; Source/WebCore/crypto/openssl/CryptoKeyRSAOpenSSL.cpp:95
&gt;&gt; +    e.release();
&gt; 
&gt; How about wrapping with scope instead of releasing explicitly? It&apos;s a bit noisy to see explicit release for smart pointers. Also scoping is a standard technique to be used to narrow the effectiveness of variables, not only for smart pointers.

From https://en.cppreference.com/w/cpp/memory/unique_ptr/release

Releases the ownership of the managed object, if any.

get() returns nullptr after the call.

The caller is responsible for deleting the object.

In these cases ownership is transferred to OpenSSL so we don&apos;t want the std::unique_ptr to try and delete it and we can accomplish this by using release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868185</commentid>
    <comment_count>16</comment_count>
      <attachid>459175</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-11 11:34:33 -0700</bug_when>
    <thetext>Created attachment 459175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868188</commentid>
    <comment_count>17</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-05-11 11:39:40 -0700</bug_when>
    <thetext>Got it. I didn&apos;t get the point of transferring. Then it makes sense.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868359</commentid>
    <comment_count>18</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2022-05-12 05:16:59 -0700</bug_when>
    <thetext>I&apos;ve yet to look into the issue but with the patch (id=459175) relevant crypt/subtle tests come to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868576</commentid>
    <comment_count>19</comment_count>
      <attachid>459257</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-12 16:35:34 -0700</bug_when>
    <thetext>Created attachment 459257
Patch

Fixed the crash, was retrieving the wrong values in algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868581</commentid>
    <comment_count>20</comment_count>
      <attachid>459259</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-12 16:47:33 -0700</bug_when>
    <thetext>Created attachment 459259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868587</commentid>
    <comment_count>21</comment_count>
      <attachid>459259</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2022-05-12 17:06:57 -0700</bug_when>
    <thetext>Comment on attachment 459259
Patch

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

&gt; Source/WebCore/crypto/openssl/OpenSSLUtilities.h:46
&gt; +BIGNUMPtr convertToBigNumber(const Vector&lt;uint8_t&gt;&amp; bytes);

I&apos;m against to force programmers to use BIGNUMPtr returned by convertToBigNumber() because this force programmers to write ownership transfer code in normal codepaths (otherwise use-after-free would happen). This seems more error-prone to me than memory leak in error cases of set0, which never happens with the current libressl implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868594</commentid>
    <comment_count>22</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2022-05-12 17:35:54 -0700</bug_when>
    <thetext>We may want to have a wrapper template function for set0 family that releases BIGNUMs if set0 fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871820</commentid>
    <comment_count>23</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-05-25 13:32:52 -0700</bug_when>
    <thetext>Pull request: https://github.com/webkit/webkit/pull/1023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873805</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-02 22:03:57 -0700</bug_when>
    <thetext>Committed r295168 (251252@main): &lt;https://commits.webkit.org/251252@main&gt;

Reviewed commits have been landed. Closing PR #1023 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458533</attachid>
            <date>2022-04-28 10:38:00 -0700</date>
            <delta_ts>2022-04-28 11:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>16226</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZTYyNWQ2MjI1OWUuLmQ0YThiNTY1OTA4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDIyLTA0LTI4ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlicmVTU0wgMy41Lngg
bWFkZSBhIG51bWJlciBvZiB0eXBlcyBvcGFxdWUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVu
U1NMLiBVbmZvcnR1bmF0ZWx5CisgICAgICAgIGEgbnVtYmVyIG9mIHBsYWNlcyBpbiB0aGUgV2Vi
Q3J5cHRvIGltcGxlbWVudGF0aW9uIHdlcmUgYWNjZXNzaW5nIHRoZXNlIHN0cnVjdHMgZGlyZWN0
bHkuCisgICAgICAgIE1vZGlmeSB0aGUgY29kZSB0byB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9u
cyB0byBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgdHlwZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgbWFu
bmVyIHRoZXkgd2VyZSBiZWluZyB1c2VkLgorCisgICAgICAgIEluIFdlYkNvcmU6OmNvbnZlcnRU
b0JpZ051bWJlciB0aGUgZmlyc3QgYXJndW1lbnQgd2FzIGEgQklHTlVNIHRvIHN0b3JlIHRoZSBy
ZXN1bHQgb2YgdGhlCisgICAgICAgIG9wZXJhdGlvbiBpbi4gSWYgYSBuZXcgQklHTlVNIHdhcyB0
byBiZSBhbGxvY2F0ZWQgYnkgdGhlIG9wZXJhdGlvbiB0aGVuIGEgbnVsbHB0ciB3YXMKKyAgICAg
ICAgcGFzc2VkIGluLiBBZnRlciBtb2RpZmljYXRpb24gYWxsIGNhbGxzIHdlcmUgdXNpbmcgbnVs
bHB0ciBzbyB0aGUgc2lnbmF0dXJlIHdhcyBtb2RpZmllZAorICAgICAgICB0byBmaXQgdGhlIGNv
bW1vbiBjYXNlLgorCisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNE
U0FPcGVuU1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpw
bGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVu
U1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpX
S1B1YmxpYyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBv
cnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBj
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUb0JpZ051bWJlcik6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxp
dGllcy5oOgorCiAyMDIyLTA0LTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIHNlbmRpbmcgYSBmbHVzaCBJUEMgdG8gdGhlIEdQVSBwcm9j
ZXNzIHdoZW4gZGVzdHJveWluZyBhIFJlbW90ZUltYWdlQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVu
U1NMLmNwcAppbmRleCBkMmU1Nzc4OWY2MTguLjQ2YWVjMTg2OWUxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RT
QU9wZW5TU0wuY3BwCkBAIC03Niw4ICs3NiwxMSBAQCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9B
bGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkcwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgYXV0byBzaWcgPSBFQ0RTQVNpZ1B0cihF
Q0RTQV9TSUdfbmV3KCkpOwotICAgIHNpZy0+ciA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgp
LCBrZXlTaXplSW5CeXRlcywgc2lnLT5yKTsKLSAgICBzaWctPnMgPSBCTl9iaW4yYm4oc2lnbmF0
dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzLCBrZXlTaXplSW5CeXRlcywgc2lnLT5zKTsKKyAg
ICBhdXRvIHIgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIG51
bGxwdHIpOworICAgIGF1dG8gcyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6
ZUluQnl0ZXMsIGtleVNpemVJbkJ5dGVzLCBudWxscHRyKTsKKworICAgIGlmICghRUNEU0FfU0lH
X3NldDAoc2lnLmdldCgpLCByLCBzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CiAKICAgICBjb25zdCBFVlBfTUQqIG1kID0gZGlnZXN0QWxnb3JpdGhtKHBh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwogICAgIGlmICghbWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAppbmRleCBmM2Iy
ZjlkMWRmNTguLjM5ZDZjM2NhMmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUmVm
UHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICBhdXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lO
VF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0
aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0gICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29v
cmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051
bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVs
bHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZm
aW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0
VG9CaWdOdW1iZXIoeCkpLmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKHkpKS5n
ZXQoKSwgbnVsbHB0cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
RUNfS0VZX3NldF9wdWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0KCkpIDw9IDApCkBAIC0x
OTUsMTMgKzE5NSwxMyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9y
bUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIGF1dG8gcG9pbnQg
PSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8gQ3VycmVudGx5IHdl
IG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAKLSAgICBpZiAoRUNf
UE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50LmdldCgpLCBCSUdO
VU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwgQklHTlVNUHRyKGNv
bnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCisgICAg
aWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQo
KSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcih4KSkuZ2V0KCksIEJJR05VTVB0cihjb252
ZXJ0VG9CaWdOdW1iZXIoeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2lu
dC5nZXQoKSkgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZ
X3NldF9wcml2YXRlX2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIo
bnVsbHB0ciwgZCkpLmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5
KGtleS5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihkKSkuZ2V0KCkpIDw9IDAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKEVDX0tFWV9jaGVja19rZXkoa2V5
LmdldCgpKSA8PSAwKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihF
VlBfUEtDUzgyUEtFWShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV90
eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX0VDKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtF
WV9iYXNlX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX0VDKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gZWNLZXkgPSBFVlBfUEtFWV9nZXQwX0VDX0tFWShwa2V5LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJT
QU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNB
T3BlblNTTC5jcHAKaW5kZXggMWQ5NjVjNjg5Y2E4Li5lOGYwMWFkNjkwOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UlNBTW9kdWx1c0xlbmd0aChSU0Eq
IHJzYSkKIHsKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIEJO
X251bV9ieXRlcyhyc2EtPm4pICogODsKKyAgICByZXR1cm4gUlNBX2JpdHMocnNhKSAqIDg7CiB9
CiAKIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNo
LCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKQEAgLTgxLDMxICs4
MSwzOSBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgaWYgKCFyc2EpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcnNhLT5uID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+biwg
a2V5RGF0YS5tb2R1bHVzKCkpOwotICAgIHJzYS0+ZSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2Et
PmUsIGtleURhdGEuZXhwb25lbnQoKSk7Ci0gICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAg
ICBhdXRvIG4gPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5tb2R1bHVzKCkpOworICAgIGF1
dG8gZSA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLmV4cG9uZW50KCkpOworICAgIGlmICgh
biB8fCAhZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBCSUdOVU0qIGQgPSBudWxs
cHRyOworCiAgICAgaWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSkgewotICAg
ICAgICByc2EtPmQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRhLnByaXZhdGVF
eHBvbmVudCgpKTsKLSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cCwg
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgcnNhLT5xID0g
Y29udmVydFRvQmlnTnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmlt
ZUZhY3Rvcik7Ci0gICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAg
ICAgICAgZCA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsK
KyAgICAgICAgYXV0byBwID0gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUlu
Zm8oKS5wcmltZUZhY3Rvcik7CisgICAgICAgIGF1dG8gcSA9IGNvbnZlcnRUb0JpZ051bWJlcihr
ZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgaWYgKCFkIHx8
ICFwIHx8ICFxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFS
U0Ffc2V0MF9mYWN0b3JzKHJzYS5nZXQoKSwgcCwgcSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFuZCBpcW1wIG1lbWJlciBv
ZiB0aGUgUlNBIHN0cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVzcG9uZGluZyBkYXRhLgog
CiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAoIWtleURhdGEu
Zmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByc2EtPmRtcDEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAxLCBrZXlEYXRhLmZpcnN0
UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcDEgPSAoIWtl
eURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpID8gY29u
dmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVu
dCkgOiBudWxscHRyOwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAgICAg
aWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcTEs
IGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBh
dXRvIGRtcTEgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQu
aXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygp
LmZhY3RvckNSVEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGlxbXAgLS0gcV4oLTEp
IG1vZCBwCi0gICAgICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRD
b2VmZmljaWVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlxbXAgPSBjb252ZXJ0VG9C
aWdOdW1iZXIocnNhLT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENv
ZWZmaWNpZW50KTsKKyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252ZXJ0VG9CaWdOdW1iZXIo
a2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCkgOiBudWxscHRy
OworCisgICAgICAgIGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2EuZ2V0KCksIGRtcDEsIGRt
cTEsIGlxbXApKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYg
KCFSU0Ffc2V0MF9rZXkocnNhLmdldCgpLCBuLCBlLCBkKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ldygpKTsKICAgICBp
ZiAoIXBrZXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4LDcgKzE3Niw3IEBAIHZv
aWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBh
bGdvcml0aG0sIENyeXB0b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGV4cG9uZW50ID0gQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCBwdWJsaWNF
eHBvbmVudCkpOworICAgIGF1dG8gZXhwb25lbnQgPSBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVt
YmVyKHB1YmxpY0V4cG9uZW50KSk7CiAgICAgYXV0byBwcml2YXRlUlNBID0gUlNBUHRyKFJTQV9u
ZXcoKSk7CiAgICAgaWYgKCFleHBvbmVudCB8fCBSU0FfZ2VuZXJhdGVfa2V5X2V4KHByaXZhdGVS
U0EuZ2V0KCksIG1vZHVsdXNMZW5ndGgsIGV4cG9uZW50LmdldCgpLCBudWxscHRyKSA8PSAwKSB7
CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwpAQCAtMjA1LDcgKzIxMyw3IEBAIFJlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpCiAKICAgICAvLyBXZSB1c2UgZDJpX1BVQktFWSgpIHRvIGltcG9ydCBh
IHB1YmxpYyBrZXkuCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihkMmlfUFVCS0VZKG51bGxw
dHIsICZwdHIsIGtleURhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5
cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtF
WV9pZChwa2V5LmdldCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFz
aC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5
cHRvS2V5VHlwZTo6UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7
CkBAIC0yMjIsNyArMjMwLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZ
KHA4aW5mLmdldCgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlw
ZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5Lmdl
dCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjcwLDgg
KzI3OCw4IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0aG0oKSBjb25zdCAtPiBLZXlBbGdv
cml0aG0KIHsKICAgICBSU0EqIHJzYSA9IEVWUF9QS0VZX2dldDBfUlNBKHBsYXRmb3JtS2V5KCkp
OwogCi0gICAgYXV0byBtb2R1bHVzTGVuZ3RoID0gcnNhID8gQk5fbnVtX2J5dGVzKHJzYS0+bikg
KiA4IDogMDsKLSAgICBhdXRvIHB1YmxpY0V4cG9uZW50ID0gcnNhID8gY29udmVydFRvQnl0ZXMo
cnNhLT5lKSA6IFZlY3Rvcjx1aW50OF90PiB7IH07CisgICAgYXV0byBtb2R1bHVzTGVuZ3RoID0g
Z2V0UlNBTW9kdWx1c0xlbmd0aChyc2EpOworICAgIGF1dG8gcHVibGljRXhwb25lbnQgPSByc2Eg
PyBjb252ZXJ0VG9CeXRlcyhSU0FfZ2V0MF9lKHJzYSkpIDogVmVjdG9yPHVpbnQ4X3Q+IHt9Owog
CiAgICAgaWYgKG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKSB7CiAgICAgICAgIENyeXB0b1Jz
YUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CkBAIC0yOTUsNTUgKzMwMyw2NiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnREYXRh
KCkgY29uc3QKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBh
dXRvIG4gPSBSU0FfZ2V0MF9uKHJzYSk7CisgICAgYXV0byBlID0gUlNBX2dldDBfZShyc2EpOwor
CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlB1YmxpYzoK
ICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMgYW5kIGV4cG9uZW50IGZvciB0
aGUgcHVibGljIGtleS4KLSAgICAgICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAgICAgICAg
aWYgKCFuIHx8ICFlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoY29udmVydFRvQnl0ZXMocnNh
LT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSk7CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoY29udmVydFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5
dGVzKGUpKTsKICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlByaXZhdGU6IHsKICAgICAgICAgLy8g
V2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMsIGV4cG9uZW50LCBhbmQgcHJpdmF0ZSBleHBvbmVu
dCwgYXMgd2VsbCBhcyBwIGFuZCBxIHByaW1lIGluZm9ybWF0aW9uLgotICAgICAgICBpZiAoIXJz
YS0+biB8fCAhcnNhLT5lIHx8ICFyc2EtPmQgfHwgIXJzYS0+cCB8fCAhcnNhLT5xKQorICAgICAg
ICBhdXRvIGQgPSBSU0FfZ2V0MF9kKHJzYSk7CisgICAgICAgIGF1dG8gcCA9IFJTQV9nZXQwX3Ao
cnNhKTsKKyAgICAgICAgYXV0byBxID0gUlNBX2dldDBfcShyc2EpOworCisgICAgICAgIGlmICgh
biB8fCAhZSB8fCAhZCB8fCAhcCB8fCAhcSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5m
bzsKLSAgICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBjb252ZXJ0VG9CeXRlcyhy
c2EtPnApOworICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5
dGVzKHApOwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNv
bmRQcmltZUluZm87Ci0gICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZl
cnRUb0J5dGVzKHJzYS0+cSk7CisgICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9
IGNvbnZlcnRUb0J5dGVzKHEpOwogCiAgICAgICAgIGF1dG8gY29udGV4dCA9IEJOQ3R4UHRyKEJO
X0NUWF9uZXcoKSk7CisKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAg
IGlmIChyc2EtPmRtcDEpCi0gICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBv
bmVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZG1wMSk7CisgICAgICAgIGF1dG8gZG1wMSA9IFJT
QV9nZXQwX2RtcDEocnNhKTsKKyAgICAgICAgaWYgKGRtcDEpCisgICAgICAgICAgICBmaXJzdFBy
aW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcDEpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZG1wMSA9IEJJR05VTVB0cihCTl9uZXcoKSk7Ci0g
ICAgICAgICAgICBhdXRvIHBtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5wKSk7Ci0gICAgICAg
ICAgICBpZiAoQk5fc3ViX3dvcmQocG0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXAxLmdl
dCgpLCByc2EtPmQsIHBtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKLSAgICAgICAgICAg
ICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRt
cDEuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBkbXAxTmV3ID0gQklHTlVNUHRyKEJOX25ldygp
KTsKKyAgICAgICAgICAgIGF1dG8gcG0xID0gQklHTlVNUHRyKEJOX2R1cChwKSk7CisgICAgICAg
ICAgICBpZiAoQk5fc3ViX3dvcmQocG0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXAxTmV3
LmdldCgpLCBkLCBwbTEuZ2V0KCksIGNvbnRleHQuZ2V0KCkpID09IDEpCisgICAgICAgICAgICAg
ICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXAx
TmV3LmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGRtcTEgLS0gZCBtb2QgKHEgLSAx
KQotICAgICAgICBpZiAocnNhLT5kbXExKQotICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZh
Y3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMocnNhLT5kbXExKTsKKyAgICAgICAgYXV0
byBkbXExID0gUlNBX2dldDBfZG1xMShyc2EpOworICAgICAgICBpZiAoZG1xMSkKKyAgICAgICAg
ICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRt
cTEpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZG1xMSA9IEJJR05VTVB0cihC
Tl9uZXcoKSk7Ci0gICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5x
KSk7Ci0gICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0xLmdldCgpLCAxKSA9PSAxICYmIEJO
X21vZChkbXExLmdldCgpLCByc2EtPmQsIHFtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkK
LSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252
ZXJ0VG9CeXRlcyhkbXExLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZG1xMU5ldyA9IEJJR05V
TVB0cihCTl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAo
cSkpOworICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHFtMS5nZXQoKSwgMSkgPT0gMSAmJiBC
Tl9tb2QoZG1xMU5ldy5nZXQoKSwgZCwgcW0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQor
ICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZl
cnRUb0J5dGVzKGRtcTFOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gaXFtcCAt
LSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKHJzYS0+aXFtcCkKLSAgICAgICAgICAgIHNlY29u
ZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+aXFt
cCk7CisgICAgICAgIGF1dG8gaXFtcCA9IFJTQV9nZXQwX2lxbXAocnNhKTsKKyAgICAgICAgaWYg
KGlxbXApCisgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQg
PSBjb252ZXJ0VG9CeXRlcyhpcW1wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IGlxbXAgPSBCSUdOVU1QdHIoQk5fbW9kX2ludmVyc2UobnVsbHB0ciwgcnNhLT5xLCByc2EtPnAs
IGNvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgICAgIGlmIChpcW1wKQotICAgICAgICAgICAgICAg
IHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKGlx
bXAuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBpcW1wTmV3ID0gQklHTlVNUHRyKEJOX21vZF9p
bnZlcnNlKG51bGxwdHIsIHEsIHAsIGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChp
cW1wTmV3KQorICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmlj
aWVudCA9IGNvbnZlcnRUb0J5dGVzKGlxbXBOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRp
b25hbERhdGEoCi0gICAgICAgICAgICBjb252ZXJ0VG9CeXRlcyhyc2EtPm4pLCBjb252ZXJ0VG9C
eXRlcyhyc2EtPmUpLCBjb252ZXJ0VG9CeXRlcyhyc2EtPmQpLAorICAgICAgICAgICAgY29udmVy
dFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5dGVzKGUpLCBjb252ZXJ0VG9CeXRlcyhkKSwKICAgICAg
ICAgICAgIFdURk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyks
IFZlY3RvcjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9P
cGVuU1NMVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5T
U0xVdGlsaXRpZXMuY3BwCmluZGV4IDUwNDBiYTYxYjYzOS4uZWZkY2Q3ZGY4Yzk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlc0V4cGFuZChj
b25zdCBCSUdOVU0qIGJpZ251bSwgc2l6ZV90IG1pbmltdW1CdWZmZXJTCiAgICAgcmV0dXJuIGJ5
dGVzOwogfQogCi1CSUdOVU0qIGNvbnZlcnRUb0JpZ051bWJlcihCSUdOVU0qIGJpZ251bSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykKK0JJR05VTSogY29udmVydFRvQmlnTnVtYmVyKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMsIEJJR05VTSogYmlnbnVtKQogewogICAgIHJldHVy
biBCTl9iaW4yYm4oYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCksIGJpZ251bSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKaW5kZXgg
OWE3YmFhNjdhMTJkLi42Y2Y4ZTg4NmYwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKQEAgLTQyLDkgKzQyLDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbnZlcnRUb0J5dGVzKGNvbnN0IEJJR05VTSopOwogCiBWZWN0b3I8dWludDhfdD4g
Y29udmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiwgc2l6ZV90IGJ1ZmZlclNpemUpOwog
Ci0vLyBJZiBhIG51bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRo
aXMgZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0ZXMgYSBuZXcgQklHTlVNCisvLyBJZiBhIG51
bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9u
IGludGVybmFsbHkgYWxsb2NhdGVzIGEgbmV3IEJJR05VTQogLy8gYW5kIHJldHVybnMgaXRzIHBv
aW50ZXIuIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGdpdmVuIEJJR05VTSBhbmQg
ZG9lc24ndCBhbGxvY2F0ZSBhIG5ldyBvbmUuCi1CSUdOVU0qIGNvbnZlcnRUb0JpZ051bWJlcihC
SUdOVU0qLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKTsKK0JJR05VTSogY29udmVydFRv
QmlnTnVtYmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMsIEJJR05VTSogYmlnbnVtID0g
bnVsbHB0cik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>
<flag name="commit-queue"
          id="487390"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458535</attachid>
            <date>2022-04-28 11:13:59 -0700</date>
            <delta_ts>2022-04-29 15:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>16264</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZTYyNWQ2MjI1OWUuLmQ0YThiNTY1OTA4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDIyLTA0LTI4ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlicmVTU0wgMy41Lngg
bWFkZSBhIG51bWJlciBvZiB0eXBlcyBvcGFxdWUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVu
U1NMLiBVbmZvcnR1bmF0ZWx5CisgICAgICAgIGEgbnVtYmVyIG9mIHBsYWNlcyBpbiB0aGUgV2Vi
Q3J5cHRvIGltcGxlbWVudGF0aW9uIHdlcmUgYWNjZXNzaW5nIHRoZXNlIHN0cnVjdHMgZGlyZWN0
bHkuCisgICAgICAgIE1vZGlmeSB0aGUgY29kZSB0byB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9u
cyB0byBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgdHlwZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgbWFu
bmVyIHRoZXkgd2VyZSBiZWluZyB1c2VkLgorCisgICAgICAgIEluIFdlYkNvcmU6OmNvbnZlcnRU
b0JpZ051bWJlciB0aGUgZmlyc3QgYXJndW1lbnQgd2FzIGEgQklHTlVNIHRvIHN0b3JlIHRoZSBy
ZXN1bHQgb2YgdGhlCisgICAgICAgIG9wZXJhdGlvbiBpbi4gSWYgYSBuZXcgQklHTlVNIHdhcyB0
byBiZSBhbGxvY2F0ZWQgYnkgdGhlIG9wZXJhdGlvbiB0aGVuIGEgbnVsbHB0ciB3YXMKKyAgICAg
ICAgcGFzc2VkIGluLiBBZnRlciBtb2RpZmljYXRpb24gYWxsIGNhbGxzIHdlcmUgdXNpbmcgbnVs
bHB0ciBzbyB0aGUgc2lnbmF0dXJlIHdhcyBtb2RpZmllZAorICAgICAgICB0byBmaXQgdGhlIGNv
bW1vbiBjYXNlLgorCisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNE
U0FPcGVuU1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpw
bGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVu
U1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpX
S1B1YmxpYyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBv
cnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBj
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUb0JpZ051bWJlcik6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxp
dGllcy5oOgorCiAyMDIyLTA0LTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIHNlbmRpbmcgYSBmbHVzaCBJUEMgdG8gdGhlIEdQVSBwcm9j
ZXNzIHdoZW4gZGVzdHJveWluZyBhIFJlbW90ZUltYWdlQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVu
U1NMLmNwcAppbmRleCBkMmU1Nzc4OWY2MTguLjQ2YWVjMTg2OWUxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RT
QU9wZW5TU0wuY3BwCkBAIC03Niw4ICs3NiwxMSBAQCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9B
bGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkcwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgYXV0byBzaWcgPSBFQ0RTQVNpZ1B0cihF
Q0RTQV9TSUdfbmV3KCkpOwotICAgIHNpZy0+ciA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgp
LCBrZXlTaXplSW5CeXRlcywgc2lnLT5yKTsKLSAgICBzaWctPnMgPSBCTl9iaW4yYm4oc2lnbmF0
dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzLCBrZXlTaXplSW5CeXRlcywgc2lnLT5zKTsKKyAg
ICBhdXRvIHIgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIG51
bGxwdHIpOworICAgIGF1dG8gcyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6
ZUluQnl0ZXMsIGtleVNpemVJbkJ5dGVzLCBudWxscHRyKTsKKworICAgIGlmICghRUNEU0FfU0lH
X3NldDAoc2lnLmdldCgpLCByLCBzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CiAKICAgICBjb25zdCBFVlBfTUQqIG1kID0gZGlnZXN0QWxnb3JpdGhtKHBh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwogICAgIGlmICghbWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAppbmRleCBmM2Iy
ZjlkMWRmNTguLjM5ZDZjM2NhMmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUmVm
UHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICBhdXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lO
VF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0
aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0gICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29v
cmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051
bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVs
bHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZm
aW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0
VG9CaWdOdW1iZXIoeCkpLmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKHkpKS5n
ZXQoKSwgbnVsbHB0cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
RUNfS0VZX3NldF9wdWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0KCkpIDw9IDApCkBAIC0x
OTUsMTMgKzE5NSwxMyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9y
bUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIGF1dG8gcG9pbnQg
PSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8gQ3VycmVudGx5IHdl
IG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAKLSAgICBpZiAoRUNf
UE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50LmdldCgpLCBCSUdO
VU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwgQklHTlVNUHRyKGNv
bnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCisgICAg
aWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQo
KSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcih4KSkuZ2V0KCksIEJJR05VTVB0cihjb252
ZXJ0VG9CaWdOdW1iZXIoeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2lu
dC5nZXQoKSkgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZ
X3NldF9wcml2YXRlX2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIo
bnVsbHB0ciwgZCkpLmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5
KGtleS5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihkKSkuZ2V0KCkpIDw9IDAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKEVDX0tFWV9jaGVja19rZXkoa2V5
LmdldCgpKSA8PSAwKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihF
VlBfUEtDUzgyUEtFWShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV90
eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX0VDKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtF
WV9iYXNlX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX0VDKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gZWNLZXkgPSBFVlBfUEtFWV9nZXQwX0VDX0tFWShwa2V5LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJT
QU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNB
T3BlblNTTC5jcHAKaW5kZXggMWQ5NjVjNjg5Y2E4Li5iMTI0MDk0ZDdkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UlNBTW9kdWx1c0xlbmd0aChSU0Eq
IHJzYSkKIHsKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIEJO
X251bV9ieXRlcyhyc2EtPm4pICogODsKKyAgICByZXR1cm4gUlNBX2JpdHMocnNhKSAqIDg7CiB9
CiAKIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNo
LCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKQEAgLTgxLDMxICs4
MSwzOSBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgaWYgKCFyc2EpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcnNhLT5uID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+biwg
a2V5RGF0YS5tb2R1bHVzKCkpOwotICAgIHJzYS0+ZSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2Et
PmUsIGtleURhdGEuZXhwb25lbnQoKSk7Ci0gICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAg
ICBhdXRvIG4gPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5tb2R1bHVzKCkpOworICAgIGF1
dG8gZSA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLmV4cG9uZW50KCkpOworICAgIGlmICgh
biB8fCAhZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBCSUdOVU0qIGQgPSBudWxs
cHRyOworCiAgICAgaWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSkgewotICAg
ICAgICByc2EtPmQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRhLnByaXZhdGVF
eHBvbmVudCgpKTsKLSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cCwg
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgcnNhLT5xID0g
Y29udmVydFRvQmlnTnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmlt
ZUZhY3Rvcik7Ci0gICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAg
ICAgICAgZCA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsK
KyAgICAgICAgYXV0byBwID0gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUlu
Zm8oKS5wcmltZUZhY3Rvcik7CisgICAgICAgIGF1dG8gcSA9IGNvbnZlcnRUb0JpZ051bWJlcihr
ZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgaWYgKCFkIHx8
ICFwIHx8ICFxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFS
U0Ffc2V0MF9mYWN0b3JzKHJzYS5nZXQoKSwgcCwgcSkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFuZCBpcW1wIG1lbWJlciBv
ZiB0aGUgUlNBIHN0cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVzcG9uZGluZyBkYXRhLgog
CiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAoIWtleURhdGEu
Zmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByc2EtPmRtcDEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAxLCBrZXlEYXRhLmZpcnN0
UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcDEgPSAoIWtl
eURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpID8gY29u
dmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVu
dCkgOiBudWxscHRyOwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAgICAg
aWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcTEs
IGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBh
dXRvIGRtcTEgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQu
aXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygp
LmZhY3RvckNSVEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGlxbXAgLS0gcV4oLTEp
IG1vZCBwCi0gICAgICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRD
b2VmZmljaWVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlxbXAgPSBjb252ZXJ0VG9C
aWdOdW1iZXIocnNhLT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENv
ZWZmaWNpZW50KTsKKyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252ZXJ0VG9CaWdOdW1iZXIo
a2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCkgOiBudWxscHRy
OworCisgICAgICAgIGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2EuZ2V0KCksIGRtcDEsIGRt
cTEsIGlxbXApKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYg
KCFSU0Ffc2V0MF9rZXkocnNhLmdldCgpLCBuLCBlLCBkKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ldygpKTsKICAgICBp
ZiAoIXBrZXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4LDcgKzE3Niw3IEBAIHZv
aWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBh
bGdvcml0aG0sIENyeXB0b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGV4cG9uZW50ID0gQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCBwdWJsaWNF
eHBvbmVudCkpOworICAgIGF1dG8gZXhwb25lbnQgPSBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVt
YmVyKHB1YmxpY0V4cG9uZW50KSk7CiAgICAgYXV0byBwcml2YXRlUlNBID0gUlNBUHRyKFJTQV9u
ZXcoKSk7CiAgICAgaWYgKCFleHBvbmVudCB8fCBSU0FfZ2VuZXJhdGVfa2V5X2V4KHByaXZhdGVS
U0EuZ2V0KCksIG1vZHVsdXNMZW5ndGgsIGV4cG9uZW50LmdldCgpLCBudWxscHRyKSA8PSAwKSB7
CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwpAQCAtMjA1LDcgKzIxMyw3IEBAIFJlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpCiAKICAgICAvLyBXZSB1c2UgZDJpX1BVQktFWSgpIHRvIGltcG9ydCBh
IHB1YmxpYyBrZXkuCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihkMmlfUFVCS0VZKG51bGxw
dHIsICZwdHIsIGtleURhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5
cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtF
WV9pZChwa2V5LmdldCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFz
aC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5
cHRvS2V5VHlwZTo6UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7
CkBAIC0yMjIsNyArMjMwLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZ
KHA4aW5mLmdldCgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlw
ZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5Lmdl
dCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjcwLDgg
KzI3OCwxNCBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxn
b3JpdGhtCiB7CiAgICAgUlNBKiByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShwbGF0Zm9ybUtleSgp
KTsKIAotICAgIGF1dG8gbW9kdWx1c0xlbmd0aCA9IHJzYSA/IEJOX251bV9ieXRlcyhyc2EtPm4p
ICogOCA6IDA7Ci0gICAgYXV0byBwdWJsaWNFeHBvbmVudCA9IHJzYSA/IGNvbnZlcnRUb0J5dGVz
KHJzYS0+ZSkgOiBWZWN0b3I8dWludDhfdD4geyB9OworICAgIGF1dG8gbW9kdWx1c0xlbmd0aCA9
IGdldFJTQU1vZHVsdXNMZW5ndGgocnNhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhw
b25lbnQ7CisKKyAgICBpZiAocnNhKSB7CisgICAgICAgIGNvbnN0IEJJR05VTSAqZSwgKnE7Cisg
ICAgICAgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmZSwgJnEpOworICAgICAgICBwdWJsaWNFeHBv
bmVudCA9IGNvbnZlcnRUb0J5dGVzKGUpOworICAgIH0KIAogICAgIGlmIChtX3Jlc3RyaWN0ZWRU
b1NwZWNpZmljSGFzaCkgewogICAgICAgICBDcnlwdG9Sc2FIYXNoZWRLZXlBbGdvcml0aG0gcmVz
dWx0OwpAQCAtMjk1LDU1ICszMDksNjUgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNv
bXBvbmVudHM+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CiAgICAgaWYgKCFyc2Ep
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgY29uc3QgQklHTlVNICpuLCAqZSwgKmQ7
CisgICAgUlNBX2dldDBfa2V5KHJzYSwgJm4sICZlLCAmZCk7CisKICAgICBzd2l0Y2ggKHR5cGUo
KSkgewogICAgIGNhc2UgQ3J5cHRvS2V5VHlwZTo6UHVibGljOgogICAgICAgICAvLyBXZSBuZWVk
IHRoZSBwdWJsaWMgbW9kdWx1cyBhbmQgZXhwb25lbnQgZm9yIHRoZSBwdWJsaWMga2V5LgotICAg
ICAgICBpZiAoIXJzYS0+biB8fCAhcnNhLT5lKQorICAgICAgICBpZiAoIW4gfHwgIWUpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBv
bmVudHM6OmNyZWF0ZVB1YmxpYyhjb252ZXJ0VG9CeXRlcyhyc2EtPm4pLCBjb252ZXJ0VG9CeXRl
cyhyc2EtPmUpKTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0
ZVB1YmxpYyhjb252ZXJ0VG9CeXRlcyhuKSwgY29udmVydFRvQnl0ZXMoZSkpOwogICAgIGNhc2Ug
Q3J5cHRvS2V5VHlwZTo6UHJpdmF0ZTogewogICAgICAgICAvLyBXZSBuZWVkIHRoZSBwdWJsaWMg
bW9kdWx1cywgZXhwb25lbnQsIGFuZCBwcml2YXRlIGV4cG9uZW50LCBhcyB3ZWxsIGFzIHAgYW5k
IHEgcHJpbWUgaW5mb3JtYXRpb24uCi0gICAgICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUgfHwg
IXJzYS0+ZCB8fCAhcnNhLT5wIHx8ICFyc2EtPnEpCisgICAgICAgIGNvbnN0IEJJR05VTSAqcCwg
KnE7CisgICAgICAgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmcCwgJnEpOworCisgICAgICAgIGlm
ICghbiB8fCAhZSB8fCAhZCB8fCAhcCB8fCAhcSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1l
SW5mbzsKLSAgICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBjb252ZXJ0VG9CeXRl
cyhyc2EtPnApOworICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRU
b0J5dGVzKHApOwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBz
ZWNvbmRQcmltZUluZm87Ci0gICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNv
bnZlcnRUb0J5dGVzKHJzYS0+cSk7CisgICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3Rv
ciA9IGNvbnZlcnRUb0J5dGVzKHEpOwogCiAgICAgICAgIGF1dG8gY29udGV4dCA9IEJOQ3R4UHRy
KEJOX0NUWF9uZXcoKSk7CisKKyAgICAgICAgY29uc3QgQklHTlVNICpkbXAxLCAqZG1xMSwgKmlx
bXA7CisgICAgICAgIFJTQV9nZXQwX2NydF9wYXJhbXMocnNhLCAmZG1wMSwgJmRtcTEsICZpcW1w
KTsKKwogICAgICAgICAvLyBkbXAxIC0tIGQgbW9kIChwIC0gMSkKLSAgICAgICAgaWYgKHJzYS0+
ZG1wMSkKLSAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29u
dmVydFRvQnl0ZXMocnNhLT5kbXAxKTsKKyAgICAgICAgaWYgKGRtcDEpCisgICAgICAgICAgICBm
aXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcDEpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZG1wMSA9IEJJR05VTVB0cihCTl9uZXco
KSk7Ci0gICAgICAgICAgICBhdXRvIHBtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5wKSk7Ci0g
ICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocG0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChk
bXAxLmdldCgpLCByc2EtPmQsIHBtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKLSAgICAg
ICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5
dGVzKGRtcDEuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBkbXAxTmV3ID0gQklHTlVNUHRyKEJO
X25ldygpKTsKKyAgICAgICAgICAgIGF1dG8gcG0xID0gQklHTlVNUHRyKEJOX2R1cChwKSk7Cisg
ICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocG0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChk
bXAxTmV3LmdldCgpLCBkLCBwbTEuZ2V0KCksIGNvbnRleHQuZ2V0KCkpID09IDEpCisgICAgICAg
ICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRl
cyhkbXAxTmV3LmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGRtcTEgLS0gZCBtb2Qg
KHEgLSAxKQotICAgICAgICBpZiAocnNhLT5kbXExKQotICAgICAgICAgICAgc2Vjb25kUHJpbWVJ
bmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMocnNhLT5kbXExKTsKKyAgICAg
ICAgaWYgKGRtcTEpCisgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25l
bnQgPSBjb252ZXJ0VG9CeXRlcyhkbXExKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBh
dXRvIGRtcTEgPSBCSUdOVU1QdHIoQk5fbmV3KCkpOwotICAgICAgICAgICAgYXV0byBxbTEgPSBC
SUdOVU1QdHIoQk5fZHVwKHJzYS0+cSkpOwotICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHFt
MS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1xMS5nZXQoKSwgcnNhLT5kLCBxbTEuZ2V0KCks
IGNvbnRleHQuZ2V0KCkpID09IDEpCi0gICAgICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZh
Y3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1xMS5nZXQoKSk7CisgICAgICAgICAg
ICBhdXRvIGRtcTFOZXcgPSBCSUdOVU1QdHIoQk5fbmV3KCkpOworICAgICAgICAgICAgYXV0byBx
bTEgPSBCSUdOVU1QdHIoQk5fZHVwKHEpKTsKKyAgICAgICAgICAgIGlmIChCTl9zdWJfd29yZChx
bTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcTFOZXcuZ2V0KCksIGQsIHFtMS5nZXQoKSwg
Y29udGV4dC5nZXQoKSkgPT0gMSkKKyAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFj
dG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXExTmV3LmdldCgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIGlxbXAgLS0gcV4oLTEpIG1vZCBwCi0gICAgICAgIGlmIChyc2EtPmlx
bXApCi0gICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBj
b252ZXJ0VG9CeXRlcyhyc2EtPmlxbXApOworICAgICAgICBpZiAoaXFtcCkKKyAgICAgICAgICAg
IHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKGlx
bXApOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gaXFtcCA9IEJJR05VTVB0cihC
Tl9tb2RfaW52ZXJzZShudWxscHRyLCByc2EtPnEsIHJzYS0+cCwgY29udGV4dC5nZXQoKSkpOwot
ICAgICAgICAgICAgaWYgKGlxbXApCi0gICAgICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZh
Y3RvckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0ZXMoaXFtcC5nZXQoKSk7CisgICAgICAg
ICAgICBhdXRvIGlxbXBOZXcgPSBCSUdOVU1QdHIoQk5fbW9kX2ludmVyc2UobnVsbHB0ciwgcSwg
cCwgY29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgaWYgKGlxbXBOZXcpCisgICAgICAgICAg
ICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0
ZXMoaXFtcE5ldy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YSgKLSAgICAgICAg
ICAgIGNvbnZlcnRUb0J5dGVzKHJzYS0+biksIGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSksIGNvbnZl
cnRUb0J5dGVzKHJzYS0+ZCksCisgICAgICAgICAgICBjb252ZXJ0VG9CeXRlcyhuKSwgY29udmVy
dFRvQnl0ZXMoZSksIGNvbnZlcnRUb0J5dGVzKGQpLAogICAgICAgICAgICAgV1RGTW92ZShmaXJz
dFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSwgVmVjdG9yPENyeXB0b0tleVJT
QUNvbXBvbmVudHM6OlByaW1lSW5mbz4geyB9KTsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAKaW5k
ZXggNTA0MGJhNjFiNjM5Li5lZmRjZDdkZjhjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRUb0J5dGVzRXhwYW5kKGNvbnN0IEJJR05VTSogYmlnbnVt
LCBzaXplX3QgbWluaW11bUJ1ZmZlclMKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLUJJR05VTSog
Y29udmVydFRvQmlnTnVtYmVyKEJJR05VTSogYmlnbnVtLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGJ5dGVzKQorQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBieXRlcywgQklHTlVNKiBiaWdudW0pCiB7CiAgICAgcmV0dXJuIEJOX2JpbjJibihieXRlcy5k
YXRhKCksIGJ5dGVzLnNpemUoKSwgYmlnbnVtKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAppbmRleCA5YTdiYWE2N2ExMmQuLjZjZjhl
ODg2ZjAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xV
dGlsaXRpZXMuaApAQCAtNDIsOSArNDIsOSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVydFRvQnl0
ZXMoY29uc3QgQklHTlVNKik7CiAKIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlc0V4cGFu
ZChjb25zdCBCSUdOVU0qLCBzaXplX3QgYnVmZmVyU2l6ZSk7CiAKLS8vIElmIGEgbnVsbCBwb2lu
dGVyIGlzIGdpdmVuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgdGhpcyBmdW5jdGlvbiBpbnRlcm5h
bGx5IGFsbG9jYXRlcyBhIG5ldyBCSUdOVU0KKy8vIElmIGEgbnVsbCBwb2ludGVyIGlzIGdpdmVu
IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0
ZXMgYSBuZXcgQklHTlVNCiAvLyBhbmQgcmV0dXJucyBpdHMgcG9pbnRlci4gT3RoZXJ3aXNlIHRo
aXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2l2ZW4gQklHTlVNIGFuZCBkb2Vzbid0IGFsbG9jYXRlIGEg
bmV3IG9uZS4KLUJJR05VTSogY29udmVydFRvQmlnTnVtYmVyKEJJR05VTSosIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYnl0ZXMpOworQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBieXRlcywgQklHTlVNKiBiaWdudW0gPSBudWxscHRyKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCg==
</data>
<flag name="commit-queue"
          id="487424"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458613</attachid>
            <date>2022-04-29 15:39:44 -0700</date>
            <delta_ts>2022-05-09 14:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>16452</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNGRmNGM3NWExMTQuLjhlMDQ3YzA5ZWExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM4IEBACisyMDIyLTA0LTI5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlicmVTU0wgMy41Lngg
bWFkZSBhIG51bWJlciBvZiB0eXBlcyBvcGFxdWUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVu
U1NMLiBVbmZvcnR1bmF0ZWx5CisgICAgICAgIGEgbnVtYmVyIG9mIHBsYWNlcyBpbiB0aGUgV2Vi
Q3J5cHRvIGltcGxlbWVudGF0aW9uIHdlcmUgYWNjZXNzaW5nIHRoZXNlIHN0cnVjdHMgZGlyZWN0
bHkuCisgICAgICAgIE1vZGlmeSB0aGUgY29kZSB0byB1c2UgdGhlIHByb3ZpZGVkIGZ1bmN0aW9u
cyB0byBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgdHlwZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgbWFu
bmVyIHRoZXkgd2VyZSBiZWluZyB1c2VkLgorCisgICAgICAgIEluIFdlYkNvcmU6OmNvbnZlcnRU
b0JpZ051bWJlciB0aGUgZmlyc3QgYXJndW1lbnQgd2FzIGEgQklHTlVNIHRvIHN0b3JlIHRoZSBy
ZXN1bHQgb2YgdGhlCisgICAgICAgIG9wZXJhdGlvbiBpbi4gSWYgYSBuZXcgQklHTlVNIHdhcyB0
byBiZSBhbGxvY2F0ZWQgYnkgdGhlIG9wZXJhdGlvbiB0aGVuIGEgbnVsbHB0ciB3YXMKKyAgICAg
ICAgcGFzc2VkIGluLiBBZnRlciBtb2RpZmljYXRpb24gYWxsIGNhbGxzIHdlcmUgdXNpbmcgbnVs
bHB0ciBzbyB0aGUgc2lnbmF0dXJlIHdhcyBtb2RpZmllZAorICAgICAgICB0byBmaXQgdGhlIGNv
bW1vbiBjYXNlLgorCisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNE
U0FPcGVuU1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpw
bGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVu
U1NMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpX
S1B1YmxpYyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBv
cnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjphbGdvcml0aG0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBj
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUb0JpZ051bWJlcik6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxp
dGllcy5oOgorCiAyMDIyLTA0LTI5ICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW2Nzcy1jYXNjYWRlXSBTb3J0IHNob3J0aGFuZCBwcm9wZXJ0aWVzIGF0IHRo
ZSBlbmQgb2YgQ1NTUHJvcGVydHlJRCBlbnVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAppbmRl
eCBkMmU1Nzc4OWY2MTguLjQ2YWVjMTg2OWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3Bw
CkBAIC03Niw4ICs3NiwxMSBAQCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RT
QTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkcwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgYXV0byBzaWcgPSBFQ0RTQVNpZ1B0cihFQ0RTQV9TSUdfbmV3
KCkpOwotICAgIHNpZy0+ciA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpLCBrZXlTaXplSW5C
eXRlcywgc2lnLT5yKTsKLSAgICBzaWctPnMgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSAr
IGtleVNpemVJbkJ5dGVzLCBrZXlTaXplSW5CeXRlcywgc2lnLT5zKTsKKyAgICBhdXRvIHIgPSBC
Tl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIG51bGxwdHIpOworICAg
IGF1dG8gcyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0ZXMsIGtl
eVNpemVJbkJ5dGVzLCBudWxscHRyKTsKKworICAgIGlmICghRUNEU0FfU0lHX3NldDAoc2lnLmdl
dCgpLCByLCBzKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CiAKICAgICBjb25zdCBFVlBfTUQqIG1kID0gZGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIpOwogICAgIGlmICghbWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAppbmRleCBmM2IyZjlkMWRmNTguLjM5
ZDZjM2NhMmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUmVmUHRyPENyeXB0b0tl
eUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmkKICAgICBhdXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXAp
KTsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92
ZXIgR0YocCkuICAgCi0gICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0Zw
KGdyb3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRy
LCB4KSkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdl
dCgpLCBudWxscHRyKSA8PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5h
dGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIo
eCkpLmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKHkpKS5nZXQoKSwgbnVsbHB0
cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoRUNfS0VZX3NldF9w
dWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0KCkpIDw9IDApCkBAIC0xOTUsMTMgKzE5NSwx
MyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1By
aXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIGF1dG8gcG9pbnQgPSBFQ1BvaW50UHRy
KEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9y
dCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAKLSAgICBpZiAoRUNfUE9JTlRfc2V0X2Fm
ZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50LmdldCgpLCBCSUdOVU1QdHIoY29udmVy
dFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051
bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCisgICAgaWYgKEVDX1BPSU5U
X3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRy
KGNvbnZlcnRUb0JpZ051bWJlcih4KSkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1i
ZXIoeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0g
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRl
X2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgZCkp
LmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5KGtleS5nZXQoKSwg
QklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihkKSkuZ2V0KCkpIDw9IDApCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKEVDX0tFWV9jaGVja19rZXkoa2V5LmdldCgpKSA8PSAw
KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihFVlBfUEtDUzgyUEtF
WShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5
cGUpICE9IEVWUF9QS0VZX0VDKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9iYXNlX2lkKHBr
ZXkuZ2V0KCkpICE9IEVWUF9QS0VZX0VDKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGF1dG8gZWNLZXkgPSBFVlBfUEtFWV9nZXQwX0VDX0tFWShwa2V5LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAK
aW5kZXggMWQ5NjVjNjg5Y2E4Li42MmJjMThlZjVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UlNBTW9kdWx1c0xlbmd0aChSU0EqIHJzYSkKIHsKICAg
ICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIEJOX251bV9ieXRlcyhy
c2EtPm4pICogODsKKyAgICByZXR1cm4gUlNBX2JpdHMocnNhKSAqIDg7CiB9CiAKIFJlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hh
c2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKQEAgLTgxLDMxICs4MSwzOSBAQCBSZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpZXIsCiAgICAgaWYgKCFyc2EpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcnNhLT5uID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+biwga2V5RGF0YS5tb2R1
bHVzKCkpOwotICAgIHJzYS0+ZSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmUsIGtleURhdGEu
ZXhwb25lbnQoKSk7Ci0gICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAgICBhdXRvIG4gPSBj
b252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5tb2R1bHVzKCkpOworICAgIGF1dG8gZSA9IGNvbnZl
cnRUb0JpZ051bWJlcihrZXlEYXRhLmV4cG9uZW50KCkpOworICAgIGlmICghbiB8fCAhZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBCSUdOVU0qIGQgPSBudWxscHRyOworCiAgICAg
aWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSkgewotICAgICAgICByc2EtPmQg
PSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsK
LSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cCwga2V5RGF0YS5maXJz
dFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgcnNhLT5xID0gY29udmVydFRvQmln
TnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmltZUZhY3Rvcik7Ci0g
ICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAgICAgICAgZCA9IGNv
bnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsKKyAgICAgICAgYXV0
byBwID0gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5wcmltZUZh
Y3Rvcik7CisgICAgICAgIGF1dG8gcSA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29u
ZFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgaWYgKCFkIHx8ICFwIHx8ICFxKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9mYWN0
b3JzKHJzYS5nZXQoKSwgcCwgcSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFuZCBpcW1wIG1lbWJlciBvZiB0aGUgUlNBIHN0
cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVzcG9uZGluZyBkYXRhLgogCiAgICAgICAgIC8v
IGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAoIWtleURhdGEuZmlyc3RQcmltZUlu
Zm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmRtcDEg
PSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAxLCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCku
ZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcDEgPSAoIWtleURhdGEuZmlyc3RQ
cmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpID8gY29udmVydFRvQmlnTnVt
YmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCkgOiBudWxscHRy
OwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAgICAgaWYgKCFrZXlEYXRh
LnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcTEsIGtleURhdGEuc2Vj
b25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcTEgPSAo
IWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQuaXNFbXB0eSgpKSA/
IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4
cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGlxbXAgLS0gcV4oLTEpIG1vZCBwCi0gICAg
ICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlxbXAgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNh
LT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50KTsK
KyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNS
VENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5zZWNv
bmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCkgOiBudWxscHRyOworCisgICAgICAg
IGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2EuZ2V0KCksIGRtcDEsIGRtcTEsIGlxbXApKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKCFSU0Ffc2V0MF9r
ZXkocnNhLmdldCgpLCBuLCBlLCBkKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBh
dXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ldygpKTsKICAgICBpZiAoIXBrZXkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4LDcgKzE3Niw3IEBAIHZvaWQgQ3J5cHRvS2V5
UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENy
eXB0b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGV4cG9uZW50ID0g
QklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCBwdWJsaWNFeHBvbmVudCkpOwor
ICAgIGF1dG8gZXhwb25lbnQgPSBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKHB1YmxpY0V4
cG9uZW50KSk7CiAgICAgYXV0byBwcml2YXRlUlNBID0gUlNBUHRyKFJTQV9uZXcoKSk7CiAgICAg
aWYgKCFleHBvbmVudCB8fCBSU0FfZ2VuZXJhdGVfa2V5X2V4KHByaXZhdGVSU0EuZ2V0KCksIG1v
ZHVsdXNMZW5ndGgsIGV4cG9uZW50LmdldCgpLCBudWxscHRyKSA8PSAwKSB7CiAgICAgICAgIGZh
aWx1cmVDYWxsYmFjaygpOwpAQCAtMjA1LDcgKzIxMyw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+
IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpCiAKICAgICAvLyBXZSB1c2UgZDJpX1BVQktFWSgpIHRvIGltcG9ydCBhIHB1YmxpYyBrZXku
CiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihkMmlfUFVCS0VZKG51bGxwdHIsICZwdHIsIGtl
eURhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlw
ZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5Lmdl
dCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CkBAIC0yMjIsNyAr
MjMwLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZKHA4aW5mLmdldCgp
KSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlwZSkgIT0gRVZQX1BL
RVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5LmdldCgpKSAhPSBFVlBf
UEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgV1RG
TW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjcwLDggKzI3OCwxNSBAQCBh
dXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiB7CiAg
ICAgUlNBKiByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShwbGF0Zm9ybUtleSgpKTsKIAotICAgIGF1
dG8gbW9kdWx1c0xlbmd0aCA9IHJzYSA/IEJOX251bV9ieXRlcyhyc2EtPm4pICogOCA6IDA7Ci0g
ICAgYXV0byBwdWJsaWNFeHBvbmVudCA9IHJzYSA/IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkgOiBW
ZWN0b3I8dWludDhfdD4geyB9OworICAgIGF1dG8gbW9kdWx1c0xlbmd0aCA9IGdldFJTQU1vZHVs
dXNMZW5ndGgocnNhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7CisKKyAg
ICBpZiAocnNhKSB7CisgICAgICAgIGNvbnN0IEJJR05VTSogZTsKKyAgICAgICAgY29uc3QgQklH
TlVNKiBxOworICAgICAgICBSU0FfZ2V0MF9mYWN0b3JzKHJzYSwgJmUsICZxKTsKKyAgICAgICAg
cHVibGljRXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhlKTsKKyAgICB9CiAKICAgICBpZiAobV9y
ZXN0cmljdGVkVG9TcGVjaWZpY0hhc2gpIHsKICAgICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxn
b3JpdGhtIHJlc3VsdDsKQEAgLTI5NSw1NSArMzEwLDcwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlSU0FDb21wb25lbnRzPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAogICAg
IGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGNvbnN0IEJJR05VTSog
bjsKKyAgICBjb25zdCBCSUdOVU0qIGU7CisgICAgY29uc3QgQklHTlVNKiBkOworICAgIFJTQV9n
ZXQwX2tleShyc2EsICZuLCAmZSwgJmQpOworCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBj
YXNlIENyeXB0b0tleVR5cGU6OlB1YmxpYzoKICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcHVibGlj
IG1vZHVsdXMgYW5kIGV4cG9uZW50IGZvciB0aGUgcHVibGljIGtleS4KLSAgICAgICAgaWYgKCFy
c2EtPm4gfHwgIXJzYS0+ZSkKKyAgICAgICAgaWYgKCFuIHx8ICFlKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVh
dGVQdWJsaWMoY29udmVydFRvQnl0ZXMocnNhLT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSk7
CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoY29u
dmVydFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5dGVzKGUpKTsKICAgICBjYXNlIENyeXB0b0tleVR5
cGU6OlByaXZhdGU6IHsKICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMsIGV4
cG9uZW50LCBhbmQgcHJpdmF0ZSBleHBvbmVudCwgYXMgd2VsbCBhcyBwIGFuZCBxIHByaW1lIGlu
Zm9ybWF0aW9uLgotICAgICAgICBpZiAoIXJzYS0+biB8fCAhcnNhLT5lIHx8ICFyc2EtPmQgfHwg
IXJzYS0+cCB8fCAhcnNhLT5xKQorICAgICAgICBjb25zdCBCSUdOVU0qIHA7CisgICAgICAgIGNv
bnN0IEJJR05VTSogcTsKKyAgICAgICAgUlNBX2dldDBfZmFjdG9ycyhyc2EsICZwLCAmcSk7CisK
KyAgICAgICAgaWYgKCFuIHx8ICFlIHx8ICFkIHx8ICFwIHx8ICFxKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
IGZpcnN0UHJpbWVJbmZvOwotICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNv
bnZlcnRUb0J5dGVzKHJzYS0+cCk7CisgICAgICAgIGZpcnN0UHJpbWVJbmZvLnByaW1lRmFjdG9y
ID0gY29udmVydFRvQnl0ZXMocCk7CiAKICAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6
UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsKLSAgICAgICAgc2Vjb25kUHJpbWVJbmZvLnByaW1l
RmFjdG9yID0gY29udmVydFRvQnl0ZXMocnNhLT5xKTsKKyAgICAgICAgc2Vjb25kUHJpbWVJbmZv
LnByaW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMocSk7CiAKICAgICAgICAgYXV0byBjb250ZXh0
ID0gQk5DdHhQdHIoQk5fQ1RYX25ldygpKTsKKworICAgICAgICBjb25zdCBCSUdOVU0qIGRtcDE7
CisgICAgICAgIGNvbnN0IEJJR05VTSogZG1xMTsKKyAgICAgICAgY29uc3QgQklHTlVNKiBpcW1w
OworICAgICAgICBSU0FfZ2V0MF9jcnRfcGFyYW1zKHJzYSwgJmRtcDEsICZkbXExLCAmaXFtcCk7
CisKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAgIGlmIChyc2EtPmRt
cDEpCi0gICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZl
cnRUb0J5dGVzKHJzYS0+ZG1wMSk7CisgICAgICAgIGlmIChkbXAxKQorICAgICAgICAgICAgZmly
c3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXAxKTsKICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGRtcDEgPSBCSUdOVU1QdHIoQk5fbmV3KCkp
OwotICAgICAgICAgICAgYXV0byBwbTEgPSBCSUdOVU1QdHIoQk5fZHVwKHJzYS0+cCkpOwotICAg
ICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1w
MS5nZXQoKSwgcnNhLT5kLCBwbTEuZ2V0KCksIGNvbnRleHQuZ2V0KCkpID09IDEpCi0gICAgICAg
ICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRl
cyhkbXAxLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZG1wMU5ldyA9IEJJR05VTVB0cihCTl9u
ZXcoKSk7CisgICAgICAgICAgICBhdXRvIHBtMSA9IEJJR05VTVB0cihCTl9kdXAocCkpOworICAg
ICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1w
MU5ldy5nZXQoKSwgZCwgcG0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQorICAgICAgICAg
ICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMo
ZG1wMU5ldy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChx
IC0gMSkKLSAgICAgICAgaWYgKHJzYS0+ZG1xMSkKLSAgICAgICAgICAgIHNlY29uZFByaW1lSW5m
by5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZG1xMSk7CisgICAgICAg
IGlmIChkbXExKQorICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50
ID0gY29udmVydFRvQnl0ZXMoZG1xMSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0
byBkbXExID0gQklHTlVNUHRyKEJOX25ldygpKTsKLSAgICAgICAgICAgIGF1dG8gcW0xID0gQklH
TlVNUHRyKEJOX2R1cChyc2EtPnEpKTsKLSAgICAgICAgICAgIGlmIChCTl9zdWJfd29yZChxbTEu
Z2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcTEuZ2V0KCksIHJzYS0+ZCwgcW0xLmdldCgpLCBj
b250ZXh0LmdldCgpKSA9PSAxKQotICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0
b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcTEuZ2V0KCkpOworICAgICAgICAgICAg
YXV0byBkbXExTmV3ID0gQklHTlVNUHRyKEJOX25ldygpKTsKKyAgICAgICAgICAgIGF1dG8gcW0x
ID0gQklHTlVNUHRyKEJOX2R1cChxKSk7CisgICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0x
LmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXExTmV3LmdldCgpLCBkLCBxbTEuZ2V0KCksIGNv
bnRleHQuZ2V0KCkpID09IDEpCisgICAgICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3Rv
ckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1xMU5ldy5nZXQoKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBpcW1wIC0tIHFeKC0xKSBtb2QgcAotICAgICAgICBpZiAocnNhLT5pcW1w
KQotICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNpZW50ID0gY29u
dmVydFRvQnl0ZXMocnNhLT5pcW1wKTsKKyAgICAgICAgaWYgKGlxbXApCisgICAgICAgICAgICBz
ZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1w
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGlxbXAgPSBCSUdOVU1QdHIoQk5f
bW9kX2ludmVyc2UobnVsbHB0ciwgcnNhLT5xLCByc2EtPnAsIGNvbnRleHQuZ2V0KCkpKTsKLSAg
ICAgICAgICAgIGlmIChpcW1wKQotICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0
b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKGlxbXAuZ2V0KCkpOworICAgICAgICAg
ICAgYXV0byBpcW1wTmV3ID0gQklHTlVNUHRyKEJOX21vZF9pbnZlcnNlKG51bGxwdHIsIHEsIHAs
IGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChpcW1wTmV3KQorICAgICAgICAgICAg
ICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVz
KGlxbXBOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIENyeXB0b0tleVJT
QUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEoCi0gICAgICAgICAg
ICBjb252ZXJ0VG9CeXRlcyhyc2EtPm4pLCBjb252ZXJ0VG9CeXRlcyhyc2EtPmUpLCBjb252ZXJ0
VG9CeXRlcyhyc2EtPmQpLAorICAgICAgICAgICAgY29udmVydFRvQnl0ZXMobiksIGNvbnZlcnRU
b0J5dGVzKGUpLCBjb252ZXJ0VG9CeXRlcyhkKSwKICAgICAgICAgICAgIFdURk1vdmUoZmlyc3RQ
cmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFZlY3RvcjxDcnlwdG9LZXlSU0FD
b21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCmluZGV4
IDUwNDBiYTYxYjYzOS4uMzYyNzcyMGJmZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIFZl
Y3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlc0V4cGFuZChjb25zdCBCSUdOVU0qIGJpZ251bSwg
c2l6ZV90IG1pbmltdW1CdWZmZXJTCiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1CSUdOVU0qIGNv
bnZlcnRUb0JpZ051bWJlcihCSUdOVU0qIGJpZ251bSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBi
eXRlcykKK0JJR05VTSogY29udmVydFRvQmlnTnVtYmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMsIEJJR05VTSogcmV0KQogewotICAgIHJldHVybiBCTl9iaW4yYm4oYnl0ZXMuZGF0YSgp
LCBieXRlcy5zaXplKCksIGJpZ251bSk7CisgICAgcmV0dXJuIEJOX2JpbjJibihieXRlcy5kYXRh
KCksIGJ5dGVzLnNpemUoKSwgcmV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oCmluZGV4
IDlhN2JhYTY3YTEyZC4uODlmNzhiMmJhYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oCkBAIC00Miw5ICs0Miw5IEBAIFZlY3Rvcjx1
aW50OF90PiBjb252ZXJ0VG9CeXRlcyhjb25zdCBCSUdOVU0qKTsKIAogVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRUb0J5dGVzRXhwYW5kKGNvbnN0IEJJR05VTSosIHNpemVfdCBidWZmZXJTaXplKTsK
IAotLy8gSWYgYSBudWxsIHBvaW50ZXIgaXMgZ2l2ZW4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0
aGlzIGZ1bmN0aW9uIGludGVybmFsbHkgYWxsb2NhdGVzIGEgbmV3IEJJR05VTQorLy8gSWYgYSBu
dWxsIHBvaW50ZXIgaXMgZ2l2ZW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgdGhpcyBmdW5jdGlv
biBpbnRlcm5hbGx5IGFsbG9jYXRlcyBhIG5ldyBCSUdOVU0KIC8vIGFuZCByZXR1cm5zIGl0cyBw
b2ludGVyLiBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBnaXZlbiBCSUdOVU0gYW5k
IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgb25lLgotQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIo
QklHTlVNKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcyk7CitCSUdOVU0qIGNvbnZlcnRU
b0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzLCBCSUdOVU0qIHJldCA9IG51
bGxwdHIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459081</attachid>
            <date>2022-05-09 14:26:45 -0700</date>
            <delta_ts>2022-05-10 16:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>16479</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYjA5ZjA5ZGI2NWYuLmE3Yjk3NzBjOTUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIyLTA1LTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaWJyZVNTTCAzLjUueCBtYWRlIGEgbnVtYmVyIG9mIHR5cGVz
IG9wYXF1ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wuIFVuZm9ydHVuYXRlbHkKKyAg
ICAgICAgYSBudW1iZXIgb2YgcGxhY2VzIGluIHRoZSBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24g
d2VyZSBhY2Nlc3NpbmcgdGhlc2Ugc3RydWN0cyBkaXJlY3RseS4KKyAgICAgICAgTW9kaWZ5IHRo
ZSBjb2RlIHRvIHVzZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHRvIGFjY2VzcyBhbmQgbW9kaWZ5
IHRoZSB0eXBlcyBpbiB0aGUgc2FtZQorICAgICAgICBtYW5uZXIgdGhleSB3ZXJlIGJlaW5nIHVz
ZWQuCisKKyAgICAgICAgSW4gV2ViQ29yZTo6Y29udmVydFRvQmlnTnVtYmVyIHRoZSBmaXJzdCBh
cmd1bWVudCB3YXMgYSBCSUdOVU0gdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUKKyAgICAgICAg
b3BlcmF0aW9uIGluLiBJZiBhIG5ldyBCSUdOVU0gd2FzIHRvIGJlIGFsbG9jYXRlZCBieSB0aGUg
b3BlcmF0aW9uIHRoZW4gYSBudWxscHRyIHdhcworICAgICAgICBwYXNzZWQgaW4uIEFmdGVyIG1v
ZGlmaWNhdGlvbiBhbGwgY2FsbHMgd2VyZSB1c2luZyBudWxscHRyIHNvIHRoZSBzaWduYXR1cmUg
d2FzIG1vZGlmaWVkCisgICAgICAgIHRvIGZpdCB0aGUgY29tbW9uIGNhc2UuCisKKyAgICAgICAg
KiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAg
ICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgpOgorICAgICAgICAqIGNy
eXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UlNBTW9kdWx1c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9LZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlS
U0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL09wZW5TU0xV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQmlnTnVtYmVyKToKKyAg
ICAgICAgKiBjcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmg6CisKIDIwMjItMDUtMDkg
IEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUIGluIFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1F
Q0RTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtRUNEU0FPcGVuU1NMLmNwcAppbmRleCBkMmU1Nzc4OWY2MTguLjQ2YWVjMTg2OWUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGht
RUNEU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCkBAIC03Niw4ICs3NiwxMSBAQCBFeGNlcHRpb25P
cjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtRWNkcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgYXV0byBzaWcg
PSBFQ0RTQVNpZ1B0cihFQ0RTQV9TSUdfbmV3KCkpOwotICAgIHNpZy0+ciA9IEJOX2JpbjJibihz
aWduYXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnLT5yKTsKLSAgICBzaWctPnMgPSBC
Tl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzLCBrZXlTaXplSW5CeXRl
cywgc2lnLT5zKTsKKyAgICBhdXRvIHIgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSwga2V5
U2l6ZUluQnl0ZXMsIG51bGxwdHIpOworICAgIGF1dG8gcyA9IEJOX2JpbjJibihzaWduYXR1cmUu
ZGF0YSgpICsga2V5U2l6ZUluQnl0ZXMsIGtleVNpemVJbkJ5dGVzLCBudWxscHRyKTsKKworICAg
IGlmICghRUNEU0FfU0lHX3NldDAoc2lnLmdldCgpLCByLCBzKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAKICAgICBjb25zdCBFVlBfTUQqIG1kID0gZGln
ZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwogICAgIGlmICghbWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NM
LmNwcAppbmRleCBmM2IyZjlkMWRmNTguLjM5ZDZjM2NhMmIxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wuY3BwCkBAIC0xNjks
NyArMTY5LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRKV0tQdWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICBhdXRvIHBvaW50ID0gRUNQ
b2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5
IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0gICAgaWYgKEVDX1BPSU5U
X3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRy
KGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0
VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQorICAgIGlmIChF
Q19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCksIEJJ
R05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIoeCkpLmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRv
QmlnTnVtYmVyKHkpKS5nZXQoKSwgbnVsbHB0cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0
KCkpIDw9IDApCkBAIC0xOTUsMTMgKzE5NSwxMyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0
b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgog
ICAgIGF1dG8gcG9pbnQgPSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAg
Ly8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4g
ICAKLSAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBv
aW50LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQo
KSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxw
dHIpIDw9IDApCisgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdy
b3VwLCBwb2ludC5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcih4KSkuZ2V0KCks
IEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIoeSkpLmdldCgpLCBudWxscHRyKSA8PSAwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXko
a2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRlX2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252
ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgZCkpLmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlf
c2V0X3ByaXZhdGVfa2V5KGtleS5nZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihk
KSkuZ2V0KCkpIDw9IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKEVDX0tF
WV9jaGVja19rZXkoa2V5LmdldCgpKSA8PSAwKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIFJlZlB0cjxD
cnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5
ID0gRXZwUEtleVB0cihFVlBfUEtDUzgyUEtFWShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtl
eSB8fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX0VDKQorICAgIGlmICgh
cGtleSB8fCBFVlBfUEtFWV9iYXNlX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX0VDKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gZWNLZXkgPSBFVlBfUEtFWV9nZXQwX0VD
X0tFWShwa2V5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKaW5kZXggMWQ5NjVjNjg5Y2E4Li42MmJjMThlZjVh
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJT
QU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tl
eVJTQU9wZW5TU0wuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UlNBTW9k
dWx1c0xlbmd0aChSU0EqIHJzYSkKIHsKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIEJOX251bV9ieXRlcyhyc2EtPm4pICogODsKKyAgICByZXR1cm4gUlNBX2Jp
dHMocnNhKSAqIDg7CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3Jl
YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVu
dHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cykKQEAgLTgxLDMxICs4MSwzOSBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgaWYgKCFy
c2EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcnNhLT5uID0gY29udmVydFRvQmln
TnVtYmVyKHJzYS0+biwga2V5RGF0YS5tb2R1bHVzKCkpOwotICAgIHJzYS0+ZSA9IGNvbnZlcnRU
b0JpZ051bWJlcihyc2EtPmUsIGtleURhdGEuZXhwb25lbnQoKSk7Ci0gICAgaWYgKCFyc2EtPm4g
fHwgIXJzYS0+ZSkKKyAgICBhdXRvIG4gPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5tb2R1
bHVzKCkpOworICAgIGF1dG8gZSA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLmV4cG9uZW50
KCkpOworICAgIGlmICghbiB8fCAhZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBC
SUdOVU0qIGQgPSBudWxscHRyOworCiAgICAgaWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6
UHJpdmF0ZSkgewotICAgICAgICByc2EtPmQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBr
ZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsKLSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmln
TnVtYmVyKHJzYS0+cCwga2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAg
ICAgICAgcnNhLT5xID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQ
cmltZUluZm8oKS5wcmltZUZhY3Rvcik7Ci0gICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAg
fHwgIXJzYS0+cSkKKyAgICAgICAgZCA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnByaXZh
dGVFeHBvbmVudCgpKTsKKyAgICAgICAgYXV0byBwID0gY29udmVydFRvQmlnTnVtYmVyKGtleURh
dGEuZmlyc3RQcmltZUluZm8oKS5wcmltZUZhY3Rvcik7CisgICAgICAgIGF1dG8gcSA9IGNvbnZl
cnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAg
ICAgICAgaWYgKCFkIHx8ICFwIHx8ICFxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgaWYgKCFSU0Ffc2V0MF9mYWN0b3JzKHJzYS5nZXQoKSwgcCwgcSkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFu
ZCBpcW1wIG1lbWJlciBvZiB0aGUgUlNBIHN0cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVz
cG9uZGluZyBkYXRhLgogCiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAg
ICBpZiAoIWtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByc2EtPmRtcDEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAx
LCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBh
dXRvIGRtcDEgPSAoIWtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5p
c0VtcHR5KCkpID8gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5m
YWN0b3JDUlRFeHBvbmVudCkgOiBudWxscHRyOwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChx
IC0gMSkKLSAgICAgICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4
cG9uZW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051
bWJlcihyc2EtPmRtcTEsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25l
bnQpOworICAgICAgICBhdXRvIGRtcTEgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFj
dG9yQ1JURXhwb25lbnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNl
Y29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8v
IGlxbXAgLS0gcV4oLTEpIG1vZCBwCi0gICAgICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUlu
Zm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlx
bXAgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVENvZWZmaWNpZW50KTsKKyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRh
LnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252
ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmlj
aWVudCkgOiBudWxscHRyOworCisgICAgICAgIGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2Eu
Z2V0KCksIGRtcDEsIGRtcTEsIGlxbXApKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCisgICAgaWYgKCFSU0Ffc2V0MF9rZXkocnNhLmdldCgpLCBuLCBlLCBkKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZ
X25ldygpKTsKICAgICBpZiAoIXBrZXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4
LDcgKzE3Niw3IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGV4cG9uZW50ID0gQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihu
dWxscHRyLCBwdWJsaWNFeHBvbmVudCkpOworICAgIGF1dG8gZXhwb25lbnQgPSBCSUdOVU1QdHIo
Y29udmVydFRvQmlnTnVtYmVyKHB1YmxpY0V4cG9uZW50KSk7CiAgICAgYXV0byBwcml2YXRlUlNB
ID0gUlNBUHRyKFJTQV9uZXcoKSk7CiAgICAgaWYgKCFleHBvbmVudCB8fCBSU0FfZ2VuZXJhdGVf
a2V5X2V4KHByaXZhdGVSU0EuZ2V0KCksIG1vZHVsdXNMZW5ndGgsIGV4cG9uZW50LmdldCgpLCBu
dWxscHRyKSA8PSAwKSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwpAQCAtMjA1LDcgKzIx
Myw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpCiAKICAgICAvLyBXZSB1c2UgZDJpX1BVQktF
WSgpIHRvIGltcG9ydCBhIHB1YmxpYyBrZXkuCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihk
MmlfUFVCS0VZKG51bGxwdHIsICZwdHIsIGtleURhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwa2V5
IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICgh
cGtleSB8fCBFVlBfUEtFWV9pZChwa2V5LmdldCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0Eo
aWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKSk7CkBAIC0yMjIsNyArMjMwLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4g
Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRy
KEVWUF9QS0NTODJQS0VZKHA4aW5mLmdldCgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZ
X3R5cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBf
UEtFWV9pZChwa2V5LmdldCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwg
aGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwg
Q3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwpAQCAtMjcwLDggKzI3OCwxNSBAQCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkg
Y29uc3QgLT4gS2V5QWxnb3JpdGhtCiB7CiAgICAgUlNBKiByc2EgPSBFVlBfUEtFWV9nZXQwX1JT
QShwbGF0Zm9ybUtleSgpKTsKIAotICAgIGF1dG8gbW9kdWx1c0xlbmd0aCA9IHJzYSA/IEJOX251
bV9ieXRlcyhyc2EtPm4pICogOCA6IDA7Ci0gICAgYXV0byBwdWJsaWNFeHBvbmVudCA9IHJzYSA/
IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkgOiBWZWN0b3I8dWludDhfdD4geyB9OworICAgIGF1dG8g
bW9kdWx1c0xlbmd0aCA9IGdldFJTQU1vZHVsdXNMZW5ndGgocnNhKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcHVibGljRXhwb25lbnQ7CisKKyAgICBpZiAocnNhKSB7CisgICAgICAgIGNvbnN0IEJJ
R05VTSogZTsKKyAgICAgICAgY29uc3QgQklHTlVNKiBxOworICAgICAgICBSU0FfZ2V0MF9mYWN0
b3JzKHJzYSwgJmUsICZxKTsKKyAgICAgICAgcHVibGljRXhwb25lbnQgPSBjb252ZXJ0VG9CeXRl
cyhlKTsKKyAgICB9CiAKICAgICBpZiAobV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2gpIHsKICAg
ICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5QWxnb3JpdGhtIHJlc3VsdDsKQEAgLTI5NSw1NSArMzEw
LDcwIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzPiBDcnlwdG9LZXlS
U0E6OmV4cG9ydERhdGEoKSBjb25zdAogICAgIGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAorICAgIGNvbnN0IEJJR05VTSogbjsKKyAgICBjb25zdCBCSUdOVU0qIGU7CisgICAg
Y29uc3QgQklHTlVNKiBkOworICAgIFJTQV9nZXQwX2tleShyc2EsICZuLCAmZSwgJmQpOworCiAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlB1YmxpYzoKICAg
ICAgICAgLy8gV2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMgYW5kIGV4cG9uZW50IGZvciB0aGUg
cHVibGljIGtleS4KLSAgICAgICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAgICAgICAgaWYg
KCFuIHx8ICFlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBD
cnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoY29udmVydFRvQnl0ZXMocnNhLT5u
KSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSk7CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FD
b21wb25lbnRzOjpjcmVhdGVQdWJsaWMoY29udmVydFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5dGVz
KGUpKTsKICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlByaXZhdGU6IHsKICAgICAgICAgLy8gV2Ug
bmVlZCB0aGUgcHVibGljIG1vZHVsdXMsIGV4cG9uZW50LCBhbmQgcHJpdmF0ZSBleHBvbmVudCwg
YXMgd2VsbCBhcyBwIGFuZCBxIHByaW1lIGluZm9ybWF0aW9uLgotICAgICAgICBpZiAoIXJzYS0+
biB8fCAhcnNhLT5lIHx8ICFyc2EtPmQgfHwgIXJzYS0+cCB8fCAhcnNhLT5xKQorICAgICAgICBj
b25zdCBCSUdOVU0qIHA7CisgICAgICAgIGNvbnN0IEJJR05VTSogcTsKKyAgICAgICAgUlNBX2dl
dDBfZmFjdG9ycyhyc2EsICZwLCAmcSk7CisKKyAgICAgICAgaWYgKCFuIHx8ICFlIHx8ICFkIHx8
ICFwIHx8ICFxKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgQ3J5cHRv
S2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZpcnN0UHJpbWVJbmZvOwotICAgICAgICBmaXJz
dFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+cCk7CisgICAgICAg
IGZpcnN0UHJpbWVJbmZvLnByaW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMocCk7CiAKICAgICAg
ICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsKLSAg
ICAgICAgc2Vjb25kUHJpbWVJbmZvLnByaW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMocnNhLT5x
KTsKKyAgICAgICAgc2Vjb25kUHJpbWVJbmZvLnByaW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMo
cSk7CiAKICAgICAgICAgYXV0byBjb250ZXh0ID0gQk5DdHhQdHIoQk5fQ1RYX25ldygpKTsKKwor
ICAgICAgICBjb25zdCBCSUdOVU0qIGRtcDE7CisgICAgICAgIGNvbnN0IEJJR05VTSogZG1xMTsK
KyAgICAgICAgY29uc3QgQklHTlVNKiBpcW1wOworICAgICAgICBSU0FfZ2V0MF9jcnRfcGFyYW1z
KHJzYSwgJmRtcDEsICZkbXExLCAmaXFtcCk7CisKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAo
cCAtIDEpCi0gICAgICAgIGlmIChyc2EtPmRtcDEpCi0gICAgICAgICAgICBmaXJzdFByaW1lSW5m
by5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZG1wMSk7CisgICAgICAg
IGlmIChkbXAxKQorICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQg
PSBjb252ZXJ0VG9CeXRlcyhkbXAxKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IGRtcDEgPSBCSUdOVU1QdHIoQk5fbmV3KCkpOwotICAgICAgICAgICAgYXV0byBwbTEgPSBCSUdO
VU1QdHIoQk5fZHVwKHJzYS0+cCkpOwotICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5n
ZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1wMS5nZXQoKSwgcnNhLT5kLCBwbTEuZ2V0KCksIGNv
bnRleHQuZ2V0KCkpID09IDEpCi0gICAgICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9y
Q1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXAxLmdldCgpKTsKKyAgICAgICAgICAgIGF1
dG8gZG1wMU5ldyA9IEJJR05VTVB0cihCTl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHBtMSA9
IEJJR05VTVB0cihCTl9kdXAocCkpOworICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5n
ZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1wMU5ldy5nZXQoKSwgZCwgcG0xLmdldCgpLCBjb250
ZXh0LmdldCgpKSA9PSAxKQorICAgICAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNS
VEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMU5ldy5nZXQoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAgICAgaWYgKHJzYS0+ZG1xMSkK
LSAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRU
b0J5dGVzKHJzYS0+ZG1xMSk7CisgICAgICAgIGlmIChkbXExKQorICAgICAgICAgICAgc2Vjb25k
UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1xMSk7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBkbXExID0gQklHTlVNUHRyKEJOX25ldygpKTsK
LSAgICAgICAgICAgIGF1dG8gcW0xID0gQklHTlVNUHRyKEJOX2R1cChyc2EtPnEpKTsKLSAgICAg
ICAgICAgIGlmIChCTl9zdWJfd29yZChxbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcTEu
Z2V0KCksIHJzYS0+ZCwgcW0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQotICAgICAgICAg
ICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVz
KGRtcTEuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBkbXExTmV3ID0gQklHTlVNUHRyKEJOX25l
dygpKTsKKyAgICAgICAgICAgIGF1dG8gcW0xID0gQklHTlVNUHRyKEJOX2R1cChxKSk7CisgICAg
ICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXEx
TmV3LmdldCgpLCBkLCBxbTEuZ2V0KCksIGNvbnRleHQuZ2V0KCkpID09IDEpCisgICAgICAgICAg
ICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMo
ZG1xMU5ldy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBpcW1wIC0tIHFeKC0xKSBt
b2QgcAotICAgICAgICBpZiAocnNhLT5pcW1wKQotICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZv
LmZhY3RvckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0ZXMocnNhLT5pcW1wKTsKKyAgICAg
ICAgaWYgKGlxbXApCisgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZp
Y2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBhdXRvIGlxbXAgPSBCSUdOVU1QdHIoQk5fbW9kX2ludmVyc2UobnVsbHB0ciwgcnNhLT5xLCBy
c2EtPnAsIGNvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgICAgIGlmIChpcW1wKQotICAgICAgICAg
ICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5
dGVzKGlxbXAuZ2V0KCkpOworICAgICAgICAgICAgYXV0byBpcW1wTmV3ID0gQklHTlVNUHRyKEJO
X21vZF9pbnZlcnNlKG51bGxwdHIsIHEsIHAsIGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAg
IGlmIChpcW1wTmV3KQorICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRD
b2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKGlxbXBOZXcuZ2V0KCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRo
QWRkaXRpb25hbERhdGEoCi0gICAgICAgICAgICBjb252ZXJ0VG9CeXRlcyhyc2EtPm4pLCBjb252
ZXJ0VG9CeXRlcyhyc2EtPmUpLCBjb252ZXJ0VG9CeXRlcyhyc2EtPmQpLAorICAgICAgICAgICAg
Y29udmVydFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5dGVzKGUpLCBjb252ZXJ0VG9CeXRlcyhkKSwK
ICAgICAgICAgICAgIFdURk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1l
SW5mbyksIFZlY3RvcjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CiAg
ICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3Bl
bnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L09wZW5TU0xVdGlsaXRpZXMuY3BwCmluZGV4IDUwNDBiYTYxYjYzOS4uMzYyNzcyMGJmZGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlc0V4
cGFuZChjb25zdCBCSUdOVU0qIGJpZ251bSwgc2l6ZV90IG1pbmltdW1CdWZmZXJTCiAgICAgcmV0
dXJuIGJ5dGVzOwogfQogCi1CSUdOVU0qIGNvbnZlcnRUb0JpZ051bWJlcihCSUdOVU0qIGJpZ251
bSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykKK0JJR05VTSogY29udmVydFRvQmlnTnVt
YmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMsIEJJR05VTSogcmV0KQogewotICAgIHJl
dHVybiBCTl9iaW4yYm4oYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCksIGJpZ251bSk7CisgICAg
cmV0dXJuIEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgcmV0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvT3BlblNTTFV0aWxpdGllcy5oCmluZGV4IDlhN2JhYTY3YTEyZC4uODlmNzhiMmJhYTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5o
CkBAIC00Miw5ICs0Miw5IEBAIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlcyhjb25zdCBC
SUdOVU0qKTsKIAogVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRUb0J5dGVzRXhwYW5kKGNvbnN0IEJJ
R05VTSosIHNpemVfdCBidWZmZXJTaXplKTsKIAotLy8gSWYgYSBudWxsIHBvaW50ZXIgaXMgZ2l2
ZW4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIGludGVybmFsbHkgYWxsb2Nh
dGVzIGEgbmV3IEJJR05VTQorLy8gSWYgYSBudWxsIHBvaW50ZXIgaXMgZ2l2ZW4gYXMgdGhlIHNl
Y29uZCBhcmd1bWVudCwgdGhpcyBmdW5jdGlvbiBpbnRlcm5hbGx5IGFsbG9jYXRlcyBhIG5ldyBC
SUdOVU0KIC8vIGFuZCByZXR1cm5zIGl0cyBwb2ludGVyLiBPdGhlcndpc2UgdGhpcyBmdW5jdGlv
biB1c2VzIHRoZSBnaXZlbiBCSUdOVU0gYW5kIGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgb25lLgot
QklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoQklHTlVNKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBieXRlcyk7CitCSUdOVU0qIGNvbnZlcnRUb0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGJ5dGVzLCBCSUdOVU0qIHJldCA9IG51bGxwdHIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAK
</data>
<flag name="commit-queue"
          id="488101"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459139</attachid>
            <date>2022-05-10 16:17:22 -0700</date>
            <delta_ts>2022-05-11 10:32:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>16609</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OTFlZTdkMWIyN2YuLmEzOTJhNjE2MDM2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDIyLTA1LTEwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaWJyZVNTTCAzLjUueCBtYWRlIGEgbnVtYmVyIG9mIHR5cGVz
IG9wYXF1ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wuIFVuZm9ydHVuYXRlbHkKKyAg
ICAgICAgYSBudW1iZXIgb2YgcGxhY2VzIGluIHRoZSBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24g
d2VyZSBhY2Nlc3NpbmcgdGhlc2Ugc3RydWN0cyBkaXJlY3RseS4KKyAgICAgICAgTW9kaWZ5IHRo
ZSBjb2RlIHRvIHVzZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHRvIGFjY2VzcyBhbmQgbW9kaWZ5
IHRoZSB0eXBlcyBpbiB0aGUgc2FtZQorICAgICAgICBtYW5uZXIgdGhleSB3ZXJlIGJlaW5nIHVz
ZWQuCisKKyAgICAgICAgTW9kaWZpZWQgV2ViQ29yZTo6Y29udmVydFRvQmlnTnVtYmVyIHRvIHJl
dHVybiBhIEJJR05VTVB0ciB3aXRoIGEgbmV3bHkgYWxsb2NhdGVkIEJJR05VTS4KKyAgICAgICAg
VGhpcyBjaGFuZ2Ugd2FzIGRvbmUgYmVjYXVzZSBhbGwgY2FsbHMgdG8gdGhlIGZ1bmN0aW9uIHdl
cmUgcmV0dXJuaW5nIGEgbmV3IEJJR05VTSByYXRoZXIKKyAgICAgICAgdGhhbiByZXVzaW5nIG9u
ZSBhZnRlciB0cmFuc2l0aW9uaW5nIHRvIG9wYXF1ZSB0eXBlcy4gQnkgcmV0dXJuaW5nIGEgQklH
TlVNUHRyIGxlYWtzIGFyZQorICAgICAgICBwcmV2ZW50ZWQuIEluIHRoZSBjYXNlIHdoZXJlIE9w
ZW5TU0wgZXhwZWN0cyBvd25lcnNoaXAgdG8gYmUgdHJhbnNmZXJyZWQgcmVsZWFzZSgpIGlzCisg
ICAgICAgIHVzZWQuCisKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1F
Q0RTQU9wZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6
OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09w
ZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHVibGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dEpXS1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1w
b3J0UGtjczgpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UlNBTW9kdWx1c0xlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2kpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAq
IGNyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvQmlnTnVtYmVyKToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRp
bGl0aWVzLmg6CisKIDIwMjItMDUtMTAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSB1bm5lZWRlZCBTdHlsZVByb3BlcnRpZXNCYXNlIGFm
dGVyIEJ1ZyAyNDAyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCmluZGV4IGQyZTU3Nzg5ZjYx
OC4uNDZhZWMxODY5ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAKQEAgLTc2LDggKzc2
LDExIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1FY2RzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBhdXRvIHNpZyA9IEVDRFNBU2lnUHRyKEVDRFNBX1NJR19uZXcoKSk7Ci0gICAgc2ln
LT5yID0gQk5fYmluMmJuKHNpZ25hdHVyZS5kYXRhKCksIGtleVNpemVJbkJ5dGVzLCBzaWctPnIp
OwotICAgIHNpZy0+cyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0
ZXMsIGtleVNpemVJbkJ5dGVzLCBzaWctPnMpOworICAgIGF1dG8gciA9IEJOX2JpbjJibihzaWdu
YXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgbnVsbHB0cik7CisgICAgYXV0byBzID0gQk5f
YmluMmJuKHNpZ25hdHVyZS5kYXRhKCkgKyBrZXlTaXplSW5CeXRlcywga2V5U2l6ZUluQnl0ZXMs
IG51bGxwdHIpOworCisgICAgaWYgKCFFQ0RTQV9TSUdfc2V0MChzaWcuZ2V0KCksIHIsIHMpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIAogICAgIGNvbnN0
IEVWUF9NRCogbWQgPSBkaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7
CiAgICAgaWYgKCFtZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0tleUVDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9LZXlFQ09wZW5TU0wuY3BwCmluZGV4IGYzYjJmOWQxZGY1OC4uYmI1ZGM1ZTYyZjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5T
U0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3Bl
blNTTC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydEpXS1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogICAg
IGF1dG8gcG9pbnQgPSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8g
Q3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAK
LSAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50
LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwg
QklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIp
IDw9IDApCisgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3Vw
LCBwb2ludC5nZXQoKSwgY29udmVydFRvQmlnTnVtYmVyKHgpLmdldCgpLCBjb252ZXJ0VG9CaWdO
dW1iZXIoeSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tleShrZXkuZ2V0KCksIHBvaW50LmdldCgpKSA8
PSAwKQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1JbXBvcnRKV0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBh
dXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1
cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0g
ICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5n
ZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJ
R05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8
PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwg
cG9pbnQuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih4KS5nZXQoKSwgY29udmVydFRvQmlnTnVt
YmVyKHkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0g
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRl
X2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgZCkp
LmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5KGtleS5nZXQoKSwg
Y29udmVydFRvQmlnTnVtYmVyKGQpLmdldCgpKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmIChFQ19LRVlfY2hlY2tfa2V5KGtleS5nZXQoKSkgPD0gMCkKQEAgLTM1Nyw3
ICszNTcsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQX1BLQ1M4MlBLRVkocDhpbmYuZ2V0
KCkpKTsKLSAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBf
UEtFWV9FQykKKyAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfYmFzZV9pZChwa2V5LmdldCgpKSAh
PSBFVlBfUEtFWV9FQykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGVjS2V5
ID0gRVZQX1BLRVlfZ2V0MF9FQ19LRVkocGtleS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCmluZGV4IDFkOTY1
YzY4OWNhOC4uNjdiMDhkMDQxNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0
aWMgc2l6ZV90IGdldFJTQU1vZHVsdXNMZW5ndGgoUlNBKiByc2EpCiB7CiAgICAgaWYgKCFyc2Ep
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBCTl9udW1fYnl0ZXMocnNhLT5uKSAqIDg7
CisgICAgcmV0dXJuIFJTQV9iaXRzKHJzYSkgKiA4OwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBD
cnlwdG9LZXlSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC04MSwzMSArODEsMzkgQEAgUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLAogICAgIGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJz
YS0+biA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPm4sIGtleURhdGEubW9kdWx1cygpKTsKLSAg
ICByc2EtPmUgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5lLCBrZXlEYXRhLmV4cG9uZW50KCkp
OwotICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisgICAgYXV0byBuID0gY29udmVydFRvQmln
TnVtYmVyKGtleURhdGEubW9kdWx1cygpKTsKKyAgICBhdXRvIGUgPSBjb252ZXJ0VG9CaWdOdW1i
ZXIoa2V5RGF0YS5leHBvbmVudCgpKTsKKyAgICBpZiAoIW4gfHwgIWUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgQklHTlVNUHRyIGQgPSBudWxscHRyOworCiAgICAgaWYgKGtleVR5
cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSkgewotICAgICAgICByc2EtPmQgPSBjb252ZXJ0
VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsKLSAgICAgICAg
cnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cCwga2V5RGF0YS5maXJzdFByaW1lSW5m
bygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgcnNhLT5xID0gY29udmVydFRvQmlnTnVtYmVyKHJz
YS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmltZUZhY3Rvcik7Ci0gICAgICAgIGlm
ICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAgICAgICAgZCA9IGNvbnZlcnRUb0Jp
Z051bWJlcihrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpKTsKKyAgICAgICAgYXV0byBwID0gY29u
dmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5wcmltZUZhY3Rvcik7Cisg
ICAgICAgIGF1dG8gcSA9IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgaWYgKCFkIHx8ICFwIHx8ICFxKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9mYWN0b3JzKHJzYS5n
ZXQoKSwgcC5yZWxlYXNlKCksIHEucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgICAgIC8vIFdlIHNldCBkbXAxLCBkbXBxMSwgYW5kIGlxbXAgbWVtYmVyIG9m
IHRoZSBSU0Egc3RydWN0IGlmIHRoZSBrZXlEYXRhIGhhcyBjb3JyZXNwb25kaW5nIGRhdGEuCiAK
ICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAgIGlmICgha2V5RGF0YS5m
aXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJzYS0+ZG1wMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcDEsIGtleURhdGEuZmlyc3RQ
cmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAgICAgIGF1dG8gZG1wMSA9ICgha2V5
RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHkoKSkgPyBjb252
ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50
KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGRtcTEgLS0gZCBtb2QgKHEgLSAxKQotICAgICAgICBp
ZiAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcnNhLT5kbXExID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+ZG1xMSwg
a2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAgICAgIGF1
dG8gZG1xMSA9ICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5p
c0VtcHR5KCkpID8gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCku
ZmFjdG9yQ1JURXhwb25lbnQpIDogbnVsbHB0cjsKICAgICAgICAgLy8gaXFtcCAtLSBxXigtMSkg
bW9kIHAKLSAgICAgICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENv
ZWZmaWNpZW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJzYS0+aXFtcCA9IGNvbnZlcnRUb0Jp
Z051bWJlcihyc2EtPmlxbXAsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JUQ29l
ZmZpY2llbnQpOworICAgICAgICBhdXRvIGlxbXAgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZv
KCkuZmFjdG9yQ1JUQ29lZmZpY2llbnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihr
ZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50KSA6IG51bGxwdHI7
CisKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9jcnRfcGFyYW1zKHJzYS5nZXQoKSwgZG1wMS5yZWxl
YXNlKCksIGRtcTEucmVsZWFzZSgpLCBpcW1wLnJlbGVhc2UoKSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoIVJTQV9zZXQwX2tleShyc2EuZ2V0KCksIG4u
cmVsZWFzZSgpLCBlLnJlbGVhc2UoKSwgZC5yZWxlYXNlKCkpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKwogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQX1BLRVlfbmV3KCkpOwogICAg
IGlmICghcGtleSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjgsNyArMTc2LDcgQEAg
dm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gZXhwb25lbnQgPSBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHB1Ymxp
Y0V4cG9uZW50KSk7CisgICAgYXV0byBleHBvbmVudCA9IGNvbnZlcnRUb0JpZ051bWJlcihwdWJs
aWNFeHBvbmVudCk7CiAgICAgYXV0byBwcml2YXRlUlNBID0gUlNBUHRyKFJTQV9uZXcoKSk7CiAg
ICAgaWYgKCFleHBvbmVudCB8fCBSU0FfZ2VuZXJhdGVfa2V5X2V4KHByaXZhdGVSU0EuZ2V0KCks
IG1vZHVsdXNMZW5ndGgsIGV4cG9uZW50LmdldCgpLCBudWxscHRyKSA8PSAwKSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwpAQCAtMjA1LDcgKzIxMyw3IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpCiAKICAgICAvLyBXZSB1c2UgZDJpX1BVQktFWSgpIHRvIGltcG9ydCBhIHB1YmxpYyBr
ZXkuCiAgICAgYXV0byBwa2V5ID0gRXZwUEtleVB0cihkMmlfUFVCS0VZKG51bGxwdHIsICZwdHIs
IGtleURhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+
dHlwZSkgIT0gRVZQX1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5
LmdldCgpKSAhPSBFVlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9v
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlw
ZTo6UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CkBAIC0yMjIs
NyArMjMwLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZKHA4aW5mLmdl
dCgpKSk7Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlwZSkgIT0gRVZQ
X1BLRVlfUlNBKQorICAgIGlmICghcGtleSB8fCBFVlBfUEtFWV9pZChwa2V5LmdldCgpKSAhPSBF
VlBfUEtFWV9SU0EpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwg
V1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjcwLDggKzI3OCwxNSBA
QCBhdXRvIENyeXB0b0tleVJTQTo6YWxnb3JpdGhtKCkgY29uc3QgLT4gS2V5QWxnb3JpdGhtCiB7
CiAgICAgUlNBKiByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShwbGF0Zm9ybUtleSgpKTsKIAotICAg
IGF1dG8gbW9kdWx1c0xlbmd0aCA9IHJzYSA/IEJOX251bV9ieXRlcyhyc2EtPm4pICogOCA6IDA7
Ci0gICAgYXV0byBwdWJsaWNFeHBvbmVudCA9IHJzYSA/IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkg
OiBWZWN0b3I8dWludDhfdD4geyB9OworICAgIGF1dG8gbW9kdWx1c0xlbmd0aCA9IGdldFJTQU1v
ZHVsdXNMZW5ndGgocnNhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7CisK
KyAgICBpZiAocnNhKSB7CisgICAgICAgIGNvbnN0IEJJR05VTSogZTsKKyAgICAgICAgY29uc3Qg
QklHTlVNKiBxOworICAgICAgICBSU0FfZ2V0MF9mYWN0b3JzKHJzYSwgJmUsICZxKTsKKyAgICAg
ICAgcHVibGljRXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhlKTsKKyAgICB9CiAKICAgICBpZiAo
bV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2gpIHsKICAgICAgICAgQ3J5cHRvUnNhSGFzaGVkS2V5
QWxnb3JpdGhtIHJlc3VsdDsKQEAgLTI5NSw1NSArMzEwLDcwIEBAIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlSU0FDb21wb25lbnRzPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAog
ICAgIGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGNvbnN0IEJJR05V
TSogbjsKKyAgICBjb25zdCBCSUdOVU0qIGU7CisgICAgY29uc3QgQklHTlVNKiBkOworICAgIFJT
QV9nZXQwX2tleShyc2EsICZuLCAmZSwgJmQpOworCiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAg
ICBjYXNlIENyeXB0b0tleVR5cGU6OlB1YmxpYzoKICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcHVi
bGljIG1vZHVsdXMgYW5kIGV4cG9uZW50IGZvciB0aGUgcHVibGljIGtleS4KLSAgICAgICAgaWYg
KCFyc2EtPm4gfHwgIXJzYS0+ZSkKKyAgICAgICAgaWYgKCFuIHx8ICFlKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpj
cmVhdGVQdWJsaWMoY29udmVydFRvQnl0ZXMocnNhLT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5l
KSk7CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMo
Y29udmVydFRvQnl0ZXMobiksIGNvbnZlcnRUb0J5dGVzKGUpKTsKICAgICBjYXNlIENyeXB0b0tl
eVR5cGU6OlByaXZhdGU6IHsKICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcHVibGljIG1vZHVsdXMs
IGV4cG9uZW50LCBhbmQgcHJpdmF0ZSBleHBvbmVudCwgYXMgd2VsbCBhcyBwIGFuZCBxIHByaW1l
IGluZm9ybWF0aW9uLgotICAgICAgICBpZiAoIXJzYS0+biB8fCAhcnNhLT5lIHx8ICFyc2EtPmQg
fHwgIXJzYS0+cCB8fCAhcnNhLT5xKQorICAgICAgICBjb25zdCBCSUdOVU0qIHA7CisgICAgICAg
IGNvbnN0IEJJR05VTSogcTsKKyAgICAgICAgUlNBX2dldDBfZmFjdG9ycyhyc2EsICZwLCAmcSk7
CisKKyAgICAgICAgaWYgKCFuIHx8ICFlIHx8ICFkIHx8ICFwIHx8ICFxKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJ
bmZvIGZpcnN0UHJpbWVJbmZvOwotICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9
IGNvbnZlcnRUb0J5dGVzKHJzYS0+cCk7CisgICAgICAgIGZpcnN0UHJpbWVJbmZvLnByaW1lRmFj
dG9yID0gY29udmVydFRvQnl0ZXMocCk7CiAKICAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50
czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsKLSAgICAgICAgc2Vjb25kUHJpbWVJbmZvLnBy
aW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMocnNhLT5xKTsKKyAgICAgICAgc2Vjb25kUHJpbWVJ
bmZvLnByaW1lRmFjdG9yID0gY29udmVydFRvQnl0ZXMocSk7CiAKICAgICAgICAgYXV0byBjb250
ZXh0ID0gQk5DdHhQdHIoQk5fQ1RYX25ldygpKTsKKworICAgICAgICBjb25zdCBCSUdOVU0qIGRt
cDE7CisgICAgICAgIGNvbnN0IEJJR05VTSogZG1xMTsKKyAgICAgICAgY29uc3QgQklHTlVNKiBp
cW1wOworICAgICAgICBSU0FfZ2V0MF9jcnRfcGFyYW1zKHJzYSwgJmRtcDEsICZkbXExLCAmaXFt
cCk7CisKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAgIGlmIChyc2Et
PmRtcDEpCi0gICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNv
bnZlcnRUb0J5dGVzKHJzYS0+ZG1wMSk7CisgICAgICAgIGlmIChkbXAxKQorICAgICAgICAgICAg
Zmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXAxKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGRtcDEgPSBCSUdOVU1QdHIoQk5fbmV3
KCkpOwotICAgICAgICAgICAgYXV0byBwbTEgPSBCSUdOVU1QdHIoQk5fZHVwKHJzYS0+cCkpOwot
ICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2Qo
ZG1wMS5nZXQoKSwgcnNhLT5kLCBwbTEuZ2V0KCksIGNvbnRleHQuZ2V0KCkpID09IDEpCi0gICAg
ICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9C
eXRlcyhkbXAxLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZG1wMU5ldyA9IEJJR05VTVB0cihC
Tl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHBtMSA9IEJJR05VTVB0cihCTl9kdXAocCkpOwor
ICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHBtMS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2Qo
ZG1wMU5ldy5nZXQoKSwgZCwgcG0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQorICAgICAg
ICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0
ZXMoZG1wMU5ldy5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBkbXExIC0tIGQgbW9k
IChxIC0gMSkKLSAgICAgICAgaWYgKHJzYS0+ZG1xMSkKLSAgICAgICAgICAgIHNlY29uZFByaW1l
SW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+ZG1xMSk7CisgICAg
ICAgIGlmIChkbXExKQorICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVEV4cG9u
ZW50ID0gY29udmVydFRvQnl0ZXMoZG1xMSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
YXV0byBkbXExID0gQklHTlVNUHRyKEJOX25ldygpKTsKLSAgICAgICAgICAgIGF1dG8gcW0xID0g
QklHTlVNUHRyKEJOX2R1cChyc2EtPnEpKTsKLSAgICAgICAgICAgIGlmIChCTl9zdWJfd29yZChx
bTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcTEuZ2V0KCksIHJzYS0+ZCwgcW0xLmdldCgp
LCBjb250ZXh0LmdldCgpKSA9PSAxKQotICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5m
YWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcTEuZ2V0KCkpOworICAgICAgICAg
ICAgYXV0byBkbXExTmV3ID0gQklHTlVNUHRyKEJOX25ldygpKTsKKyAgICAgICAgICAgIGF1dG8g
cW0xID0gQklHTlVNUHRyKEJOX2R1cChxKSk7CisgICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQo
cW0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXExTmV3LmdldCgpLCBkLCBxbTEuZ2V0KCks
IGNvbnRleHQuZ2V0KCkpID09IDEpCisgICAgICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZh
Y3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1xMU5ldy5nZXQoKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBpcW1wIC0tIHFeKC0xKSBtb2QgcAotICAgICAgICBpZiAocnNhLT5p
cW1wKQotICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNpZW50ID0g
Y29udmVydFRvQnl0ZXMocnNhLT5pcW1wKTsKKyAgICAgICAgaWYgKGlxbXApCisgICAgICAgICAg
ICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhp
cW1wKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGlxbXAgPSBCSUdOVU1QdHIo
Qk5fbW9kX2ludmVyc2UobnVsbHB0ciwgcnNhLT5xLCByc2EtPnAsIGNvbnRleHQuZ2V0KCkpKTsK
LSAgICAgICAgICAgIGlmIChpcW1wKQotICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5m
YWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKGlxbXAuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byBpcW1wTmV3ID0gQklHTlVNUHRyKEJOX21vZF9pbnZlcnNlKG51bGxwdHIsIHEs
IHAsIGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChpcW1wTmV3KQorICAgICAgICAg
ICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5
dGVzKGlxbXBOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIENyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEoCi0gICAgICAg
ICAgICBjb252ZXJ0VG9CeXRlcyhyc2EtPm4pLCBjb252ZXJ0VG9CeXRlcyhyc2EtPmUpLCBjb252
ZXJ0VG9CeXRlcyhyc2EtPmQpLAorICAgICAgICAgICAgY29udmVydFRvQnl0ZXMobiksIGNvbnZl
cnRUb0J5dGVzKGUpLCBjb252ZXJ0VG9CeXRlcyhkKSwKICAgICAgICAgICAgIFdURk1vdmUoZmly
c3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFZlY3RvcjxDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCmlu
ZGV4IDUwNDBiYTYxYjYzOS4uZTM5ZTVmZTliNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtMTAwLDkgKzEwMCw5IEBA
IFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0VG9CeXRlc0V4cGFuZChjb25zdCBCSUdOVU0qIGJpZ251
bSwgc2l6ZV90IG1pbmltdW1CdWZmZXJTCiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi1CSUdOVU0q
IGNvbnZlcnRUb0JpZ051bWJlcihCSUdOVU0qIGJpZ251bSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBieXRlcykKK0JJR05VTVB0ciBjb252ZXJ0VG9CaWdOdW1iZXIoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBieXRlcykKIHsKLSAgICByZXR1cm4gQk5fYmluMmJuKGJ5dGVzLmRhdGEoKSwgYnl0ZXMu
c2l6ZSgpLCBiaWdudW0pOworICAgIHJldHVybiBCSUdOVU1QdHIoQk5fYmluMmJuKGJ5dGVzLmRh
dGEoKSwgYnl0ZXMuc2l6ZSgpLCBudWxscHRyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMu
aAppbmRleCA5YTdiYWE2N2ExMmQuLjkzYmU1MTA5MzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk9wZW5TU0xDcnlwdG9VbmlxdWVQdHIuaCIKICNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8b3BlbnNzbC9l
dnAuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KQEAgLTQyLDkgKzQzLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbnZlcnRUb0J5dGVzKGNvbnN0IEJJR05VTSopOwogCiBWZWN0b3I8dWludDhfdD4gY29u
dmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCi0v
LyBJZiBhIG51bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoaXMg
ZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0ZXMgYSBuZXcgQklHTlVNCi0vLyBhbmQgcmV0dXJu
cyBpdHMgcG9pbnRlci4gT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2l2ZW4gQklH
TlVNIGFuZCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IG9uZS4KLUJJR05VTSogY29udmVydFRvQmln
TnVtYmVyKEJJR05VTSosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpOworQklHTlVNUHRy
IGNvbnZlcnRUb0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459172</attachid>
            <date>2022-05-11 10:32:25 -0700</date>
            <delta_ts>2022-05-11 11:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>17179</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OTFlZTdkMWIyN2YuLjliODQ5YmI1NzdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDIyLTA1LTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaWJyZVNTTCAzLjUueCBtYWRlIGEgbnVtYmVyIG9mIHR5cGVz
IG9wYXF1ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wuIFVuZm9ydHVuYXRlbHkKKyAg
ICAgICAgYSBudW1iZXIgb2YgcGxhY2VzIGluIHRoZSBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24g
d2VyZSBhY2Nlc3NpbmcgdGhlc2Ugc3RydWN0cyBkaXJlY3RseS4KKyAgICAgICAgTW9kaWZ5IHRo
ZSBjb2RlIHRvIHVzZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHRvIGFjY2VzcyBhbmQgbW9kaWZ5
IHRoZSB0eXBlcyBpbiB0aGUgc2FtZQorICAgICAgICBtYW5uZXIgdGhleSB3ZXJlIGJlaW5nIHVz
ZWQuCisKKyAgICAgICAgTW9kaWZpZWQgV2ViQ29yZTo6Y29udmVydFRvQmlnTnVtYmVyIHRvIHJl
dHVybiBhIEJJR05VTVB0ciB3aXRoIGEgbmV3bHkgYWxsb2NhdGVkIEJJR05VTS4KKyAgICAgICAg
VGhpcyBjaGFuZ2Ugd2FzIGRvbmUgYmVjYXVzZSBhbGwgY2FsbHMgdG8gdGhlIGZ1bmN0aW9uIHdl
cmUgcmV0dXJuaW5nIGEgbmV3IEJJR05VTSByYXRoZXIKKyAgICAgICAgdGhhbiByZXVzaW5nIG9u
ZSBhZnRlciB0cmFuc2l0aW9uaW5nIHRvIG9wYXF1ZSB0eXBlcy4gQnkgcmV0dXJuaW5nIGEgQklH
TlVNUHRyIGxlYWtzIGFyZQorICAgICAgICBwcmV2ZW50ZWQuIEluIHRoZSBjYXNlIHdoZXJlIE9w
ZW5TU0wgZXhwZWN0cyBvd25lcnNoaXAgdG8gYmUgdHJhbnNmZXJyZWQgcmVsZWFzZSgpIGlzCisg
ICAgICAgIHVzZWQuCisKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1F
Q0RTQU9wZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6
OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09w
ZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHVibGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dEpXS1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1w
b3J0UGtjczgpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UlNBTW9kdWx1c0xlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2kpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAq
IGNyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvQmlnTnVtYmVyKToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRp
bGl0aWVzLmg6CisKIDIwMjItMDUtMTAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSB1bm5lZWRlZCBTdHlsZVByb3BlcnRpZXNCYXNlIGFm
dGVyIEJ1ZyAyNDAyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCmluZGV4IGQyZTU3Nzg5ZjYx
OC4uNDZhZWMxODY5ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAKQEAgLTc2LDggKzc2
LDExIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1FY2RzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBhdXRvIHNpZyA9IEVDRFNBU2lnUHRyKEVDRFNBX1NJR19uZXcoKSk7Ci0gICAgc2ln
LT5yID0gQk5fYmluMmJuKHNpZ25hdHVyZS5kYXRhKCksIGtleVNpemVJbkJ5dGVzLCBzaWctPnIp
OwotICAgIHNpZy0+cyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0
ZXMsIGtleVNpemVJbkJ5dGVzLCBzaWctPnMpOworICAgIGF1dG8gciA9IEJOX2JpbjJibihzaWdu
YXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgbnVsbHB0cik7CisgICAgYXV0byBzID0gQk5f
YmluMmJuKHNpZ25hdHVyZS5kYXRhKCkgKyBrZXlTaXplSW5CeXRlcywga2V5U2l6ZUluQnl0ZXMs
IG51bGxwdHIpOworCisgICAgaWYgKCFFQ0RTQV9TSUdfc2V0MChzaWcuZ2V0KCksIHIsIHMpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIAogICAgIGNvbnN0
IEVWUF9NRCogbWQgPSBkaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7
CiAgICAgaWYgKCFtZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0tleUVDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9LZXlFQ09wZW5TU0wuY3BwCmluZGV4IGYzYjJmOWQxZGY1OC4uYmI1ZGM1ZTYyZjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5T
U0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3Bl
blNTTC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydEpXS1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogICAg
IGF1dG8gcG9pbnQgPSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8g
Q3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAK
LSAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50
LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwg
QklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIp
IDw9IDApCisgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3Vw
LCBwb2ludC5nZXQoKSwgY29udmVydFRvQmlnTnVtYmVyKHgpLmdldCgpLCBjb252ZXJ0VG9CaWdO
dW1iZXIoeSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tleShrZXkuZ2V0KCksIHBvaW50LmdldCgpKSA8
PSAwKQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1JbXBvcnRKV0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBh
dXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1
cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0g
ICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5n
ZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJ
R05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8
PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwg
cG9pbnQuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih4KS5nZXQoKSwgY29udmVydFRvQmlnTnVt
YmVyKHkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0g
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRl
X2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgZCkp
LmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5KGtleS5nZXQoKSwg
Y29udmVydFRvQmlnTnVtYmVyKGQpLmdldCgpKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmIChFQ19LRVlfY2hlY2tfa2V5KGtleS5nZXQoKSkgPD0gMCkKQEAgLTM1Nyw3
ICszNTcsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQX1BLQ1M4MlBLRVkocDhpbmYuZ2V0
KCkpKTsKLSAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBf
UEtFWV9FQykKKyAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfYmFzZV9pZChwa2V5LmdldCgpKSAh
PSBFVlBfUEtFWV9FQykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGVjS2V5
ID0gRVZQX1BLRVlfZ2V0MF9FQ19LRVkocGtleS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCmluZGV4IDFkOTY1
YzY4OWNhOC4uZmM4MjU4ZTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0
aWMgc2l6ZV90IGdldFJTQU1vZHVsdXNMZW5ndGgoUlNBKiByc2EpCiB7CiAgICAgaWYgKCFyc2Ep
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBCTl9udW1fYnl0ZXMocnNhLT5uKSAqIDg7
CisgICAgcmV0dXJuIFJTQV9iaXRzKHJzYSkgKiA4OwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBD
cnlwdG9LZXlSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC04MSwyOSArODEsNTkgQEAgUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLAogICAgIGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJz
YS0+biA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPm4sIGtleURhdGEubW9kdWx1cygpKTsKLSAg
ICByc2EtPmUgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5lLCBrZXlEYXRhLmV4cG9uZW50KCkp
OwotICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisgICAgYXV0byBuID0gY29udmVydFRvQmln
TnVtYmVyKGtleURhdGEubW9kdWx1cygpKTsKKyAgICBhdXRvIGUgPSBjb252ZXJ0VG9CaWdOdW1i
ZXIoa2V5RGF0YS5leHBvbmVudCgpKTsKKyAgICBpZiAoIW4gfHwgIWUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgLy8gQ2FsbGluZyB3aXRoIGQgbnVsbCBpcyBmaW5lIGFzIGxvbmcg
YXMgbiBhbmQgZSBhcmUgbm90IG51bGwKKyAgICBpZiAoIVJTQV9zZXQwX2tleShyc2EuZ2V0KCks
IG4uZ2V0KCksIGUuZ2V0KCksIG51bGxwdHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBPcGVuU1NMCisgICAgbi5yZWxlYXNlKCk7
CisgICAgZS5yZWxlYXNlKCk7CisKICAgICBpZiAoa2V5VHlwZSA9PSBDcnlwdG9LZXlUeXBlOjpQ
cml2YXRlKSB7Ci0gICAgICAgIHJzYS0+ZCA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmQsIGtl
eURhdGEucHJpdmF0ZUV4cG9uZW50KCkpOwotICAgICAgICByc2EtPnAgPSBjb252ZXJ0VG9CaWdO
dW1iZXIocnNhLT5wLCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOwotICAg
ICAgICByc2EtPnEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5xLCBrZXlEYXRhLnNlY29uZFBy
aW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgaWYgKCFyc2EtPmQgfHwgIXJzYS0+cCB8
fCAhcnNhLT5xKQorICAgICAgICBhdXRvIGQgPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5w
cml2YXRlRXhwb25lbnQoKSk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIC8vIENhbGxpbmcgd2l0aCBuIGFuZCBlIG51bGwgaXMgZmluZSBh
cyBsb25nIGFzIHRoZXkgd2VyZSBzZXQgcHJpb3IKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9rZXko
cnNhLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBkLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIC8vIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBPcGVuU1NM
CisgICAgICAgIGQucmVsZWFzZSgpOworCisgICAgICAgIGF1dG8gcCA9IGNvbnZlcnRUb0JpZ051
bWJlcihrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOworICAgICAgICBhdXRv
IHEgPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmltZUZh
Y3Rvcik7CisgICAgICAgIGlmICghcCB8fCAhcSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIGlmICghUlNBX3NldDBfZmFjdG9ycyhyc2EuZ2V0KCksIHAuZ2V0KCksIHEu
Z2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICAgICAgLy8gT3duZXJz
aGlwIHRyYW5zZmVycmVkIHRvIE9wZW5TU0wKKyAgICAgICAgcC5yZWxlYXNlKCk7CisgICAgICAg
IHEucmVsZWFzZSgpOworCiAgICAgICAgIC8vIFdlIHNldCBkbXAxLCBkbXBxMSwgYW5kIGlxbXAg
bWVtYmVyIG9mIHRoZSBSU0Egc3RydWN0IGlmIHRoZSBrZXlEYXRhIGhhcyBjb3JyZXNwb25kaW5n
IGRhdGEuCiAKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAgIGlmICgh
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJzYS0+ZG1wMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcDEsIGtleURh
dGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAgICAgIGF1dG8gZG1w
MSA9ICgha2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHko
KSkgPyBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNS
VEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGRtcTEgLS0gZCBtb2QgKHEgLSAxKQot
ICAgICAgICBpZiAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcnNhLT5kbXExID0gY29udmVydFRvQmlnTnVtYmVyKHJz
YS0+ZG1xMSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7Cisg
ICAgICAgIGF1dG8gZG1xMSA9ICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRF
eHBvbmVudC5pc0VtcHR5KCkpID8gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuc2Vjb25kUHJp
bWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpIDogbnVsbHB0cjsKICAgICAgICAgLy8gaXFtcCAt
LSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZh
Y3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJzYS0+aXFtcCA9IGNv
bnZlcnRUb0JpZ051bWJlcihyc2EtPmlxbXAsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFj
dG9yQ1JUQ29lZmZpY2llbnQpOworICAgICAgICBhdXRvIGlxbXAgPSAoIWtleURhdGEuc2Vjb25k
UHJpbWVJbmZvKCkuZmFjdG9yQ1JUQ29lZmZpY2llbnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0Jp
Z051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50KSA6
IG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9jcnRfcGFyYW1zKHJzYS5nZXQoKSwg
ZG1wMS5nZXQoKSwgZG1xMS5nZXQoKSwgaXFtcC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAor
ICAgICAgICBkbXAxLnJlbGVhc2UoKTsKKyAgICAgICAgZG1xMS5yZWxlYXNlKCk7CisgICAgICAg
IGlxbXAucmVsZWFzZSgpOwogICAgIH0KIAogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQ
X1BLRVlfbmV3KCkpOwpAQCAtMTY4LDcgKzE5OCw3IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5l
cmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29y
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGV4cG9uZW50ID0gQklHTlVNUHRy
KGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCBwdWJsaWNFeHBvbmVudCkpOworICAgIGF1dG8g
ZXhwb25lbnQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocHVibGljRXhwb25lbnQpOwogICAgIGF1dG8g
cHJpdmF0ZVJTQSA9IFJTQVB0cihSU0FfbmV3KCkpOwogICAgIGlmICghZXhwb25lbnQgfHwgUlNB
X2dlbmVyYXRlX2tleV9leChwcml2YXRlUlNBLmdldCgpLCBtb2R1bHVzTGVuZ3RoLCBleHBvbmVu
dC5nZXQoKSwgbnVsbHB0cikgPD0gMCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKQEAg
LTIwNSw3ICsyMzUsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9y
dFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogCiAgICAgLy8gV2UgdXNl
IGQyaV9QVUJLRVkoKSB0byBpbXBvcnQgYSBwdWJsaWMga2V5LgogICAgIGF1dG8gcGtleSA9IEV2
cFBLZXlQdHIoZDJpX1BVQktFWShudWxscHRyLCAmcHRyLCBrZXlEYXRhLnNpemUoKSkpOwotICAg
IGlmICghcGtleSB8fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX1JTQSkK
KyAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfaWQocGtleS5nZXQoKSkgIT0gRVZQX1BLRVlfUlNB
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5
cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5
KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjIyLDcgKzI1Miw3IEBAIFJlZlB0cjxDcnlw
dG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBpZGVudGlmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5ID0g
RXZwUEtleVB0cihFVlBfUEtDUzgyUEtFWShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtleSB8
fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX1JTQSkKKyAgICBpZiAoIXBr
ZXkgfHwgRVZQX1BLRVlfaWQocGtleS5nZXQoKSkgIT0gRVZQX1BLRVlfUlNBKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlk
ZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIFdURk1vdmUocGtleSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpKTsKQEAgLTI3MCw4ICszMDAsMTUgQEAgYXV0byBDcnlwdG9LZXlSU0E6OmFs
Z29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29yaXRobQogewogICAgIFJTQSogcnNhID0gRVZQX1BL
RVlfZ2V0MF9SU0EocGxhdGZvcm1LZXkoKSk7CiAKLSAgICBhdXRvIG1vZHVsdXNMZW5ndGggPSBy
c2EgPyBCTl9udW1fYnl0ZXMocnNhLT5uKSAqIDggOiAwOwotICAgIGF1dG8gcHVibGljRXhwb25l
bnQgPSByc2EgPyBjb252ZXJ0VG9CeXRlcyhyc2EtPmUpIDogVmVjdG9yPHVpbnQ4X3Q+IHsgfTsK
KyAgICBhdXRvIG1vZHVsdXNMZW5ndGggPSBnZXRSU0FNb2R1bHVzTGVuZ3RoKHJzYSk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50OworCisgICAgaWYgKHJzYSkgeworICAgICAg
ICBjb25zdCBCSUdOVU0qIGU7CisgICAgICAgIGNvbnN0IEJJR05VTSogcTsKKyAgICAgICAgUlNB
X2dldDBfZmFjdG9ycyhyc2EsICZlLCAmcSk7CisgICAgICAgIHB1YmxpY0V4cG9uZW50ID0gY29u
dmVydFRvQnl0ZXMoZSk7CisgICAgfQogCiAgICAgaWYgKG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNI
YXNoKSB7CiAgICAgICAgIENyeXB0b1JzYUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CkBAIC0y
OTUsNTUgKzMzMiw3MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4g
Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKICAgICBpZiAoIXJzYSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKKyAgICBjb25zdCBCSUdOVU0qIG47CisgICAgY29uc3QgQklHTlVN
KiBlOworICAgIGNvbnN0IEJJR05VTSogZDsKKyAgICBSU0FfZ2V0MF9rZXkocnNhLCAmbiwgJmUs
ICZkKTsKKwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQ
dWJsaWM6CiAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzIGFuZCBleHBvbmVu
dCBmb3IgdGhlIHB1YmxpYyBrZXkuCi0gICAgICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisg
ICAgICAgIGlmICghbiB8fCAhZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5
dGVzKHJzYS0+biksIGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkpOworICAgICAgICByZXR1cm4gQ3J5
cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5dGVzKG4pLCBjb252
ZXJ0VG9CeXRlcyhlKSk7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOiB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzLCBleHBvbmVudCwgYW5kIHByaXZhdGUg
ZXhwb25lbnQsIGFzIHdlbGwgYXMgcCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KLSAgICAgICAg
aWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSB8fCAhcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkK
KyAgICAgICAgY29uc3QgQklHTlVNKiBwOworICAgICAgICBjb25zdCBCSUdOVU0qIHE7CisgICAg
ICAgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmcCwgJnEpOworCisgICAgICAgIGlmICghbiB8fCAh
ZSB8fCAhZCB8fCAhcCB8fCAhcSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsKLSAg
ICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPnAp
OworICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHAp
OwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmlt
ZUluZm87Ci0gICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5
dGVzKHJzYS0+cSk7CisgICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZl
cnRUb0J5dGVzKHEpOwogCiAgICAgICAgIGF1dG8gY29udGV4dCA9IEJOQ3R4UHRyKEJOX0NUWF9u
ZXcoKSk7CisKKyAgICAgICAgY29uc3QgQklHTlVNKiBkbXAxOworICAgICAgICBjb25zdCBCSUdO
VU0qIGRtcTE7CisgICAgICAgIGNvbnN0IEJJR05VTSogaXFtcDsKKyAgICAgICAgUlNBX2dldDBf
Y3J0X3BhcmFtcyhyc2EsICZkbXAxLCAmZG1xMSwgJmlxbXApOworCiAgICAgICAgIC8vIGRtcDEg
LS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAocnNhLT5kbXAxKQotICAgICAgICAgICAgZmly
c3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcDEp
OworICAgICAgICBpZiAoZG1wMSkKKyAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNS
VEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMSk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgYXV0byBkbXAxID0gQklHTlVNUHRyKEJOX25ldygpKTsKLSAgICAgICAgICAgIGF1dG8g
cG0xID0gQklHTlVNUHRyKEJOX2R1cChyc2EtPnApKTsKLSAgICAgICAgICAgIGlmIChCTl9zdWJf
d29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcDEuZ2V0KCksIHJzYS0+ZCwgcG0x
LmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQotICAgICAgICAgICAgICAgIGZpcnN0UHJpbWVJ
bmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMS5nZXQoKSk7CisgICAg
ICAgICAgICBhdXRvIGRtcDFOZXcgPSBCSUdOVU1QdHIoQk5fbmV3KCkpOworICAgICAgICAgICAg
YXV0byBwbTEgPSBCSUdOVU1QdHIoQk5fZHVwKHApKTsKKyAgICAgICAgICAgIGlmIChCTl9zdWJf
d29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcDFOZXcuZ2V0KCksIGQsIHBtMS5n
ZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKKyAgICAgICAgICAgICAgICBmaXJzdFByaW1lSW5m
by5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcDFOZXcuZ2V0KCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gZG1xMSAtLSBkIG1vZCAocSAtIDEpCi0gICAgICAgIGlmIChy
c2EtPmRtcTEpCi0gICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQg
PSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcTEpOworICAgICAgICBpZiAoZG1xMSkKKyAgICAgICAg
ICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRt
cTEpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZG1xMSA9IEJJR05VTVB0cihC
Tl9uZXcoKSk7Ci0gICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5x
KSk7Ci0gICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0xLmdldCgpLCAxKSA9PSAxICYmIEJO
X21vZChkbXExLmdldCgpLCByc2EtPmQsIHFtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkK
LSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252
ZXJ0VG9CeXRlcyhkbXExLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZG1xMU5ldyA9IEJJR05V
TVB0cihCTl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAo
cSkpOworICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHFtMS5nZXQoKSwgMSkgPT0gMSAmJiBC
Tl9tb2QoZG1xMU5ldy5nZXQoKSwgZCwgcW0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQor
ICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZl
cnRUb0J5dGVzKGRtcTFOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gaXFtcCAt
LSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKHJzYS0+aXFtcCkKLSAgICAgICAgICAgIHNlY29u
ZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+aXFt
cCk7CisgICAgICAgIGlmIChpcW1wKQorICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3Rv
ckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0ZXMoaXFtcCk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYXV0byBpcW1wID0gQklHTlVNUHRyKEJOX21vZF9pbnZlcnNlKG51bGxwdHIs
IHJzYS0+cSwgcnNhLT5wLCBjb250ZXh0LmdldCgpKSk7Ci0gICAgICAgICAgICBpZiAoaXFtcCkK
LSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBj
b252ZXJ0VG9CeXRlcyhpcW1wLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gaXFtcE5ldyA9IEJJ
R05VTVB0cihCTl9tb2RfaW52ZXJzZShudWxscHRyLCBxLCBwLCBjb250ZXh0LmdldCgpKSk7Cisg
ICAgICAgICAgICBpZiAoaXFtcE5ldykKKyAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8u
ZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1wTmV3LmdldCgpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQ
cml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKAotICAgICAgICAgICAgY29udmVydFRvQnl0ZXMocnNh
LT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSwgY29udmVydFRvQnl0ZXMocnNhLT5kKSwKKyAg
ICAgICAgICAgIGNvbnZlcnRUb0J5dGVzKG4pLCBjb252ZXJ0VG9CeXRlcyhlKSwgY29udmVydFRv
Qnl0ZXMoZCksCiAgICAgICAgICAgICBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShz
ZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
PiB7IH0pOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRleCA1MDQwYmE2MWI2MzkuLmUzOWU1
ZmU5YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVy
dFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiBiaWdudW0sIHNpemVfdCBtaW5pbXVtQnVmZmVy
UwogICAgIHJldHVybiBieXRlczsKIH0KIAotQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoQklH
TlVNKiBiaWdudW0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCitCSUdOVU1QdHIgY29u
dmVydFRvQmlnTnVtYmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7Ci0gICAgcmV0
dXJuIEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgYmlnbnVtKTsKKyAgICBy
ZXR1cm4gQklHTlVNUHRyKEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgbnVs
bHB0cikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKaW5kZXggOWE3YmFhNjdhMTJkLi43
YmI0ZWE2N2M4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09w
ZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVu
U1NMVXRpbGl0aWVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk9wZW5TU0xDcnlwdG9V
bmlxdWVQdHIuaCIKICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgogI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDkgKzQzLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbnZlcnRUb0J5dGVzKGNvbnN0IEJJR05VTSopOwogCiBWZWN0b3I8dWludDhfdD4gY29u
dmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCi0v
LyBJZiBhIG51bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoaXMg
ZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0ZXMgYSBuZXcgQklHTlVNCi0vLyBhbmQgcmV0dXJu
cyBpdHMgcG9pbnRlci4gT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2l2ZW4gQklH
TlVNIGFuZCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IG9uZS4KLUJJR05VTSogY29udmVydFRvQmln
TnVtYmVyKEJJR05VTSosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpOworQklHTlVNUHRy
IGNvbnZlcnRUb0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459175</attachid>
            <date>2022-05-11 11:34:33 -0700</date>
            <delta_ts>2022-05-12 16:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>17179</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OTFlZTdkMWIyN2YuLjliODQ5YmI1NzdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDIyLTA1LTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaWJyZVNTTCAzLjUueCBtYWRlIGEgbnVtYmVyIG9mIHR5cGVz
IG9wYXF1ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wuIFVuZm9ydHVuYXRlbHkKKyAg
ICAgICAgYSBudW1iZXIgb2YgcGxhY2VzIGluIHRoZSBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24g
d2VyZSBhY2Nlc3NpbmcgdGhlc2Ugc3RydWN0cyBkaXJlY3RseS4KKyAgICAgICAgTW9kaWZ5IHRo
ZSBjb2RlIHRvIHVzZSB0aGUgcHJvdmlkZWQgZnVuY3Rpb25zIHRvIGFjY2VzcyBhbmQgbW9kaWZ5
IHRoZSB0eXBlcyBpbiB0aGUgc2FtZQorICAgICAgICBtYW5uZXIgdGhleSB3ZXJlIGJlaW5nIHVz
ZWQuCisKKyAgICAgICAgTW9kaWZpZWQgV2ViQ29yZTo6Y29udmVydFRvQmlnTnVtYmVyIHRvIHJl
dHVybiBhIEJJR05VTVB0ciB3aXRoIGEgbmV3bHkgYWxsb2NhdGVkIEJJR05VTS4KKyAgICAgICAg
VGhpcyBjaGFuZ2Ugd2FzIGRvbmUgYmVjYXVzZSBhbGwgY2FsbHMgdG8gdGhlIGZ1bmN0aW9uIHdl
cmUgcmV0dXJuaW5nIGEgbmV3IEJJR05VTSByYXRoZXIKKyAgICAgICAgdGhhbiByZXVzaW5nIG9u
ZSBhZnRlciB0cmFuc2l0aW9uaW5nIHRvIG9wYXF1ZSB0eXBlcy4gQnkgcmV0dXJuaW5nIGEgQklH
TlVNUHRyIGxlYWtzIGFyZQorICAgICAgICBwcmV2ZW50ZWQuIEluIHRoZSBjYXNlIHdoZXJlIE9w
ZW5TU0wgZXhwZWN0cyBvd25lcnNoaXAgdG8gYmUgdHJhbnNmZXJyZWQgcmVsZWFzZSgpIGlzCisg
ICAgICAgIHVzZWQuCisKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1F
Q0RTQU9wZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6
OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09w
ZW5TU0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHVibGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dEpXS1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1w
b3J0UGtjczgpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UlNBTW9kdWx1c0xlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0E6OmdlbmVyYXRlUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2kpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOCk6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmFsZ29yaXRobSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAq
IGNyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydFRvQmlnTnVtYmVyKToKKyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRp
bGl0aWVzLmg6CisKIDIwMjItMDUtMTAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSB1bm5lZWRlZCBTdHlsZVByb3BlcnRpZXNCYXNlIGFm
dGVyIEJ1ZyAyNDAyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCmluZGV4IGQyZTU3Nzg5ZjYx
OC4uNDZhZWMxODY5ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVDRFNBT3BlblNTTC5jcHAKQEAgLTc2LDggKzc2
LDExIEBAIEV4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1FY2RzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBhdXRvIHNpZyA9IEVDRFNBU2lnUHRyKEVDRFNBX1NJR19uZXcoKSk7Ci0gICAgc2ln
LT5yID0gQk5fYmluMmJuKHNpZ25hdHVyZS5kYXRhKCksIGtleVNpemVJbkJ5dGVzLCBzaWctPnIp
OwotICAgIHNpZy0+cyA9IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0
ZXMsIGtleVNpemVJbkJ5dGVzLCBzaWctPnMpOworICAgIGF1dG8gciA9IEJOX2JpbjJibihzaWdu
YXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgbnVsbHB0cik7CisgICAgYXV0byBzID0gQk5f
YmluMmJuKHNpZ25hdHVyZS5kYXRhKCkgKyBrZXlTaXplSW5CeXRlcywga2V5U2l6ZUluQnl0ZXMs
IG51bGxwdHIpOworCisgICAgaWYgKCFFQ0RTQV9TSUdfc2V0MChzaWcuZ2V0KCksIHIsIHMpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIAogICAgIGNvbnN0
IEVWUF9NRCogbWQgPSBkaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7
CiAgICAgaWYgKCFtZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0tleUVDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9LZXlFQ09wZW5TU0wuY3BwCmluZGV4IGYzYjJmOWQxZGY1OC4uYmI1ZGM1ZTYyZjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5T
U0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3Bl
blNTTC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydEpXS1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogICAg
IGF1dG8gcG9pbnQgPSBFQ1BvaW50UHRyKEVDX1BPSU5UX25ldyhncm91cCkpOwogCiAgICAgLy8g
Q3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBlbGxpcHRpYyBjdXJ2ZXMgb3ZlciBHRihwKS4gICAK
LSAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50
LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHgpKS5nZXQoKSwg
QklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB5KSkuZ2V0KCksIG51bGxwdHIp
IDw9IDApCisgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3Vw
LCBwb2ludC5nZXQoKSwgY29udmVydFRvQmlnTnVtYmVyKHgpLmdldCgpLCBjb252ZXJ0VG9CaWdO
dW1iZXIoeSkuZ2V0KCksIG51bGxwdHIpIDw9IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tleShrZXkuZ2V0KCksIHBvaW50LmdldCgpKSA8
PSAwKQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1JbXBvcnRKV0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBh
dXRvIHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1
cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0g
ICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5n
ZXQoKSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJ
R05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8
PSAwKQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwg
cG9pbnQuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih4KS5nZXQoKSwgY29udmVydFRvQmlnTnVt
YmVyKHkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0g
MCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRl
X2tleShrZXkuZ2V0KCksIEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgZCkp
LmdldCgpKSA8PSAwKQorICAgIGlmIChFQ19LRVlfc2V0X3ByaXZhdGVfa2V5KGtleS5nZXQoKSwg
Y29udmVydFRvQmlnTnVtYmVyKGQpLmdldCgpKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmIChFQ19LRVlfY2hlY2tfa2V5KGtleS5nZXQoKSkgPD0gMCkKQEAgLTM1Nyw3
ICszNTcsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQX1BLQ1M4MlBLRVkocDhpbmYuZ2V0
KCkpKTsKLSAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBf
UEtFWV9FQykKKyAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfYmFzZV9pZChwa2V5LmdldCgpKSAh
PSBFVlBfUEtFWV9FQykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGVjS2V5
ID0gRVZQX1BLRVlfZ2V0MF9FQ19LRVkocGtleS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCmluZGV4IDFkOTY1
YzY4OWNhOC4uY2Q5ZGRmNDU5NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0
aWMgc2l6ZV90IGdldFJTQU1vZHVsdXNMZW5ndGgoUlNBKiByc2EpCiB7CiAgICAgaWYgKCFyc2Ep
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBCTl9udW1fYnl0ZXMocnNhLT5uKSAqIDg7
CisgICAgcmV0dXJuIFJTQV9zaXplKHJzYSkgKiA4OwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBD
cnlwdG9LZXlSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC04MSwyOSArODEsNTkgQEAgUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLAogICAgIGlmICghcnNhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJz
YS0+biA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPm4sIGtleURhdGEubW9kdWx1cygpKTsKLSAg
ICByc2EtPmUgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5lLCBrZXlEYXRhLmV4cG9uZW50KCkp
OwotICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisgICAgYXV0byBuID0gY29udmVydFRvQmln
TnVtYmVyKGtleURhdGEubW9kdWx1cygpKTsKKyAgICBhdXRvIGUgPSBjb252ZXJ0VG9CaWdOdW1i
ZXIoa2V5RGF0YS5leHBvbmVudCgpKTsKKyAgICBpZiAoIW4gfHwgIWUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgLy8gQ2FsbGluZyB3aXRoIGQgbnVsbCBpcyBmaW5lIGFzIGxvbmcg
YXMgbiBhbmQgZSBhcmUgbm90IG51bGwKKyAgICBpZiAoIVJTQV9zZXQwX2tleShyc2EuZ2V0KCks
IG4uZ2V0KCksIGUuZ2V0KCksIG51bGxwdHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBPcGVuU1NMCisgICAgbi5yZWxlYXNlKCk7
CisgICAgZS5yZWxlYXNlKCk7CisKICAgICBpZiAoa2V5VHlwZSA9PSBDcnlwdG9LZXlUeXBlOjpQ
cml2YXRlKSB7Ci0gICAgICAgIHJzYS0+ZCA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmQsIGtl
eURhdGEucHJpdmF0ZUV4cG9uZW50KCkpOwotICAgICAgICByc2EtPnAgPSBjb252ZXJ0VG9CaWdO
dW1iZXIocnNhLT5wLCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOwotICAg
ICAgICByc2EtPnEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5xLCBrZXlEYXRhLnNlY29uZFBy
aW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAgaWYgKCFyc2EtPmQgfHwgIXJzYS0+cCB8
fCAhcnNhLT5xKQorICAgICAgICBhdXRvIGQgPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5w
cml2YXRlRXhwb25lbnQoKSk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIC8vIENhbGxpbmcgd2l0aCBuIGFuZCBlIG51bGwgaXMgZmluZSBh
cyBsb25nIGFzIHRoZXkgd2VyZSBzZXQgcHJpb3IKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9rZXko
cnNhLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBkLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIC8vIE93bmVyc2hpcCB0cmFuc2ZlcnJlZCB0byBPcGVuU1NM
CisgICAgICAgIGQucmVsZWFzZSgpOworCisgICAgICAgIGF1dG8gcCA9IGNvbnZlcnRUb0JpZ051
bWJlcihrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOworICAgICAgICBhdXRv
IHEgPSBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5wcmltZUZh
Y3Rvcik7CisgICAgICAgIGlmICghcCB8fCAhcSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIGlmICghUlNBX3NldDBfZmFjdG9ycyhyc2EuZ2V0KCksIHAuZ2V0KCksIHEu
Z2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICAgICAgLy8gT3duZXJz
aGlwIHRyYW5zZmVycmVkIHRvIE9wZW5TU0wKKyAgICAgICAgcC5yZWxlYXNlKCk7CisgICAgICAg
IHEucmVsZWFzZSgpOworCiAgICAgICAgIC8vIFdlIHNldCBkbXAxLCBkbXBxMSwgYW5kIGlxbXAg
bWVtYmVyIG9mIHRoZSBSU0Egc3RydWN0IGlmIHRoZSBrZXlEYXRhIGhhcyBjb3JyZXNwb25kaW5n
IGRhdGEuCiAKICAgICAgICAgLy8gZG1wMSAtLSBkIG1vZCAocCAtIDEpCi0gICAgICAgIGlmICgh
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJzYS0+ZG1wMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRtcDEsIGtleURh
dGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAgICAgIGF1dG8gZG1w
MSA9ICgha2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1wdHko
KSkgPyBjb252ZXJ0VG9CaWdOdW1iZXIoa2V5RGF0YS5maXJzdFByaW1lSW5mbygpLmZhY3RvckNS
VEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGRtcTEgLS0gZCBtb2QgKHEgLSAxKQot
ICAgICAgICBpZiAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQu
aXNFbXB0eSgpKQotICAgICAgICAgICAgcnNhLT5kbXExID0gY29udmVydFRvQmlnTnVtYmVyKHJz
YS0+ZG1xMSwga2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7Cisg
ICAgICAgIGF1dG8gZG1xMSA9ICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRF
eHBvbmVudC5pc0VtcHR5KCkpID8gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuc2Vjb25kUHJp
bWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpIDogbnVsbHB0cjsKICAgICAgICAgLy8gaXFtcCAt
LSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZh
Y3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJzYS0+aXFtcCA9IGNv
bnZlcnRUb0JpZ051bWJlcihyc2EtPmlxbXAsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFj
dG9yQ1JUQ29lZmZpY2llbnQpOworICAgICAgICBhdXRvIGlxbXAgPSAoIWtleURhdGEuc2Vjb25k
UHJpbWVJbmZvKCkuZmFjdG9yQ1JUQ29lZmZpY2llbnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0Jp
Z051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50KSA6
IG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFSU0Ffc2V0MF9jcnRfcGFyYW1zKHJzYS5nZXQoKSwg
ZG1wMS5nZXQoKSwgZG1xMS5nZXQoKSwgaXFtcC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAor
ICAgICAgICBkbXAxLnJlbGVhc2UoKTsKKyAgICAgICAgZG1xMS5yZWxlYXNlKCk7CisgICAgICAg
IGlxbXAucmVsZWFzZSgpOwogICAgIH0KIAogICAgIGF1dG8gcGtleSA9IEV2cFBLZXlQdHIoRVZQ
X1BLRVlfbmV3KCkpOwpAQCAtMTY4LDcgKzE5OCw3IEBAIHZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5l
cmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29y
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGV4cG9uZW50ID0gQklHTlVNUHRy
KGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCBwdWJsaWNFeHBvbmVudCkpOworICAgIGF1dG8g
ZXhwb25lbnQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocHVibGljRXhwb25lbnQpOwogICAgIGF1dG8g
cHJpdmF0ZVJTQSA9IFJTQVB0cihSU0FfbmV3KCkpOwogICAgIGlmICghZXhwb25lbnQgfHwgUlNB
X2dlbmVyYXRlX2tleV9leChwcml2YXRlUlNBLmdldCgpLCBtb2R1bHVzTGVuZ3RoLCBleHBvbmVu
dC5nZXQoKSwgbnVsbHB0cikgPD0gMCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKQEAg
LTIwNSw3ICsyMzUsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9y
dFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogCiAgICAgLy8gV2UgdXNl
IGQyaV9QVUJLRVkoKSB0byBpbXBvcnQgYSBwdWJsaWMga2V5LgogICAgIGF1dG8gcGtleSA9IEV2
cFBLZXlQdHIoZDJpX1BVQktFWShudWxscHRyLCAmcHRyLCBrZXlEYXRhLnNpemUoKSkpOwotICAg
IGlmICghcGtleSB8fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX1JTQSkK
KyAgICBpZiAoIXBrZXkgfHwgRVZQX1BLRVlfaWQocGtleS5nZXQoKSkgIT0gRVZQX1BLRVlfUlNB
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5
cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5
KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwpAQCAtMjIyLDcgKzI1Miw3IEBAIFJlZlB0cjxDcnlw
dG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBpZGVudGlmCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBwa2V5ID0g
RXZwUEtleVB0cihFVlBfUEtDUzgyUEtFWShwOGluZi5nZXQoKSkpOwotICAgIGlmICghcGtleSB8
fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX1JTQSkKKyAgICBpZiAoIXBr
ZXkgfHwgRVZQX1BLRVlfaWQocGtleS5nZXQoKSkgIT0gRVZQX1BLRVlfUlNBKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlk
ZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIFdURk1vdmUocGtleSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpKTsKQEAgLTI3MCw4ICszMDAsMTUgQEAgYXV0byBDcnlwdG9LZXlSU0E6OmFs
Z29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29yaXRobQogewogICAgIFJTQSogcnNhID0gRVZQX1BL
RVlfZ2V0MF9SU0EocGxhdGZvcm1LZXkoKSk7CiAKLSAgICBhdXRvIG1vZHVsdXNMZW5ndGggPSBy
c2EgPyBCTl9udW1fYnl0ZXMocnNhLT5uKSAqIDggOiAwOwotICAgIGF1dG8gcHVibGljRXhwb25l
bnQgPSByc2EgPyBjb252ZXJ0VG9CeXRlcyhyc2EtPmUpIDogVmVjdG9yPHVpbnQ4X3Q+IHsgfTsK
KyAgICBhdXRvIG1vZHVsdXNMZW5ndGggPSBnZXRSU0FNb2R1bHVzTGVuZ3RoKHJzYSk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50OworCisgICAgaWYgKHJzYSkgeworICAgICAg
ICBjb25zdCBCSUdOVU0qIGU7CisgICAgICAgIGNvbnN0IEJJR05VTSogcTsKKyAgICAgICAgUlNB
X2dldDBfZmFjdG9ycyhyc2EsICZlLCAmcSk7CisgICAgICAgIHB1YmxpY0V4cG9uZW50ID0gY29u
dmVydFRvQnl0ZXMoZSk7CisgICAgfQogCiAgICAgaWYgKG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNI
YXNoKSB7CiAgICAgICAgIENyeXB0b1JzYUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CkBAIC0y
OTUsNTUgKzMzMiw3MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4g
Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKICAgICBpZiAoIXJzYSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKKyAgICBjb25zdCBCSUdOVU0qIG47CisgICAgY29uc3QgQklHTlVN
KiBlOworICAgIGNvbnN0IEJJR05VTSogZDsKKyAgICBSU0FfZ2V0MF9rZXkocnNhLCAmbiwgJmUs
ICZkKTsKKwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQ
dWJsaWM6CiAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzIGFuZCBleHBvbmVu
dCBmb3IgdGhlIHB1YmxpYyBrZXkuCi0gICAgICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisg
ICAgICAgIGlmICghbiB8fCAhZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5
dGVzKHJzYS0+biksIGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkpOworICAgICAgICByZXR1cm4gQ3J5
cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5dGVzKG4pLCBjb252
ZXJ0VG9CeXRlcyhlKSk7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOiB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzLCBleHBvbmVudCwgYW5kIHByaXZhdGUg
ZXhwb25lbnQsIGFzIHdlbGwgYXMgcCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KLSAgICAgICAg
aWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSB8fCAhcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkK
KyAgICAgICAgY29uc3QgQklHTlVNKiBwOworICAgICAgICBjb25zdCBCSUdOVU0qIHE7CisgICAg
ICAgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmcCwgJnEpOworCisgICAgICAgIGlmICghbiB8fCAh
ZSB8fCAhZCB8fCAhcCB8fCAhcSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsKLSAg
ICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPnAp
OworICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHAp
OwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmlt
ZUluZm87Ci0gICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5
dGVzKHJzYS0+cSk7CisgICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZl
cnRUb0J5dGVzKHEpOwogCiAgICAgICAgIGF1dG8gY29udGV4dCA9IEJOQ3R4UHRyKEJOX0NUWF9u
ZXcoKSk7CisKKyAgICAgICAgY29uc3QgQklHTlVNKiBkbXAxOworICAgICAgICBjb25zdCBCSUdO
VU0qIGRtcTE7CisgICAgICAgIGNvbnN0IEJJR05VTSogaXFtcDsKKyAgICAgICAgUlNBX2dldDBf
Y3J0X3BhcmFtcyhyc2EsICZkbXAxLCAmZG1xMSwgJmlxbXApOworCiAgICAgICAgIC8vIGRtcDEg
LS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAocnNhLT5kbXAxKQotICAgICAgICAgICAgZmly
c3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcDEp
OworICAgICAgICBpZiAoZG1wMSkKKyAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNS
VEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMSk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgYXV0byBkbXAxID0gQklHTlVNUHRyKEJOX25ldygpKTsKLSAgICAgICAgICAgIGF1dG8g
cG0xID0gQklHTlVNUHRyKEJOX2R1cChyc2EtPnApKTsKLSAgICAgICAgICAgIGlmIChCTl9zdWJf
d29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcDEuZ2V0KCksIHJzYS0+ZCwgcG0x
LmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQotICAgICAgICAgICAgICAgIGZpcnN0UHJpbWVJ
bmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMS5nZXQoKSk7CisgICAg
ICAgICAgICBhdXRvIGRtcDFOZXcgPSBCSUdOVU1QdHIoQk5fbmV3KCkpOworICAgICAgICAgICAg
YXV0byBwbTEgPSBCSUdOVU1QdHIoQk5fZHVwKHApKTsKKyAgICAgICAgICAgIGlmIChCTl9zdWJf
d29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRtcDFOZXcuZ2V0KCksIGQsIHBtMS5n
ZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKKyAgICAgICAgICAgICAgICBmaXJzdFByaW1lSW5m
by5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcDFOZXcuZ2V0KCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gZG1xMSAtLSBkIG1vZCAocSAtIDEpCi0gICAgICAgIGlmIChy
c2EtPmRtcTEpCi0gICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQg
PSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcTEpOworICAgICAgICBpZiAoZG1xMSkKKyAgICAgICAg
ICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRt
cTEpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gZG1xMSA9IEJJR05VTVB0cihC
Tl9uZXcoKSk7Ci0gICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5x
KSk7Ci0gICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0xLmdldCgpLCAxKSA9PSAxICYmIEJO
X21vZChkbXExLmdldCgpLCByc2EtPmQsIHFtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkK
LSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252
ZXJ0VG9CeXRlcyhkbXExLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZG1xMU5ldyA9IEJJR05V
TVB0cihCTl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAo
cSkpOworICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHFtMS5nZXQoKSwgMSkgPT0gMSAmJiBC
Tl9tb2QoZG1xMU5ldy5nZXQoKSwgZCwgcW0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQor
ICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZl
cnRUb0J5dGVzKGRtcTFOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gaXFtcCAt
LSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKHJzYS0+aXFtcCkKLSAgICAgICAgICAgIHNlY29u
ZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+aXFt
cCk7CisgICAgICAgIGlmIChpcW1wKQorICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3Rv
ckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0ZXMoaXFtcCk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYXV0byBpcW1wID0gQklHTlVNUHRyKEJOX21vZF9pbnZlcnNlKG51bGxwdHIs
IHJzYS0+cSwgcnNhLT5wLCBjb250ZXh0LmdldCgpKSk7Ci0gICAgICAgICAgICBpZiAoaXFtcCkK
LSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBj
b252ZXJ0VG9CeXRlcyhpcW1wLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gaXFtcE5ldyA9IEJJ
R05VTVB0cihCTl9tb2RfaW52ZXJzZShudWxscHRyLCBxLCBwLCBjb250ZXh0LmdldCgpKSk7Cisg
ICAgICAgICAgICBpZiAoaXFtcE5ldykKKyAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8u
ZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1wTmV3LmdldCgpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQ
cml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKAotICAgICAgICAgICAgY29udmVydFRvQnl0ZXMocnNh
LT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSwgY29udmVydFRvQnl0ZXMocnNhLT5kKSwKKyAg
ICAgICAgICAgIGNvbnZlcnRUb0J5dGVzKG4pLCBjb252ZXJ0VG9CeXRlcyhlKSwgY29udmVydFRv
Qnl0ZXMoZCksCiAgICAgICAgICAgICBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShz
ZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
PiB7IH0pOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRleCA1MDQwYmE2MWI2MzkuLmUzOWU1
ZmU5YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVy
dFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiBiaWdudW0sIHNpemVfdCBtaW5pbXVtQnVmZmVy
UwogICAgIHJldHVybiBieXRlczsKIH0KIAotQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoQklH
TlVNKiBiaWdudW0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCitCSUdOVU1QdHIgY29u
dmVydFRvQmlnTnVtYmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7Ci0gICAgcmV0
dXJuIEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgYmlnbnVtKTsKKyAgICBy
ZXR1cm4gQklHTlVNUHRyKEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgbnVs
bHB0cikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKaW5kZXggOWE3YmFhNjdhMTJkLi43
YmI0ZWE2N2M4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09w
ZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVu
U1NMVXRpbGl0aWVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk9wZW5TU0xDcnlwdG9V
bmlxdWVQdHIuaCIKICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgogI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDkgKzQzLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbnZlcnRUb0J5dGVzKGNvbnN0IEJJR05VTSopOwogCiBWZWN0b3I8dWludDhfdD4gY29u
dmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCi0v
LyBJZiBhIG51bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoaXMg
ZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0ZXMgYSBuZXcgQklHTlVNCi0vLyBhbmQgcmV0dXJu
cyBpdHMgcG9pbnRlci4gT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2l2ZW4gQklH
TlVNIGFuZCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IG9uZS4KLUJJR05VTSogY29udmVydFRvQmln
TnVtYmVyKEJJR05VTSosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpOworQklHTlVNUHRy
IGNvbnZlcnRUb0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>
<flag name="review"
          id="488188"
          type_id="1"
          status="+"
          setter="basuke"
    />
    <flag name="commit-queue"
          id="488194"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459257</attachid>
            <date>2022-05-12 16:35:34 -0700</date>
            <delta_ts>2022-05-12 16:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>17200</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmUzYjhhMjY0ZTkuLjc4ZjFkODYxNjc1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDIyLTA1LTEyICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBCYXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIExpYnJlU1NMIDMuNS54IG1hZGUgYSBudW1iZXIgb2YgdHlwZXMg
b3BhcXVlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTC4gVW5mb3J0dW5hdGVseQorICAg
ICAgICBhIG51bWJlciBvZiBwbGFjZXMgaW4gdGhlIFdlYkNyeXB0byBpbXBsZW1lbnRhdGlvbiB3
ZXJlIGFjY2Vzc2luZyB0aGVzZSBzdHJ1Y3RzIGRpcmVjdGx5LgorICAgICAgICBNb2RpZnkgdGhl
IGNvZGUgdG8gdXNlIHRoZSBwcm92aWRlZCBmdW5jdGlvbnMgdG8gYWNjZXNzIGFuZCBtb2RpZnkg
dGhlIHR5cGVzIGluIHRoZSBzYW1lCisgICAgICAgIG1hbm5lciB0aGV5IHdlcmUgYmVpbmcgdXNl
ZC4KKworICAgICAgICBNb2RpZmllZCBXZWJDb3JlOjpjb252ZXJ0VG9CaWdOdW1iZXIgdG8gcmV0
dXJuIGEgQklHTlVNUHRyIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgQklHTlVNLgorICAgICAgICBU
aGlzIGNoYW5nZSB3YXMgZG9uZSBiZWNhdXNlIGFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gd2Vy
ZSByZXR1cm5pbmcgYSBuZXcgQklHTlVNIHJhdGhlcgorICAgICAgICB0aGFuIHJldXNpbmcgb25l
IGFmdGVyIHRyYW5zaXRpb25pbmcgdG8gb3BhcXVlIHR5cGVzLiBCeSByZXR1cm5pbmcgYSBCSUdO
VU1QdHIgbGVha3MgYXJlCisgICAgICAgIHByZXZlbnRlZC4gSW4gdGhlIGNhc2Ugd2hlcmUgT3Bl
blNTTCBleHBlY3RzIG93bmVyc2hpcCB0byBiZSB0cmFuc2ZlcnJlZCByZWxlYXNlKCkgaXMKKyAg
ICAgICAgdXNlZC4KKworICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVD
RFNBT3BlblNTTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6
cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3Bl
blNTTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQdWJsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRQa2NzOCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRSU0FNb2R1bHVzTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleVJTQTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tl
eVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1w
b3J0U3BraSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6YWxnb3JpdGhtIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSBjb25zdCk6CisgICAgICAgICog
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0VG9CaWdOdW1iZXIpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL09wZW5TU0xVdGls
aXRpZXMuaDoKKwogMjAyMi0wNS0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBTdG9yYWdlTWFwOjpyZW1vdmVJdGVtIG1heSBmYWlsIHRvIHJlbW92ZSBpdGVt
IGZyb20gbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAppbmRleCBkMmU1Nzc4OWY2MTguLjQ2
YWVjMTg2OWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCkBAIC03Niw4ICs3NiwxMSBA
QCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgYXV0byBzaWcgPSBFQ0RTQVNpZ1B0cihFQ0RTQV9TSUdfbmV3KCkpOwotICAgIHNpZy0+ciA9
IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnLT5yKTsKLSAg
ICBzaWctPnMgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzLCBr
ZXlTaXplSW5CeXRlcywgc2lnLT5zKTsKKyAgICBhdXRvIHIgPSBCTl9iaW4yYm4oc2lnbmF0dXJl
LmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIG51bGxwdHIpOworICAgIGF1dG8gcyA9IEJOX2JpbjJi
bihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0ZXMsIGtleVNpemVJbkJ5dGVzLCBudWxs
cHRyKTsKKworICAgIGlmICghRUNEU0FfU0lHX3NldDAoc2lnLmdldCgpLCByLCBzKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAKICAgICBjb25zdCBFVlBf
TUQqIG1kID0gZGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwogICAg
IGlmICghbWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9LZXlFQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
S2V5RUNPcGVuU1NMLmNwcAppbmRleCBmM2IyZjlkMWRmNTguLmJiNWRjNWU2MmY5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wu
Y3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6
cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICBhdXRv
IHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1cnJl
bnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0gICAg
aWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQo
KSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJR05V
TVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8PSAw
KQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9p
bnQuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih4KS5nZXQoKSwgY29udmVydFRvQmlnTnVtYmVy
KHkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0gMCkK
QEAgLTE5NSwxMyArMTk1LDEzIEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgYXV0byBw
b2ludCA9IEVDUG9pbnRQdHIoRUNfUE9JTlRfbmV3KGdyb3VwKSk7CiAKICAgICAvLyBDdXJyZW50
bHkgd2Ugb25seSBzdXBwb3J0IGVsbGlwdGljIGN1cnZlcyBvdmVyIEdGKHApLiAgIAotICAgIGlm
IChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCks
IEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeCkpLmdldCgpLCBCSUdOVU1Q
dHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHkpKS5nZXQoKSwgbnVsbHB0cikgPD0gMCkK
KyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50
LmdldCgpLCBjb252ZXJ0VG9CaWdOdW1iZXIoeCkuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih5
KS5nZXQoKSwgbnVsbHB0cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0KCkpIDw9IDApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKEVDX0tFWV9zZXRfcHJpdmF0ZV9rZXko
a2V5LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIGQpKS5nZXQo
KSkgPD0gMCkKKyAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRlX2tleShrZXkuZ2V0KCksIGNvbnZl
cnRUb0JpZ051bWJlcihkKS5nZXQoKSkgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoRUNfS0VZX2NoZWNrX2tleShrZXkuZ2V0KCkpIDw9IDApCkBAIC0zNTcsNyArMzU3
LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZKHA4aW5mLmdldCgpKSk7
Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlf
RUMpCisgICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX2Jhc2VfaWQocGtleS5nZXQoKSkgIT0gRVZQ
X1BLRVlfRUMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBlY0tleSA9IEVW
UF9QS0VZX2dldDBfRUNfS0VZKHBrZXkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAppbmRleCAxZDk2NWM2ODlj
YTguLmIzZTM1ZDMzYjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIHNp
emVfdCBnZXRSU0FNb2R1bHVzTGVuZ3RoKFJTQSogcnNhKQogewogICAgIGlmICghcnNhKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gQk5fbnVtX2J5dGVzKHJzYS0+bikgKiA4OworICAg
IHJldHVybiBSU0Ffc2l6ZShyc2EpICogODsKIH0KIAogUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29uc3QgQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2VzKQpAQCAtODEsMjkgKzgxLDU5IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+
IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByc2EtPm4g
PSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5uLCBrZXlEYXRhLm1vZHVsdXMoKSk7Ci0gICAgcnNh
LT5lID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+ZSwga2V5RGF0YS5leHBvbmVudCgpKTsKLSAg
ICBpZiAoIXJzYS0+biB8fCAhcnNhLT5lKQorICAgIGF1dG8gbiA9IGNvbnZlcnRUb0JpZ051bWJl
cihrZXlEYXRhLm1vZHVsdXMoKSk7CisgICAgYXV0byBlID0gY29udmVydFRvQmlnTnVtYmVyKGtl
eURhdGEuZXhwb25lbnQoKSk7CisgICAgaWYgKCFuIHx8ICFlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAorICAgIC8vIENhbGxpbmcgd2l0aCBkIG51bGwgaXMgZmluZSBhcyBsb25nIGFzIG4g
YW5kIGUgYXJlIG5vdCBudWxsCisgICAgaWYgKCFSU0Ffc2V0MF9rZXkocnNhLmdldCgpLCBuLmdl
dCgpLCBlLmdldCgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAorICAgIG4ucmVsZWFzZSgpOworICAg
IGUucmVsZWFzZSgpOworCiAgICAgaWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0
ZSkgewotICAgICAgICByc2EtPmQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRh
LnByaXZhdGVFeHBvbmVudCgpKTsKLSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVy
KHJzYS0+cCwga2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAg
cnNhLT5xID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUlu
Zm8oKS5wcmltZUZhY3Rvcik7Ci0gICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJz
YS0+cSkKKyAgICAgICAgYXV0byBkID0gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEucHJpdmF0
ZUV4cG9uZW50KCkpOworICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICAvLyBDYWxsaW5nIHdpdGggbiBhbmQgZSBudWxsIGlzIGZpbmUgYXMgbG9u
ZyBhcyB0aGV5IHdlcmUgc2V0IHByaW9yCisgICAgICAgIGlmICghUlNBX3NldDBfa2V5KHJzYS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgZC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAorICAg
ICAgICBkLnJlbGVhc2UoKTsKKworICAgICAgICBhdXRvIHAgPSBjb252ZXJ0VG9CaWdOdW1iZXIo
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgYXV0byBxID0g
Y29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkucHJpbWVGYWN0b3Ip
OworICAgICAgICBpZiAoIXAgfHwgIXEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICBpZiAoIVJTQV9zZXQwX2ZhY3RvcnMocnNhLmdldCgpLCBwLmdldCgpLCBxLmdldCgp
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgICAgIC8vIE93bmVyc2hpcCB0
cmFuc2ZlcnJlZCB0byBPcGVuU1NMCisgICAgICAgIHAucmVsZWFzZSgpOworICAgICAgICBxLnJl
bGVhc2UoKTsKKwogICAgICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFuZCBpcW1wIG1lbWJl
ciBvZiB0aGUgUlNBIHN0cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVzcG9uZGluZyBkYXRh
LgogCiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAoIWtleURh
dGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByc2EtPmRtcDEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAxLCBrZXlEYXRhLmZp
cnN0UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcDEgPSAo
IWtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpID8g
Y29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBv
bmVudCkgOiBudWxscHRyOwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAg
ICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRt
cTEsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAg
ICBhdXRvIGRtcTEgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25l
bnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGlxbXAgLS0gcV4o
LTEpIG1vZCBwCi0gICAgICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JD
UlRDb2VmZmljaWVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlxbXAgPSBjb252ZXJ0
VG9CaWdOdW1iZXIocnNhLT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNS
VENvZWZmaWNpZW50KTsKKyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRhLnNlY29uZFByaW1l
SW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252ZXJ0VG9CaWdOdW1i
ZXIoa2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCkgOiBudWxs
cHRyOworCisgICAgICAgIGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2EuZ2V0KCksIGRtcDEu
Z2V0KCksIGRtcTEuZ2V0KCksIGlxbXAuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgLy8gT3duZXJzaGlwIHRyYW5zZmVycmVkIHRvIE9wZW5TU0wKKyAgICAg
ICAgZG1wMS5yZWxlYXNlKCk7CisgICAgICAgIGRtcTEucmVsZWFzZSgpOworICAgICAgICBpcW1w
LnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZ
X25ldygpKTsKQEAgLTE2OCw3ICsxOTgsNyBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBleHBvbmVudCA9IEJJR05VTVB0cihjb252
ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgcHVibGljRXhwb25lbnQpKTsKKyAgICBhdXRvIGV4cG9u
ZW50ID0gY29udmVydFRvQmlnTnVtYmVyKHB1YmxpY0V4cG9uZW50KTsKICAgICBhdXRvIHByaXZh
dGVSU0EgPSBSU0FQdHIoUlNBX25ldygpKTsKICAgICBpZiAoIWV4cG9uZW50IHx8IFJTQV9nZW5l
cmF0ZV9rZXlfZXgocHJpdmF0ZVJTQS5nZXQoKSwgbW9kdWx1c0xlbmd0aCwgZXhwb25lbnQuZ2V0
KCksIG51bGxwdHIpIDw9IDApIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CkBAIC0yMDUs
NyArMjM1LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtp
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmkKIAogICAgIC8vIFdlIHVzZSBkMmlf
UFVCS0VZKCkgdG8gaW1wb3J0IGEgcHVibGljIGtleS4KICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5
UHRyKGQyaV9QVUJLRVkobnVsbHB0ciwgJnB0ciwga2V5RGF0YS5zaXplKCkpKTsKLSAgICBpZiAo
IXBrZXkgfHwgRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBfUEtFWV9SU0EpCisgICAg
aWYgKCFwa2V5IHx8IEVWUF9QS0VZX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX1JTQSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tl
eVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIFdURk1vdmUocGtleSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpKTsKQEAgLTIyMiw3ICsyNTIsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gcGtleSA9IEV2cFBL
ZXlQdHIoRVZQX1BLQ1M4MlBLRVkocDhpbmYuZ2V0KCkpKTsKLSAgICBpZiAoIXBrZXkgfHwgRVZQ
X1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBfUEtFWV9SU0EpCisgICAgaWYgKCFwa2V5IHx8
IEVWUF9QS0VZX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX1JTQSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlm
aWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFo
YXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKSk7CkBAIC0yNzAsOCArMzAwLDE2IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0
aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KIHsKICAgICBSU0EqIHJzYSA9IEVWUF9QS0VZX2dl
dDBfUlNBKHBsYXRmb3JtS2V5KCkpOwogCi0gICAgYXV0byBtb2R1bHVzTGVuZ3RoID0gcnNhID8g
Qk5fbnVtX2J5dGVzKHJzYS0+bikgKiA4IDogMDsKLSAgICBhdXRvIHB1YmxpY0V4cG9uZW50ID0g
cnNhID8gY29udmVydFRvQnl0ZXMocnNhLT5lKSA6IFZlY3Rvcjx1aW50OF90PiB7IH07CisgICAg
YXV0byBtb2R1bHVzTGVuZ3RoID0gZ2V0UlNBTW9kdWx1c0xlbmd0aChyc2EpOworICAgIFZlY3Rv
cjx1aW50OF90PiBwdWJsaWNFeHBvbmVudDsKKworICAgIGlmIChyc2EpIHsKKyAgICAgICAgY29u
c3QgQklHTlVNKiBuOworICAgICAgICBjb25zdCBCSUdOVU0qIGU7CisgICAgICAgIGNvbnN0IEJJ
R05VTSogZDsKKyAgICAgICAgUlNBX2dldDBfa2V5KHJzYSwgJm4sICZlLCAmZCk7CisgICAgICAg
IHB1YmxpY0V4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZSk7CisgICAgfQogCiAgICAgaWYgKG1f
cmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKSB7CiAgICAgICAgIENyeXB0b1JzYUhhc2hlZEtleUFs
Z29yaXRobSByZXN1bHQ7CkBAIC0yOTUsNTUgKzMzMyw3MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKICAg
ICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBjb25zdCBCSUdOVU0q
IG47CisgICAgY29uc3QgQklHTlVNKiBlOworICAgIGNvbnN0IEJJR05VTSogZDsKKyAgICBSU0Ff
Z2V0MF9rZXkocnNhLCAmbiwgJmUsICZkKTsKKwogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAg
Y2FzZSBDcnlwdG9LZXlUeXBlOjpQdWJsaWM6CiAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHB1Ymxp
YyBtb2R1bHVzIGFuZCBleHBvbmVudCBmb3IgdGhlIHB1YmxpYyBrZXkuCi0gICAgICAgIGlmICgh
cnNhLT5uIHx8ICFyc2EtPmUpCisgICAgICAgIGlmICghbiB8fCAhZSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3Jl
YXRlUHVibGljKGNvbnZlcnRUb0J5dGVzKHJzYS0+biksIGNvbnZlcnRUb0J5dGVzKHJzYS0+ZSkp
OworICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNv
bnZlcnRUb0J5dGVzKG4pLCBjb252ZXJ0VG9CeXRlcyhlKSk7CiAgICAgY2FzZSBDcnlwdG9LZXlU
eXBlOjpQcml2YXRlOiB7CiAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzLCBl
eHBvbmVudCwgYW5kIHByaXZhdGUgZXhwb25lbnQsIGFzIHdlbGwgYXMgcCBhbmQgcSBwcmltZSBp
bmZvcm1hdGlvbi4KLSAgICAgICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+ZSB8fCAhcnNhLT5kIHx8
ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAgICAgICAgY29uc3QgQklHTlVNKiBwOworICAgICAgICBj
b25zdCBCSUdOVU0qIHE7CisgICAgICAgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmcCwgJnEpOwor
CisgICAgICAgIGlmICghbiB8fCAhZSB8fCAhZCB8fCAhcCB8fCAhcSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5m
byBmaXJzdFByaW1lSW5mbzsKLSAgICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBj
b252ZXJ0VG9CeXRlcyhyc2EtPnApOworICAgICAgICBmaXJzdFByaW1lSW5mby5wcmltZUZhY3Rv
ciA9IGNvbnZlcnRUb0J5dGVzKHApOwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6
OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87Ci0gICAgICAgIHNlY29uZFByaW1lSW5mby5wcmlt
ZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+cSk7CisgICAgICAgIHNlY29uZFByaW1lSW5m
by5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHEpOwogCiAgICAgICAgIGF1dG8gY29udGV4
dCA9IEJOQ3R4UHRyKEJOX0NUWF9uZXcoKSk7CisKKyAgICAgICAgY29uc3QgQklHTlVNKiBkbXAx
OworICAgICAgICBjb25zdCBCSUdOVU0qIGRtcTE7CisgICAgICAgIGNvbnN0IEJJR05VTSogaXFt
cDsKKyAgICAgICAgUlNBX2dldDBfY3J0X3BhcmFtcyhyc2EsICZkbXAxLCAmZG1xMSwgJmlxbXAp
OworCiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAocnNhLT5k
bXAxKQotICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252
ZXJ0VG9CeXRlcyhyc2EtPmRtcDEpOworICAgICAgICBpZiAoZG1wMSkKKyAgICAgICAgICAgIGZp
cnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZG1wMSk7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBkbXAxID0gQklHTlVNUHRyKEJOX25ldygp
KTsKLSAgICAgICAgICAgIGF1dG8gcG0xID0gQklHTlVNUHRyKEJOX2R1cChyc2EtPnApKTsKLSAg
ICAgICAgICAgIGlmIChCTl9zdWJfd29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRt
cDEuZ2V0KCksIHJzYS0+ZCwgcG0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQotICAgICAg
ICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRvQnl0
ZXMoZG1wMS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIGRtcDFOZXcgPSBCSUdOVU1QdHIoQk5f
bmV3KCkpOworICAgICAgICAgICAgYXV0byBwbTEgPSBCSUdOVU1QdHIoQk5fZHVwKHApKTsKKyAg
ICAgICAgICAgIGlmIChCTl9zdWJfd29yZChwbTEuZ2V0KCksIDEpID09IDEgJiYgQk5fbW9kKGRt
cDFOZXcuZ2V0KCksIGQsIHBtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKKyAgICAgICAg
ICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVz
KGRtcDFOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gZG1xMSAtLSBkIG1vZCAo
cSAtIDEpCi0gICAgICAgIGlmIChyc2EtPmRtcTEpCi0gICAgICAgICAgICBzZWNvbmRQcmltZUlu
Zm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcTEpOworICAgICAg
ICBpZiAoZG1xMSkKKyAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVu
dCA9IGNvbnZlcnRUb0J5dGVzKGRtcTEpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1
dG8gZG1xMSA9IEJJR05VTVB0cihCTl9uZXcoKSk7Ci0gICAgICAgICAgICBhdXRvIHFtMSA9IEJJ
R05VTVB0cihCTl9kdXAocnNhLT5xKSk7Ci0gICAgICAgICAgICBpZiAoQk5fc3ViX3dvcmQocW0x
LmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXExLmdldCgpLCByc2EtPmQsIHFtMS5nZXQoKSwg
Y29udGV4dC5nZXQoKSkgPT0gMSkKLSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFj
dG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXExLmdldCgpKTsKKyAgICAgICAgICAg
IGF1dG8gZG1xMU5ldyA9IEJJR05VTVB0cihCTl9uZXcoKSk7CisgICAgICAgICAgICBhdXRvIHFt
MSA9IEJJR05VTVB0cihCTl9kdXAocSkpOworICAgICAgICAgICAgaWYgKEJOX3N1Yl93b3JkKHFt
MS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1xMU5ldy5nZXQoKSwgZCwgcW0xLmdldCgpLCBj
b250ZXh0LmdldCgpKSA9PSAxKQorICAgICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0
b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcTFOZXcuZ2V0KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gaXFtcCAtLSBxXigtMSkgbW9kIHAKLSAgICAgICAgaWYgKHJzYS0+aXFt
cCkKLSAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IGNv
bnZlcnRUb0J5dGVzKHJzYS0+aXFtcCk7CisgICAgICAgIGlmIChpcW1wKQorICAgICAgICAgICAg
c2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNpZW50ID0gY29udmVydFRvQnl0ZXMoaXFt
cCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBpcW1wID0gQklHTlVNUHRyKEJO
X21vZF9pbnZlcnNlKG51bGxwdHIsIHJzYS0+cSwgcnNhLT5wLCBjb250ZXh0LmdldCgpKSk7Ci0g
ICAgICAgICAgICBpZiAoaXFtcCkKLSAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFj
dG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1wLmdldCgpKTsKKyAgICAgICAg
ICAgIGF1dG8gaXFtcE5ldyA9IEJJR05VTVB0cihCTl9tb2RfaW52ZXJzZShudWxscHRyLCBxLCBw
LCBjb250ZXh0LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoaXFtcE5ldykKKyAgICAgICAgICAg
ICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRl
cyhpcW1wTmV3LmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKAotICAgICAgICAg
ICAgY29udmVydFRvQnl0ZXMocnNhLT5uKSwgY29udmVydFRvQnl0ZXMocnNhLT5lKSwgY29udmVy
dFRvQnl0ZXMocnNhLT5kKSwKKyAgICAgICAgICAgIGNvbnZlcnRUb0J5dGVzKG4pLCBjb252ZXJ0
VG9CeXRlcyhlKSwgY29udmVydFRvQnl0ZXMoZCksCiAgICAgICAgICAgICBXVEZNb3ZlKGZpcnN0
UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8Q3J5cHRvS2V5UlNB
Q29tcG9uZW50czo6UHJpbWVJbmZvPiB7IH0pOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRl
eCA1MDQwYmE2MWI2MzkuLmUzOWU1ZmU5YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAKQEAgLTEwMCw5ICsxMDAsOSBAQCBW
ZWN0b3I8dWludDhfdD4gY29udmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiBiaWdudW0s
IHNpemVfdCBtaW5pbXVtQnVmZmVyUwogICAgIHJldHVybiBieXRlczsKIH0KIAotQklHTlVNKiBj
b252ZXJ0VG9CaWdOdW1iZXIoQklHTlVNKiBiaWdudW0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Ynl0ZXMpCitCSUdOVU1QdHIgY29udmVydFRvQmlnTnVtYmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIEJOX2JpbjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNp
emUoKSwgYmlnbnVtKTsKKyAgICByZXR1cm4gQklHTlVNUHRyKEJOX2JpbjJibihieXRlcy5kYXRh
KCksIGJ5dGVzLnNpemUoKSwgbnVsbHB0cikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgK
aW5kZXggOWE3YmFhNjdhMTJkLi43YmI0ZWE2N2M4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIk9wZW5TU0xDcnlwdG9VbmlxdWVQdHIuaCIKICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5o
PgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDkg
KzQzLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRUb0J5dGVzKGNvbnN0IEJJR05VTSopOwog
CiBWZWN0b3I8dWludDhfdD4gY29udmVydFRvQnl0ZXNFeHBhbmQoY29uc3QgQklHTlVNKiwgc2l6
ZV90IGJ1ZmZlclNpemUpOwogCi0vLyBJZiBhIG51bGwgcG9pbnRlciBpcyBnaXZlbiBhcyB0aGUg
Zmlyc3QgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gaW50ZXJuYWxseSBhbGxvY2F0ZXMgYSBuZXcg
QklHTlVNCi0vLyBhbmQgcmV0dXJucyBpdHMgcG9pbnRlci4gT3RoZXJ3aXNlIHRoaXMgZnVuY3Rp
b24gdXNlcyB0aGUgZ2l2ZW4gQklHTlVNIGFuZCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IG9uZS4K
LUJJR05VTSogY29udmVydFRvQmlnTnVtYmVyKEJJR05VTSosIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYnl0ZXMpOworQklHTlVNUHRyIGNvbnZlcnRUb0JpZ051bWJlcihjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGJ5dGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459259</attachid>
            <date>2022-05-12 16:47:33 -0700</date>
            <delta_ts>2022-05-15 04:07:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239858.diff</filename>
            <type>text/plain</type>
            <size>17158</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMmUzYjhhMjY0ZTkuLjc4ZjFkODYxNjc1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQwIEBACisyMDIyLTA1LTEyICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgW09wZW5TU0xdIFRyZWF0IHR5cGVzIGFzIG9wYXF1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MjgwNTc0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBCYXN1a2Ug
U3V6dWtpLgorCisgICAgICAgIExpYnJlU1NMIDMuNS54IG1hZGUgYSBudW1iZXIgb2YgdHlwZXMg
b3BhcXVlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTC4gVW5mb3J0dW5hdGVseQorICAg
ICAgICBhIG51bWJlciBvZiBwbGFjZXMgaW4gdGhlIFdlYkNyeXB0byBpbXBsZW1lbnRhdGlvbiB3
ZXJlIGFjY2Vzc2luZyB0aGVzZSBzdHJ1Y3RzIGRpcmVjdGx5LgorICAgICAgICBNb2RpZnkgdGhl
IGNvZGUgdG8gdXNlIHRoZSBwcm92aWRlZCBmdW5jdGlvbnMgdG8gYWNjZXNzIGFuZCBtb2RpZnkg
dGhlIHR5cGVzIGluIHRoZSBzYW1lCisgICAgICAgIG1hbm5lciB0aGV5IHdlcmUgYmVpbmcgdXNl
ZC4KKworICAgICAgICBNb2RpZmllZCBXZWJDb3JlOjpjb252ZXJ0VG9CaWdOdW1iZXIgdG8gcmV0
dXJuIGEgQklHTlVNUHRyIHdpdGggYSBuZXdseSBhbGxvY2F0ZWQgQklHTlVNLgorICAgICAgICBU
aGlzIGNoYW5nZSB3YXMgZG9uZSBiZWNhdXNlIGFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gd2Vy
ZSByZXR1cm5pbmcgYSBuZXcgQklHTlVNIHJhdGhlcgorICAgICAgICB0aGFuIHJldXNpbmcgb25l
IGFmdGVyIHRyYW5zaXRpb25pbmcgdG8gb3BhcXVlIHR5cGVzLiBCeSByZXR1cm5pbmcgYSBCSUdO
VU1QdHIgbGVha3MgYXJlCisgICAgICAgIHByZXZlbnRlZC4gSW4gdGhlIGNhc2Ugd2hlcmUgT3Bl
blNTTCBleHBlY3RzIG93bmVyc2hpcCB0byBiZSB0cmFuc2ZlcnJlZCByZWxlYXNlKCkgaXMKKyAg
ICAgICAgdXNlZC4KKworICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUVD
RFNBT3BlblNTTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6
cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL0NyeXB0b0tleUVDT3Bl
blNTTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRK
V0tQdWJsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRQa2NzOCk6CisgICAgICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRSU0FNb2R1bHVzTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleVJTQTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tl
eVJTQTo6Z2VuZXJhdGVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1w
b3J0U3BraSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6YWxnb3JpdGhtIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSBjb25zdCk6CisgICAgICAgICog
Y3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0VG9CaWdOdW1iZXIpOgorICAgICAgICAqIGNyeXB0by9vcGVuc3NsL09wZW5TU0xVdGls
aXRpZXMuaDoKKwogMjAyMi0wNS0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBTdG9yYWdlTWFwOjpyZW1vdmVJdGVtIG1heSBmYWlsIHRvIHJlbW92ZSBpdGVt
IGZyb20gbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAppbmRleCBkMmU1Nzc4OWY2MTguLjQ2
YWVjMTg2OWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvQWxnb3JpdGhtRUNEU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1FQ0RTQU9wZW5TU0wuY3BwCkBAIC03Niw4ICs3NiwxMSBA
QCBFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtRWNkcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgYXV0byBzaWcgPSBFQ0RTQVNpZ1B0cihFQ0RTQV9TSUdfbmV3KCkpOwotICAgIHNpZy0+ciA9
IEJOX2JpbjJibihzaWduYXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnLT5yKTsKLSAg
ICBzaWctPnMgPSBCTl9iaW4yYm4oc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVzLCBr
ZXlTaXplSW5CeXRlcywgc2lnLT5zKTsKKyAgICBhdXRvIHIgPSBCTl9iaW4yYm4oc2lnbmF0dXJl
LmRhdGEoKSwga2V5U2l6ZUluQnl0ZXMsIG51bGxwdHIpOworICAgIGF1dG8gcyA9IEJOX2JpbjJi
bihzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0ZXMsIGtleVNpemVJbkJ5dGVzLCBudWxs
cHRyKTsKKworICAgIGlmICghRUNEU0FfU0lHX3NldDAoc2lnLmdldCgpLCByLCBzKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAKICAgICBjb25zdCBFVlBf
TUQqIG1kID0gZGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwogICAg
IGlmICghbWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9LZXlFQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
S2V5RUNPcGVuU1NMLmNwcAppbmRleCBmM2IyZjlkMWRmNTguLmJiNWRjNWU2MmY5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5RUNPcGVuU1NMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlFQ09wZW5TU0wu
Y3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6
cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICBhdXRv
IHBvaW50ID0gRUNQb2ludFB0cihFQ19QT0lOVF9uZXcoZ3JvdXApKTsKIAogICAgIC8vIEN1cnJl
bnRseSB3ZSBvbmx5IHN1cHBvcnQgZWxsaXB0aWMgY3VydmVzIG92ZXIgR0YocCkuICAgCi0gICAg
aWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBwb2ludC5nZXQo
KSwgQklHTlVNUHRyKGNvbnZlcnRUb0JpZ051bWJlcihudWxscHRyLCB4KSkuZ2V0KCksIEJJR05V
TVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeSkpLmdldCgpLCBudWxscHRyKSA8PSAw
KQorICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9p
bnQuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih4KS5nZXQoKSwgY29udmVydFRvQmlnTnVtYmVy
KHkpLmdldCgpLCBudWxscHRyKSA8PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChFQ19LRVlfc2V0X3B1YmxpY19rZXkoa2V5LmdldCgpLCBwb2ludC5nZXQoKSkgPD0gMCkK
QEAgLTE5NSwxMyArMTk1LDEzIEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgYXV0byBw
b2ludCA9IEVDUG9pbnRQdHIoRUNfUE9JTlRfbmV3KGdyb3VwKSk7CiAKICAgICAvLyBDdXJyZW50
bHkgd2Ugb25seSBzdXBwb3J0IGVsbGlwdGljIGN1cnZlcyBvdmVyIEdGKHApLiAgIAotICAgIGlm
IChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcChncm91cCwgcG9pbnQuZ2V0KCks
IEJJR05VTVB0cihjb252ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgeCkpLmdldCgpLCBCSUdOVU1Q
dHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIHkpKS5nZXQoKSwgbnVsbHB0cikgPD0gMCkK
KyAgICBpZiAoRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRnAoZ3JvdXAsIHBvaW50
LmdldCgpLCBjb252ZXJ0VG9CaWdOdW1iZXIoeCkuZ2V0KCksIGNvbnZlcnRUb0JpZ051bWJlcih5
KS5nZXQoKSwgbnVsbHB0cikgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5KGtleS5nZXQoKSwgcG9pbnQuZ2V0KCkpIDw9IDApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKEVDX0tFWV9zZXRfcHJpdmF0ZV9rZXko
a2V5LmdldCgpLCBCSUdOVU1QdHIoY29udmVydFRvQmlnTnVtYmVyKG51bGxwdHIsIGQpKS5nZXQo
KSkgPD0gMCkKKyAgICBpZiAoRUNfS0VZX3NldF9wcml2YXRlX2tleShrZXkuZ2V0KCksIGNvbnZl
cnRUb0JpZ051bWJlcihkKS5nZXQoKSkgPD0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoRUNfS0VZX2NoZWNrX2tleShrZXkuZ2V0KCkpIDw9IDApCkBAIC0zNTcsNyArMzU3
LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0NTODJQS0VZKHA4aW5mLmdldCgpKSk7
Ci0gICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX3R5cGUocGtleS0+dHlwZSkgIT0gRVZQX1BLRVlf
RUMpCisgICAgaWYgKCFwa2V5IHx8IEVWUF9QS0VZX2Jhc2VfaWQocGtleS5nZXQoKSkgIT0gRVZQ
X1BLRVlfRUMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBlY0tleSA9IEVW
UF9QS0VZX2dldDBfRUNfS0VZKHBrZXkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAppbmRleCAxZDk2NWM2ODlj
YTguLjQ1MTE5YzU2MWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIHNp
emVfdCBnZXRSU0FNb2R1bHVzTGVuZ3RoKFJTQSogcnNhKQogewogICAgIGlmICghcnNhKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gQk5fbnVtX2J5dGVzKHJzYS0+bikgKiA4OworICAg
IHJldHVybiBSU0Ffc2l6ZShyc2EpICogODsKIH0KIAogUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29uc3QgQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAgdXNhZ2VzKQpAQCAtODEsMjkgKzgxLDU5IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+
IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByc2EtPm4g
PSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5uLCBrZXlEYXRhLm1vZHVsdXMoKSk7Ci0gICAgcnNh
LT5lID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+ZSwga2V5RGF0YS5leHBvbmVudCgpKTsKLSAg
ICBpZiAoIXJzYS0+biB8fCAhcnNhLT5lKQorICAgIGF1dG8gbiA9IGNvbnZlcnRUb0JpZ051bWJl
cihrZXlEYXRhLm1vZHVsdXMoKSk7CisgICAgYXV0byBlID0gY29udmVydFRvQmlnTnVtYmVyKGtl
eURhdGEuZXhwb25lbnQoKSk7CisgICAgaWYgKCFuIHx8ICFlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAorICAgIC8vIENhbGxpbmcgd2l0aCBkIG51bGwgaXMgZmluZSBhcyBsb25nIGFzIG4g
YW5kIGUgYXJlIG5vdCBudWxsCisgICAgaWYgKCFSU0Ffc2V0MF9rZXkocnNhLmdldCgpLCBuLmdl
dCgpLCBlLmdldCgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAorICAgIG4ucmVsZWFzZSgpOworICAg
IGUucmVsZWFzZSgpOworCiAgICAgaWYgKGtleVR5cGUgPT0gQ3J5cHRvS2V5VHlwZTo6UHJpdmF0
ZSkgewotICAgICAgICByc2EtPmQgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kLCBrZXlEYXRh
LnByaXZhdGVFeHBvbmVudCgpKTsKLSAgICAgICAgcnNhLT5wID0gY29udmVydFRvQmlnTnVtYmVy
KHJzYS0+cCwga2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKLSAgICAgICAg
cnNhLT5xID0gY29udmVydFRvQmlnTnVtYmVyKHJzYS0+cSwga2V5RGF0YS5zZWNvbmRQcmltZUlu
Zm8oKS5wcmltZUZhY3Rvcik7Ci0gICAgICAgIGlmICghcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJz
YS0+cSkKKyAgICAgICAgYXV0byBkID0gY29udmVydFRvQmlnTnVtYmVyKGtleURhdGEucHJpdmF0
ZUV4cG9uZW50KCkpOworICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICAvLyBDYWxsaW5nIHdpdGggbiBhbmQgZSBudWxsIGlzIGZpbmUgYXMgbG9u
ZyBhcyB0aGV5IHdlcmUgc2V0IHByaW9yCisgICAgICAgIGlmICghUlNBX3NldDBfa2V5KHJzYS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgZC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgdHJhbnNmZXJyZWQgdG8gT3BlblNTTAorICAg
ICAgICBkLnJlbGVhc2UoKTsKKworICAgICAgICBhdXRvIHAgPSBjb252ZXJ0VG9CaWdOdW1iZXIo
a2V5RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICAgICAgYXV0byBxID0g
Y29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkucHJpbWVGYWN0b3Ip
OworICAgICAgICBpZiAoIXAgfHwgIXEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICBpZiAoIVJTQV9zZXQwX2ZhY3RvcnMocnNhLmdldCgpLCBwLmdldCgpLCBxLmdldCgp
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgICAgIC8vIE93bmVyc2hpcCB0
cmFuc2ZlcnJlZCB0byBPcGVuU1NMCisgICAgICAgIHAucmVsZWFzZSgpOworICAgICAgICBxLnJl
bGVhc2UoKTsKKwogICAgICAgICAvLyBXZSBzZXQgZG1wMSwgZG1wcTEsIGFuZCBpcW1wIG1lbWJl
ciBvZiB0aGUgUlNBIHN0cnVjdCBpZiB0aGUga2V5RGF0YSBoYXMgY29ycmVzcG9uZGluZyBkYXRh
LgogCiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAgICAgICBpZiAoIWtleURh
dGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByc2EtPmRtcDEgPSBjb252ZXJ0VG9CaWdOdW1iZXIocnNhLT5kbXAxLCBrZXlEYXRhLmZp
cnN0UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAgICBhdXRvIGRtcDEgPSAo
IWtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudC5pc0VtcHR5KCkpID8g
Y29udmVydFRvQmlnTnVtYmVyKGtleURhdGEuZmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBv
bmVudCkgOiBudWxscHRyOwogICAgICAgICAvLyBkbXExIC0tIGQgbW9kIChxIC0gMSkKLSAgICAg
ICAgaWYgKCFrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNSVEV4cG9uZW50LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJzYS0+ZG1xMSA9IGNvbnZlcnRUb0JpZ051bWJlcihyc2EtPmRt
cTEsIGtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOworICAgICAg
ICBhdXRvIGRtcTEgPSAoIWtleURhdGEuc2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25l
bnQuaXNFbXB0eSgpKSA/IGNvbnZlcnRUb0JpZ051bWJlcihrZXlEYXRhLnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVEV4cG9uZW50KSA6IG51bGxwdHI7CiAgICAgICAgIC8vIGlxbXAgLS0gcV4o
LTEpIG1vZCBwCi0gICAgICAgIGlmICgha2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JD
UlRDb2VmZmljaWVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByc2EtPmlxbXAgPSBjb252ZXJ0
VG9CaWdOdW1iZXIocnNhLT5pcW1wLCBrZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZhY3RvckNS
VENvZWZmaWNpZW50KTsKKyAgICAgICAgYXV0byBpcW1wID0gKCFrZXlEYXRhLnNlY29uZFByaW1l
SW5mbygpLmZhY3RvckNSVENvZWZmaWNpZW50LmlzRW1wdHkoKSkgPyBjb252ZXJ0VG9CaWdOdW1i
ZXIoa2V5RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCkgOiBudWxs
cHRyOworCisgICAgICAgIGlmICghUlNBX3NldDBfY3J0X3BhcmFtcyhyc2EuZ2V0KCksIGRtcDEu
Z2V0KCksIGRtcTEuZ2V0KCksIGlxbXAuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgLy8gT3duZXJzaGlwIHRyYW5zZmVycmVkIHRvIE9wZW5TU0wKKyAgICAg
ICAgZG1wMS5yZWxlYXNlKCk7CisgICAgICAgIGRtcTEucmVsZWFzZSgpOworICAgICAgICBpcW1w
LnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZ
X25ldygpKTsKQEAgLTE2OCw3ICsxOTgsNyBAQCB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBleHBvbmVudCA9IEJJR05VTVB0cihjb252
ZXJ0VG9CaWdOdW1iZXIobnVsbHB0ciwgcHVibGljRXhwb25lbnQpKTsKKyAgICBhdXRvIGV4cG9u
ZW50ID0gY29udmVydFRvQmlnTnVtYmVyKHB1YmxpY0V4cG9uZW50KTsKICAgICBhdXRvIHByaXZh
dGVSU0EgPSBSU0FQdHIoUlNBX25ldygpKTsKICAgICBpZiAoIWV4cG9uZW50IHx8IFJTQV9nZW5l
cmF0ZV9rZXlfZXgocHJpdmF0ZVJTQS5nZXQoKSwgbW9kdWx1c0xlbmd0aCwgZXhwb25lbnQuZ2V0
KCksIG51bGxwdHIpIDw9IDApIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CkBAIC0yMDUs
NyArMjM1LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtp
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmkKIAogICAgIC8vIFdlIHVzZSBkMmlf
UFVCS0VZKCkgdG8gaW1wb3J0IGEgcHVibGljIGtleS4KICAgICBhdXRvIHBrZXkgPSBFdnBQS2V5
UHRyKGQyaV9QVUJLRVkobnVsbHB0ciwgJnB0ciwga2V5RGF0YS5zaXplKCkpKTsKLSAgICBpZiAo
IXBrZXkgfHwgRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBfUEtFWV9SU0EpCisgICAg
aWYgKCFwa2V5IHx8IEVWUF9QS0VZX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX1JTQSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tl
eVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIFdURk1vdmUocGtleSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpKTsKQEAgLTIyMiw3ICsyNTIsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gcGtleSA9IEV2cFBL
ZXlQdHIoRVZQX1BLQ1M4MlBLRVkocDhpbmYuZ2V0KCkpKTsKLSAgICBpZiAoIXBrZXkgfHwgRVZQ
X1BLRVlfdHlwZShwa2V5LT50eXBlKSAhPSBFVlBfUEtFWV9SU0EpCisgICAgaWYgKCFwa2V5IHx8
IEVWUF9QS0VZX2lkKHBrZXkuZ2V0KCkpICE9IEVWUF9QS0VZX1JTQSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlm
aWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFo
YXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKSk7CkBAIC0yNzAsOCArMzAwLDE0IEBAIGF1dG8gQ3J5cHRvS2V5UlNBOjphbGdvcml0
aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KIHsKICAgICBSU0EqIHJzYSA9IEVWUF9QS0VZX2dl
dDBfUlNBKHBsYXRmb3JtS2V5KCkpOwogCi0gICAgYXV0byBtb2R1bHVzTGVuZ3RoID0gcnNhID8g
Qk5fbnVtX2J5dGVzKHJzYS0+bikgKiA4IDogMDsKLSAgICBhdXRvIHB1YmxpY0V4cG9uZW50ID0g
cnNhID8gY29udmVydFRvQnl0ZXMocnNhLT5lKSA6IFZlY3Rvcjx1aW50OF90PiB7IH07CisgICAg
YXV0byBtb2R1bHVzTGVuZ3RoID0gZ2V0UlNBTW9kdWx1c0xlbmd0aChyc2EpOworICAgIFZlY3Rv
cjx1aW50OF90PiBwdWJsaWNFeHBvbmVudDsKKworICAgIGlmIChyc2EpIHsKKyAgICAgICAgY29u
c3QgQklHTlVNKiBlOworICAgICAgICBSU0FfZ2V0MF9rZXkocnNhLCBudWxscHRyLCAmZSwgbnVs
bHB0cik7CisgICAgICAgIHB1YmxpY0V4cG9uZW50ID0gY29udmVydFRvQnl0ZXMoZSk7CisgICAg
fQogCiAgICAgaWYgKG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKSB7CiAgICAgICAgIENyeXB0
b1JzYUhhc2hlZEtleUFsZ29yaXRobSByZXN1bHQ7CkBAIC0yOTUsNTUgKzMzMSw3MCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnRE
YXRhKCkgY29uc3QKICAgICBpZiAoIXJzYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAg
ICBjb25zdCBCSUdOVU0qIG47CisgICAgY29uc3QgQklHTlVNKiBlOworICAgIGNvbnN0IEJJR05V
TSogZDsKKyAgICBSU0FfZ2V0MF9rZXkocnNhLCAmbiwgJmUsICZkKTsKKwogICAgIHN3aXRjaCAo
dHlwZSgpKSB7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQdWJsaWM6CiAgICAgICAgIC8vIFdl
IG5lZWQgdGhlIHB1YmxpYyBtb2R1bHVzIGFuZCBleHBvbmVudCBmb3IgdGhlIHB1YmxpYyBrZXku
Ci0gICAgICAgIGlmICghcnNhLT5uIHx8ICFyc2EtPmUpCisgICAgICAgIGlmICghbiB8fCAhZSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNB
Q29tcG9uZW50czo6Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5dGVzKHJzYS0+biksIGNvbnZlcnRU
b0J5dGVzKHJzYS0+ZSkpOworICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6
Y3JlYXRlUHVibGljKGNvbnZlcnRUb0J5dGVzKG4pLCBjb252ZXJ0VG9CeXRlcyhlKSk7CiAgICAg
Y2FzZSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOiB7CiAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHB1
YmxpYyBtb2R1bHVzLCBleHBvbmVudCwgYW5kIHByaXZhdGUgZXhwb25lbnQsIGFzIHdlbGwgYXMg
cCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgaWYgKCFyc2EtPm4gfHwgIXJzYS0+
ZSB8fCAhcnNhLT5kIHx8ICFyc2EtPnAgfHwgIXJzYS0+cSkKKyAgICAgICAgY29uc3QgQklHTlVN
KiBwOworICAgICAgICBjb25zdCBCSUdOVU0qIHE7CisgICAgICAgIFJTQV9nZXQwX2ZhY3RvcnMo
cnNhLCAmcCwgJnEpOworCisgICAgICAgIGlmICghbiB8fCAhZSB8fCAhZCB8fCAhcCB8fCAhcSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIENyeXB0b0tleVJTQUNvbXBv
bmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsKLSAgICAgICAgZmlyc3RQcmltZUluZm8u
cHJpbWVGYWN0b3IgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPnApOworICAgICAgICBmaXJzdFByaW1l
SW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHApOwogCiAgICAgICAgIENyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87Ci0gICAgICAgIHNlY29u
ZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+cSk7CisgICAgICAg
IHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IGNvbnZlcnRUb0J5dGVzKHEpOwogCiAgICAg
ICAgIGF1dG8gY29udGV4dCA9IEJOQ3R4UHRyKEJOX0NUWF9uZXcoKSk7CisKKyAgICAgICAgY29u
c3QgQklHTlVNKiBkbXAxOworICAgICAgICBjb25zdCBCSUdOVU0qIGRtcTE7CisgICAgICAgIGNv
bnN0IEJJR05VTSogaXFtcDsKKyAgICAgICAgUlNBX2dldDBfY3J0X3BhcmFtcyhyc2EsICZkbXAx
LCAmZG1xMSwgJmlxbXApOworCiAgICAgICAgIC8vIGRtcDEgLS0gZCBtb2QgKHAgLSAxKQotICAg
ICAgICBpZiAocnNhLT5kbXAxKQotICAgICAgICAgICAgZmlyc3RQcmltZUluZm8uZmFjdG9yQ1JU
RXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhyc2EtPmRtcDEpOworICAgICAgICBpZiAoZG1wMSkK
KyAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gY29udmVydFRv
Qnl0ZXMoZG1wMSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBkbXAxID0gQklH
TlVNUHRyKEJOX25ldygpKTsKLSAgICAgICAgICAgIGF1dG8gcG0xID0gQklHTlVNUHRyKEJOX2R1
cChyc2EtPnApKTsKLSAgICAgICAgICAgIGlmIChCTl9zdWJfd29yZChwbTEuZ2V0KCksIDEpID09
IDEgJiYgQk5fbW9kKGRtcDEuZ2V0KCksIHJzYS0+ZCwgcG0xLmdldCgpLCBjb250ZXh0LmdldCgp
KSA9PSAxKQotICAgICAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50
ID0gY29udmVydFRvQnl0ZXMoZG1wMS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIGRtcDFOZXcg
PSBCSUdOVU1QdHIoQk5fbmV3KCkpOworICAgICAgICAgICAgYXV0byBwbTEgPSBCSUdOVU1QdHIo
Qk5fZHVwKHApKTsKKyAgICAgICAgICAgIGlmIChCTl9zdWJfd29yZChwbTEuZ2V0KCksIDEpID09
IDEgJiYgQk5fbW9kKGRtcDFOZXcuZ2V0KCksIGQsIHBtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkg
PT0gMSkKKyAgICAgICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9
IGNvbnZlcnRUb0J5dGVzKGRtcDFOZXcuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
ZG1xMSAtLSBkIG1vZCAocSAtIDEpCi0gICAgICAgIGlmIChyc2EtPmRtcTEpCi0gICAgICAgICAg
ICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhyc2Et
PmRtcTEpOworICAgICAgICBpZiAoZG1xMSkKKyAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5m
YWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcTEpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIGF1dG8gZG1xMSA9IEJJR05VTVB0cihCTl9uZXcoKSk7Ci0gICAgICAgICAg
ICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAocnNhLT5xKSk7Ci0gICAgICAgICAgICBpZiAo
Qk5fc3ViX3dvcmQocW0xLmdldCgpLCAxKSA9PSAxICYmIEJOX21vZChkbXExLmdldCgpLCByc2Et
PmQsIHFtMS5nZXQoKSwgY29udGV4dC5nZXQoKSkgPT0gMSkKLSAgICAgICAgICAgICAgICBzZWNv
bmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBjb252ZXJ0VG9CeXRlcyhkbXExLmdldCgp
KTsKKyAgICAgICAgICAgIGF1dG8gZG1xMU5ldyA9IEJJR05VTVB0cihCTl9uZXcoKSk7CisgICAg
ICAgICAgICBhdXRvIHFtMSA9IEJJR05VTVB0cihCTl9kdXAocSkpOworICAgICAgICAgICAgaWYg
KEJOX3N1Yl93b3JkKHFtMS5nZXQoKSwgMSkgPT0gMSAmJiBCTl9tb2QoZG1xMU5ldy5nZXQoKSwg
ZCwgcW0xLmdldCgpLCBjb250ZXh0LmdldCgpKSA9PSAxKQorICAgICAgICAgICAgICAgIHNlY29u
ZFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCA9IGNvbnZlcnRUb0J5dGVzKGRtcTFOZXcuZ2V0
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gaXFtcCAtLSBxXigtMSkgbW9kIHAKLSAgICAg
ICAgaWYgKHJzYS0+aXFtcCkKLSAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRD
b2VmZmljaWVudCA9IGNvbnZlcnRUb0J5dGVzKHJzYS0+aXFtcCk7CisgICAgICAgIGlmIChpcW1w
KQorICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVENvZWZmaWNpZW50ID0gY29u
dmVydFRvQnl0ZXMoaXFtcCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBpcW1w
ID0gQklHTlVNUHRyKEJOX21vZF9pbnZlcnNlKG51bGxwdHIsIHJzYS0+cSwgcnNhLT5wLCBjb250
ZXh0LmdldCgpKSk7Ci0gICAgICAgICAgICBpZiAoaXFtcCkKLSAgICAgICAgICAgICAgICBzZWNv
bmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQgPSBjb252ZXJ0VG9CeXRlcyhpcW1wLmdl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gaXFtcE5ldyA9IEJJR05VTVB0cihCTl9tb2RfaW52ZXJz
ZShudWxscHRyLCBxLCBwLCBjb250ZXh0LmdldCgpKSk7CisgICAgICAgICAgICBpZiAoaXFtcE5l
dykKKyAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQg
PSBjb252ZXJ0VG9CeXRlcyhpcW1wTmV3LmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxE
YXRhKAotICAgICAgICAgICAgY29udmVydFRvQnl0ZXMocnNhLT5uKSwgY29udmVydFRvQnl0ZXMo
cnNhLT5lKSwgY29udmVydFRvQnl0ZXMocnNhLT5kKSwKKyAgICAgICAgICAgIGNvbnZlcnRUb0J5
dGVzKG4pLCBjb252ZXJ0VG9CeXRlcyhlKSwgY29udmVydFRvQnl0ZXMoZCksCiAgICAgICAgICAg
ICBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0
b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiB7IH0pOwogICAgIH0KICAgICBk
ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNT
TFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRp
bGl0aWVzLmNwcAppbmRleCA1MDQwYmE2MWI2MzkuLmUzOWU1ZmU5YjZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAKQEAgLTEw
MCw5ICsxMDAsOSBAQCBWZWN0b3I8dWludDhfdD4gY29udmVydFRvQnl0ZXNFeHBhbmQoY29uc3Qg
QklHTlVNKiBiaWdudW0sIHNpemVfdCBtaW5pbXVtQnVmZmVyUwogICAgIHJldHVybiBieXRlczsK
IH0KIAotQklHTlVNKiBjb252ZXJ0VG9CaWdOdW1iZXIoQklHTlVNKiBiaWdudW0sIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnl0ZXMpCitCSUdOVU1QdHIgY29udmVydFRvQmlnTnVtYmVyKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIEJOX2JpbjJibihieXRlcy5k
YXRhKCksIGJ5dGVzLnNpemUoKSwgYmlnbnVtKTsKKyAgICByZXR1cm4gQklHTlVNUHRyKEJOX2Jp
bjJibihieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSwgbnVsbHB0cikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9PcGVuU1NMVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVu
U1NMVXRpbGl0aWVzLmgKaW5kZXggOWE3YmFhNjdhMTJkLi43YmI0ZWE2N2M4ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIk9wZW5TU0xDcnlwdG9VbmlxdWVQdHIuaCIKICNpbmNsdWRl
IDxvcGVuc3NsL2V2cC5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTQyLDkgKzQzLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRUb0J5dGVzKGNv
bnN0IEJJR05VTSopOwogCiBWZWN0b3I8dWludDhfdD4gY29udmVydFRvQnl0ZXNFeHBhbmQoY29u
c3QgQklHTlVNKiwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCi0vLyBJZiBhIG51bGwgcG9pbnRlciBp
cyBnaXZlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gaW50ZXJuYWxseSBh
bGxvY2F0ZXMgYSBuZXcgQklHTlVNCi0vLyBhbmQgcmV0dXJucyBpdHMgcG9pbnRlci4gT3RoZXJ3
aXNlIHRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2l2ZW4gQklHTlVNIGFuZCBkb2Vzbid0IGFsbG9j
YXRlIGEgbmV3IG9uZS4KLUJJR05VTSogY29udmVydFRvQmlnTnVtYmVyKEJJR05VTSosIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpOworQklHTlVNUHRyIGNvbnZlcnRUb0JpZ051bWJlcihj
b25zdCBWZWN0b3I8dWludDhfdD4mIGJ5dGVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Cg==
</data>
<flag name="commit-queue"
          id="488467"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>