<?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>171222</bug_id>
          
          <creation_ts>2017-04-24 07:16:56 -0700</creation_ts>
          <short_desc>[GCrypt] RSA-OAEP support</short_desc>
          <delta_ts>2017-05-30 20:30:41 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171213</dependson>
          <blocked>133122</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>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300489</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 07:16:56 -0700</bug_when>
    <thetext>[GCrypt] RSA-OAEP support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300492</commentid>
    <comment_count>1</comment_count>
      <attachid>307974</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 07:21:46 -0700</bug_when>
    <thetext>Created attachment 307974
Patch

Still has to enable the relevant layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300493</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-24 07:26:10 -0700</bug_when>
    <thetext>Attachment 307974 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:160:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:188:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 2 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>1301544</commentid>
    <comment_count>3</comment_count>
      <attachid>308234</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-26 01:18:08 -0700</bug_when>
    <thetext>Created attachment 308234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301545</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-26 01:20:15 -0700</bug_when>
    <thetext>Attachment 308234 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:160:  CryptoAlgorithmRSA_OAEP::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:188:  CryptoAlgorithmRSA_OAEP::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 4 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>1311058</commentid>
    <comment_count>5</comment_count>
      <attachid>308234</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-20 13:35:05 -0700</bug_when>
    <thetext>Comment on attachment 308234
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:57
&gt; -void CryptoAlgorithmRSA_OAEP::platformEncrypt(std::unique_ptr&lt;CryptoAlgorithmParameters&gt;&amp;&amp;, Ref&lt;CryptoKey&gt;&amp;&amp;, Vector&lt;uint8_t&gt;&amp;&amp;, VectorCallback&amp;&amp;, ExceptionCallback&amp;&amp;, ScriptExecutionContext&amp;, WorkQueue&amp;)
&gt; +static std::optional&lt;const char*&gt; hashAlgorithmName(CryptoAlgorithmIdentifier identifier)
&gt;  {
&gt; -    notImplemented();
&gt; +    switch (identifier) {
&gt; +    case CryptoAlgorithmIdentifier::SHA_1:
&gt; +        return &quot;sha1&quot;;
&gt; +    case CryptoAlgorithmIdentifier::SHA_224:
&gt; +        return &quot;sha224&quot;;
&gt; +    case CryptoAlgorithmIdentifier::SHA_256:
&gt; +        return &quot;sha256&quot;;
&gt; +    case CryptoAlgorithmIdentifier::SHA_384:
&gt; +        return &quot;sha384&quot;;
&gt; +    case CryptoAlgorithmIdentifier::SHA_512:
&gt; +        return &quot;sha512&quot;;
&gt; +    default:
&gt; +        return std::nullopt;
&gt; +    }
&gt;  }

This is getting a bit absurd... it needs to move to a shared location.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:59
&gt; +static std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiData(gcry_sexp_t paramSexp)

This too... don&apos;t you have some utility file for stuff like this? You need one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311451</commentid>
    <comment_count>6</comment_count>
      <attachid>308234</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-22 11:22:41 -0700</bug_when>
    <thetext>Comment on attachment 308234
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:59
&gt;&gt; +static std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiData(gcry_sexp_t paramSexp)
&gt; 
&gt; This too... don&apos;t you have some utility file for stuff like this? You need one.

I&apos;ll add it after the patches land, that way it&apos;s easier to update all the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312342</commentid>
    <comment_count>7</comment_count>
      <attachid>308234</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-05-24 11:55:39 -0700</bug_when>
    <thetext>Comment on attachment 308234
Patch

Looks good to me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313661</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-30 01:27:52 -0700</bug_when>
    <thetext>Committed r217548: &lt;http://trac.webkit.org/changeset/217548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314079</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:30:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479874&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307974</attachid>
            <date>2017-04-24 07:21:46 -0700</date>
            <delta_ts>2017-04-26 01:18:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171222-20170424162145.patch</filename>
            <type>text/plain</type>
            <size>11238</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ3MDdjOTBlZWFlZjk3
