<?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>173646</bug_id>
          
          <creation_ts>2017-06-21 06:07:44 -0700</creation_ts>
          <short_desc>[GCrypt] Implement CryptoKeyEC SPKI exports</short_desc>
          <delta_ts>2017-07-03 00:46:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
    
    <blocked>173648</blocked>
    
    <blocked>173695</blocked>
    
    <blocked>173697</blocked>
    
    <blocked>173883</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321470</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-21 06:07:44 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321474</commentid>
    <comment_count>1</comment_count>
      <attachid>313512</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-21 06:22:35 -0700</bug_when>
    <thetext>Created attachment 313512
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321477</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-21 06:36:16 -0700</bug_when>
    <thetext>Attachment 313512 did not pass style-queue:


ERROR: Source/WebCore/PAL/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321495</commentid>
    <comment_count>3</comment_count>
      <attachid>313520</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-21 08:39:20 -0700</bug_when>
    <thetext>Created attachment 313520
Patch

Ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322072</commentid>
    <comment_count>4</comment_count>
      <attachid>313520</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-22 14:58:45 -0700</bug_when>
    <thetext>Comment on attachment 313520
Patch

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

Looks good to me. Please address the following comments:

&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:146
&gt; +    int ret = asn1_der_coding(root, elementName, nullptr, &amp;length, nullptr);

I didn&apos;t see any documentation that suggests this usage. Is this a hack?

