<?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>134857</bug_id>
          
          <creation_ts>2014-07-12 14:00:25 -0700</creation_ts>
          <short_desc>Add an ensure function on HashMap that takes a key and a function to make the lazy value initialization idiom easier</short_desc>
          <delta_ts>2016-02-17 13:17:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021991</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 14:00:25 -0700</bug_when>
    <thetext>Add an overload of HashMap::add that takes a function instead of the value to make the lazy value initialization idiom easier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021992</commentid>
    <comment_count>1</comment_count>
      <attachid>234806</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 14:18:25 -0700</bug_when>
    <thetext>Created attachment 234806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021998</commentid>
    <comment_count>2</comment_count>
      <attachid>234808</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 15:10:15 -0700</bug_when>
    <thetext>Created attachment 234808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021999</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-12 15:11:49 -0700</bug_when>
    <thetext>Attachment 234808 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:158:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:162:  More than one command on the same line  [whitespace/newline] [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>1022002</commentid>
    <comment_count>4</comment_count>
      <attachid>234809</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 15:35:07 -0700</bug_when>
    <thetext>Created attachment 234809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022003</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-12 15:36:52 -0700</bug_when>
    <thetext>Attachment 234809 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:158:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:162:  More than one command on the same line  [whitespace/newline] [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>1022006</commentid>
    <comment_count>6</comment_count>
      <attachid>234810</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 15:48:04 -0700</bug_when>
    <thetext>Created attachment 234810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022007</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-12 15:49:46 -0700</bug_when>
    <thetext>Attachment 234810 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:158:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:162:  More than one command on the same line  [whitespace/newline] [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>1022023</commentid>
    <comment_count>8</comment_count>
      <attachid>234813</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-12 16:59:05 -0700</bug_when>
    <thetext>Created attachment 234813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022025</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-12 17:00:19 -0700</bug_when>
    <thetext>Attachment 234813 did not pass style-queue:


ERROR: Source/WTF/wtf/HashMap.h:353:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/HashMap.h:360:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:158:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:162:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 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>1165472</commentid>
    <comment_count>10</comment_count>
      <attachid>271520</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-16 19:36:24 -0800</bug_when>
    <thetext>Created attachment 271520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165473</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-16 19:37:01 -0800</bug_when>
    <thetext>Attachment 271520 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:515:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:519:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:530:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:533:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:543:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:547:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:561:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:564:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 8 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>1165474</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-16 19:37:51 -0800</bug_when>
    <thetext>I decided to change my approach and instead of overloading add, which is complicated and error prone, I added a new function called &quot;ensure&quot;. This greatly simplifies the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165521</commentid>
    <comment_count>13</comment_count>
      <attachid>271520</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-16 22:40:20 -0800</bug_when>
    <thetext>Comment on attachment 271520
Patch

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

Add a test that asserts that the functor is not called if not needed.

TEST(WTF_HashMap, Ensure_Functor)
{
    HashMap&lt;unsigned, unsigned&gt; map;
    {
        bool functorCalled = false;
        unsigned value = 0;
        auto functor = [&amp;] { functorCalled = true; return ++value; };
        
        map.add(1, 0);
        map.ensure(1, functor);
        EXPECT_FALSE(functorCalled);
        EXPECT_EQ(map.get(1), 0);
        
        map.remove(1);
        map.ensure(1, functor);
        EXPECT_TRUE(functorCalled);
        EXPECT_EQ(map.get(1), 1);

        functorCalled = false;
        map.ensure(2, functor);
        EXPECT_TRUE(functorCalled);
        EXPECT_EQ(map.get(2), 2);
        
        functorCalled = false;
        map.ensure(2, functor);
        EXPECT_FALSE(functorCalled);
    }
}

By the way, the CMake build is great for working on WTF because you can make and run the tests without building everything.
mkdir WebKitBuild &amp;&amp; cd WebKitBuild &amp;&amp; xcrun cmake .. -DPORT=Mac &amp;&amp; make TestWTF -j8 &amp;&amp; bin/TestWTF --gtest_filter=*Hash*

&gt; Source/WTF/wtf/HashMap.h:193
&gt; +        location.value = functor();

Does this never need to explicitly call the destructor of location.value?  I think you should add a test that checks if the destructor of the EmptyValue or DeletedValue is called.

&gt; Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:557
&gt; +

space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165568</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-17 06:28:35 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 271520 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271520&amp;action=review
&gt; 
&gt; Add a test that asserts that the functor is not called if not needed.
&gt; 

The WTF_HashMap.Ensure_RefPtr test does this.

&gt; 
&gt; By the way, the CMake build is great for working on WTF because you can make
&gt; and run the tests without building everything.
&gt; mkdir WebKitBuild &amp;&amp; cd WebKitBuild &amp;&amp; xcrun cmake .. -DPORT=Mac &amp;&amp; make
&gt; TestWTF -j8 &amp;&amp; bin/TestWTF --gtest_filter=*Hash*
&gt; 
&gt; &gt; Source/WTF/wtf/HashMap.h:193
&gt; &gt; +        location.value = functor();
&gt; 
&gt; Does this never need to explicitly call the destructor of location.value?  I
&gt; think you should add a test that checks if the destructor of the EmptyValue
&gt; or DeletedValue is called.

No, there is no need to call the destructor in the translator. This only gets called if it is a new slot.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:557
&gt; &gt; +
&gt; 
&gt; space

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165610</commentid>
    <comment_count>15</comment_count>
      <attachid>271520</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-02-17 10:00:02 -0800</bug_when>
    <thetext>Comment on attachment 271520
Patch

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

r=me

&gt; Source/WTF/ChangeLog:34
&gt; +            auto it = map.ensure(key, [] { return createNewValue(); });
&gt; +            return it-&gt;value;

Do clients ever want to ensure and then use iterator? I think it would be nice if ensure returned value instead of iterator. Ensure is get + conditional add, and the union of their return values (void, and value) is value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165619</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-17 10:20:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 271520 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271520&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WTF/ChangeLog:34
&gt; &gt; +            auto it = map.ensure(key, [] { return createNewValue(); });
&gt; &gt; +            return it-&gt;value;
&gt; 
&gt; Do clients ever want to ensure and then use iterator? I think it would be
&gt; nice if ensure returned value instead of iterator. Ensure is get +
&gt; conditional add, and the union of their return values (void, and value) is
&gt; value.

We can certainly start with that! If people end up needing the iterator, we can change it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165709</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-17 13:17:03 -0800</bug_when>
    <thetext>Committed revision 196716.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234806</attachid>
            <date>2014-07-12 14:18:25 -0700</date>
            <delta_ts>2014-07-12 15:10:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20140712141807.patch</filename>
            <type>text/plain</type>
            <size>9295</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzEwMjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0
IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2
YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2
YWx1ZSB0byBhIEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBh
bGxvdyBmb3Igbm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcg
dmFsdWUgaWYgaXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBj
cmVhdGVOZXdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9yIHNvbWV0aW1lcworICAgICAgICAK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtYXAuYWRkKGtleSwgVmFsdWUo
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGNyZWF0ZU5ld1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHlvdSBjYW4gbm93IHVzZSBh
IG5ldyBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIHRoYXQg
d2lsbCBvbmx5IGdldCBjYWxsZWQKKyAgICAgICAgd2hlbiB0aGUga2V5IGlzIG5vdCBhbHJlYWR5
IHByZXNlbnQuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBjaGFuZ2UgdG8gdXNpbmcgdGhlIGZvbGxv
d2luZyBpZGlvbToKKyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGtleSwgW10geyByZXR1cm4gY3JlYXRlTmV3VmFsdWUoKTsgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6SGFzaE1hcDo6YWRkKToKKyAgICAgICAgVXBk
YXRlIHRoZSBleGlzdGluZyBIYXNoTWFwIGFkZCB0byBvbmx5IGJlIGVuYWJsZWQgaWYgdGhlIHR5
cGUgb2YgViBpcyBjb252ZXJ0aWJsZSB0byB0aGUgbWFwcyBNYXBwZWQgdHlwZS4gVGhpcworICAg
ICAgICBhbGxvd3MgdXMgdG8gdGhlbiBhZGQgYW4gb3ZlcmxvYWQsIHRoYXQgaXMgb25seSBlbmFi
bGVkIGlmIHRoZSBwYXJhbWV0ZXIgKGNhbGxlZCBGKSwgaXMgYSBjYWxsYWJsZSB0aGF0IHJldHVy
bnMgdGhlIE1hcHBlZAorICAgICAgICB0eXBlLgorCisgICAgICAgIChXVEY6OkxhenlBZGRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6OkxhenlBZGRIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpMYXp5QWRkSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6
CisgICAgICAgIEFkZCBhIG5ldyBIYXNoVHJhbnNsYXRvciBmb3IgdXNpbmcgdGhlIG5ldyBvdmVy
bG9hZHMgb2YgSGFzaE1hcCBhZGQgdGhhdCB3YWl0cyB1bnRpbCB0aGUgdHJhbnNsYXRpb24gdG8g
Y2FsbCB0aGUgcGFzc2VkCisgICAgICAgIGluIGZ1bmN0aW9uLgorCiAyMDE0LTA3LTExICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEVuYWJs
ZSBERkcgSklULgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcwNjA5KQorKysgU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAg
ICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBWJiYpOworICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBl
bmFtZSBWLAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBl
LCBNYXBwZWRUeXBlPjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAgPgor
ICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgCisgICAgdGVtcGxh
dGU8CisgICAgICAgIHR5cGVuYW1lIFYsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8Vj46OnR5cGUsIE1hcHBlZFR5cGU+Ojp2YWx1ZQorICAgICAgICA+Ojp0eXBlKiA9
IG51bGxwdHIKKyAgICA+CisgICAgQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7CisKKyAg
ICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQsIG90aGVyd2lz
ZSwgaXQgY2FsbHMgZnVuY3Rpb24gRiBhbmQgdXNlcyB0aGUgcmVzdWx0IGFzIHRoZSBuZXcgdmFs
dWUuCisgICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhl
IGtleSBsb2NhdGlvbiwKKyAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0
cnVlIGlmIGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlw
ZW5hbWUgRiwgCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAg
c3RkOjppc19jb252ZXJ0aWJsZTxGLCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1
ZSAmJiAhc3RkOjppc19zYW1lPEYsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6
dHlwZSogPSBudWxscHRyCisgICAgPgorICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYs
IEYmJik7CisKKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlwZW5hbWUgRiwgCisgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxG
LCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPEYs
IHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAg
PgorICAgIEFkZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBGJiYpOwogCiAgICAgLy8gU2FtZSBhcyBh
ZGQoKSwgYnV0IGFnZ3Jlc3NpdmVseSBpbmxpbmVkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+
IEFkZFJlc3VsdCBmYXN0QWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwpAQCAtMTY2LDYgKzE5OCwx
NyBAQCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgorc3RydWN0IExhenlB
ZGRIYXNoVHJhbnNsYXRvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChh
LCBiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIEY+
IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtleSwgRiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJkPFU+KGtleSk7Cisg
ICAgICAgIGxvY2F0aW9uLnZhbHVlID0gZnVuY3Rpb24oKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVHJhbnNsYXRvcj4KIHN0cnVjdCBIYXNo
TWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkp
OyB9CkBAIC0zMDcsMTcgKzM1MCwzMSBAQCBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVk
QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1h
cHBlZFRyYWl0c0FyZz4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJn
LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywg
TWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChj
b25zdCBLZXlUeXBlJiBrZXksIFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewotICAgIHJldHVy
biBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlu
bGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxWPihtYXBwZWQpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkg
LT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6
dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUq
PgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBWJiYgbWFwcGVkKSAtPiBBZGRS
ZXN1bHQKIHsKLSAgICByZXR1cm4gaW5saW5lQWRkKHN0ZDo6bW92ZShrZXkpLCBzdGQ6OmZvcndh
cmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlubGluZUFkZChzdGQ6Om1vdmUoa2V5KSwgc3Rk
Ojpmb3J3YXJkPFY+KG1hcHBlZCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5
cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJn
LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248dHlw
ZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19z
YW1lPEYsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWU+Ojp0eXBlKj4KK2F1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojph
ZGQoY29uc3QgS2V5VHlwZSYga2V5LCBGJiYgZnVuY3Rpb24pIC0+IEFkZFJlc3VsdAoreworICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPExhenlBZGRIYXNoVHJhbnNsYXRvcjxLZXlWYWx1
ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlv
bikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRU
cmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248dHlwZW5hbWUgTWFwcGVkVHJhaXRz
QXJnOjpUcmFpdFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPEYsIHN0ZDo6bnVsbHB0
cl90Pjo6dmFsdWU+Ojp0eXBlKj4KK2F1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwg
RiYmIGZ1bmN0aW9uKSAtPiBBZGRSZXN1bHQKK3sKKyAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRl
IGFkZDxMYXp5QWRkSGFzaFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rp
b25zPj4oc3RkOjptb3ZlKGtleSksIHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbikpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzEwMjcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNC0wNy0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBhbiBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9u
IGluc3RlYWQgb2YgdGhlIHZhbHVlIHRvIG1ha2UgdGhlIGxhenkgdmFsdWUgaW5pdGlhbGl6YXRp
b24gaWRpb20gZWFzaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzQ4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZCkpOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVl
cykpOiBBZGRlZC4KKwogMjAxNC0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFBhc3RpbmcgcmljaCBjb250ZW50IGRvZXMgbm90
IHBlcmZvcm0gYSB0d28tc3RlcCBwYXN0ZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAJKHJldmlzaW9uIDE3MDYwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNCArMTQ4LDMy
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIEluaXRpYWxpemVyTGlzdCkKICAgICBFWFBFQ1RfRVEoc3Rk
OjpzdHJpbmcoKSwgbWFwLmdldCg1KSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGQp
Cit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1hcDsKKyAgICBtYXAuYWRk
KDEsICJvbmUiKTsKKyAgICBFWFBFQ1RfRVEoMSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KCJvbmUiLCBtYXAuZ2V0KDEpKTsKKworICAgIG1hcC5hZGQoMSwgW10geyByZXR1cm4gIm5vdG9u
ZSI7IH0pOworICAgIEVYUEVDVF9FUSgxLCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm9u
ZSIsIG1hcC5nZXQoMSkpOworCisgICAgbWFwLmFkZCgyLCBbXSB7IHJldHVybiAidHdvIjsgfSk7
CisgICAgRVhQRUNUX0VRKDIsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgidHdvIiwgbWFw
LmdldCgyKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVlcykK
K3sKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBNb3ZlT25seT4gbWFwOworICAgIG1hcC5hZGQoMSwg
W10geworICAgICAgICBNb3ZlT25seSBtb3ZlT25seSgxKTsKKyAgICAgICAgcmV0dXJuIG1vdmVP
bmx5OworICAgIH0pOworCisgICAgYXV0byBpdCA9IG1hcC5maW5kKDEpOworICAgIEVYUEVDVF9F
USgxdSwgaXQtPnZhbHVlLnZhbHVlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234808</attachid>
            <date>2014-07-12 15:10:15 -0700</date>
            <delta_ts>2014-07-12 15:35:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20140712150957.patch</filename>
            <type>text/plain</type>
            <size>9397</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzEwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0
IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2
YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2
YWx1ZSB0byBhIEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBh
bGxvdyBmb3Igbm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcg
dmFsdWUgaWYgaXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBj
cmVhdGVOZXdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9yIHNvbWV0aW1lcworICAgICAgICAK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtYXAuYWRkKGtleSwgVmFsdWUo
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGNyZWF0ZU5ld1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHlvdSBjYW4gbm93IHVzZSBh
IG5ldyBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIHRoYXQg
d2lsbCBvbmx5IGdldCBjYWxsZWQKKyAgICAgICAgd2hlbiB0aGUga2V5IGlzIG5vdCBhbHJlYWR5
IHByZXNlbnQuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBjaGFuZ2UgdG8gdXNpbmcgdGhlIGZvbGxv
d2luZyBpZGlvbToKKyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGtleSwgW10geyByZXR1cm4gY3JlYXRlTmV3VmFsdWUoKTsgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6SGFzaE1hcDo6YWRkKToKKyAgICAgICAgVXBk
YXRlIHRoZSBleGlzdGluZyBIYXNoTWFwIGFkZCB0byBvbmx5IGJlIGVuYWJsZWQgaWYgdGhlIHR5
cGUgb2YgViBpcyBjb252ZXJ0aWJsZSB0byB0aGUgbWFwcyBNYXBwZWQgdHlwZS4gVGhpcworICAg
ICAgICBhbGxvd3MgdXMgdG8gdGhlbiBhZGQgYW4gb3ZlcmxvYWQsIHRoYXQgaXMgb25seSBlbmFi
bGVkIGlmIHRoZSBwYXJhbWV0ZXIgKGNhbGxlZCBGKSwgaXMgYSBjYWxsYWJsZSB0aGF0IHJldHVy
bnMgdGhlIE1hcHBlZAorICAgICAgICB0eXBlLgorCisgICAgICAgIChXVEY6OkxhenlBZGRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6OkxhenlBZGRIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpMYXp5QWRkSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6
CisgICAgICAgIEFkZCBhIG5ldyBIYXNoVHJhbnNsYXRvciBmb3IgdXNpbmcgdGhlIG5ldyBvdmVy
bG9hZHMgb2YgSGFzaE1hcCBhZGQgdGhhdCB3YWl0cyB1bnRpbCB0aGUgdHJhbnNsYXRpb24gdG8g
Y2FsbCB0aGUgcGFzc2VkCisgICAgICAgIGluIGZ1bmN0aW9uLgorCiAyMDE0LTA3LTExICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEVuYWJs
ZSBERkcgSklULgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcxMDMxKQorKysgU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAg
ICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBWJiYpOworICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBl
bmFtZSBWLAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBl
LCBNYXBwZWRUeXBlPjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAgPgor
ICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgCisgICAgdGVtcGxh
dGU8CisgICAgICAgIHR5cGVuYW1lIFYsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8Vj46OnR5cGUsIE1hcHBlZFR5cGU+Ojp2YWx1ZQorICAgICAgICA+Ojp0eXBlKiA9
IG51bGxwdHIKKyAgICA+CisgICAgQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7CisKKyAg
ICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQsIG90aGVyd2lz
ZSwgaXQgY2FsbHMgZnVuY3Rpb24gRiBhbmQgdXNlcyB0aGUgcmVzdWx0IGFzIHRoZSBuZXcgdmFs
dWUuCisgICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhl
IGtleSBsb2NhdGlvbiwKKyAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0
cnVlIGlmIGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlw
ZW5hbWUgRiwgCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAg
c3RkOjppc19jb252ZXJ0aWJsZTxGLCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1
ZSAmJiAhc3RkOjppc19zYW1lPEYsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6
dHlwZSogPSBudWxscHRyCisgICAgPgorICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYs
IEYmJik7CisKKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlwZW5hbWUgRiwgCisgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxG
LCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPEYs
IHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAg
PgorICAgIEFkZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBGJiYpOwogCiAgICAgLy8gU2FtZSBhcyBh
ZGQoKSwgYnV0IGFnZ3Jlc3NpdmVseSBpbmxpbmVkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+
IEFkZFJlc3VsdCBmYXN0QWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwpAQCAtMTY2LDYgKzE5OCwx
NyBAQCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgorc3RydWN0IExhenlB
ZGRIYXNoVHJhbnNsYXRvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChh
LCBiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIEY+
IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtleSwgRiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJkPFU+KGtleSk7Cisg
ICAgICAgIGxvY2F0aW9uLnZhbHVlID0gZnVuY3Rpb24oKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVHJhbnNsYXRvcj4KIHN0cnVjdCBIYXNo
TWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkp
OyB9CkBAIC0zMDcsMjAgKzM1MCwzNCBAQCBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVk
QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1h
cHBlZFRyYWl0c0FyZz4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJn
LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywg
TWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChj
b25zdCBLZXlUeXBlJiBrZXksIFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewotICAgIHJldHVy
biBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlu
bGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxWPihtYXBwZWQpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkg
LT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6
dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUq
PgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBWJiYgbWFwcGVkKSAtPiBBZGRS
ZXN1bHQKIHsKICAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6bW92ZShrZXkpLCBzdGQ6OmZvcndh
cmQ8VD4obWFwcGVkKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8Riwgc3RkOjpmdW5jdGlvbjx0eXBlbmFtZSBN
YXBwZWRUcmFpdHNBcmc6OlRyYWl0VHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwg
c3RkOjpudWxscHRyX3Q+Ojp2YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25z
dCBLZXlUeXBlJiBrZXksIEYmJiBmdW5jdGlvbikgLT4gQWRkUmVzdWx0Cit7CisgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8TGF6eUFkZEhhc2hUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRy
YWl0cywgSGFzaEZ1bmN0aW9ucz4+KGtleSwgc3RkOjpmb3J3YXJkPEY+KGZ1bmN0aW9uKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0Fy
Zz4KK3RlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
Y29udmVydGlibGU8Riwgc3RkOjpmdW5jdGlvbjx0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc6OlRy
YWl0VHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwgc3RkOjpudWxscHRyX3Q+Ojp2
YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBGJiYgZnVu
Y3Rpb24pIC0+IEFkZFJlc3VsdAoreworICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPExh
enlBZGRIYXNoVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihX
VEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPEY+KGZ1bmN0aW9uKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFy
ZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKGNvbnN0
IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzEwMzEp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
NC0wNy0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBv
dmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIGluc3RlYWQgb2Yg
dGhlIHZhbHVlIHRvIG1ha2UgdGhlIGxhenkgdmFsdWUgaW5pdGlhbGl6YXRpb24gaWRpb20gZWFz
aWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZCkpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVlcykpOiBBZGRlZC4K
KwogMjAxNC0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIFBhc3RpbmcgcmljaCBjb250ZW50IGRvZXMgbm90IHBlcmZvcm0gYSB0
d28tc3RlcCBwYXN0ZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAJKHJldmlzaW9uIDE3MTAzMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNCArMTQ4LDMyIEBAIFRFU1QoV1RG
X0hhc2hNYXAsIEluaXRpYWxpemVyTGlzdCkKICAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmcoKSwg
bWFwLmdldCg1KSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGQpCit7CisgICAgSGFz
aE1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1hcDsKKyAgICBtYXAuYWRkKDEsICJvbmUiKTsK
KyAgICBFWFBFQ1RfRVEoMSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJvbmUiLCBtYXAu
Z2V0KDEpKTsKKworICAgIG1hcC5hZGQoMSwgW10geyByZXR1cm4gIm5vdG9uZSI7IH0pOworICAg
IEVYUEVDVF9FUSgxLCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm9uZSIsIG1hcC5nZXQo
MSkpOworCisgICAgbWFwLmFkZCgyLCBbXSB7IHJldHVybiAidHdvIjsgfSk7CisgICAgRVhQRUNU
X0VRKDIsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgidHdvIiwgbWFwLmdldCgyKSk7Cit9
CisKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVlcykKK3sKKyAgICBIYXNo
TWFwPHVuc2lnbmVkLCBNb3ZlT25seT4gbWFwOworICAgIG1hcC5hZGQoMSwgW10geworICAgICAg
ICBNb3ZlT25seSBtb3ZlT25seSgxKTsKKyAgICAgICAgcmV0dXJuIG1vdmVPbmx5OworICAgIH0p
OworCisgICAgYXV0byBpdCA9IG1hcC5maW5kKDEpOworICAgIEVYUEVDVF9FUSgxdSwgaXQtPnZh
bHVlLnZhbHVlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234809</attachid>
            <date>2014-07-12 15:35:07 -0700</date>
            <delta_ts>2014-07-12 15:48:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20140712153448.patch</filename>
            <type>text/plain</type>
            <size>9295</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzEwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0
IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2
YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2
YWx1ZSB0byBhIEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBh
bGxvdyBmb3Igbm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcg
dmFsdWUgaWYgaXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBj
cmVhdGVOZXdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9yIHNvbWV0aW1lcworICAgICAgICAK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtYXAuYWRkKGtleSwgVmFsdWUo
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGNyZWF0ZU5ld1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHlvdSBjYW4gbm93IHVzZSBh
IG5ldyBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIHRoYXQg
d2lsbCBvbmx5IGdldCBjYWxsZWQKKyAgICAgICAgd2hlbiB0aGUga2V5IGlzIG5vdCBhbHJlYWR5
IHByZXNlbnQuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBjaGFuZ2UgdG8gdXNpbmcgdGhlIGZvbGxv
d2luZyBpZGlvbToKKyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGtleSwgW10geyByZXR1cm4gY3JlYXRlTmV3VmFsdWUoKTsgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6SGFzaE1hcDo6YWRkKToKKyAgICAgICAgVXBk
YXRlIHRoZSBleGlzdGluZyBIYXNoTWFwIGFkZCB0byBvbmx5IGJlIGVuYWJsZWQgaWYgdGhlIHR5
cGUgb2YgViBpcyBjb252ZXJ0aWJsZSB0byB0aGUgbWFwcyBNYXBwZWQgdHlwZS4gVGhpcworICAg
ICAgICBhbGxvd3MgdXMgdG8gdGhlbiBhZGQgYW4gb3ZlcmxvYWQsIHRoYXQgaXMgb25seSBlbmFi
bGVkIGlmIHRoZSBwYXJhbWV0ZXIgKGNhbGxlZCBGKSwgaXMgYSBjYWxsYWJsZSB0aGF0IHJldHVy
bnMgdGhlIE1hcHBlZAorICAgICAgICB0eXBlLgorCisgICAgICAgIChXVEY6OkxhenlBZGRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6OkxhenlBZGRIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpMYXp5QWRkSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6
CisgICAgICAgIEFkZCBhIG5ldyBIYXNoVHJhbnNsYXRvciBmb3IgdXNpbmcgdGhlIG5ldyBvdmVy
bG9hZHMgb2YgSGFzaE1hcCBhZGQgdGhhdCB3YWl0cyB1bnRpbCB0aGUgdHJhbnNsYXRpb24gdG8g
Y2FsbCB0aGUgcGFzc2VkCisgICAgICAgIGluIGZ1bmN0aW9uLgorCiAyMDE0LTA3LTExICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEVuYWJs
ZSBERkcgSklULgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcxMDMxKQorKysgU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAg
ICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBWJiYpOworICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBl
bmFtZSBWLAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBl
LCBNYXBwZWRUeXBlPjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAgPgor
ICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgCisgICAgdGVtcGxh
dGU8CisgICAgICAgIHR5cGVuYW1lIFYsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8Vj46OnR5cGUsIE1hcHBlZFR5cGU+Ojp2YWx1ZQorICAgICAgICA+Ojp0eXBlKiA9
IG51bGxwdHIKKyAgICA+CisgICAgQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7CisKKyAg
ICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQsIG90aGVyd2lz
ZSwgaXQgY2FsbHMgZnVuY3Rpb24gRiBhbmQgdXNlcyB0aGUgcmVzdWx0IGFzIHRoZSBuZXcgdmFs
dWUuCisgICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhl
IGtleSBsb2NhdGlvbiwKKyAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0
cnVlIGlmIGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlw
ZW5hbWUgRiwgCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAg
c3RkOjppc19jb252ZXJ0aWJsZTxGLCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1
ZSAmJiAhc3RkOjppc19zYW1lPEYsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6
dHlwZSogPSBudWxscHRyCisgICAgPgorICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYs
IEYmJik7CisKKyAgICB0ZW1wbGF0ZTwKKyAgICAgICAgdHlwZW5hbWUgRiwgCisgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0aWJsZTxG
LCBzdGQ6OmZ1bmN0aW9uPE1hcHBlZFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPEYs
IHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgPjo6dHlwZSogPSBudWxscHRyCisgICAg
PgorICAgIEFkZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBGJiYpOwogCiAgICAgLy8gU2FtZSBhcyBh
ZGQoKSwgYnV0IGFnZ3Jlc3NpdmVseSBpbmxpbmVkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+
IEFkZFJlc3VsdCBmYXN0QWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwpAQCAtMTY2LDYgKzE5OCwx
NyBAQCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPgorc3RydWN0IExhenlB
ZGRIYXNoVHJhbnNsYXRvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChh
LCBiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIEY+
IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtleSwgRiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJkPFU+KGtleSk7Cisg
ICAgICAgIGxvY2F0aW9uLnZhbHVlID0gZnVuY3Rpb24oKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVHJhbnNsYXRvcj4KIHN0cnVjdCBIYXNo
TWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkp
OyB9CkBAIC0zMDcsMTcgKzM1MCwzMSBAQCBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVk
QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1h
cHBlZFRyYWl0c0FyZz4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1hdXRvIEhhc2hNYXA8S2V5QXJn
LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywg
TWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChj
b25zdCBLZXlUeXBlJiBrZXksIFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewotICAgIHJldHVy
biBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlu
bGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxWPihtYXBwZWQpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkg
LT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6
dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZT46OnR5cGUq
PgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBWJiYgbWFwcGVkKSAtPiBBZGRS
ZXN1bHQKIHsKLSAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6bW92ZShrZXkpLCBzdGQ6OmZvcndh
cmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlubGluZUFkZChXVEY6Om1vdmUoa2V5KSwgc3Rk
Ojpmb3J3YXJkPFY+KG1hcHBlZCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5
cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJn
LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248dHlw
ZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19z
YW1lPEYsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWU+Ojp0eXBlKj4KK2F1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojph
ZGQoY29uc3QgS2V5VHlwZSYga2V5LCBGJiYgZnVuY3Rpb24pIC0+IEFkZFJlc3VsdAoreworICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPExhenlBZGRIYXNoVHJhbnNsYXRvcjxLZXlWYWx1
ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlv
bikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRU
cmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248dHlwZW5hbWUgTWFwcGVkVHJhaXRz
QXJnOjpUcmFpdFR5cGUoKT4+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPEYsIHN0ZDo6bnVsbHB0
cl90Pjo6dmFsdWU+Ojp0eXBlKj4KK2F1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwg
RiYmIGZ1bmN0aW9uKSAtPiBBZGRSZXN1bHQKK3sKKyAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRl
IGFkZDxMYXp5QWRkSGFzaFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rp
b25zPj4oV1RGOjptb3ZlKGtleSksIHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbikpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzEwMzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNC0wNy0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBhbiBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9u
IGluc3RlYWQgb2YgdGhlIHZhbHVlIHRvIG1ha2UgdGhlIGxhenkgdmFsdWUgaW5pdGlhbGl6YXRp
b24gaWRpb20gZWFzaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzQ4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZCkpOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVl
cykpOiBBZGRlZC4KKwogMjAxNC0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFBhc3RpbmcgcmljaCBjb250ZW50IGRvZXMgbm90
IHBlcmZvcm0gYSB0d28tc3RlcCBwYXN0ZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAJKHJldmlzaW9uIDE3MTAzMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNCArMTQ4LDMy
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIEluaXRpYWxpemVyTGlzdCkKICAgICBFWFBFQ1RfRVEoc3Rk
OjpzdHJpbmcoKSwgbWFwLmdldCg1KSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGQp
Cit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1hcDsKKyAgICBtYXAuYWRk
KDEsICJvbmUiKTsKKyAgICBFWFBFQ1RfRVEoMSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KCJvbmUiLCBtYXAuZ2V0KDEpKTsKKworICAgIG1hcC5hZGQoMSwgW10geyByZXR1cm4gIm5vdG9u
ZSI7IH0pOworICAgIEVYUEVDVF9FUSgxLCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm9u
ZSIsIG1hcC5nZXQoMSkpOworCisgICAgbWFwLmFkZCgyLCBbXSB7IHJldHVybiAidHdvIjsgfSk7
CisgICAgRVhQRUNUX0VRKDIsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgidHdvIiwgbWFw
LmdldCgyKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIExhenlBZGRNb3ZlT25seVZhbHVlcykK
K3sKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBNb3ZlT25seT4gbWFwOworICAgIG1hcC5hZGQoMSwg
W10geworICAgICAgICBNb3ZlT25seSBtb3ZlT25seSgxKTsKKyAgICAgICAgcmV0dXJuIG1vdmVP
bmx5OworICAgIH0pOworCisgICAgYXV0byBpdCA9IG1hcC5maW5kKDEpOworICAgIEVYUEVDVF9F
USgxdSwgaXQtPnZhbHVlLnZhbHVlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234810</attachid>
            <date>2014-07-12 15:48:04 -0700</date>
            <delta_ts>2014-07-12 16:59:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20140712154745.patch</filename>
            <type>text/plain</type>
            <size>9345</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzEwMzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0
IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2
YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2
YWx1ZSB0byBhIEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBh
bGxvdyBmb3Igbm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcg
dmFsdWUgaWYgaXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBj
cmVhdGVOZXdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9yIHNvbWV0aW1lcworICAgICAgICAK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtYXAuYWRkKGtleSwgVmFsdWUo
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGNyZWF0ZU5ld1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHlvdSBjYW4gbm93IHVzZSBh
IG5ldyBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIHRoYXQg
d2lsbCBvbmx5IGdldCBjYWxsZWQKKyAgICAgICAgd2hlbiB0aGUga2V5IGlzIG5vdCBhbHJlYWR5
IHByZXNlbnQuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBjaGFuZ2UgdG8gdXNpbmcgdGhlIGZvbGxv
d2luZyBpZGlvbToKKyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGtleSwgW10geyByZXR1cm4gY3JlYXRlTmV3VmFsdWUoKTsgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6SGFzaE1hcDo6YWRkKToKKyAgICAgICAgVXBk
YXRlIHRoZSBleGlzdGluZyBIYXNoTWFwIGFkZCB0byBvbmx5IGJlIGVuYWJsZWQgaWYgdGhlIHR5
cGUgb2YgViBpcyBjb252ZXJ0aWJsZSB0byB0aGUgbWFwcyBNYXBwZWQgdHlwZS4gVGhpcworICAg
ICAgICBhbGxvd3MgdXMgdG8gdGhlbiBhZGQgYW4gb3ZlcmxvYWQsIHRoYXQgaXMgb25seSBlbmFi
bGVkIGlmIHRoZSBwYXJhbWV0ZXIgKGNhbGxlZCBGKSwgaXMgYSBjYWxsYWJsZSB0aGF0IHJldHVy
bnMgdGhlIE1hcHBlZAorICAgICAgICB0eXBlLgorCisgICAgICAgIChXVEY6OkxhenlBZGRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6OkxhenlBZGRIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpMYXp5QWRkSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6
CisgICAgICAgIEFkZCBhIG5ldyBIYXNoVHJhbnNsYXRvciBmb3IgdXNpbmcgdGhlIG5ldyBvdmVy
bG9hZHMgb2YgSGFzaE1hcCBhZGQgdGhhdCB3YWl0cyB1bnRpbCB0aGUgdHJhbnNsYXRpb24gdG8g
Y2FsbCB0aGUgcGFzc2VkCisgICAgICAgIGluIGZ1bmN0aW9uLgorCiAyMDE0LTA3LTExICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEVuYWJs
ZSBERkcgSklULgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcxMDMxKQorKysgU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAg
ICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBWJiYpOworICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBl
bmFtZSBWLAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIHN0
ZDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBl
LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc6OlRyYWl0VHlwZT46OnZhbHVlCisgICAgICAgID46
OnR5cGUqID0gbnVsbHB0cgorICAgID4KKyAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUm
LCBWJiYpOworICAgIAorICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBlbmFtZSBWLAorICAgICAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGli
bGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBlLCB0eXBlbmFtZSBNYXBw
ZWRUcmFpdHNBcmc6OlRyYWl0VHlwZT46OnZhbHVlCisgICAgICAgID46OnR5cGUqID0gbnVsbHB0
cgorICAgID4KKyAgICBBZGRSZXN1bHQgYWRkKEtleVR5cGUmJiwgViYmKTsKKworICAgIC8vIERv
ZXMgbm90aGluZyBpZiB0aGUga2V5IGlzIGFscmVhZHkgcHJlc2VudCwgb3RoZXJ3aXNlLCBpdCBj
YWxscyBmdW5jdGlvbiBGIGFuZCB1c2VzIHRoZSByZXN1bHQgYXMgdGhlIG5ldyB2YWx1ZS4KKyAg
ICAvLyBSZXR1cm4gdmFsdWUgaW5jbHVkZXMgYm90aCBhbiBpdGVyYXRvciB0byB0aGUga2V5IGxv
Y2F0aW9uLAorICAgIC8vIGFuZCBhbiBpc05ld0VudHJ5IGJvb2xlYW4gdGhhdCdzIHRydWUgaWYg
YSBuZXcgZW50cnkgd2FzIGFkZGVkLgorICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBlbmFtZSBG
LCAKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICBzdGQ6Omlz
X2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248TWFwcGVkVHlwZSgpPj46OnZhbHVlICYmICFz
dGQ6OmlzX3NhbWU8Riwgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZQorICAgICAgICA+Ojp0eXBlKiA9
IG51bGxwdHIKKyAgICA+CisgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgRiYmKTsK
KworICAgIHRlbXBsYXRlPAorICAgICAgICB0eXBlbmFtZSBGLCAKKyAgICAgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6
ZnVuY3Rpb248TWFwcGVkVHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwgc3RkOjpu
dWxscHRyX3Q+Ojp2YWx1ZQorICAgICAgICA+Ojp0eXBlKiA9IG51bGxwdHIKKyAgICA+CisgICAg
QWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIEYmJik7CiAKICAgICAvLyBTYW1lIGFzIGFkZCgpLCBi
dXQgYWdncmVzc2l2ZWx5IGlubGluZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVz
dWx0IGZhc3RBZGQoY29uc3QgS2V5VHlwZSYsIFYmJik7CkBAIC0xNjYsNiArMTk4LDE3IEBAIHN0
cnVjdCBIYXNoTWFwVHJhbnNsYXRvciB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+CitzdHJ1Y3QgTGF6eUFkZEhhc2hU
cmFuc2xhdG9yIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgRj4gc3RhdGlj
IHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBGJiYgZnVuY3Rpb24pCisgICAg
eworICAgICAgICBsb2NhdGlvbi5rZXkgPSBzdGQ6OmZvcndhcmQ8VT4oa2V5KTsKKyAgICAgICAg
bG9jYXRpb24udmFsdWUgPSBmdW5jdGlvbigpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBUcmFuc2xhdG9yPgogc3RydWN0IEhhc2hNYXBUcmFu
c2xhdG9yQWRhcHRlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBUcmFuc2xhdG9yOjpoYXNoKGtleSk7IH0KQEAg
LTMwNywxNyArMzUwLDMxIEBAIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFy
ZywKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnPgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBl
ZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoY29uc3Qg
S2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1l
IFYsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBlLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc6
OlRyYWl0VHlwZT46OnZhbHVlPjo6dHlwZSo+CithdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKGNvbnN0IEtl
eVR5cGUmIGtleSwgViYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiB7Ci0gICAgcmV0dXJuIGlubGlu
ZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICByZXR1cm4gaW5saW5lQWRk
KGtleSwgc3RkOjpmb3J3YXJkPFY+KG1hcHBlZCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRS
ZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFYsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfY29udmVydGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFY+Ojp0eXBlLCB0
eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc6OlRyYWl0VHlwZT46OnZhbHVlPjo6dHlwZSo+CithdXRv
IEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVk
VHJhaXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAog
ewotICAgIHJldHVybiBpbmxpbmVBZGQoV1RGOjptb3ZlKGtleSksIHN0ZDo6Zm9yd2FyZDxUPiht
YXBwZWQpKTsKKyAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6bW92ZShrZXkpLCBzdGQ6OmZvcndh
cmQ8Vj4obWFwcGVkKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8Riwgc3RkOjpmdW5jdGlvbjx0eXBlbmFtZSBN
YXBwZWRUcmFpdHNBcmc6OlRyYWl0VHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwg
c3RkOjpudWxscHRyX3Q+Ojp2YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25z
dCBLZXlUeXBlJiBrZXksIEYmJiBmdW5jdGlvbikgLT4gQWRkUmVzdWx0Cit7CisgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8TGF6eUFkZEhhc2hUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRy
YWl0cywgSGFzaEZ1bmN0aW9ucz4+KGtleSwgc3RkOjpmb3J3YXJkPEY+KGZ1bmN0aW9uKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0Fy
Zz4KK3RlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
Y29udmVydGlibGU8Riwgc3RkOjpmdW5jdGlvbjx0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc6OlRy
YWl0VHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwgc3RkOjpudWxscHRyX3Q+Ojp2
YWx1ZT46OnR5cGUqPgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBGJiYgZnVu
Y3Rpb24pIC0+IEFkZFJlc3VsdAoreworICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPExh
enlBZGRIYXNoVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihX
VEY6Om1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPEY+KGZ1bmN0aW9uKSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3
MTAzMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVh
ZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlv
bSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKFdURl9IYXNoTWFwLCBMYXp5QWRkKSk6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZE1vdmVPbmx5VmFsdWVzKSk6IEFk
ZGVkLgorCiAyMDE0LTA3LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gUGFzdGluZyByaWNoIGNvbnRlbnQgZG9lcyBub3QgcGVyZm9y
bSBhIHR3by1zdGVwIHBhc3RlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAkocmV2aXNpb24gMTcxMDMxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw0ICsxNDgsMzIgQEAgVEVT
VChXVEZfSGFzaE1hcCwgSW5pdGlhbGl6ZXJMaXN0KQogICAgIEVYUEVDVF9FUShzdGQ6OnN0cmlu
ZygpLCBtYXAuZ2V0KDUpKTsKIH0KIAorVEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZCkKK3sKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnN0cmluZz4gbWFwOworICAgIG1hcC5hZGQoMSwgIm9u
ZSIpOworICAgIEVYUEVDVF9FUSgxLCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIm9uZSIs
IG1hcC5nZXQoMSkpOworCisgICAgbWFwLmFkZCgxLCBbXSB7IHJldHVybiAibm90b25lIjsgfSk7
CisgICAgRVhQRUNUX0VRKDEsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgib25lIiwgbWFw
LmdldCgxKSk7CisKKyAgICBtYXAuYWRkKDIsIFtdIHsgcmV0dXJuICJ0d28iOyB9KTsKKyAgICBF
WFBFQ1RfRVEoMiwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCJ0d28iLCBtYXAuZ2V0KDIp
KTsKK30KKworVEVTVChXVEZfSGFzaE1hcCwgTGF6eUFkZE1vdmVPbmx5VmFsdWVzKQoreworICAg
IEhhc2hNYXA8dW5zaWduZWQsIE1vdmVPbmx5PiBtYXA7CisgICAgbWFwLmFkZCgxLCBbXSB7Cisg
ICAgICAgIE1vdmVPbmx5IG1vdmVPbmx5KDEpOworICAgICAgICByZXR1cm4gbW92ZU9ubHk7Cisg
ICAgfSk7CisKKyAgICBhdXRvIGl0ID0gbWFwLmZpbmQoMSk7CisgICAgRVhQRUNUX0VRKDF1LCBp
dC0+dmFsdWUudmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234813</attachid>
            <date>2014-07-12 16:59:05 -0700</date>
            <delta_ts>2016-02-16 19:36:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20140712165847.patch</filename>
            <type>text/plain</type>
            <size>9071</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzEwMzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTA3LTEyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIG9mIEhhc2hNYXA6OmFkZCB0aGF0
IHRha2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgdmFsdWUgdG8gbWFrZSB0aGUgbGF6eSB2
YWx1ZSBpbml0aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2
YWx1ZSB0byBhIEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBh
bGxvdyBmb3Igbm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcg
dmFsdWUgaWYgaXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBj
cmVhdGVOZXdWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9yIHNvbWV0aW1lcworICAgICAgICAK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgdmFsdWUgPSBtYXAuYWRkKGtleSwgVmFsdWUo
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGNyZWF0ZU5ld1ZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgIH0KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHlvdSBjYW4gbm93IHVzZSBh
IG5ldyBvdmVybG9hZCBvZiBIYXNoTWFwOjphZGQgdGhhdCB0YWtlcyBhIGZ1bmN0aW9uIHRoYXQg
d2lsbCBvbmx5IGdldCBjYWxsZWQKKyAgICAgICAgd2hlbiB0aGUga2V5IGlzIG5vdCBhbHJlYWR5
IHByZXNlbnQuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBjaGFuZ2UgdG8gdXNpbmcgdGhlIGZvbGxv
d2luZyBpZGlvbToKKyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGtleSwgW10geyByZXR1cm4gY3JlYXRlTmV3VmFsdWUoKTsgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgICog
d3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6SGFzaE1hcDo6YWRkKToKKyAgICAgICAgVXBk
YXRlIHRoZSBleGlzdGluZyBIYXNoTWFwIGFkZCB0byBvbmx5IGJlIGVuYWJsZWQgaWYgdGhlIHR5
cGUgb2YgViBpcyBjb252ZXJ0aWJsZSB0byB0aGUgbWFwcyBNYXBwZWQgdHlwZS4gVGhpcworICAg
ICAgICBhbGxvd3MgdXMgdG8gdGhlbiBhZGQgYW4gb3ZlcmxvYWQsIHRoYXQgaXMgb25seSBlbmFi
bGVkIGlmIHRoZSBwYXJhbWV0ZXIgKGNhbGxlZCBGKSwgaXMgYSBjYWxsYWJsZSB0aGF0IHJldHVy
bnMgdGhlIE1hcHBlZAorICAgICAgICB0eXBlLgorCisgICAgICAgIChXVEY6OkxhenlBZGRIYXNo
VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6OkxhenlBZGRIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpMYXp5QWRkSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6
CisgICAgICAgIEFkZCBhIG5ldyBIYXNoVHJhbnNsYXRvciBmb3IgdXNpbmcgdGhlIG5ldyBvdmVy
bG9hZHMgb2YgSGFzaE1hcCBhZGQgdGhhdCB3YWl0cyB1bnRpbCB0aGUgdHJhbnNsYXRpb24gdG8g
Y2FsbCB0aGUgcGFzc2VkCisgICAgICAgIGluIGZ1bmN0aW9uLgorCiAyMDE0LTA3LTExICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIEVuYWJs
ZSBERkcgSklULgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcxMDM1KQorKysgU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDI0IEBAIHB1Ymxp
YzoKICAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAg
ICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwKICAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1
bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBWJiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFk
ZFJlc3VsdCBhZGQoS2V5VHlwZSYmLCBWJiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+Cisg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9yZWZlcmVuY2U8Vj46OnR5cGUsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZzo6
VHJhaXRUeXBlPjo6dmFsdWUsIEFkZFJlc3VsdD46OnR5cGUKKyAgICBhZGQoY29uc3QgS2V5VHlw
ZSYsIFYmJik7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KKyAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxWPjo6dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGU+Ojp2
YWx1ZSwgQWRkUmVzdWx0Pjo6dHlwZQorICAgIGFkZChLZXlUeXBlJiYsIFYmJik7CisKKyAgICAv
LyBEb2VzIG5vdGhpbmcgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQsIG90aGVyd2lzZSwg
aXQgY2FsbHMgZnVuY3Rpb24gRiBhbmQgdXNlcyB0aGUgcmVzdWx0IGFzIHRoZSBuZXcgdmFsdWUu
CisgICAgLy8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtl
eSBsb2NhdGlvbiwKKyAgICAvLyBhbmQgYW4gaXNOZXdFbnRyeSBib29sZWFuIHRoYXQncyB0cnVl
IGlmIGEgbmV3IGVudHJ5IHdhcyBhZGRlZC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPiAKKyAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVu
Y3Rpb248TWFwcGVkVHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwgc3RkOjpudWxs
cHRyX3Q+Ojp2YWx1ZSwgQWRkUmVzdWx0Pjo6dHlwZQorICAgIGFkZChjb25zdCBLZXlUeXBlJiwg
RiYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+IAorICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8Riwgc3RkOjpmdW5jdGlvbjxNYXBwZWRUeXBlKCk+
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxGLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlLCBBZGRS
ZXN1bHQ+Ojp0eXBlCisgICAgYWRkKEtleVR5cGUmJiwgRiYmKTsKIAogICAgIC8vIFNhbWUgYXMg
YWRkKCksIGJ1dCBhZ2dyZXNzaXZlbHkgaW5saW5lZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
PiBBZGRSZXN1bHQgZmFzdEFkZChjb25zdCBLZXlUeXBlJiwgViYmKTsKQEAgLTE2Niw2ICsxODIs
MTcgQEAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yIHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KK3N0cnVjdCBMYXp5
QWRkSGFzaFRyYW5zbGF0b3IgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwo
YSwgYik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBG
PiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIEYmJiBmdW5jdGlv
bikKKyAgICB7CisgICAgICAgIGxvY2F0aW9uLmtleSA9IHN0ZDo6Zm9yd2FyZDxVPihrZXkpOwor
ICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IGZ1bmN0aW9uKCk7CisgICAgfQorfTsKKwogdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIFRyYW5zbGF0b3I+CiBzdHJ1Y3QgSGFz
aE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIFRyYW5zbGF0b3I6Omhhc2goa2V5
KTsgfQpAQCAtMzA3LDE3ICszMzQsMzEgQEAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJn
LCBIYXNoQXJnLAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBl
ZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBN
YXBwZWRUcmFpdHNBcmc+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFk
ZChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8
dHlwZW5hbWUgVj4KK2F1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBWJiYg
bWFwcGVkKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6dHlwZSwgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZSwgQWRkUmVzdWx0Pjo6dHlwZQogewotICAgIHJldHVy
biBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CisgICAgcmV0dXJuIGlu
bGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxWPihtYXBwZWQpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoS2V5VHlwZSYmIGtleSwgVCYmIG1hcHBlZCkg
LT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWPgorYXV0byBIYXNoTWFwPEtleUFyZywg
TWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChL
ZXlUeXBlJiYga2V5LCBWJiYgbWFwcGVkKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxWPjo6dHlwZSwg
dHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnOjpUcmFpdFR5cGU+Ojp2YWx1ZSwgQWRkUmVzdWx0Pjo6
dHlwZQogewotICAgIHJldHVybiBpbmxpbmVBZGQoV1RGOjptb3ZlKGtleSksIHN0ZDo6Zm9yd2Fy
ZDxUPihtYXBwZWQpKTsKKyAgICByZXR1cm4gaW5saW5lQWRkKFdURjo6bW92ZShrZXkpLCBzdGQ6
OmZvcndhcmQ8Vj4obWFwcGVkKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEY+CithdXRvIEhh
c2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgRiYmIGZ1bmN0aW9uKSAtPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPEYsIHN0ZDo6ZnVuY3Rpb248TWFw
cGVkVHlwZSgpPj46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8Riwgc3RkOjpudWxscHRyX3Q+Ojp2
YWx1ZSwgQWRkUmVzdWx0Pjo6dHlwZQoreworICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRk
PExhenlBZGRIYXNoVHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+
PihrZXksIHN0ZDo6Zm9yd2FyZDxGPihmdW5jdGlvbikpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGPgorYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNB
cmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBGJiYgZnVuY3Rpb24pIC0+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8Riwgc3RkOjpmdW5j
dGlvbjxNYXBwZWRUeXBlKCk+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxGLCBzdGQ6Om51bGxw
dHJfdD46OnZhbHVlLCBBZGRSZXN1bHQ+Ojp0eXBlCit7CisgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBhZGQ8TGF6eUFkZEhhc2hUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1
bmN0aW9ucz4+KFdURjo6bW92ZShrZXkpLCBzdGQ6OmZvcndhcmQ8Rj4oZnVuY3Rpb24pKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1l
IEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJn
PgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTcxMDM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTQtMDctMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgYW4gb3ZlcmxvYWQgb2YgSGFzaE1hcDo6YWRkIHRoYXQgdGFrZXMgYSBmdW5j
dGlvbiBpbnN0ZWFkIG9mIHRoZSB2YWx1ZSB0byBtYWtlIHRoZSBsYXp5IHZhbHVlIGluaXRpYWxp
emF0aW9uIGlkaW9tIGVhc2llcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM0ODU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoV1RGX0hhc2hNYXAsIExhenlBZGQpKTogQWRkZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKFdURl9IYXNoTWFwLCBMYXp5QWRkTW92ZU9ubHlW
YWx1ZXMpKTogQWRkZWQuCisKIDIwMTQtMDctMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBQYXN0aW5nIHJpY2ggY29udGVudCBkb2Vz
IG5vdCBwZXJmb3JtIGEgdHdvLXN0ZXAgcGFzdGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwCShyZXZpc2lvbiAxNzEwMzUpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDQgKzE0
OCwzMiBAQCBURVNUKFdURl9IYXNoTWFwLCBJbml0aWFsaXplckxpc3QpCiAgICAgRVhQRUNUX0VR
KHN0ZDo6c3RyaW5nKCksIG1hcC5nZXQoNSkpOwogfQogCitURVNUKFdURl9IYXNoTWFwLCBMYXp5
QWRkKQoreworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6c3RyaW5nPiBtYXA7CisgICAgbWFw
LmFkZCgxLCAib25lIik7CisgICAgRVhQRUNUX0VRKDEsIG1hcC5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgib25lIiwgbWFwLmdldCgxKSk7CisKKyAgICBtYXAuYWRkKDEsIFtdIHsgcmV0dXJuICJu
b3RvbmUiOyB9KTsKKyAgICBFWFBFQ1RfRVEoMSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KCJvbmUiLCBtYXAuZ2V0KDEpKTsKKworICAgIG1hcC5hZGQoMiwgW10geyByZXR1cm4gInR3byI7
IH0pOworICAgIEVYUEVDVF9FUSgyLCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoInR3byIs
IG1hcC5nZXQoMikpOworfQorCitURVNUKFdURl9IYXNoTWFwLCBMYXp5QWRkTW92ZU9ubHlWYWx1
ZXMpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgTW92ZU9ubHk+IG1hcDsKKyAgICBtYXAuYWRk
KDEsIFtdIHsKKyAgICAgICAgTW92ZU9ubHkgbW92ZU9ubHkoMSk7CisgICAgICAgIHJldHVybiBt
b3ZlT25seTsKKyAgICB9KTsKKworICAgIGF1dG8gaXQgPSBtYXAuZmluZCgxKTsKKyAgICBFWFBF
Q1RfRVEoMXUsIGl0LT52YWx1ZS52YWx1ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271520</attachid>
            <date>2016-02-16 19:36:24 -0800</date>
            <delta_ts>2016-02-17 10:00:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134857-20160216193604.patch</filename>
            <type>text/plain</type>
            <size>7957</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTY2NzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTAyLTE2ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGFuIGVuc3VyZSBmdW5jdGlvbiBvbiBIYXNoTWFwIHRo
YXQgdGFrZXMgYSBrZXkgYW5kIGEgZnVuY3Rpb24gdG8gbWFrZSB0aGUgbGF6eSB2YWx1ZSBpbml0
aWFsaXphdGlvbiBpZGlvbSBlYXNpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNDg1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGlkaW9tIGZvciBhZGRpbmcgYSB2YWx1ZSB0byBh
IEhhc2hNYXAgaWYgdGhlIGtleSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LCB0byBhbGxvdyBmb3Ig
bm90CisgICAgICAgIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIHRoZSBuZXcgdmFsdWUgaWYg
aXQgd29uJ3QgYmUgdXNlZCwgaXM6CisgICAgICAgIAorICAgICAgICB7CisgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKTsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CisKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjcmVhdGVOZXdW
YWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIH0KKworICAgICAgICBvciBzb21ldGltZXMKKworICAgICAgICB7CisgICAgICAgICAgICBh
dXRvJiB2YWx1ZSA9IG1hcC5hZGQoa2V5LCBWYWx1ZSgpKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRlTmV3VmFs
dWUoKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFdp
dGggdGhpcyBwYXRjaCwgeW91IGNhbiBub3cgdXNlIHRoZSBuZXcgZnVuY3Rpb24gSGFzaE1hcDo6
ZW5zdXJlKGtleSwgZnVuY3RvcikuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byAKKyAgICAgICAgY2hh
bmdlIHRvIHVzaW5nIHRoZSBmb2xsb3dpbmcgaWRpb206CisKKyAgICAgICAgeworICAgICAgICAg
ICAgYXV0byBpdCA9IG1hcC5lbnN1cmUoa2V5LCBbXSB7IHJldHVybiBjcmVhdGVOZXdWYWx1ZSgp
OyB9KTsKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICBUaGUgcGFzc2VkIGluIGZ1bmN0b3Igd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUga2V5IGlz
IG5vdCBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIEhhc2hNYXAuCisKKyAgICAgICAgKiB3dGYvSGFz
aE1hcC5oOgorICAgICAgICAoV1RGOjpIYXNoTWFwVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAg
ICAgICAgKFdURjo6SGFzaE1hcEVuc3VyZVRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoV1RG
OjpIYXNoTWFwRW5zdXJlVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpIYXNoTWFw
RW5zdXJlVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdURjo6SGFzaE1hcFRyYW5z
bGF0b3JBZGFwdGVyOjpoYXNoKToKKwogMjAxNi0wMi0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRlIHRoZSBuZWVkIGZvciBXVEZDcmFzaEltcGwo
KS4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9IYXNoTWFwLmgJKHJldmlzaW9uIDE5NjY3OSkKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw5IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgZmFzdEFkZChjb25zdCBLZXlUeXBlJiwgViYm
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgZmFzdEFkZChLZXlUeXBlJiYs
IFYmJik7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpdGVyYXRvciBlbnN1cmUo
Y29uc3QgS2V5VHlwZSYsIGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpdGVyYXRvciBlbnN1cmUoS2V5VHlwZSYmLCBjb25zdCBGdW5jdG9yJik7CisKICAg
ICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3Ip
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC0xNjMsNiArMTY2LDkgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgogICAgIEFkZFJlc3Vs
dCBpbmxpbmVBZGQoSyYmLCBWJiYpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5h
bWUgRj4KKyAgICBpdGVyYXRvciBpbmxpbmVFbnN1cmUoSyYmLCBjb25zdCBGJik7CisKICAgICBI
YXNoVGFibGVUeXBlIG1faW1wbDsKIH07CiAKQEAgLTE3Nyw2ICsxODMsMTcgQEAgc3RydWN0IEhh
c2hNYXBUcmFuc2xhdG9yIHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVRy
YWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KK3N0cnVjdCBIYXNoTWFwRW5zdXJlVHJhbnNs
YXRvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBh
LCBjb25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIEZ1bmN0b3I+IHN0YXRp
YyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtleSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIGxvY2F0aW9uLmtleSA9IHN0ZDo6Zm9yd2FyZDxVPihrZXkp
OworICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IGZ1bmN0b3IoKTsKKyAgICB9Cit9OworCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgVHJhbnNsYXRvcj4KIHN0cnVjdCBI
YXNoTWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChr
ZXkpOyB9CkBAIC0yOTcsNiArMzE0LDEzIEBAIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoTWFwPEtl
eUFyZywgTWFwcGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBw
ZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUg
TWFwcGVkVHJhaXRzQXJnPgordGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgRj4KK0FMV0FZ
U19JTkxJTkUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUVuc3VyZShLJiYga2V5LCBjb25zdCBGJiBm
dW5jdG9yKSAtPiBpdGVyYXRvcgoreworICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPEhh
c2hNYXBFbnN1cmVUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0aW9ucz4+
KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBmdW5jdG9yKS5pdGVyYXRvcjsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYg
bWFwcGVkKSAtPiBBZGRSZXN1bHQKIHsKQEAgLTM0NSw2ICszNjksMjAgQEAgQUxXQVlTX0lOTElO
RSBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZQogICAgIHJldHVybiBpbmxpbmVBZGQoV1RGTW92
ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBL
ZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+CithdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRy
YWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6ZW5zdXJlKGNvbnN0IEtleVR5cGUmIGtleSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgLT4gaXRlcmF0b3IKK3sKKyAgICByZXR1cm4gaW5saW5lRW5z
dXJlKGtleSwgZnVuY3Rvcik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5
cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CithdXRv
IEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVk
VHJhaXRzQXJnPjo6ZW5zdXJlKEtleVR5cGUmJiBrZXksIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
IC0+IGl0ZXJhdG9yCit7CisgICAgcmV0dXJuIGlubGluZUVuc3VyZShXVEZNb3ZlKGtleSksIGZ1
bmN0b3IpOworfQorICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgogYXV0byBIYXNoTWFwPFQs
IFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IC0+
IE1hcHBlZFBlZWtUeXBlCiB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTY2NzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMi0xNiAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhbiBlbnN1cmUgZnVuY3Rpb24gb24gSGFzaE1h
cCB0aGF0IHRha2VzIGEga2V5IGFuZCBhIGZ1bmN0aW9uIHRvIG1ha2UgdGhlIGxhenkgdmFsdWUg
aW5pdGlhbGl6YXRpb24gaWRpb20gZWFzaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
OgorICAgICAgICBBZGQgdGVzdHMgZm9yIEhhc2hNYXA6OmVuc3VyZS4KKwogMjAxNi0wMi0xNSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBHYXRo
ZXIgc29tZSBydWRpbWVudGFyeSBzdGF0aXN0aWNzIGR1cmluZyByZXNvdXJjZSBsb2FkIApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAJKHJldmlzaW9uIDE5
NjY3OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDgsNCArNTA4LDYyIEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktl
eV9TZXRVc2luZ01vdmUKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZSkKK3sKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkLCB1bnNpZ25lZD4gbWFwOworICAgIHsKKyAgICAgICAgYXV0byBp
dCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gMTsgfSk7CisgICAgICAgIEVYUEVDVF9FUSgx
dSwgbWFwLmdldCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgaXQtPmtleSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgaXQtPnZhbHVlKTsKKyAgICAgICAgaXQgPSBtYXAuZW5zdXJlKDEsIFtd
IHsgcmV0dXJuIDI7IH0pOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG1hcC5nZXQoMSkpOworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIGl0LT5rZXkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIGl0LT52
YWx1ZSk7CisgICAgfQorfQorCitURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfTW92ZU9ubHlWYWx1
ZXMpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgTW92ZU9ubHk+IG1vdmVPbmx5VmFsdWVzOwor
ICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1vdmVPbmx5VmFsdWVzLmVuc3VyZSgxLCBbXSB7IHJl
dHVybiBNb3ZlT25seSgxKTsgfSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgaXQtPmtleSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgxdSwgaXQtPnZhbHVlLnZhbHVlKCkpOworICAgICAgICBpdCA9IG1v
dmVPbmx5VmFsdWVzLmVuc3VyZSgxLCBbXSB7IHJldHVybiBNb3ZlT25seSgyKTsgfSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxdSwgaXQtPmtleSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgaXQtPnZh
bHVlLnZhbHVlKCkpOworICAgIH0KK30KKworVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1
ZVBvaW50ZXIpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2ln
bmVkPj4gbWFwOworICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5lbnN1cmUoMSwgW10geyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMSk7IH0pOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsICptYXAuZ2V0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBpdC0+a2V5KTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCAqaXQtPnZhbHVlLmdldCgpKTsKKyAgICAgICAgaXQgPSBtYXAu
ZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
dSwgaXQtPmtleSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgKml0LT52YWx1ZS5nZXQoKSk7Cisg
ICAgfQorfQorCitURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfUmVmUHRyKQoreworICAgIEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxSZWZMb2dnZXI+PiBtYXA7CisKKyAgICB7CisgICAgICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgICAgIGF1dG8gaXQgPSBtYXAuZW5zdXJlKDEs
IFsmXSB7IHJldHVybiBSZWZQdHI8UmVmTG9nZ2VyPigmYSk7IH0pOworICAgICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgCisgICAgICAgIGl0
ID0gbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gUmVmUHRyPFJlZkxvZ2dlcj4oJmEpOyB9KTsK
KyAgICAgICAgRVhQRUNUX1NUUkVRKCIiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="296338"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>