NTRlNjYyMmE1NGY4NGMyZjFkOTNhNjJkZS4uMDY2NGQ1M2NhMGY4YjZmOTVmMWVmN2QyY2FmZTNm
MzkzOGE0MmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA0LTI0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBSU0Et
T0FFUCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzEyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgUlNBLU9BRVAgc3VwcG9ydCBmb3IgY29uZmlndXJhdGlvbnMgdGhhdCB1c2UgbGli
Z2NyeXB0LgorCisgICAgICAgIFRoZSBlbmNyeXB0aW9uIG9wZXJhdGlvbiBlbWJlZHMgdGhlIHBs
YWluLXRleHQgZGF0YSBpbnRvIGEgZGF0YSBzLWV4cHJlc3Npb24sCisgICAgICAgIHNwZWNpZnlp
bmcgT0FFUCBhcyB0aGUgcGFkZGluZyBtZXRob2Qgb2YgY2hvaWNlIGFuZCBhbHNvIGFkZGluZyBp
bmZvcm1hdGlvbgorICAgICAgICBhYm91dCB0aGUgaGFzaCBhbGdvcml0aG0gYW5kIGFueSBsYWJl
bCBkYXRhLiBUaGlzIGlzIHRoZW4gcGFzc2VkIHRvIHRoZQorICAgICAgICBnY3J5X3BrX2VuY3J5
cHQoKSBjYWxsIHRvZ2V0aGVyIHdpdGggdGhlIHByb3ZpZGVkIGtleSwgcmV0dXJuaW5nIHRoZSBl
bmMtdmFsCisgICAgICAgIHMtZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgY2lw
aGVyIHRleHQuIFRoYXQncyByZXRyaWV2ZWQgZnJvbSB0aGUKKyAgICAgICAgcmVsZXZhbnQgTVBJ
IGFuZCByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgorCisgICAgICAgIFRoZSBkZWNyeXB0aW9uIG9w
ZXJhdGlvbiBlbWJlZHMgdGhlIGNpcGhlci10ZXh0IGRhdGEgaW50byBhbiBlbmMtdmFsCisgICAg
ICAgIHMtZXhwcmVzc2lvbiwgYWdhaW4gc3BlY2lmeWluZyB0aGUgaGFzaCBhbGdvcml0aG0gYW5k
IGFsc28gZmlsbGluZyBpbiBhbnkKKyAgICAgICAgbGFiZWwgZGF0YS4gVGhpcyBpcyB0aGVuIHBh
c3NlZCwgYWxvbmcgd2l0aCB0aGUga2V5LCB0byB0aGUgZ2NyeV9wa19kZWNyeXB0KCkKKyAgICAg
ICAgY2FsbC4gVGhlIHJldHVybmVkIGRhdGEgcy1leHByZXNzaW9uIGNvbnRhaW5zIHRoZSBkZWNy
eXB0ZWQgcGxhaW4tdGV4dCBkYXRhCisgICAgICAgIGluc2lkZSB0aGUgJ3ZhbHVlJyBNUEksIGZy
b20gd2hpY2ggdGhpcyBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQgdG8gdGhlCisgICAg
ICAgIGNhbGxlci4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gdGhlIHJldmVsYW50IHRlc3Rz
IGFyZSBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkIC0tIFRPRE8uCisKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Omhhc2hBbGdvcml0aG1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Om1waURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5
cHREZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09B
RVA6OnBsYXRmb3JtRGVjcnlwdCk6CisKIDIwMTctMDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MTU2NTcgYW5kIHIyMTU2NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCmluZGV4IGJlNGJl
M2JkODVhYjYxOWJlNWJmNTY1Njg1OGY1ZWI0OWE0ZDhiZGEuLjRlOTMxYmRjNDgyYjY4NmEzMTQ1
MjkxMjNiODFiMjVlNWYxODMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCkBAIC0y
OCwxOSArMjgsMTg5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0Eu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0
aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6cGxhdGZvcm1FbmNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdv
cmtRdWV1ZSYpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRo
bU5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgcmV0dXJuICJzaGExIjsKKyAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgICAgIHJldHVybiAi
c2hhMjI0IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Cisg
ICAgICAgIHJldHVybiAic2hhMjU2IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8zODQ6CisgICAgICAgIHJldHVybiAic2hhMzg0IjsKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CisgICAgICAgIHJldHVybiAic2hhNTEyIjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIH0KIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8
dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhl
IHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllN
UElfRk1UX1VTRykpOworICAgIGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAvLyBRdWVyeSB0aGUgZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkg
cHJlcGFyZSB0aGUgYnVmZmVyLgorICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5
X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIs
IDAsICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBN
UEkgZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90
PiBvdXRwdXQoZGF0YUxlbmd0aCk7CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJ
X0ZNVF9VU0csIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJ
KTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hB
bGdvcml0aG1JZGVudGlmaWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGxhYmVsVmVjdG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKK3sK
KyAgICAvLyBFbWJlZCB0aGUgcGxhaW4tdGV4dCBkYXRhIGluIGEgZGF0YSBzLWV4cHJlc3Npb24g
dXNpbmcgT0FFUCBwYWRkaW5nLgorICAgIC8vIEVtcHR5IGxhYmVsIGRhdGEgaXMgcHJvcGVybHkg
aGFuZGxlZCBieSBnY3J5X3NleHBfYnVpbGQoKS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfc2V4cF90PiBkYXRhU2V4cDsKKyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0g
aGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAo
IXNoYUFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAg
ICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0
ciwgIihkYXRhKGZsYWdzIG9hZXApKGhhc2gtYWxnbyAlcykobGFiZWwgJWIpKHZhbHVlICViKSki
LAorICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgbGFiZWxWZWN0b3Iuc2l6ZSgpLCBsYWJlbFZl
Y3Rvci5kYXRhKCksIHBsYWluVGV4dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCkpOworICAgICAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbmNyeXB0IGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQg
a2V5LiBUaGUgcmV0dXJuZWQgcy1leHByZXNzaW9uIGlzIG9mIHRoaXMgZm9ybToKKyAgICAvLyAo
ZW5jLXZhbAorICAgIC8vICAgKGZsYWdzIG9hZXApCisgICAgLy8gICAocnNhCisgICAgLy8gICAg
IChhIGEtbXBpKSkpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gY2lwaGVy
U2V4cDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNpcGhlclNl
eHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUg
ZW1iZWRkZWQgYSBpbnRlZ2VyLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IGFTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGNpcGhlclNleHAsICJhIiwgMCkpOworICAgIGlm
ICghYVNleHApCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gbXBp
RGF0YShhU2V4cCk7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Z2NyeXB0RGVjcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVs
VmVjdG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCit7CisgICAgLy8gRW1i
ZWQgdGhlIGNpcGhlci10ZXh0IGRhdGEgaW4gYW4gZW5jLXZhbCBzLWV4cHJlc3Npb24gdXNpbmcg
T0FFUCBwYWRkaW5nLgorICAgIC8vIEVtcHR5IGxhYmVsIGRhdGEgaXMgcHJvcGVybHkgaGFuZGxl
ZCBieSBnY3J5X3NleHBfYnVpbGQoKS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4
cF90PiBlbmNWYWxTZXhwOworICAgIHsKKyAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNo
QWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghc2hh
QWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBn
Y3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmVuY1ZhbFNleHAsIG51bGxwdHIs
ICIoZW5jLXZhbChmbGFncyBvYWVwKShoYXNoLWFsZ28gJXMpKGxhYmVsICViKShyc2EoYSAlYikp
KSIsCisgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rvci5zaXplKCksIGxhYmVs
VmVjdG9yLmRhdGEoKSwgY2lwaGVyVGV4dC5zaXplKCksIGNpcGhlclRleHQuZGF0YSgpKTsKKyAg
ICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRGVjcnlwdCBkYXRhIHdpdGggdGhlIHByb3Zp
ZGVkIGtleS4gVGhlIHJldHVybmVkIHMtZXhwcmVzc2lvbiBpcyBvZiB0aGlzIGZvcm06CisgICAg
Ly8gKGRhdGEKKyAgICAvLyAgIChmbGFncyBvYWVwKQorICAgIC8vICAgKHZhbHVlIGJsb2NrKSkK
KyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwbGFpblNleHA7CisgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAs
IGtleVNleHApOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgfQorCisgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCB2YWx1
ZSBpbnRlZ2VyLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHZhbHVlU2V4
cChnY3J5X3NleHBfZmluZF90b2tlbihwbGFpblNleHAsICJ2YWx1ZSIsIDApKTsKKyAgICBpZiAo
IXZhbHVlU2V4cCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBt
cGlEYXRhKHZhbHVlU2V4cCk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBs
YXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxh
aW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBX
VEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvJiByc2FQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRl
cnMpOworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNh
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQ
YXJhbWV0ZXJzLmxhYmVsVmVjdG9yKCksIHBsYWluVGV4dCk7CisgICAgICAgICAgICBpZiAoIW91
dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3Ip
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1
dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
K30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxD
cnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sK
KyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3Bh
cmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhl
clRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7CisKKyAg
ICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRo
bUlkZW50aWZpZXIoKSwgcnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxW
ZWN0b3IoKSwgY2lwaGVyVGV4dCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJT
QSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2Fs
bGJhY2smJikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308234</attachid>
            <date>2017-04-26 01:18:08 -0700</date>
            <delta_ts>2017-05-20 13:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171222-20170426101806.patch</filename>
            <type>text/plain</type>
            <size>14365</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA1NmExYjk2MjUxOTgw