&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:166
&gt; +{

Maybe we just need the first one? Or we just don&apos;t need these two wrapper?

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:424
&gt; +        if (!PAL::TASN1::writeElement(ecParameters, &quot;&quot;, &quot;namedCurve&quot;))

I didn&apos;t see any documentation that suggests this usage. Is the next step itself sufficient?

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:446
&gt; +            auto data = PAL::TASN1::encodedData(ecParameters, &quot;&quot;);

A little bit confused that why we don&apos;t need a name for the encoded data.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:469
&gt; +    auto result = PAL::TASN1::encodedData(spki, &quot;&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322790</commentid>
    <comment_count>5</comment_count>
      <attachid>313520</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 04:05:41 -0700</bug_when>
    <thetext>Comment on attachment 313520
Patch

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

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:146
&gt;&gt; +    int ret = asn1_der_coding(root, elementName, nullptr, &amp;length, nullptr);
&gt; 
&gt; I didn&apos;t see any documentation that suggests this usage. Is this a hack?

No, this is a valid usage pattern, relying on ASN1_MEM_ERROR being returned, along with the length integer being set to the value of necessary bytes.

As used in GnuTLS:
https://gitlab.com/gnutls/gnutls/blob/master/lib/x509/x509.c#L2847

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:166
&gt;&gt; +{
&gt; 
&gt; Maybe we just need the first one? Or we just don&apos;t need these two wrapper?

OK, we should be able to use just one, and have that one already accept `const void*` as the data pointer parameter, instead of differentiating between const char* and const uint8_t*.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:424
&gt;&gt; +        if (!PAL::TASN1::writeElement(ecParameters, &quot;&quot;, &quot;namedCurve&quot;))
&gt; 
&gt; I didn&apos;t see any documentation that suggests this usage. Is the next step itself sufficient?

Yes. This call selects the `namedCurve` element in the `ECParameters` choice structure, the next one writes out the object identifier under it.

Again the example of GnuTLS:
https://gitlab.com/gnutls/gnutls/blob/master/lib/x509/key_encode.c#L263

In both calls, the default 0 value is used as the data size when calling the underlying asn1_write_value(). This differs from the GnuTLS usage as well as the documentation, but looking at the code the passed-in length value doesn&apos;t have any effect when writing out choice or object identifier values. I&apos;ll still drop the zero-length default and explicitly pass proper length values for every writeElement() call, following the documentation and GnuTLS code.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:446
&gt;&gt; +            auto data = PAL::TASN1::encodedData(ecParameters, &quot;&quot;);
&gt; 
&gt; A little bit confused that why we don&apos;t need a name for the encoded data.

The specified name is searched for in the given asn1_node through the asn1_find_node() function. But if this is a null-escaped empty string, the original asn1_node is returned, meaning in this case that encoded data of the ecParameters structure is retrieved.

http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;h=976ab38f1863845c03ed5730d91ebe0113348f79;hb=HEAD#l152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322793</commentid>
    <comment_count>6</comment_count>
      <attachid>313823</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 04:21:45 -0700</bug_when>
    <thetext>Created attachment 313823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324202</commentid>
    <comment_count>7</comment_count>
      <attachid>313520</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-29 18:13:14 -0700</bug_when>
    <thetext>Comment on attachment 313520
Patch

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

&gt;&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:146
&gt;&gt;&gt; +    int ret = asn1_der_coding(root, elementName, nullptr, &amp;length, nullptr);
&gt;&gt; 
&gt;&gt; I didn&apos;t see any documentation that suggests this usage. Is this a hack?
&gt; 
&gt; No, this is a valid usage pattern, relying on ASN1_MEM_ERROR being returned, along with the length integer being set to the value of necessary bytes.
&gt; 
&gt; As used in GnuTLS:
&gt; https://gitlab.com/gnutls/gnutls/blob/master/lib/x509/x509.c#L2847

OK. I guess I shouldn&apos;t only rely on its documentation.

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:424
&gt;&gt;&gt; +        if (!PAL::TASN1::writeElement(ecParameters, &quot;&quot;, &quot;namedCurve&quot;))
&gt;&gt; 
&gt;&gt; I didn&apos;t see any documentation that suggests this usage. Is the next step itself sufficient?
&gt; 
&gt; Yes. This call selects the `namedCurve` element in the `ECParameters` choice structure, the next one writes out the object identifier under it.
&gt; 
&gt; Again the example of GnuTLS:
&gt; https://gitlab.com/gnutls/gnutls/blob/master/lib/x509/key_encode.c#L263
&gt; 
&gt; In both calls, the default 0 value is used as the data size when calling the underlying asn1_write_value(). This differs from the GnuTLS usage as well as the documentation, but looking at the code the passed-in length value doesn&apos;t have any effect when writing out choice or object identifier values. I&apos;ll still drop the zero-length default and explicitly pass proper length values for every writeElement() call, following the documentation and GnuTLS code.

OK.

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:446
&gt;&gt;&gt; +            auto data = PAL::TASN1::encodedData(ecParameters, &quot;&quot;);
&gt;&gt; 
&gt;&gt; A little bit confused that why we don&apos;t need a name for the encoded data.
&gt; 
&gt; The specified name is searched for in the given asn1_node through the asn1_find_node() function. But if this is a null-escaped empty string, the original asn1_node is returned, meaning in this case that encoded data of the ecParameters structure is retrieved.
&gt; 
&gt; http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/parser_aux.c;h=976ab38f1863845c03ed5730d91ebe0113348f79;hb=HEAD#l152

Got you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324220</commentid>
    <comment_count>8</comment_count>
      <attachid>313823</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-29 18:43:12 -0700</bug_when>
    <thetext>Comment on attachment 313823
Patch

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

r=me. Looks good to me. Please address the following comments.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:441
&gt; +        if (!PAL::TASN1::writeElement(spki, &quot;algorithm.algorithm&quot;, &quot;1.2.840.10045.2.1&quot;, 1))

Should we use some sort of constants for &quot;1.2.840.10045.2.1&quot;? It should be frequently used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325049</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-07-03 00:44:05 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #8)
&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:441
&gt; &gt; +        if (!PAL::TASN1::writeElement(spki, &quot;algorithm.algorithm&quot;, &quot;1.2.840.10045.2.1&quot;, 1))
&gt; 
&gt; Should we use some sort of constants for &quot;1.2.840.10045.2.1&quot;? It should be
&gt; frequently used.

Filed bug #174091 to gather these in a single location. I would prefer this to do as a cleanup after the SPKI and PKCS#8 patches land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325050</commentid>
    <comment_count>10</comment_count>
      <attachid>313823</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-07-03 00:46:12 -0700</bug_when>
    <thetext>Comment on attachment 313823
Patch

Clearing flags on attachment: 313823

Committed r219064: &lt;http://trac.webkit.org/changeset/219064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325051</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-07-03 00:46:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313512</attachid>
            <date>2017-06-21 06:22:35 -0700</date>
            <delta_ts>2017-06-21 08:39:16 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-173646-20170621152233.patch</filename>
            <type>text/plain</type>
            <size>11776</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA1ZWU1MmMzYzZmNjgz
MmU0MWNlZjliYzM0MTQwYmQyOTdiNWFkYi4uOGFkZWRhYTk4MmNkZDg1YzcxYjRhZWY1OTQwYzVh
YTAyOGY2NTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBleHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3VydmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9y
bUV4cG9ydFNwa2kpOgorCiAyMDE3LTA2LTIwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBp
bXBvcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4ZGRiZTBlZjJlYTAzZjdlNzg4NzM3NjlhZmY2
OWEzMzczN2I1NmJiLi43MzE2MTZkNDI3NGJhMzUxY2ExMzJjYzg5NTlmZGVmMmU0YmFkNDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNi0yMSAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gSW1wbGVtZW50
IENyeXB0b0tleUVDIFNQS0kgZXhwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTczNjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
Y3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHA6CisgICAgICAgIChQQUw6OlRBU04xOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoUEFMOjpUQVNOMTo6ZGVjb2RlU3RydWN0dXJlKToKKyAgICAg
ICAgKFBBTDo6VEFTTjE6OmVuY29kZWREYXRhKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OndyaXRl
RWxlbWVudCk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaDoKKwogMjAx
Ny0wNi0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tleUVDIFNQS0kgaW1wb3J0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKaW5kZXggNGZkZjA1
NTE3ZTYwMTBjYjA4NDJlYzU0NTU3NjUyMzA4NTY1NzU0OC4uOTQzZWZlNzQzODU5MDExNjJlODE3
YWFkMzgwYmVlODYzYzFjZWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCkBAIC0xMDIsMTQgKzEwMiwxOSBAQCBzdGF0aWMgYXNu
MV9ub2RlIGFzbjFEZWZpbml0aW9ucygpCiAgICAgcmV0dXJuIHNfZGVmaW5pdGlvbnM7CiB9CiAK
LWJvb2wgZGVjb2RlU3RydWN0dXJlKGFzbjFfbm9kZSogcm9vdCwgY29uc3QgY2hhciogZWxlbWVu
dE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK2Jvb2wgY3JlYXRlU3RydWN0dXJl
KGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBhc24xX25vZGUqIHJvb3QpCiB7CiAgICAgaW50IHJl
dCA9IGFzbjFfY3JlYXRlX2VsZW1lbnQoYXNuMURlZmluaXRpb25zKCksIGVsZW1lbnROYW1lLCBy
b290KTsKLSAgICBpZiAocmV0ICE9IEFTTjFfU1VDQ0VTUykKKyAgICByZXR1cm4gcmV0ID09IEFT
TjFfU1VDQ0VTUzsKK30KKworYm9vbCBkZWNvZGVTdHJ1Y3R1cmUoYXNuMV9ub2RlKiByb290LCBj
b25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQorewor
ICAgIGlmICghY3JlYXRlU3RydWN0dXJlKGVsZW1lbnROYW1lLCByb290KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaW50IGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgcmV0ID0g
YXNuMV9kZXJfZGVjb2RpbmcyKHJvb3QsIGRhdGEuZGF0YSgpLCAmZGF0YVNpemUsIEFTTjFfREVD
T0RFX0ZMQUdfU1RSSUNUX0RFUiwgbnVsbHB0cik7CisgICAgaW50IHJldCA9IGFzbjFfZGVyX2Rl
Y29kaW5nMihyb290LCBkYXRhLmRhdGEoKSwgJmRhdGFTaXplLCBBU04xX0RFQ09ERV9GTEFHX1NU
UklDVF9ERVIsIG51bGxwdHIpOwogICAgIHJldHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOwogfQog
CkBAIC0xMzUsNSArMTQwLDM1IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVt
ZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hCiAgICAgcmV0dXJu
IGRhdGE7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNvZGVkRGF0YShh
c24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCit7CisgICAgaW50IGxlbmd0
aCA9IDA7CisgICAgaW50IHJldCA9IGFzbjFfZGVyX2NvZGluZyhyb290LCBlbGVtZW50TmFtZSwg
bnVsbHB0ciwgJmxlbmd0aCwgbnVsbHB0cik7CisgICAgaWYgKHJldCAhPSBBU04xX01FTV9FUlJP
UikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhKGxlbmd0aCk7CisgICAgcmV0ID0gYXNuMV9kZXJfY29kaW5nKHJvb3QsIGVsZW1lbnROYW1l
LCBkYXRhLmRhdGEoKSwgJmxlbmd0aCwgbnVsbHB0cik7CisgICAgaWYgKHJldCAhPSBBU04xX1NV
Q0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGF0YTsK
K30KKworYm9vbCB3cml0ZUVsZW1lbnQoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1l
bnROYW1lLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgaW50IHJl
dCA9IGFzbjFfd3JpdGVfdmFsdWUocm9vdCwgZWxlbWVudE5hbWUsIGRhdGEsIGRhdGFTaXplKTsK
KyAgICByZXR1cm4gcmV0ID09IEFTTjFfU1VDQ0VTUzsKK30KKworYm9vbCB3cml0ZUVsZW1lbnQo
YXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICBpZiAoIWRhdGFTaXplKQorICAg
ICAgICBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOworCisgICAgaW50IHJldCA9IGFzbjFfd3JpdGVf
dmFsdWUocm9vdCwgZWxlbWVudE5hbWUsIGRhdGEuZGF0YSgpLCBkYXRhU2l6ZSk7CisgICAgcmV0
dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRBU04xCiB9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L3Rhc24xL1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmgKaW5kZXggOTYzZjQ2NTA2Y2ViZDlkNmYxNWM3OWFmYjA5M2Q1NGJkMDkzNWI5
Mi4uYWRmNzRiYmFmOTVjMzA1YjFmNzg2NzM3ZWYxNzg5Mzc1YzEzMDNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKQEAgLTU1LDggKzU1
LDEyIEBAIHByaXZhdGU6CiAgICAgYXNuMV9ub2RlIG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9Owog
fTsKIAorYm9vbCBjcmVhdGVTdHJ1Y3R1cmUoY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGFzbjFf
bm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0
IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwogc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25z
dCBjaGFyKiBlbGVtZW50TmFtZSk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5j
b2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKK2Jvb2wg
d3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFTaXplID0gMCk7Citib29sIHdyaXRlRWxlbWVudChh
c24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgc2l6ZV90IGRhdGFTaXplID0gMCk7CiAKIH0gLy8gbmFtZXNwYWNlIFRBU04x
CiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggYzIyYTlkYzA5MGZiNmQ2NzY2ZmE3M2U0ODIy
ODFjY2Y4NTEwNWI3NS4uZTkzYjQ4NWI2NjI2NDJkYmIzN2IzNjc4M2RlYTUwNzY1N2I3YzhjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKQEAgLTY1LDYgKzY1LDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZU5hbWUoQ3J5
cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0
YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZUlkZW50aWZpZXIoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUg
Y3VydmUpCit7CisgICAgc3dpdGNoIChjdXJ2ZSkgeworICAgIGNhc2UgQ3J5cHRvS2V5RUM6Ok5h
bWVkQ3VydmU6OlAyNTY6CisgICAgICAgIHJldHVybiAiMS4yLjg0MC4xMDA0NS4zLjEuNyI7Cisg
ICAgY2FzZSBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDM4NDoKKyAgICAgICAgcmV0dXJuICIx
LjMuMTMyLjAuMzQiOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCiBzdGF0aWMgdW5zaWduZWQgdW5jb21wcmVzc2VkUG9pbnRTaXpl
Rm9yQ3VydmUoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3VydmUpCiB7CiAgICAgc3dpdGNoIChj
dXJ2ZSkgewpAQCAtNDAxLDkgKzQxNCw2MyBAQCB2b2lkIENyeXB0b0tleUVDOjpwbGF0Zm9ybUFk
ZEZpZWxkRWxlbWVudHMoSnNvbldlYktleSYgandrKSBjb25zdAogCiBWZWN0b3I8dWludDhfdD4g
Q3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0U3BraSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgZWNQYXJhbWV0ZXJzOworICAgIHsK
KyAgICAgICAgLy8gQ3JlYXRlIHRoZSBgRUNQYXJhbWV0ZXJzYCBzdHJ1Y3R1cmUuCisgICAgICAg
IGlmICghUEFMOjpUQVNOMTo6Y3JlYXRlU3RydWN0dXJlKCJXZWJDcnlwdG8uRUNQYXJhbWV0ZXJz
IiwgJmVjUGFyYW1ldGVycykpCisgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgLy8gU2VsZWN0IHRoZSBgbmFtZWRDdXJ2ZWAgb2JqZWN0IGlkZW50aWZp
ZXIgYXMgdGhlIHRhcmdldCBgRUNQYXJhbWV0ZXJzYCBjaG9pY2UuCisgICAgICAgIGlmICghUEFM
OjpUQVNOMTo6d3JpdGVFbGVtZW50KGVjUGFyYW1ldGVycywgIiIsICJuYW1lZEN1cnZlIikpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgRUMgY3Vy
dmUgaWRlbnRpZmllciB1bmRlciBgbmFtZWRDdXJ2ZWAuCisgICAgICAgIGlmICghUEFMOjpUQVNO
MTo6d3JpdGVFbGVtZW50KGVjUGFyYW1ldGVycywgIm5hbWVkQ3VydmUiLCBjdXJ2ZUlkZW50aWZp
ZXIobV9jdXJ2ZSkpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBQQUw6
OlRBU04xOjpTdHJ1Y3R1cmUgc3BraTsKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgYFN1
YmplY3RQdWJsaWNLZXlJbmZvYCBzdHJ1Y3R1cmUuCisgICAgICAgIGlmICghUEFMOjpUQVNOMTo6
Y3JlYXRlU3RydWN0dXJlKCJXZWJDcnlwdG8uU3ViamVjdFB1YmxpY0tleUluZm8iLCAmc3BraSkp
CisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgaWQt
ZWNQdWJsaWNLZXkgaWRlbnRpZmllciB1bmRlciBgYWxnb3JpdGhtLmFsZ29yaXRobWAuCisgICAg
ICAgIC8vIEZJWE1FOiBQZXIgc3BlY2lmaWNhdGlvbiB0aGlzIHNob3VsZCB3cml0ZSBvdXQgaWQt
ZWNESCB3aGVuIHRoZSBFQ0RIIGFsZ29yaXRobQorICAgICAgICAvLyBpcyBzcGVjaWZpZWQgZm9y
IHRoaXMgQ3J5cHRvS2V5RUMgb2JqZWN0LCBidXQgbm90IGV2ZW4gdGhlIFczQyB0ZXN0cyBleHBl
Y3QgdGhhdC4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoc3BraSwgImFs
Z29yaXRobS5hbGdvcml0aG0iLCAiMS4yLjg0MC4xMDA0NS4yLjEiKSkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBgRUNQYXJhbWV0ZXJzYCBkYXRh
IHVuZGVyIGBhbGdvcml0aG0ucGFyYW1ldGVyc2AuCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1
dG8gZGF0YSA9IFBBTDo6VEFTTjE6OmVuY29kZWREYXRhKGVjUGFyYW1ldGVycywgIiIpOworICAg
ICAgICAgICAgaWYgKCFkYXRhIHx8ICFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoc3BraSwgImFs
Z29yaXRobS5wYXJhbWV0ZXJzIiwgKmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgYHFgIHMtZXhwcmVzc2lvbiwg
d2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIHB1YmxpYyBrZXkgZGF0YS4KKyAgICAgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gcVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4obV9w
bGF0Zm9ybUtleSwgInEiLCAwKSk7CisgICAgICAgIGlmICghcVNleHApCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSBgcWAgZGF0YSwgd2hpY2ggc2hv
dWxkIGJlIGluIHRoZSB1bmNvbXByZXNzZWQgcG9pbnQgZm9ybWF0LgorICAgICAgICAvLyBWYWxp
ZGF0ZSB0aGUgZGF0YSBzaXplIGFuZCB0aGUgZmlyc3QgYnl0ZSAod2hpY2ggc2hvdWxkIGJlIDB4
MDQpLgorICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7CisgICAgICAgIGNvbnN0IGNoYXIq
IGRhdGEgPSBnY3J5X3NleHBfbnRoX2RhdGEocVNleHAsIDEsICZkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgaWYgKCFkYXRhIHx8IGRhdGFMZW5ndGggIT0gdW5jb21wcmVzc2VkUG9pbnRTaXplRm9yQ3Vy
dmUobV9jdXJ2ZSkgfHwgZGF0YVswXSAhPSAweDA0KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICAvLyBXcml0ZSBvdXQgdGhlIHB1YmxpYyBrZXkgZGF0YSB1bmRlciBgc3ViamVj
dFB1YmxpY0tleWAuCisgICAgICAgIGlmICghUEFMOjpUQVNOMTo6d3JpdGVFbGVtZW50KHNwa2ks
ICJzdWJqZWN0UHVibGljS2V5IiwgZGF0YSwgZGF0YUxlbmd0aCAqIDgpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgZW5jb2RlZCBgU3ViamVj
dFB1YmxpY0tleUluZm9gIGRhdGEgYW5kIHJldHVybiBpdC4KKyAgICBhdXRvIHJlc3VsdCA9IFBB
TDo6VEFTTjE6OmVuY29kZWREYXRhKHNwa2ksICIiKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKIH0K
IAogVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFBrY3M4KCkgY29u
c3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlZjBlYTVjNGViNGZmMjJiZTU0YTY2ZmVlZDc3OTI1MmU2Y2JjOGYzLi5hNjYz
MTVlMDljYTJiYjkxNjE4MzEzNWZhMGZiZDgxMjQ0NzZhODI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTctMDYtMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGV4cG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMDYtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBT
UEtJIGltcG9ydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMGVjNzIyMWU5NmRkOTBjZmZjYjMwMWJjZmE1YjdiZWNjZmQzZTZkYS4uNWI2OGY4NDE1NTAw
NGMxM2ExM2NmMzllNzVjMTJkMDc3Mzk0ZjhiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc1NCwyMSArNzU0LDE0IEBAIHdlYmtpdC5vcmcvYi8xMzMx
MjIgY3J5cHRvL3N1YnRsZS9hZXMtY2ZiLWltcG9ydC1yYXcta2V5Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWRlcml2ZS1iaXRzLW1hbGZvcm1l
ZC1wYXJhbWV0cnMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3Vi
dGxlL2VjZGgtZ2VuZXJhdGUtZXhwb3J0LWtleS1wa2NzOC1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVyYXRlLWV4cG9ydC1rZXkt
cGtjczgtcDM4NC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2ktcDI1Ni5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXNw
a2ktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUv
ZWNkaC1pbXBvcnQtcGtjczgta2V5LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXBrY3M4LWtleS1wMzg0Lmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBv
cnQta2V5LXBrY3M4Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1
YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZHNhLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2st
a2V5LWV4cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9ydC1zcGtpLWtleS5odG1sIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXJhdy1rZXkt
ZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1qd2sta2V5Lmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4
cG9ydC1wa2NzOC1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNy
eXB0by9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1leHBvcnQtcGtjczgta2V5LXAzODQuaHRt
bCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1z
cGtpLWtleS1leHBvcnQtc3BraS1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2Iv
MTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1zcGtpLWtleS1w
Mzg0Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2Et
ZXhwb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLWltcG9ydC1qd2sta2V5LWV4cG9ydC1wa2NzOC1r
ZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1p
bXBvcnQtandrLWtleS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQpAQCAtODA0LDcgKzc5
Nyw2IEBAIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1jZmIt
aW1wb3J0LWtleS11bndyYXAta2V5Lmh0bWwgWyBTCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0
by93b3JrZXJzL3N1YnRsZS9hZXMtY2ZiLWltcG9ydC1rZXktd3JhcC1rZXkuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLXBvc3RNZXNz
YWdlLXdvcmtlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3Jr
ZXJzL3N1YnRsZS9lYy1nZW5lcmF0ZS1leHBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWdlbmVyYXRlLWV4cG9y
dC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3Jr
ZXJzL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtlci5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9obWFj
LXBvc3RNZXNzYWdlLXdvcmtlci5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313520</attachid>
            <date>2017-06-21 08:39:20 -0700</date>
            <delta_ts>2017-06-26 04:21:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173646-20170621173918.patch</filename>
            <type>text/plain</type>
            <size>15068</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA1ZWU1MmMzYzZmNjgz
MmU0MWNlZjliYzM0MTQwYmQyOTdiNWFkYi4uYzk0ZWE0MWNlMWVkZDA0M2RiYjJhY2UzYjhhOWE3
YzA5ZTg2OWRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA2LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBleHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBleHBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgSW5pdGlhbGx5LCB0aGUgRUNQYXJhbWV0ZXJzIHN0cnVjdHVyZSBpcyBjcmVhdGVkIHNvIHRo
YXQgaXQgd2lsbCBiZSBsYXRlciBlbWJlZGRlZAorICAgICAgICBpbnRvIHRoZSBTdWJqZWN0UHVi
bGljS2V5SW5mbyBzdHJ1Y3R1cmUuIEZpcnN0IHRoZSByb290IGVsZW1lbnQgb2YgdGhpcyBzdHJ1
Y3R1cmUKKyAgICAgICAgaXMgd3JpdHRlbiBpbnRvLCBzcGVjaWZ5aW5nIG5hbWVkQ3VydmUgYXMg
dGhlIGNob3NlbiBtZW1iZXIgKGV2ZW4gaWYgb3RoZXIgY2hvaWNlcworICAgICAgICBhcmUgbm90
IHJlYWxseSBhdmFpbGFibGUpLiBXZSB0aGVuIHdyaXRlIG91dCB0aGUgb2JqZWN0IGlkZW50aWZp
ZXIgaW50byB0aGlzCisgICAgICAgIG5hbWVkQ3VydmUgbWVtYmVyIHRoYXQgcHJvcGVybHkgcmVw
cmVzZW50cyB0aGlzIGtleSdzIGN1cnZlIHR5cGUuCisKKyAgICAgICAgVGhlIFN1YmplY3RQdWJs
aWNLZXlJbmZvIHN0cnVjdHVyZSBpcyBjcmVhdGVkIG5leHQuIFdlIHdyaXRlIG91dCBpZC1lY1B1
YmxpY0tleQorICAgICAgICBpZGVudGlmaWVyIGFzIHRoZSBjaG9zZW4gYWxnb3JpdGhtIGlkZW50
aWZpZXIuIFdlYiBDcnlwdG8gc3BlY2lmaWNhdGlvbiBkZW1hbmRzCisgICAgICAgIHRoYXQgdGhl
IGlkLWVjREggaWRlbnRpZmllciBpcyB1c2VkIGluIGNhc2Ugb2YgRUNESCBrZXlzLCBidXQgbm8g
ZXhpc3RpbmcgdGVzdCBpbgorICAgICAgICB0aGUgVzNDIHRlc3Qgc3VpdGUgZXhwZWN0cyB0aGlz
LCBzbyB0aGlzIHNob3VsZCBiZSByZXZpc2l0ZWQgbGF0ZXIuIERhdGEgb2YgdGhlCisgICAgICAg
IHByZXZpb3VzbHktY29uc3RydWN0ZWQgRUNQYXJhbWV0ZXJzIHN0cnVjdHVyZSBpcyB3cml0dGVu
IG91dCBpbnRvIHRoZQorICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyJ3MgcGFyYW1ldGVycyBt
ZW1iZXIuCisKKyAgICAgICAgVGhlIGBxYCBNUEkgZGF0YSBpcyB0aGVuIHJldHJpZXZlZC4gSXRz
IHNpemUgaXMgdmFsaWRhdGVkLCBhcyB3ZWxsIGFzIHRoZSBmaXJzdAorICAgICAgICBieXRlIG9m
IGRhdGEgaW4gb3JkZXIgdG8gZW5zdXJlIHRoZSBNUEkgcmVwcmVzZW50cyBhbiB1bmNvbXByZXNz
ZWQgRUMgcG9pbnQuCisgICAgICAgIFRoZSBkYXRhIGlzIHRoZW4gd3JpdHRlbiBpbnRvIHRoZSBz
dWJqZWN0UHVibGljS2V5IG1lbWJlci4KKworICAgICAgICBGaW5hbGx5IHRoZSBlbmNvZGVkIFN1
YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZSBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJu
ZWQKKyAgICAgICAgZnJvbSB0aGUgcGxhdGZvcm1FeHBvcnRTcGtpKCkgZnVuY3Rpb24sIGNvbXBs
ZXRpb24gdGhlIGV4cG9ydCBvcGVyYXRpb24uCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRTcGtpKToKKwog
MjAxNy0wNi0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tleUVDIFNQS0kgaW1wb3J0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggOGRkYmUwZWYyZWEwM2Y3ZTc4ODczNzY5YWZmNjlhMzM3MzdiNTZiYi4uYWRj
YTdjYWY2MTEyOThlMmNhMTY4MmExYjcxMGUyZWVlNzQ0ODMwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDMgQEAKKzIwMTctMDYtMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJ
IGV4cG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYiBDcnlwdG8gdGVzdHMuCisK
KyAgICAgICAgQWRkIGZvdXIgbmV3IGxpYnRhc24xIHV0aWxpdHkgZnVuY3Rpb25zLgorCisgICAg
ICAgIGNyZWF0ZVN0cnVjdHVyZSgpIGlzIGEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIGFzbjFfY3Jl
YXRlX2VsZW1lbnQoKSwgY3JlYXRpbmcgYSBuZXcKKyAgICAgICAgQVNOLjEgc3RydWN0dXJlIGZv
ciB0aGUgc3BlY2lmaWVkIGRlZmluaXRpb24gdGhhdCdzIGxpc3RlZCBpbiBXZWJDcnlwdG8uYXNu
LiBUaGUKKyAgICAgICAgZXhpc3RpbmcgZGVjb2RlU3RydWN0dXJlKCkgaXMgbW9kaWZpZWQgdG8g
dXNlIHRoaXMgbmV3IGFkZGl0aW9uLgorCisgICAgICAgIGVuY29kZWREYXRhKCkgcmV0cmlldmVz
IHRoZSBBU04uMS1lbmNvZGVkIGRhdGEgb2YgdGhlIHNwZWNpZmllZCBlbGVtZW50IHRoYXQncwor
ICAgICAgICBsb2NhdGVkIGluIHRoZSBwYXNzZWQtaW4gYXNuMV9ub2RlLiBUaGlzIGlzIHVzZWQg
d2hlbiByZXRyaWV2aW5nIFNQS0kgb3IgUEtDUyM4CisgICAgICAgIGRhdGEgZnJvbSBmaWxsZWQt
b3V0IEFTTi4xIHN0cnVjdHVyZXMuCisKKyAgICAgICAgVHdvIG92ZXJsb2FkcyBvZiB3cml0ZUVs
ZW1lbnQoKSBhcmUgcHJvdmlkZWQuIEJvdGggd3JpdGUgcHJvdmlkZWQgZGF0YSB0byB0aGUKKyAg
ICAgICAgZ2l2ZW4gYXNuMV9ub2RlIG9iamVjdCB1bmRlciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQu
CisKKyAgICAgICAgVGhlIGZpcnN0IG92ZXJsb2FkIGFjY2VwdHMgYSBzaW1wbGUgYXJyYXkgb2Yg
Y2hhciB2YWx1ZXMsIGFsb25nIHdpdGggdGhlIG9wdGlvbmFsCisgICAgICAgIHNpemUgdmFsdWUg
dGhhdCBkZWZhdWx0cyB0byB6ZXJvLiBUaGlzIGlzIG5vcm1hbGx5IHVzZWQgZm9yIHdyaXRpbmcg
emVyby10ZXJtaW5hdGVkCisgICAgICAgIHN0YXRpYyBzdHJpbmdzLCBhbmQgaW4gdGhvc2UgY2Fz
ZXMgdGhlIHVuZGVybHlpbmcgYXNuMV93cml0ZV92YWx1ZSgpIGFsbG93cyB6ZXJvIGFzCisgICAg
ICAgIHRoZSBzcGVjaWZpZWQgc2l6ZS4KKworICAgICAgICBUaGUgc2Vjb25kIG92ZXJsb2FkIGFj
Y2VwdHMgYSBWZWN0b3I8PiBvYmplY3QgYXMgdGhlIGRhdGEgY29udGFpbmVyLCBidXQgYWdhaW4g
YWxzbworICAgICAgICBwcm92aWRlcyB0aGUgc2l6ZSBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0
byB6ZXJvLiBJZiBubyBzaXplIGlzIHNwZWNpZmllZCwgdGhlCisgICAgICAgIFZlY3RvcidzIHNp
emUgaXMgdXNlZC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB3cml0aW5nIGRhdGEgdG8gYml0IHN0cmlu
ZyBtZW1iZXJzIG9mIGFuCisgICAgICAgIEFTTi4xIHN0cnVjdHVyZSwgd2hlcmUgdGhlIHNpemUg
YXJndW1lbnQgb2YgdGhlIGFzbjFfd3JpdGVfdmFsdWUoKSBjYWxsIGhhcyB0bworICAgICAgICBj
b250YWluIHRoZSBudW1iZXIgb2YgYml0cyAocmF0aGVyIHRoYW4gYnl0ZXMpIG9mIGRhdGEuCisK
KyAgICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHA6CisgICAgICAgIChQQUw6
OlRBU04xOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoUEFMOjpUQVNOMTo6ZGVjb2RlU3Ry
dWN0dXJlKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OmVuY29kZWREYXRhKToKKyAgICAgICAgKFBB
TDo6VEFTTjE6OndyaXRlRWxlbWVudCk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9VdGls
aXRpZXMuaDoKKwogMjAxNy0wNi0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tleUVDIFNQS0kgaW1wb3J0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5j
cHAKaW5kZXggNGZkZjA1NTE3ZTYwMTBjYjA4NDJlYzU0NTU3NjUyMzA4NTY1NzU0OC4uZmI2YWE1
ZTYyZTRiMTY4ZjM3NzFlY2YzN2Q4MGU0YjI1ZTg0YmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCkBAIC0xMDIsMTQgKzEwMiwx
OSBAQCBzdGF0aWMgYXNuMV9ub2RlIGFzbjFEZWZpbml0aW9ucygpCiAgICAgcmV0dXJuIHNfZGVm
aW5pdGlvbnM7CiB9CiAKLWJvb2wgZGVjb2RlU3RydWN0dXJlKGFzbjFfbm9kZSogcm9vdCwgY29u
c3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK2Jvb2wg
Y3JlYXRlU3RydWN0dXJlKGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBhc24xX25vZGUqIHJvb3Qp
CiB7CiAgICAgaW50IHJldCA9IGFzbjFfY3JlYXRlX2VsZW1lbnQoYXNuMURlZmluaXRpb25zKCks
IGVsZW1lbnROYW1lLCByb290KTsKLSAgICBpZiAocmV0ICE9IEFTTjFfU1VDQ0VTUykKKyAgICBy
ZXR1cm4gcmV0ID09IEFTTjFfU1VDQ0VTUzsKK30KKworYm9vbCBkZWNvZGVTdHJ1Y3R1cmUoYXNu
MV9ub2RlKiByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKQoreworICAgIGlmICghY3JlYXRlU3RydWN0dXJlKGVsZW1lbnROYW1lLCByb290
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IGRhdGFTaXplID0gZGF0YS5zaXpl
KCk7Ci0gICAgcmV0ID0gYXNuMV9kZXJfZGVjb2RpbmcyKHJvb3QsIGRhdGEuZGF0YSgpLCAmZGF0
YVNpemUsIEFTTjFfREVDT0RFX0ZMQUdfU1RSSUNUX0RFUiwgbnVsbHB0cik7CisgICAgaW50IHJl
dCA9IGFzbjFfZGVyX2RlY29kaW5nMihyb290LCBkYXRhLmRhdGEoKSwgJmRhdGFTaXplLCBBU04x
X0RFQ09ERV9GTEFHX1NUUklDVF9ERVIsIG51bGxwdHIpOwogICAgIHJldHVybiByZXQgPT0gQVNO
MV9TVUNDRVNTOwogfQogCkBAIC0xMzUsNSArMTQwLDM4IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVu
dE5hCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBlbmNvZGVkRGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCit7
CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaW50IHJldCA9IGFzbjFfZGVyX2NvZGluZyhyb290
LCBlbGVtZW50TmFtZSwgbnVsbHB0ciwgJmxlbmd0aCwgbnVsbHB0cik7CisgICAgaWYgKHJldCAh
PSBBU04xX01FTV9FUlJPUikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKGxlbmd0aCk7CisgICAgcmV0ID0gYXNuMV9kZXJfY29kaW5nKHJv
b3QsIGVsZW1lbnROYW1lLCBkYXRhLmRhdGEoKSwgJmxlbmd0aCwgbnVsbHB0cik7CisgICAgaWYg
KHJldCAhPSBBU04xX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gZGF0YTsKK30KKworYm9vbCB3cml0ZUVsZW1lbnQoYXNuMV9ub2RlIHJvb3QsIGNv
bnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
Cit7CisgICAgLy8gZGF0YVNpemUgZGVmYXVsdHMgdG8gMCwgd2hpY2ggaXMgZmluZSB3aGVuIGRh
dGEgaXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICAgIGludCByZXQgPSBhc24xX3dyaXRl
X3ZhbHVlKHJvb3QsIGVsZW1lbnROYW1lLCBkYXRhLCBkYXRhU2l6ZSk7CisgICAgcmV0dXJuIHJl
dCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKK2Jvb2wgd3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290
LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBz
aXplX3QgZGF0YVNpemUpCit7CisgICAgLy8gSWYgdGhlIGRhdGEgc2l6ZSBpc24ndCBzcGVjaWZp
ZWQgKGxpa2UgaW4gdGhlIGNhc2Ugb2Ygd3JpdGluZyBiaXQgc3RyaW5ncywgd2hlcmUgdGhlIHNp
emUKKyAgICAvLyBvZiB0aGUgVmVjdG9yIG9iamVjdCBpcyBtdWx0aXBsaWVkIGJ5IDgpLCBmYWxs
IGJhY2sgdG8gdGhlIFZlY3RvcidzIGRhdGEgc2l6ZS4KKyAgICBpZiAoIWRhdGFTaXplKQorICAg
ICAgICBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOworCisgICAgaW50IHJldCA9IGFzbjFfd3JpdGVf
dmFsdWUocm9vdCwgZWxlbWVudE5hbWUsIGRhdGEuZGF0YSgpLCBkYXRhU2l6ZSk7CisgICAgcmV0
dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRBU04xCiB9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L3Rhc24xL1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmgKaW5kZXggOTYzZjQ2NTA2Y2ViZDlkNmYxNWM3OWFmYjA5M2Q1NGJkMDkzNWI5
Mi4uYWRmNzRiYmFmOTVjMzA1YjFmNzg2NzM3ZWYxNzg5Mzc1YzEzMDNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKQEAgLTU1LDggKzU1
LDEyIEBAIHByaXZhdGU6CiAgICAgYXNuMV9ub2RlIG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9Owog
fTsKIAorYm9vbCBjcmVhdGVTdHJ1Y3R1cmUoY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGFzbjFf
bm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0
IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOwogc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25z
dCBjaGFyKiBlbGVtZW50TmFtZSk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5j
b2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKK2Jvb2wg
d3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFTaXplID0gMCk7Citib29sIHdyaXRlRWxlbWVudChh
c24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgc2l6ZV90IGRhdGFTaXplID0gMCk7CiAKIH0gLy8gbmFtZXNwYWNlIFRBU04x
CiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggYzIyYTlkYzA5MGZiNmQ2NzY2ZmE3M2U0ODIy
ODFjY2Y4NTEwNWI3NS4uYWVkNmIyY2U5ZDAzNDJlNzhjNTkwZTljYmE4YWFjOTkxZjNmZTgwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKQEAgLTY1LDYgKzY1LDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZU5hbWUoQ3J5
cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3VydmUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0
YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZUlkZW50aWZpZXIoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUg
Y3VydmUpCit7CisgICAgc3dpdGNoIChjdXJ2ZSkgeworICAgIGNhc2UgQ3J5cHRvS2V5RUM6Ok5h
bWVkQ3VydmU6OlAyNTY6CisgICAgICAgIHJldHVybiAiMS4yLjg0MC4xMDA0NS4zLjEuNyI7Cisg
ICAgY2FzZSBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDM4NDoKKyAgICAgICAgcmV0dXJuICIx
LjMuMTMyLjAuMzQiOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCiBzdGF0aWMgdW5zaWduZWQgdW5jb21wcmVzc2VkUG9pbnRTaXpl
Rm9yQ3VydmUoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3VydmUpCiB7CiAgICAgc3dpdGNoIChj
dXJ2ZSkgewpAQCAtNDAxLDkgKzQxNCw2MyBAQCB2b2lkIENyeXB0b0tleUVDOjpwbGF0Zm9ybUFk
ZEZpZWxkRWxlbWVudHMoSnNvbldlYktleSYgandrKSBjb25zdAogCiBWZWN0b3I8dWludDhfdD4g
Q3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0U3BraSgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgZWNQYXJhbWV0ZXJzOworICAgIHsK
KyAgICAgICAgLy8gQ3JlYXRlIHRoZSBgRUNQYXJhbWV0ZXJzYCBzdHJ1Y3R1cmUuCisgICAgICAg
IGlmICghUEFMOjpUQVNOMTo6Y3JlYXRlU3RydWN0dXJlKCJXZWJDcnlwdG8uRUNQYXJhbWV0ZXJz
IiwgJmVjUGFyYW1ldGVycykpCisgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgLy8gU2VsZWN0IHRoZSBgbmFtZWRDdXJ2ZWAgb2JqZWN0IGlkZW50aWZp
ZXIgYXMgdGhlIHRhcmdldCBgRUNQYXJhbWV0ZXJzYCBjaG9pY2UuCisgICAgICAgIGlmICghUEFM
OjpUQVNOMTo6d3JpdGVFbGVtZW50KGVjUGFyYW1ldGVycywgIiIsICJuYW1lZEN1cnZlIikpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgRUMgY3Vy
dmUgaWRlbnRpZmllciB1bmRlciBgbmFtZWRDdXJ2ZWAuCisgICAgICAgIGlmICghUEFMOjpUQVNO
MTo6d3JpdGVFbGVtZW50KGVjUGFyYW1ldGVycywgIm5hbWVkQ3VydmUiLCBjdXJ2ZUlkZW50aWZp
ZXIobV9jdXJ2ZSkpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBQQUw6
OlRBU04xOjpTdHJ1Y3R1cmUgc3BraTsKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgYFN1
YmplY3RQdWJsaWNLZXlJbmZvYCBzdHJ1Y3R1cmUuCisgICAgICAgIGlmICghUEFMOjpUQVNOMTo6
Y3JlYXRlU3RydWN0dXJlKCJXZWJDcnlwdG8uU3ViamVjdFB1YmxpY0tleUluZm8iLCAmc3BraSkp
CisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgaWQt
ZWNQdWJsaWNLZXkgaWRlbnRpZmllciB1bmRlciBgYWxnb3JpdGhtLmFsZ29yaXRobWAuCisgICAg
ICAgIC8vIEZJWE1FOiBQZXIgc3BlY2lmaWNhdGlvbiB0aGlzIHNob3VsZCB3cml0ZSBvdXQgaWQt
ZWNESCB3aGVuIHRoZSBFQ0RIIGFsZ29yaXRobQorICAgICAgICAvLyBpcyBzcGVjaWZpZWQgZm9y
IHRoaXMgQ3J5cHRvS2V5RUMgb2JqZWN0LCBidXQgbm90IGV2ZW4gdGhlIFczQyB0ZXN0cyBleHBl
Y3QgdGhhdC4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoc3BraSwgImFs
Z29yaXRobS5hbGdvcml0aG0iLCAiMS4yLjg0MC4xMDA0NS4yLjEiKSkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBgRUNQYXJhbWV0ZXJzYCBkYXRh
IHVuZGVyIGBhbGdvcml0aG0ucGFyYW1ldGVyc2AuCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1
dG8gZGF0YSA9IFBBTDo6VEFTTjE6OmVuY29kZWREYXRhKGVjUGFyYW1ldGVycywgIiIpOworICAg
ICAgICAgICAgaWYgKCFkYXRhIHx8ICFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoc3BraSwgImFs
Z29yaXRobS5wYXJhbWV0ZXJzIiwgKmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgYHFgIHMtZXhwcmVzc2lvbiwg
d2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIHB1YmxpYyBrZXkgZGF0YS4KKyAgICAgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gcVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4obV9w
bGF0Zm9ybUtleSwgInEiLCAwKSk7CisgICAgICAgIGlmICghcVNleHApCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSBgcWAgZGF0YSwgd2hpY2ggc2hv
dWxkIGJlIGluIHRoZSB1bmNvbXByZXNzZWQgcG9pbnQgZm9ybWF0LgorICAgICAgICAvLyBWYWxp
ZGF0ZSB0aGUgZGF0YSBzaXplIGFuZCB0aGUgZmlyc3QgYnl0ZSAod2hpY2ggc2hvdWxkIGJlIDB4
MDQpLgorICAgICAgICBhdXRvIHFEYXRhID0gbXBpRGF0YShxU2V4cCk7CisgICAgICAgIGlmICgh
cURhdGEgfHwgcURhdGEtPnNpemUoKSAhPSB1bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2ZSht
X2N1cnZlKSB8fCBxRGF0YS0+YXQoMCkgIT0gMHgwNCkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBwdWJsaWMga2V5IGRhdGEgdW5kZXIgYHN1Ympl
Y3RQdWJsaWNLZXlgLiBCZWNhdXNlIHRoaXMgaXMgYQorICAgICAgICAvLyBiaXQgc3RyaW5nIHBh
cmFtZXRlciwgdGhlIGRhdGEgc2l6ZSBoYXMgdG8gYmUgbXVsdGlwbGllZCBieSA4LgorICAgICAg
ICBpZiAoIVBBTDo6VEFTTjE6OndyaXRlRWxlbWVudChzcGtpLCAic3ViamVjdFB1YmxpY0tleSIs
ICpxRGF0YSwgcURhdGEtPnNpemUoKSAqIDgpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgZW5jb2RlZCBgU3ViamVjdFB1YmxpY0tleUluZm9g
IGRhdGEgYW5kIHJldHVybiBpdC4KKyAgICBhdXRvIHJlc3VsdCA9IFBBTDo6VEFTTjE6OmVuY29k
ZWREYXRhKHNwa2ksICIiKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogVmVjdG9yPHVpbnQ4
X3Q+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFBrY3M4KCkgY29uc3QKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZjBl
YTVjNGViNGZmMjJiZTU0YTY2ZmVlZDc3OTI1MmU2Y2JjOGYzLi44ODhiZDI3MDA5NjhkNGQ5ZGRk
Njk4YTJhMGUxNDgwNjRkMzg2ZjJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMjEg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRd
IEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGV4cG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgIFVuc2tpcCB0ZXN0cyB0aGF0IGNvdmVyIFNQS0kgZXhwb3J0cyBvZiBFQyBr
ZXlzLgorCiAyMDE3LTA2LTIwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDBlYzcyMjFlOTZk
ZDkwY2ZmY2IzMDFiY2ZhNWI3YmVjY2ZkM2U2ZGEuLjViNjhmODQxNTUwMDRjMTNhMTNjZjM5ZTc1
YzEyZDA3NzM5NGY4YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCkBAIC03NTQsMjEgKzc1NCwxNCBAQCB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvYWVzLWNmYi1pbXBvcnQtcmF3LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1kZXJpdmUtYml0cy1tYWxmb3JtZWQtcGFyYW1ldHJzLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVy
YXRlLWV4cG9ydC1rZXktcGtjczgtcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4LXAzODQuaHRt
bCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtZ2VuZXJh
dGUtZXhwb3J0LWtleS1zcGtpLXAyNTYuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vc3VidGxlL2VjZGgtZ2VuZXJhdGUtZXhwb3J0LWtleS1zcGtpLXAzODQuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXBr
Y3M4LWtleS1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1
YnRsZS9lY2RoLWltcG9ydC1wa2NzOC1rZXktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0LWtleS1wa2NzOC5o
dG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2Vu
ZXJhdGUtZXhwb3J0LWtleS1zcGtpLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIg
Y3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtandrLWtleS1leHBvcnQtcGtj
czgta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9l
Yy1pbXBvcnQtandrLWtleS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1zcGtpLWtl
eS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1w
b3J0LXBrY3M4LWtleS1leHBvcnQtandrLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1leHBvcnQtcGtjczgta2V5
LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
LWltcG9ydC1wa2NzOC1rZXktZXhwb3J0LXBrY3M4LWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhwb3J0
LXNwa2kta2V5LXAyNTYuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8v
c3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtc3BraS1rZXktcDM4NC5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLWV4cG9ydC1rZXktbWFs
Zm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vc3VidGxlL3JzYS1pbXBvcnQtandrLWtleS1leHBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWp3ay1rZXkt
ZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KQEAgLTgwNCw3ICs3OTcsNiBAQCB3ZWJraXQu
b3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtY2ZiLWltcG9ydC1rZXktdW53
cmFwLWtleS5odG1sIFsgUwogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0
bGUvYWVzLWNmYi1pbXBvcnQta2V5LXdyYXAta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1wb3N0TWVzc2FnZS13b3JrZXIuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMt
Z2VuZXJhdGUtZXhwb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1nZW5lcmF0ZS1leHBvcnQtc3BraS1rZXkuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMt
aW1wb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0
by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS13
b3JrZXIuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313823</attachid>
            <date>2017-06-26 04:21:45 -0700</date>
            <delta_ts>2017-07-03 00:46:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173646-20170626132143.patch</filename>
            <type>text/plain</type>
            <size>13788</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJmZDRhYjJmY2JhZTU4
ZDM1ZjMxMzE1ZDdlMTQzNTRmZGU2YzcyZi4uMWU5NzM1MGJjNDE5MGRiYjJhM2RhN2YwOTdhYTMy
ODU5N2IyOTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA2LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBleHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBleHBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgSW5pdGlhbGx5LCB0aGUgRUNQYXJhbWV0ZXJzIHN0cnVjdHVyZSBpcyBjcmVhdGVkIHNvIHRo
YXQgaXQgd2lsbCBiZSBsYXRlciBlbWJlZGRlZAorICAgICAgICBpbnRvIHRoZSBTdWJqZWN0UHVi
bGljS2V5SW5mbyBzdHJ1Y3R1cmUuIEZpcnN0IHRoZSByb290IGVsZW1lbnQgb2YgdGhpcyBzdHJ1
Y3R1cmUKKyAgICAgICAgaXMgd3JpdHRlbiBpbnRvLCBzcGVjaWZ5aW5nIG5hbWVkQ3VydmUgYXMg
dGhlIGNob3NlbiBtZW1iZXIgKGV2ZW4gaWYgb3RoZXIgY2hvaWNlcworICAgICAgICBhcmUgbm90
IHJlYWxseSBhdmFpbGFibGUpLiBXZSB0aGVuIHdyaXRlIG91dCB0aGUgb2JqZWN0IGlkZW50aWZp
ZXIgaW50byB0aGlzCisgICAgICAgIG5hbWVkQ3VydmUgbWVtYmVyIHRoYXQgcHJvcGVybHkgcmVw
cmVzZW50cyB0aGlzIGtleSdzIGN1cnZlIHR5cGUuCisKKyAgICAgICAgVGhlIFN1YmplY3RQdWJs
aWNLZXlJbmZvIHN0cnVjdHVyZSBpcyBjcmVhdGVkIG5leHQuIFdlIHdyaXRlIG91dCBpZC1lY1B1
YmxpY0tleQorICAgICAgICBpZGVudGlmaWVyIGFzIHRoZSBjaG9zZW4gYWxnb3JpdGhtIGlkZW50
aWZpZXIuIFdlYiBDcnlwdG8gc3BlY2lmaWNhdGlvbiBkZW1hbmRzCisgICAgICAgIHRoYXQgdGhl
IGlkLWVjREggaWRlbnRpZmllciBpcyB1c2VkIGluIGNhc2Ugb2YgRUNESCBrZXlzLCBidXQgbm8g
ZXhpc3RpbmcgdGVzdCBpbgorICAgICAgICB0aGUgVzNDIHRlc3Qgc3VpdGUgZXhwZWN0cyB0aGlz
LCBzbyB0aGlzIHNob3VsZCBiZSByZXZpc2l0ZWQgbGF0ZXIuIERhdGEgb2YgdGhlCisgICAgICAg
IHByZXZpb3VzbHktY29uc3RydWN0ZWQgRUNQYXJhbWV0ZXJzIHN0cnVjdHVyZSBpcyB3cml0dGVu
IG91dCBpbnRvIHRoZQorICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyJ3MgcGFyYW1ldGVycyBt
ZW1iZXIuCisKKyAgICAgICAgVGhlIGBxYCBNUEkgZGF0YSBpcyB0aGVuIHJldHJpZXZlZC4gSXRz
IHNpemUgaXMgdmFsaWRhdGVkLCBhcyB3ZWxsIGFzIHRoZSBmaXJzdAorICAgICAgICBieXRlIG9m
IGRhdGEgaW4gb3JkZXIgdG8gZW5zdXJlIHRoZSBNUEkgcmVwcmVzZW50cyBhbiB1bmNvbXByZXNz
ZWQgRUMgcG9pbnQuCisgICAgICAgIFRoZSBkYXRhIGlzIHRoZW4gd3JpdHRlbiBpbnRvIHRoZSBz
dWJqZWN0UHVibGljS2V5IG1lbWJlci4KKworICAgICAgICBGaW5hbGx5IHRoZSBlbmNvZGVkIFN1
YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZSBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJu
ZWQKKyAgICAgICAgZnJvbSB0aGUgcGxhdGZvcm1FeHBvcnRTcGtpKCkgZnVuY3Rpb24sIGNvbXBs
ZXRpb24gdGhlIGV4cG9ydCBvcGVyYXRpb24uCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRTcGtpKToKKwog
MjAxNy0wNi0yNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAg
ICAgICAgUmVtb3ZlIGV4Y2Vzc2l2ZSBoZWFkZXJzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggOGRkYmUwZWYyZWEwM2Y3ZTc4ODczNzY5YWZmNjlhMzM3MzdiNTZi
Yi4uZmVhNThkZWUyZTY1OGFjYjc2YzZmM2JiZjJlOWUyMjA0NDUyMzE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDYtMjYgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlF
QyBTUEtJIGV4cG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MzY0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYiBDcnlwdG8gdGVz
dHMuCisKKyAgICAgICAgQWRkIHRocmVlIG5ldyBsaWJ0YXNuMSB1dGlsaXR5IGZ1bmN0aW9ucy4K
KworICAgICAgICBjcmVhdGVTdHJ1Y3R1cmUoKSBpcyBhIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCBh
c24xX2NyZWF0ZV9lbGVtZW50KCksIGNyZWF0aW5nIGEgbmV3CisgICAgICAgIEFTTi4xIHN0cnVj
dHVyZSBmb3IgdGhlIHNwZWNpZmllZCBkZWZpbml0aW9uIHRoYXQncyBsaXN0ZWQgaW4gV2ViQ3J5
cHRvLmFzbi4gVGhlCisgICAgICAgIGV4aXN0aW5nIGRlY29kZVN0cnVjdHVyZSgpIGlzIG1vZGlm
aWVkIHRvIHVzZSB0aGlzIG5ldyBhZGRpdGlvbi4KKworICAgICAgICBlbmNvZGVkRGF0YSgpIHJl
dHJpZXZlcyB0aGUgQVNOLjEtZW5jb2RlZCBkYXRhIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB0
aGF0J3MKKyAgICAgICAgbG9jYXRlZCBpbiB0aGUgcGFzc2VkLWluIGFzbjFfbm9kZS4gVGhpcyBp
cyB1c2VkIHdoZW4gcmV0cmlldmluZyBTUEtJIG9yIFBLQ1MjOAorICAgICAgICBkYXRhIGZyb20g
ZmlsbGVkLW91dCBBU04uMSBzdHJ1Y3R1cmVzLgorCisgICAgICAgIHdyaXRlRWxlbWVudCgpIHdy
aXRlcyB0aGUgcHJvdmlkZWQgZGF0YSB0byB0aGUgZ2l2ZW4gYXNuMV9ub2RlIG9iamVjdCB1bmRl
ciB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGVsZW1lbnQsIHVzaW5nIHRoZSBnaXZlbiBzaXplLiBU
cnVlIGlzIHJldHVybmVkIGlmIHRoaXMgb3BlcmF0aW9uIHdhcworICAgICAgICBzdWNjZXNzZnVs
LgorCisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwOgorICAgICAgICAo
UEFMOjpUQVNOMTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OmRlY29k
ZVN0cnVjdHVyZSk6CisgICAgICAgIChQQUw6OlRBU04xOjplbmNvZGVkRGF0YSk6CisgICAgICAg
IChQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQpOgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmg6CisKIDIwMTctMDYtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGlt
cG9ydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRp
ZXMuY3BwCmluZGV4IDRmZGYwNTUxN2U2MDEwY2IwODQyZWM1NDU1NzY1MjMwODU2NTc1NDguLmFj
OGFkOGJlZjVmYWMxZTdiZTM5ZTJlYzViYzNhZGRhNzY4ZWY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcApAQCAtMTAyLDE0ICsx
MDIsMTkgQEAgc3RhdGljIGFzbjFfbm9kZSBhc24xRGVmaW5pdGlvbnMoKQogICAgIHJldHVybiBz
X2RlZmluaXRpb25zOwogfQogCi1ib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3Qs
IGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiti
b29sIGNyZWF0ZVN0cnVjdHVyZShjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgYXNuMV9ub2RlKiBy
b290KQogewogICAgIGludCByZXQgPSBhc24xX2NyZWF0ZV9lbGVtZW50KGFzbjFEZWZpbml0aW9u
cygpLCBlbGVtZW50TmFtZSwgcm9vdCk7Ci0gICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCisg
ICAgcmV0dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKK2Jvb2wgZGVjb2RlU3RydWN0dXJl
KGFzbjFfbm9kZSogcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZGF0YSkKK3sKKyAgICBpZiAoIWNyZWF0ZVN0cnVjdHVyZShlbGVtZW50TmFtZSwg
cm9vdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGludCBkYXRhU2l6ZSA9IGRhdGEu
c2l6ZSgpOwotICAgIHJldCA9IGFzbjFfZGVyX2RlY29kaW5nMihyb290LCBkYXRhLmRhdGEoKSwg
JmRhdGFTaXplLCBBU04xX0RFQ09ERV9GTEFHX1NUUklDVF9ERVIsIG51bGxwdHIpOworICAgIGlu
dCByZXQgPSBhc24xX2Rlcl9kZWNvZGluZzIocm9vdCwgZGF0YS5kYXRhKCksICZkYXRhU2l6ZSwg
QVNOMV9ERUNPREVfRkxBR19TVFJJQ1RfREVSLCBudWxscHRyKTsKICAgICByZXR1cm4gcmV0ID09
IEFTTjFfU1VDQ0VTUzsKIH0KIApAQCAtMTM1LDUgKzE0MCwyNiBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVs
ZW1lbnROYQogICAgIHJldHVybiBkYXRhOwogfQogCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZW5jb2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1l
KQoreworICAgIGludCBsZW5ndGggPSAwOworICAgIGludCByZXQgPSBhc24xX2Rlcl9jb2Rpbmco
cm9vdCwgZWxlbWVudE5hbWUsIG51bGxwdHIsICZsZW5ndGgsIG51bGxwdHIpOworICAgIGlmIChy
ZXQgIT0gQVNOMV9NRU1fRVJST1IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShsZW5ndGgpOworICAgIHJldCA9IGFzbjFfZGVyX2NvZGlu
Zyhyb290LCBlbGVtZW50TmFtZSwgZGF0YS5kYXRhKCksICZsZW5ndGgsIG51bGxwdHIpOworICAg
IGlmIChyZXQgIT0gQVNOMV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK2Jvb2wgd3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290
LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFT
aXplKQoreworICAgIGludCByZXQgPSBhc24xX3dyaXRlX3ZhbHVlKHJvb3QsIGVsZW1lbnROYW1l
LCBkYXRhLCBkYXRhU2l6ZSk7CisgICAgcmV0dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRBU04xCiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKaW5kZXggOTYzZjQ2NTA2Y2Vi
ZDlkNmYxNWM3OWFmYjA5M2Q1NGJkMDkzNWI5Mi4uNjVhYWY2Y2UzOTU1M2FkNDgzNDhlZmZiYTli
YWQzYWY0ZmViM2JjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
dGFzbjEvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFz
bjEvVXRpbGl0aWVzLmgKQEAgLTU1LDggKzU1LDExIEBAIHByaXZhdGU6CiAgICAgYXNuMV9ub2Rl
IG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9OwogfTsKIAorYm9vbCBjcmVhdGVTdHJ1Y3R1cmUoY29u
c3QgY2hhciogZWxlbWVudE5hbWUsIGFzbjFfbm9kZSogcm9vdCk7CiBib29sIGRlY29kZVN0cnVj
dHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpOwogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1l
bnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSk7CitzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZW5jb2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0
IGNoYXIqIGVsZW1lbnROYW1lKTsKK2Jvb2wgd3JpdGVFbGVtZW50KGFzbjFfbm9kZSByb290LCBj
b25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
KTsKIAogfSAvLyBuYW1lc3BhY2UgVEFTTjEKIH0gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcAppbmRleCBj
MjJhOWRjMDkwZmI2ZDY3NjZmYTczZTQ4MjI4MWNjZjg1MTA1Yjc1Li41NjUyNjIyZjU5ZTMzMjJl
N2IxYmQ1MzQxYmIyNWM1M2NhNDlkNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcApAQCAtNjUsNiArNjUsMTkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIGN1cnZlTmFtZShDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZSBjdXJ2ZSkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIqIGN1cnZlSWRlbnRpZmll
cihDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZSBjdXJ2ZSkKK3sKKyAgICBzd2l0Y2ggKGN1cnZlKSB7
CisgICAgY2FzZSBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDI1NjoKKyAgICAgICAgcmV0dXJu
ICIxLjIuODQwLjEwMDQ1LjMuMS43IjsKKyAgICBjYXNlIENyeXB0b0tleUVDOjpOYW1lZEN1cnZl
OjpQMzg0OgorICAgICAgICByZXR1cm4gIjEuMy4xMzIuMC4zNCI7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyB1bnNp
Z25lZCB1bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2ZShDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2
ZSBjdXJ2ZSkKIHsKICAgICBzd2l0Y2ggKGN1cnZlKSB7CkBAIC00MDEsOSArNDE0LDYzIEBAIHZv
aWQgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyhKc29uV2ViS2V5JiBqd2sp
IGNvbnN0CiAKIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRTcGtp
KCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFBBTDo6VEFTTjE6OlN0cnVj
dHVyZSBlY1BhcmFtZXRlcnM7CisgICAgeworICAgICAgICAvLyBDcmVhdGUgdGhlIGBFQ1BhcmFt
ZXRlcnNgIHN0cnVjdHVyZS4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjpjcmVhdGVTdHJ1Y3R1
cmUoIldlYkNyeXB0by5FQ1BhcmFtZXRlcnMiLCAmZWNQYXJhbWV0ZXJzKSkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyB9OworICAgICAgICAvLyBTZWxlY3QgdGhlIGBu
YW1lZEN1cnZlYCBvYmplY3QgaWRlbnRpZmllciBhcyB0aGUgdGFyZ2V0IGBFQ1BhcmFtZXRlcnNg
IGNob2ljZS4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoZWNQYXJhbWV0
ZXJzLCAiIiwgIm5hbWVkQ3VydmUiLCAxKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgLy8gV3JpdGUgb3V0IHRoZSBFQyBjdXJ2ZSBpZGVudGlmaWVyIHVuZGVyIGBuYW1lZEN1
cnZlYC4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjp3cml0ZUVsZW1lbnQoZWNQYXJhbWV0ZXJz
LCAibmFtZWRDdXJ2ZSIsIGN1cnZlSWRlbnRpZmllcihtX2N1cnZlKSwgMSkpCisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIFBBTDo6VEFTTjE6OlN0cnVjdHVyZSBzcGtpOwor
ICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBgU3ViamVjdFB1YmxpY0tleUluZm9gIHN0cnVj
dHVyZS4KKyAgICAgICAgaWYgKCFQQUw6OlRBU04xOjpjcmVhdGVTdHJ1Y3R1cmUoIldlYkNyeXB0
by5TdWJqZWN0UHVibGljS2V5SW5mbyIsICZzcGtpKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBpZC1lY1B1YmxpY0tleSBpZGVudGlmaWVyIHVu
ZGVyIGBhbGdvcml0aG0uYWxnb3JpdGhtYC4KKyAgICAgICAgLy8gRklYTUU6IFBlciBzcGVjaWZp
Y2F0aW9uIHRoaXMgc2hvdWxkIHdyaXRlIG91dCBpZC1lY0RIIHdoZW4gdGhlIEVDREggYWxnb3Jp
dGhtCisgICAgICAgIC8vIGlzIHNwZWNpZmllZCBmb3IgdGhpcyBDcnlwdG9LZXlFQyBvYmplY3Qs
IGJ1dCBub3QgZXZlbiB0aGUgVzNDIHRlc3RzIGV4cGVjdCB0aGF0LgorICAgICAgICBpZiAoIVBB
TDo6VEFTTjE6OndyaXRlRWxlbWVudChzcGtpLCAiYWxnb3JpdGhtLmFsZ29yaXRobSIsICIxLjIu
ODQwLjEwMDQ1LjIuMSIsIDEpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAv
LyBXcml0ZSBvdXQgdGhlIGBFQ1BhcmFtZXRlcnNgIGRhdGEgdW5kZXIgYGFsZ29yaXRobS5wYXJh
bWV0ZXJzYC4KKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBkYXRhID0gUEFMOjpUQVNOMTo6
ZW5jb2RlZERhdGEoZWNQYXJhbWV0ZXJzLCAiIik7CisgICAgICAgICAgICBpZiAoIWRhdGEgfHwg
IVBBTDo6VEFTTjE6OndyaXRlRWxlbWVudChzcGtpLCAiYWxnb3JpdGhtLnBhcmFtZXRlcnMiLCBk
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSBgcWAgcy1leHByZXNzaW9uLCB3
aGljaCBzaG91bGQgY29udGFpbiB0aGUgcHVibGljIGtleSBkYXRhLgorICAgICAgICBQQUw6OkdD
cnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBxU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihtX3Bs
YXRmb3JtS2V5LCAicSIsIDApKTsKKyAgICAgICAgaWYgKCFxU2V4cCkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICAgICAgLy8gUmV0cmlldmUgdGhlIGBxYCBkYXRhLCB3aGljaCBzaG91
bGQgYmUgaW4gdGhlIHVuY29tcHJlc3NlZCBwb2ludCBmb3JtYXQuCisgICAgICAgIC8vIFZhbGlk
YXRlIHRoZSBkYXRhIHNpemUgYW5kIHRoZSBmaXJzdCBieXRlICh3aGljaCBzaG91bGQgYmUgMHgw
NCkuCisgICAgICAgIGF1dG8gcURhdGEgPSBtcGlEYXRhKHFTZXhwKTsKKyAgICAgICAgaWYgKCFx
RGF0YSB8fCBxRGF0YS0+c2l6ZSgpICE9IHVuY29tcHJlc3NlZFBvaW50U2l6ZUZvckN1cnZlKG1f
Y3VydmUpIHx8IHFEYXRhLT5hdCgwKSAhPSAweDA0KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICAvLyBXcml0ZSBvdXQgdGhlIHB1YmxpYyBrZXkgZGF0YSB1bmRlciBgc3ViamVj
dFB1YmxpY0tleWAuIEJlY2F1c2UgdGhpcyBpcyBhCisgICAgICAgIC8vIGJpdCBzdHJpbmcgcGFy
YW1ldGVyLCB0aGUgZGF0YSBzaXplIGhhcyB0byBiZSBtdWx0aXBsaWVkIGJ5IDguCisgICAgICAg
IGlmICghUEFMOjpUQVNOMTo6d3JpdGVFbGVtZW50KHNwa2ksICJzdWJqZWN0UHVibGljS2V5Iiwg
cURhdGEtPmRhdGEoKSwgcURhdGEtPnNpemUoKSAqIDgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgZW5jb2RlZCBgU3ViamVjdFB1YmxpY0tl
eUluZm9gIGRhdGEgYW5kIHJldHVybiBpdC4KKyAgICBhdXRvIHJlc3VsdCA9IFBBTDo6VEFTTjE6
OmVuY29kZWREYXRhKHNwa2ksICIiKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogVmVjdG9y
PHVpbnQ4X3Q+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFBrY3M4KCkgY29uc3QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2NWVlZTAzMTIzMDhmZWNjNTQ2NjY3NDc1MzZjYjZiNDZmNjBiOWViLi41OTU1N2I5NjU3MWYw
N2Q3MDliNTlkY2RjNWQ1YjhhYWJlOTAwZDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTct
MDYtMjYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
Q3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGV4cG9ydHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzY0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgIFVuc2tpcCB0ZXN0cyB0aGF0IGNvdmVyIFNQS0kgZXhwb3J0cyBv
ZiBFQyBrZXlzLgorCiAyMDE3LTA2LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIG1vY2sgd2VicnRjIGJhY2tlbmQgZmFjdG9yeSBh
dCBpbmplY3RlZCBidW5kbGUgcmVzZXQgdGltZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAwZWM3MjIxZTk2ZGQ5MGNmZmNiMzAxYmNmYTViN2JlY2NmZDNl
NmRhLi41YjY4Zjg0MTU1MDA0YzEzYTEzY2YzOWU3NWMxMmQwNzczOTRmOGI0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzU0LDIxICs3NTQsMTQgQEAg
d2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Flcy1jZmItaW1wb3J0LXJhdy1rZXku
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtZGVy
aXZlLWJpdHMtbWFsZm9ybWVkLXBhcmFtZXRycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4LXAyNTYu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtZ2Vu
ZXJhdGUtZXhwb3J0LWtleS1wa2NzOC1wMzg0Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS1wMjU2Lmh0
bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVy
YXRlLWV4cG9ydC1rZXktc3BraS1wMzg0Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMx
MjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9ydC1wa2NzOC1rZXktcDI1Ni5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtcGtjczgta2V5
LXAzODQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
ZHNhLWdlbmVyYXRlLWV4cG9ydC1rZXktcGtjczguaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9i
LzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0
LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvZWMtaW1wb3J0LWp3ay1rZXktZXhwb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LWp3ay1rZXktZXhwb3J0LXNw
a2kta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9l
Yy1pbXBvcnQtcmF3LWtleS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1wa2NzOC1rZXktZXhwb3J0LWp3ay1r
ZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWlt
cG9ydC1wa2NzOC1rZXktZXhwb3J0LXBrY3M4LWtleS1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1w
a2NzOC1rZXktcDM4NC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9z
dWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1zcGtpLWtleS1wMjU2Lmh0bWwgWyBTa2lw
IF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXkt
ZXhwb3J0LXNwa2kta2V5LXAzODQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vc3VidGxlL3JzYS1leHBvcnQta2V5LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWp3ay1r
ZXktZXhwb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNy
eXB0by9zdWJ0bGUvcnNhLWltcG9ydC1qd2sta2V5LWV4cG9ydC1zcGtpLWtleS5odG1sIFsgU2tp
cCBdCkBAIC04MDQsNyArNzk3LDYgQEAgd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vy
cy9zdWJ0bGUvYWVzLWNmYi1pbXBvcnQta2V5LXVud3JhcC1rZXkuaHRtbCBbIFMKIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1jZmItaW1wb3J0LWtleS13cmFw
LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1
YnRsZS9hZXMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWdlbmVyYXRlLWV4cG9ydC1wa2NzOC1rZXku
aHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUv
ZWMtZ2VuZXJhdGUtZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1l
c3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dv
cmtlcnMvc3VidGxlL2htYWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>