NGM2MTkzOWVhM2E1YzM5MzViZDgxMGM2YS4uZDlmZDY1OTdiM2M1YTNlMzJjNzk5MTQ2N2VhMGRj
NTM1YWFkMWNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE3LTA0LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR0NyeXB0XSBSU0Et
T0FFUCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzEyMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgUlNBLU9BRVAgc3VwcG9ydCBmb3IgY29uZmlndXJhdGlvbnMgdGhhdCB1c2UgbGli
Z2NyeXB0LgorCisgICAgICAgIFRoZSBlbmNyeXB0aW9uIG9wZXJhdGlvbiBlbWJlZHMgdGhlIHBs
YWluLXRleHQgZGF0YSBpbnRvIGEgZGF0YSBzLWV4cHJlc3Npb24sCisgICAgICAgIHNwZWNpZnlp
bmcgT0FFUCBhcyB0aGUgcGFkZGluZyBtZXRob2Qgb2YgY2hvaWNlIGFuZCBhbHNvIGFkZGluZyBp
bmZvcm1hdGlvbgorICAgICAgICBhYm91dCB0aGUgaGFzaCBhbGdvcml0aG0gYW5kIGFueSBsYWJl
bCBkYXRhLiBUaGlzIGlzIHRoZW4gcGFzc2VkIHRvIHRoZQorICAgICAgICBnY3J5X3BrX2VuY3J5
cHQoKSBjYWxsIHRvZ2V0aGVyIHdpdGggdGhlIHByb3ZpZGVkIGtleSwgcmV0dXJuaW5nIHRoZSBl
bmMtdmFsCisgICAgICAgIHMtZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgY2lw
aGVyIHRleHQuIFRoYXQncyByZXRyaWV2ZWQgZnJvbSB0aGUKKyAgICAgICAgcmVsZXZhbnQgTVBJ
IGFuZCByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgorCisgICAgICAgIFRoZSBkZWNyeXB0aW9uIG9w
ZXJhdGlvbiBlbWJlZHMgdGhlIGNpcGhlci10ZXh0IGRhdGEgaW50byBhbiBlbmMtdmFsCisgICAg
ICAgIHMtZXhwcmVzc2lvbiwgYWdhaW4gc3BlY2lmeWluZyB0aGUgaGFzaCBhbGdvcml0aG0gYW5k
IGFsc28gZmlsbGluZyBpbiBhbnkKKyAgICAgICAgbGFiZWwgZGF0YS4gVGhpcyBpcyB0aGVuIHBh
c3NlZCwgYWxvbmcgd2l0aCB0aGUga2V5LCB0byB0aGUgZ2NyeV9wa19kZWNyeXB0KCkKKyAgICAg
ICAgY2FsbC4gVGhlIHJldHVybmVkIGRhdGEgcy1leHByZXNzaW9uIGNvbnRhaW5zIHRoZSBkZWNy
eXB0ZWQgcGxhaW4tdGV4dCBkYXRhCisgICAgICAgIGluc2lkZSB0aGUgJ3ZhbHVlJyBNUEksIGZy
b20gd2hpY2ggdGhpcyBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQgdG8gdGhlCisgICAg
ICAgIGNhbGxlci4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gdGhlIHJldmVsYW50IHRlc3Rz
IGFyZSBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLCBhcGFydCBmcm9tCisgICAgICAgIHRoZSBv
bmVzIHVzaW5nIFBLU0MjOCBhbmQgU1BLSSBmb3JtYXRzLgorCisgICAgICAgICogY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYXNoQWxnb3JpdGhtTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjptcGlEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdjcnlwdEVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0RGVj
cnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZv
cm1FbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpw
bGF0Zm9ybURlY3J5cHQpOgorCisyMDE3LTA0LTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KKwogICAgICAgICBbR0NyeXB0XSBDcnlwdG9LZXlSU0E6IGltcGxlbWVudCBj
cmVhdGUoKSwga2V5U2l6ZUluQml0cygpLCBidWlsZEFsZ29yaXRobSgpLCBleHBvcnREYXRhKCkK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxMwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCmluZGV4IGJlNGJlM2JkODVhYjYxOWJlNWJmNTY1
Njg1OGY1ZWI0OWE0ZDhiZGEuLjRlOTMxYmRjNDgyYjY4NmEzMTQ1MjkxMjNiODFiMjVlNWYxODMz
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVBHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCkBAIC0yOCwxOSArMjgsMTg5IEBACiAK
ICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxl
Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1FbmNy
eXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5
cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxjb25zdCBjaGFyKj4gaGFzaEFsZ29yaXRobU5hbWUoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
c3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMToKKyAgICAgICAgcmV0dXJuICJzaGExIjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8yMjQ6CisgICAgICAgIHJldHVybiAic2hhMjI0IjsKKyAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CisgICAgICAgIHJldHVybiAic2hh
MjU2IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAg
ICAgIHJldHVybiAic2hhMzg0IjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV81MTI6CisgICAgICAgIHJldHVybiAic2hhNTEyIjsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURh
dGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
Ly8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5h
bWUgbXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1Q
SShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOworICAg
IGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBR
dWVyeSB0aGUgZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVmZmVy
LgorICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBw
YXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJv
cGVybHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxlbmd0
aCk7CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1dC5k
YXRhKCksIG91dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBv
dXRwdXQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
LCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9y
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKK3sKKyAgICAvLyBFbWJlZCB0aGUg
cGxhaW4tdGV4dCBkYXRhIGluIGEgZGF0YSBzLWV4cHJlc3Npb24gdXNpbmcgT0FFUCBwYWRkaW5n
LgorICAgIC8vIEVtcHR5IGxhYmVsIGRhdGEgaXMgcHJvcGVybHkgaGFuZGxlZCBieSBnY3J5X3Nl
eHBfYnVpbGQoKS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBkYXRhU2V4
cDsKKyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0gaGFzaEFsZ29yaXRobU5hbWUo
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXNoYUFsZ29yaXRobSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZ2NyeV9lcnJvcl90IGVy
cm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIG9h
ZXApKGhhc2gtYWxnbyAlcykobGFiZWwgJWIpKHZhbHVlICViKSkiLAorICAgICAgICAgICAgKnNo
YUFsZ29yaXRobSwgbGFiZWxWZWN0b3Iuc2l6ZSgpLCBsYWJlbFZlY3Rvci5kYXRhKCksIHBsYWlu
VGV4dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBFbmNyeXB0IGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQga2V5LiBUaGUgcmV0dXJuZWQg
cy1leHByZXNzaW9uIGlzIG9mIHRoaXMgZm9ybToKKyAgICAvLyAoZW5jLXZhbAorICAgIC8vICAg
KGZsYWdzIG9hZXApCisgICAgLy8gICAocnNhCisgICAgLy8gICAgIChhIGEtbXBpKSkpCisgICAg
UEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gY2lwaGVyU2V4cDsKKyAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNpcGhlclNleHAsIGRhdGFTZXhwLCBrZXlT
ZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIH0KKworICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYSBpbnRlZ2Vy
LgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGFTZXhwKGdjcnlfc2V4cF9m
aW5kX3Rva2VuKGNpcGhlclNleHAsICJhIiwgMCkpOworICAgIGlmICghYVNleHApCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gbXBpRGF0YShhU2V4cCk7Cit9CisK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBnY3J5X3NleHBf
dCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNpcGhlclRleHQpCit7CisgICAgLy8gRW1iZWQgdGhlIGNpcGhlci10ZXh0
IGRhdGEgaW4gYW4gZW5jLXZhbCBzLWV4cHJlc3Npb24gdXNpbmcgT0FFUCBwYWRkaW5nLgorICAg
IC8vIEVtcHR5IGxhYmVsIGRhdGEgaXMgcHJvcGVybHkgaGFuZGxlZCBieSBnY3J5X3NleHBfYnVp
bGQoKS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBlbmNWYWxTZXhwOwor
ICAgIHsKKyAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNo
QWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3Ig
PSBnY3J5X3NleHBfYnVpbGQoJmVuY1ZhbFNleHAsIG51bGxwdHIsICIoZW5jLXZhbChmbGFncyBv
YWVwKShoYXNoLWFsZ28gJXMpKGxhYmVsICViKShyc2EoYSAlYikpKSIsCisgICAgICAgICAgICAq
c2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rvci5zaXplKCksIGxhYmVsVmVjdG9yLmRhdGEoKSwgY2lw
aGVyVGV4dC5zaXplKCksIGNpcGhlclRleHQuZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gRGVjcnlwdCBkYXRhIHdpdGggdGhlIHByb3ZpZGVkIGtleS4gVGhlIHJldHVy
bmVkIHMtZXhwcmVzc2lvbiBpcyBvZiB0aGlzIGZvcm06CisgICAgLy8gKGRhdGEKKyAgICAvLyAg
IChmbGFncyBvYWVwKQorICAgIC8vICAgKHZhbHVlIGJsb2NrKSkKKyAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfc2V4cF90PiBwbGFpblNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9wa19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAsIGtleVNleHApOworICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAg
Ly8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCB2YWx1ZSBpbnRlZ2VyLgorICAgIFBB
TDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHZhbHVlU2V4cChnY3J5X3NleHBfZmluZF90
b2tlbihwbGFpblNleHAsICJ2YWx1ZSIsIDApKTsKKyAgICBpZiAoIXZhbHVlU2V4cCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4cCk7
Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8
Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sK
KyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3Bh
cmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWlu
VGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oKnBhcmFtZXRlcnMpOworICAgICAgICAgICAg
YXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOworCisgICAg
ICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQocnNhS2V5Lmhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKCksIHJzYUtleS5wbGF0Zm9ybUtleSgpLCByc2FQYXJhbWV0ZXJzLmxhYmVsVmVj
dG9yKCksIHBsYWluVGV4dCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisg
ICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKK30KKwordm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUDo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNp
cGhlclRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7CisKKyAgICAgICAgICAgIGF1dG8gb3V0
cHV0ID0gZ2NyeXB0RGVjcnlwdChyc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNh
S2V5LnBsYXRmb3JtS2V5KCksIHJzYVBhcmFtZXRlcnMubGFiZWxWZWN0b3IoKSwgY2lwaGVyVGV4
dCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAg
W291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
b3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVA6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleVJTQSYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5
MzVkZDU4OGI1Mzc0YmNmN2ZhZTRhMzk0MTEwNTg1MjBmZTg1NzgxLi5lZWE1OTg5MzZiYTEwMDdj
ODQyNTVjMDk2MDI2MWYxM2NjZDNlMmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDQt
MjYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5
cHRdIFJTQS1PQUVQIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MTIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IEVuYWJsZSB0aGUg
UlNBLU9BRVAgbGF5b3V0IHRlc3RzIHRoYXQgd2UgcGFzcy4KKwogMjAxNy0wNC0yNSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWMtd2sxIERlYnVn
XSBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMt
bmV0d29yay5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBkYWYxMDQzZWRhMzcyYTE0MTc5Njg1ODllZjdjMzg0ODMy
YmIyMTdjLi5lNWI5MGU1MmY1ODY4ZDAwMjhlZjFjOGM5MzBmZWFlN2ZhOTkxOTIyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzY0LDYgKzc2NCwzMCBA
QCBjcnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LXJhdy1rZXktY3VzdG9taXplZC1sZW5ndGguaHRt
bCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1qd2st
a2V5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtcmF3LWtleS1leHBv
cnQtcmF3LWtleS5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LXJhdy1r
ZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1kZWNyeXB0LW1hbGZvcm1l
ZC1wYXJhbWV0ZXJzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtZW5jcnlw
dC1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1v
YWVwLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1
YnRsZS9yc2Etb2FlcC1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyMjQuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYu
aHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1nZW5lcmF0ZS1leHBvcnQta2V5
LWp3ay1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1nZW5lcmF0
ZS1leHBvcnQta2V5LWp3ay1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Et
b2FlcC1nZW5lcmF0ZS1rZXktZW5jcnlwdC1kZWNyeXB0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9z
dWJ0bGUvcnNhLW9hZXAtZ2VuZXJhdGUta2V5LWVuY3J5cHQtZGVjcnlwdC1sYWJlbC5odG1sIFsg
UGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBd
CitjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBh
c3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1pbXBvcnQtandrLXB1YmxpYy1rZXktZW1wdHkt
dXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWp3ay1w
dWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1pbXBv
cnQtandrLXB1YmxpYy1rZXktc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNh
LW9hZXAtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL3JzYS1vYWVwLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhNTEyLmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtleS1kZWNyeXB0Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtleS1kZWNyeXB0LWxh
YmVsLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtleS1lbmNy
eXB0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtleS1lbmNy
eXB0LWxhYmVsLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1wb3J0LWtl
eS11bndyYXAtandrLW9jdC1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Etb2Fl
cC1pbXBvcnQta2V5LXdyYXAtandrLW9jdC1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2Etb2FlcC1wbGFpbnRleHQtbGVuZ3RoLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8x
MzMzMTkgY3J5cHRvL3dlYmtpdFN1YnRsZS9zaGEtMS5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3Jn
L2IvMTMzMzE5IGNyeXB0by93ZWJraXRTdWJ0bGUvc2hhLTIyNC5odG1sIFsgUGFzcyBdCiB3ZWJr
aXQub3JnL2IvMTMzMzE5IGNyeXB0by93ZWJraXRTdWJ0bGUvc2hhLTI1Ni5odG1sIFsgUGFzcyBd
Cg==
</data>
<flag name="review"
          id="329402"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>