<?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>179941</bug_id>
          
          <creation_ts>2017-11-22 05:10:41 -0800</creation_ts>
          <short_desc>[Web Animations] Adopt KeyframeList in KeyframeEffect</short_desc>
          <delta_ts>2017-11-22 11:04:28 -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>Animations</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=122912</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374171</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-22 05:10:41 -0800</bug_when>
    <thetext>KeyframeEffect currently models its keyframes by creating a new Keyframe struct and storing them in a Vector&lt;Keyframe&gt;. As it turns out, there already is a way to model keyframes in WebCore, it&apos;s KeyframeList. We should adopt this class, which will also make it possible to run hardware-composited animations using RenderBoxModelObject::startAnimation() in the future since this function expects a KeyframeList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374173</commentid>
    <comment_count>1</comment_count>
      <attachid>327450</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-22 05:22:04 -0800</bug_when>
    <thetext>Created attachment 327450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374174</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-22 05:25:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/35666924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374212</commentid>
    <comment_count>3</comment_count>
      <attachid>327450</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-22 09:44:54 -0800</bug_when>
    <thetext>Comment on attachment 327450
Patch

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

&gt; Source/WebCore/animation/KeyframeEffect.cpp:54
&gt; +    , m_keyframes(&quot;&quot;)

empytString() is more efficient than writing &quot;&quot;

&gt; Source/WebCore/animation/KeyframeEffect.cpp:78
&gt; +    KeyframeList newKeyframes(&quot;keyframe-effect-&quot; + createCanonicalUUIDString());
&gt; +    newKeyframes.clear();

Seems annoying to have to construct this with two values, and then clear them out. Is there a more elegant construction we can come up with?

&gt; Source/WebCore/animation/KeyframeEffect.cpp:127
&gt; -    m_keyframes = WTFMove(newKeyframes);
&gt; +    m_keyframes.swap(newKeyframes);

This seems unnecessary. Seems like KeyFrameList could and should easily support move assignment since AtomicString, Vector, and HashSet all support that.

&gt; Source/WebCore/rendering/style/KeyframeList.h:81
&gt; +    void swap(KeyframeList&amp; other)
&gt; +    {
&gt; +        std::swap(m_animationName, other.m_animationName);
&gt; +        std::swap(m_keyframes, other.m_keyframes);
&gt; +        std::swap(m_properties, other.m_properties);
&gt; +    }

Should just add the move assignment operator instead:

    KeyFrameList&amp; operator=(KeyFrameList&amp;&amp;) = default;

But also, why doesn’t that get generated automatically for us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374216</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-22 09:56:20 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 327450 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327450&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:54
&gt; &gt; +    , m_keyframes(&quot;&quot;)
&gt; 
&gt; empytString() is more efficient than writing &quot;&quot;

Will fix.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:78
&gt; &gt; +    KeyframeList newKeyframes(&quot;keyframe-effect-&quot; + createCanonicalUUIDString());
&gt; &gt; +    newKeyframes.clear();
&gt; 
&gt; Seems annoying to have to construct this with two values, and then clear
&gt; them out. Is there a more elegant construction we can come up with?

Agreed. I think we might be able to remove the addition of the two values in the KeyframeList constructor actually. Running WKTR through the animations and transitions directories reveals no failures, so I&apos;ll upload a new patch with that removal to see what the bots say, but I doubt any of our code relies those initial values.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:127
&gt; &gt; -    m_keyframes = WTFMove(newKeyframes);
&gt; &gt; +    m_keyframes.swap(newKeyframes);
&gt; 
&gt; This seems unnecessary. Seems like KeyFrameList could and should easily
&gt; support move assignment since AtomicString, Vector, and HashSet all support
&gt; that.

Will add the move assignment operator you&apos;ve suggested and revert to the previous move assignment.

&gt; &gt; Source/WebCore/rendering/style/KeyframeList.h:81
&gt; &gt; +    void swap(KeyframeList&amp; other)
&gt; &gt; +    {
&gt; &gt; +        std::swap(m_animationName, other.m_animationName);
&gt; &gt; +        std::swap(m_keyframes, other.m_keyframes);
&gt; &gt; +        std::swap(m_properties, other.m_properties);
&gt; &gt; +    }
&gt; 
&gt; Should just add the move assignment operator instead:
&gt; 
&gt;     KeyFrameList&amp; operator=(KeyFrameList&amp;&amp;) = default;

Easy. Thanks for the tip.

&gt; But also, why doesn’t that get generated automatically for us?

That goes well beyond my current understand of how WebCore works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374219</commentid>
    <comment_count>5</comment_count>
      <attachid>327458</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-22 10:03:42 -0800</bug_when>
    <thetext>Created attachment 327458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374234</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-22 11:04:28 -0800</bug_when>
    <thetext>Committed r225099: &lt;https://trac.webkit.org/changeset/225099&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327450</attachid>
            <date>2017-11-22 05:22:04 -0800</date>
            <delta_ts>2017-11-22 10:03:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179941-20171122142203.patch</filename>
            <type>text/plain</type>
            <size>8423</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNiMDVjZTUxNzVkZDE2
MzE5NmFkZThlYzA4MGM1MmM1NmQ0MmQ1Yy4uMDcxY2JmOTAwOWE2OWUzZTA4YjVlMGIwMzc4M2Nm
Y2YzZGU4NmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTExLTIyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBBZG9wdCBLZXlmcmFtZUxpc3QgaW4gS2V5ZnJhbWVFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTk0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtleWZyYW1lRWZmZWN0IHVzZWQgdG8gbW9k
ZWwgaXRzIGtleWZyYW1lcyBieSBjcmVhdGluZyBhIG5ldyBLZXlmcmFtZSBzdHJ1Y3QgYW5kIHN0
b3JpbmcgdGhlbSBpbiBhIFZlY3RvcjxLZXlmcmFtZT4uCisgICAgICAgIEhvd2V2ZXIsIHRoZXJl
IGFscmVhZHkgaXMgYSB3YXkgdG8gbW9kZWwga2V5ZnJhbWVzIGluIFdlYkNvcmUgdXNpbmcgdGhl
IEtleWZyYW1lTGlzdCBjbGFzcy4gV2Ugbm93IGFkb3B0IHRoaXMgY2xhc3MKKyAgICAgICAgaW4g
S2V5ZnJhbWVFZmZlY3QsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biBoYXJkd2FyZS1j
b21wb3NpdGVkIGFuaW1hdGlvbnMgdXNpbmcgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0YXJ0QW5p
bWF0aW9uKCkKKyAgICAgICAgaW4gYSBmb2xsb3ctdXAgcGF0Y2gsIHNpbmNlIHRoaXMgZnVuY3Rp
b24gZXhwZWN0cyBhIEtleWZyYW1lTGlzdC4KKworICAgICAgICBObyBuZXdzIHRlc3RzLCB0aGlz
IGlzIGFuIGludGVybmFscyBjaGFuZ2UgYW5kIGRvZXMgbm90IHlpZWxkIGFueSBjaGFuZ2VzIGlu
IFdlYiBjb250ZW50LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpLZXlmcmFtZUVmZmVjdCk6IENyZWF0
ZSBhIGRlZmF1bHQgbV9rZXlmcmFtZXMgYXQgY29uc3RydWN0aW9uIHRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6cHJvY2Vzc0tleWZyYW1lcyk6IENyZWF0ZSBhIHRlbXBv
cmFyeSBLZXlmcmFtZUxpc3QgYXMgd2UgcGFyc2Uga2V5ZnJhbWVzIHBhc3NlZCBmcm9tIHRoZSBK
UyBBUEkKKyAgICAgICAgYW5kIHN3YXAgaXQgd2l0aCBtX2tleWZyYW1lcyB1cG9uIHN1Y2Nlc3Nm
dWwgcGFyc2luZy4gV2UgYWxzbyB1c2UgY3NzUHJvcGVydHlJZCB0byByZWZlciB0byBhIENTU1By
b3BlcnR5SUQgdG8gbWFrZSB0aGUgY29kZQorICAgICAgICBjbGVhcmVyIGFuZCBlbnN1cmUgdGhl
cmUgaXMgbm8gY29uZnVzaW9uIHdpdGggSlMgcHJvcGVydGllcyB0aGF0IHdlIG1hbmlwdWxhdGUg
aW4gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21w
dXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KTogVXNlIHRoZSBsaXN0IG9mIENTUyBwcm9wZXJ0aWVz
IGV4cG9zZWQgb24gS2V5ZnJhbWVMaXN0IGRpcmVjdGx5IHJhdGhlcgorICAgICAgICB0aGFuIGVu
dW1lcmF0aW5nIGVhY2gga2V5ZnJhbWUgYW5kIHVzZSBjc3NQcm9wZXJ0eUlkIHRvIHJlZmVyIHRv
IGluZGl2aWR1YWwgQ1NTUHJvcGVydHlJRCB2YWx1ZXMgZm9yIGNvbnNpc3RlbmN5LgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5QXRMb2NhbFRpbWUpOiBVc2UgdGhlIGxp
c3Qgb2YgQ1NTIHByb3BlcnRpZXMgZXhwb3NlZCBvbiBLZXlmcmFtZUxpc3QgZGlyZWN0bHkgcmF0
aGVyIHRoYW4KKyAgICAgICAgdXNpbmcgdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkIG9uIHRoZSBm
aXJzdCBrZXlmcmFtZSBvbmx5LiBXZSBhbHNvIHJlbW92ZSBhIHN0YWxlIEZJWE1FIGNvbW1lbnQg
d2hpY2ggd2FzIGFkZHJlc3NlZCBpbiByMjI0OTU3LgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5oOiBSZW1vdmUgdGhlIEtleWZyYW1lIHN0cnVjdCBhbmQgY2hhbmdlIHRoZSB0
eXBlIG9mIG1fa2V5ZnJhbWVzIGZyb20gVmVjdG9yPEtleWZyYW1lPiB0byBLZXlmcmFtZUxpc3Qu
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVMaXN0Ojpzd2FwKTogQWxsb3cgdHdvIEtleWZyYW1lTGlzdCBvYmplY3Rz
IHRvIGJlIHN3YXBwZWQsIHdoaWNoIHdlIHVzZSBpbiBLZXlmcmFtZUVmZmVjdDo6cHJvY2Vzc0tl
eWZyYW1lcyB0bworICAgICAgICBzdG9yZSBhIG5ld2x5LXBhcnNlZCBLZXlmcmFtZUxpc3QgaW4g
bV9rZXlmcmFtZXMgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB0ZW1wb3Jhcnkgb2JqZWN0
LgorCiAyMDE3LTExLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnaXN0cmF0aW9uIGluIFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggNDZmZjMzYzg4
YTk0M2JjNzViMDIxY2I3Mzk5NjMwNTM0Y2Q1OTI3MC4uMDkwZjA3YjE5YmIwZTIxOTViNGQ3ZDM2
N2MyNmJmNzVkNWZkZTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgi
CiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIldpbGxDaGFuZ2VEYXRhLmgi
CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKQEAgLTUwLDYgKzUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZm
ZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbGVtZW4KIEtl
eWZyYW1lRWZmZWN0OjpLZXlmcmFtZUVmZmVjdChFbGVtZW50KiB0YXJnZXQpCiAgICAgOiBBbmlt
YXRpb25FZmZlY3QoS2V5ZnJhbWVFZmZlY3RDbGFzcykKICAgICAsIG1fdGFyZ2V0KHRhcmdldCkK
KyAgICAsIG1fa2V5ZnJhbWVzKCIiKQogewogfQogCkBAIC03Miw3ICs3NCw4IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFN0cm9uZzxKU09iCiAgICAgaWYgKCFpc0pTQXJyYXkoa2V5ZnJhbWVzLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAgVmVjdG9yPEtleWZy
YW1lPiBuZXdLZXlmcmFtZXMgeyB9OworICAgIEtleWZyYW1lTGlzdCBuZXdLZXlmcmFtZXMoImtl
eWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAgICBuZXdL
ZXlmcmFtZXMuY2xlYXIoKTsKIAogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTA3LDE3ICsxMTAsMjEgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gS2V5ZnJhbWVFZmZlY3Q6OnByb2Nlc3NLZXlmcmFtZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgU3Ryb25nPEpTT2IKICAgICAgICAgc3R5bGVQcm9wZXJ0aWVzLT5wYXJzZURlY2xh
cmF0aW9uKGNzc1RleHQudG9TdHJpbmcoKSwgcGFyc2VyQ29udGV4dCk7CiAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mQ1NTUHJvcGVydGllcyA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlDb3Vu
dCgpOwogCi0gICAgICAgIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzKG51bWJlck9m
Q1NTUHJvcGVydGllcyk7CisgICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBu
dWxscHRyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG51bWJlck9mQ1NTUHJv
cGVydGllczsgKytrKSB7Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzW2tdID0gc3R5bGVQcm9wZXJ0
aWVzLT5wcm9wZXJ0eUF0KGspLmlkKCk7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGx5
UHJvcGVydHlUb1N0eWxlKHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBdChrKS5pZCgpLCBzdHls
ZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaykudmFsdWUoKSwgV1RGTW92ZShyZW5kZXJTdHlsZSkp
OworICAgICAgICAgICAgYXV0byBjc3NQcm9wZXJ0eUlkID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9w
ZXJ0eUF0KGspLmlkKCk7CisgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5KGNz
c1Byb3BlcnR5SWQpOworICAgICAgICAgICAgbmV3S2V5ZnJhbWVzLmFkZFByb3BlcnR5KGNzc1By
b3BlcnR5SWQpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9TdHls
ZShjc3NQcm9wZXJ0eUlkLCBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaykudmFsdWUoKSwg
V1RGTW92ZShyZW5kZXJTdHlsZSkpOwogICAgICAgICAgICAgcmVuZGVyU3R5bGUgPSBzdHlsZVJl
c29sdmVyLnN0YXRlKCkudGFrZVN0eWxlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBuZXdLZXlm
cmFtZXMuYXBwZW5kKHsgUmVuZGVyU3R5bGU6OmNsb25lKCpyZW5kZXJTdHlsZSksIHByb3BlcnRp
ZXMgfSk7CisgICAgICAgIGtleWZyYW1lVmFsdWUuc2V0S2V5KGkpOworICAgICAgICBrZXlmcmFt
ZVZhbHVlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqcmVuZGVyU3R5bGUpKTsKKyAg
ICAgICAgbmV3S2V5ZnJhbWVzLmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9
CiAKLSAgICBtX2tleWZyYW1lcyA9IFdURk1vdmUobmV3S2V5ZnJhbWVzKTsKKyAgICBtX2tleWZy
YW1lcy5zd2FwKG5ld0tleWZyYW1lcyk7CiAKICAgICBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1w
YWN0KCk7CiAKQEAgLTEyNywxMiArMTM0LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1l
RWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4ZWNTdGF0ZSYgc3RhdGUsIFN0cm9uZzxKU09iCiB2
b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCkKIHsKICAg
ICBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBrZXlm
cmFtZSA6IG1fa2V5ZnJhbWVzKSB7Ci0gICAgICAgIGZvciAoYXV0byBwcm9wZXJ0eUlEIDoga2V5
ZnJhbWUucHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKFdpbGxDaGFuZ2VEYXRhOjpwcm9w
ZXJ0eUNyZWF0ZXNTdGFja2luZ0NvbnRleHQocHJvcGVydHlJRCkpIHsKLSAgICAgICAgICAgICAg
ICBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KKyAgICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJZCA6IG1fa2V5ZnJh
bWVzLnByb3BlcnRpZXMoKSkgeworICAgICAgICBpZiAoV2lsbENoYW5nZURhdGE6OnByb3BlcnR5
Q3JlYXRlc1N0YWNraW5nQ29udGV4dChjc3NQcm9wZXJ0eUlkKSkgeworICAgICAgICAgICAgbV90
cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTE1Miw5ICsxNTcsOCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojph
cHBseUF0TG9jYWxUaW1lKFNlY29uZHMgbG9jYWxUaW1lLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5
bAogCiAgICAgZmxvYXQgcHJvZ3Jlc3MgPSBsb2NhbFRpbWUgLyB0aW1pbmcoKS0+ZHVyYXRpb24o
KTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgY3Jhc2ggaWYgd2UgYXR0ZW1wdCB0byBhbmlt
YXRlIHByb3BlcnRpZXMgdGhhdCByZXF1aXJlIGFuIEFuaW1hdGlvbkJhc2UuCi0gICAgZm9yIChh
dXRvIHByb3BlcnR5SWQgOiBtX2tleWZyYW1lc1swXS5wcm9wZXJ0aWVzKQotICAgICAgICBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIHByb3BlcnR5SWQsICZ0YXJn
ZXRTdHlsZSwgJm1fa2V5ZnJhbWVzWzBdLnN0eWxlLCAmbV9rZXlmcmFtZXNbMV0uc3R5bGUsIHBy
b2dyZXNzKTsKKyAgICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJZCA6IG1fa2V5ZnJhbWVzLnByb3Bl
cnRpZXMoKSkKKyAgICAgICAgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0
aGlzLCBjc3NQcm9wZXJ0eUlkLCAmdGFyZ2V0U3R5bGUsIG1fa2V5ZnJhbWVzWzBdLnN0eWxlKCks
IG1fa2V5ZnJhbWVzWzFdLnN0eWxlKCksIHByb2dyZXNzKTsKIAogICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWItYW5pbWF0aW9ucy8jc2lkZS1lZmZlY3RzLXNlY3Rpb24KICAgICAvLyBG
b3IgZXZlcnkgcHJvcGVydHkgdGFyZ2V0ZWQgYnkgYXQgbGVhc3Qgb25lIGFuaW1hdGlvbiBlZmZl
Y3QgdGhhdCBpcyBjdXJyZW50IG9yIGluIGVmZmVjdCwgdGhlIHVzZXIgYWdlbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXggYzc3YzlmYWNmNTQwN2E4Yjgz
NmQ2MGYyNjk4MGI4MjI1MTkzOWU3MC4uYmI0OWRmZTgwZGUxZmQ4Mzk1YTg0ZTg2NjQ0MDg4NDk2
ODJjYWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCIKKyNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAtMzQs
MTEgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogCi1zdHJ1
Y3QgS2V5ZnJhbWUgewotICAgIFJlbmRlclN0eWxlIHN0eWxlOwotICAgIFZlY3RvcjxDU1NQcm9w
ZXJ0eUlEPiBwcm9wZXJ0aWVzOwotfTsKLQogY2xhc3MgS2V5ZnJhbWVFZmZlY3QgZmluYWwgOiBw
dWJsaWMgQW5pbWF0aW9uRWZmZWN0CiAgICAgLCBwdWJsaWMgQ1NTUHJvcGVydHlCbGVuZGluZ0Ns
aWVudCB7CiBwdWJsaWM6CkBAIC02NCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21w
dXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJn
ZXQ7Ci0gICAgVmVjdG9yPEtleWZyYW1lPiBtX2tleWZyYW1lczsKKyAgICBLZXlmcmFtZUxpc3Qg
bV9rZXlmcmFtZXM7CiAgICAgYm9vbCBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0IHsgZmFsc2Ug
fTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlm
cmFtZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
aAppbmRleCBhYWM0YzJjN2E3YWE2MDE2MmU2ZDNlYTgxYTBjMzU1MjZmMWI0ZDI3Li40MjI5YjE3
MDhmNmE1OGZmMDM2NjkxYmRkODQxZWNlOWU2Njc2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oCkBAIC03Miw2ICs3MiwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKworICAgIHZvaWQgc3dhcChLZXlmcmFtZUxpc3QmIG90
aGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpzd2FwKG1fYW5pbWF0aW9uTmFtZSwgb3RoZXIubV9h
bmltYXRpb25OYW1lKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fa2V5ZnJhbWVzLCBvdGhlci5tX2tl
eWZyYW1lcyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3Byb3BlcnRpZXMsIG90aGVyLm1fcHJvcGVy
dGllcyk7CisgICAgfQogICAgIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uTmFtZTsgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327458</attachid>
            <date>2017-11-22 10:03:42 -0800</date>
            <delta_ts>2017-11-22 10:39:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179941-20171122190341.patch</filename>
            <type>text/plain</type>
            <size>8650</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNiMDVjZTUxNzVkZDE2
MzE5NmFkZThlYzA4MGM1MmM1NmQ0MmQ1Yy4uZWRjNzFhZjNkNjJmNDA5NjFjZGM4ZTJhNTlhMjU0
YTI3MjNhZWRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE3LTExLTIyICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBBZG9wdCBLZXlmcmFtZUxpc3QgaW4gS2V5ZnJhbWVFZmZlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTk0MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzU2NjY5MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgS2V5ZnJhbWVFZmZlY3QgdXNlZCB0byBtb2RlbCBpdHMga2V5ZnJhbWVzIGJ5IGNy
ZWF0aW5nIGEgbmV3IEtleWZyYW1lIHN0cnVjdCBhbmQgc3RvcmluZyB0aGVtIGluIGEgVmVjdG9y
PEtleWZyYW1lPi4KKyAgICAgICAgSG93ZXZlciwgdGhlcmUgYWxyZWFkeSBpcyBhIHdheSB0byBt
b2RlbCBrZXlmcmFtZXMgaW4gV2ViQ29yZSB1c2luZyB0aGUgS2V5ZnJhbWVMaXN0IGNsYXNzLiBX
ZSBub3cgYWRvcHQgdGhpcyBjbGFzcworICAgICAgICBpbiBLZXlmcmFtZUVmZmVjdCwgd2hpY2gg
bWFrZXMgaXQgcG9zc2libGUgdG8gcnVuIGhhcmR3YXJlLWNvbXBvc2l0ZWQgYW5pbWF0aW9ucyB1
c2luZyBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3RhcnRBbmltYXRpb24oKQorICAgICAgICBpbiBh
IGZvbGxvdy11cCBwYXRjaCwgc2luY2UgdGhpcyBmdW5jdGlvbiBleHBlY3RzIGEgS2V5ZnJhbWVM
aXN0LgorCisgICAgICAgIE5vIG5ld3MgdGVzdHMsIHRoaXMgaXMgYW4gaW50ZXJuYWxzIGNoYW5n
ZSBhbmQgZG9lcyBub3QgeWllbGQgYW55IGNoYW5nZXMgaW4gV2ViIGNvbnRlbnQuCisKKyAgICAg
ICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OktleWZyYW1lRWZmZWN0KTogQ3JlYXRlIGEgZGVmYXVsdCBtX2tleWZyYW1l
cyBhdCBjb25zdHJ1Y3Rpb24gdGltZS4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0
Ojpwcm9jZXNzS2V5ZnJhbWVzKTogQ3JlYXRlIGEgdGVtcG9yYXJ5IEtleWZyYW1lTGlzdCBhcyB3
ZSBwYXJzZSBrZXlmcmFtZXMgcGFzc2VkIGZyb20gdGhlIEpTIEFQSQorICAgICAgICBhbmQgYXNz
aWduIGl0IHRvIG1fa2V5ZnJhbWVzIHVwb24gc3VjY2Vzc2Z1bCBwYXJzaW5nLiBXZSBhbHNvIHVz
ZSBjc3NQcm9wZXJ0eUlkIHRvIHJlZmVyIHRvIGEgQ1NTUHJvcGVydHlJRCB0byBtYWtlIHRoZSBj
b2RlCisgICAgICAgIGNsZWFyZXIgYW5kIGVuc3VyZSB0aGVyZSBpcyBubyBjb25mdXNpb24gd2l0
aCBKUyBwcm9wZXJ0aWVzIHRoYXQgd2UgbWFuaXB1bGF0ZSBpbiB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBh
Y3QpOiBVc2UgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgZXhwb3NlZCBvbiBLZXlmcmFtZUxp
c3QgZGlyZWN0bHkgcmF0aGVyCisgICAgICAgIHRoYW4gZW51bWVyYXRpbmcgZWFjaCBrZXlmcmFt
ZSBhbmQgdXNlIGNzc1Byb3BlcnR5SWQgdG8gcmVmZXIgdG8gaW5kaXZpZHVhbCBDU1NQcm9wZXJ0
eUlEIHZhbHVlcyBmb3IgY29uc2lzdGVuY3kuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVm
ZmVjdDo6YXBwbHlBdExvY2FsVGltZSk6IFVzZSB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyBl
eHBvc2VkIG9uIEtleWZyYW1lTGlzdCBkaXJlY3RseSByYXRoZXIgdGhhbgorICAgICAgICB1c2lu
ZyB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQgb24gdGhlIGZpcnN0IGtleWZyYW1lIG9ubHkuIFdl
IGFsc28gcmVtb3ZlIGEgc3RhbGUgRklYTUUgY29tbWVudCB3aGljaCB3YXMgYWRkcmVzc2VkIGlu
IHIyMjQ5NTcuCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6IFJlbW92ZSB0
aGUgS2V5ZnJhbWUgc3RydWN0IGFuZCBjaGFuZ2UgdGhlIHR5cGUgb2YgbV9rZXlmcmFtZXMgZnJv
bSBWZWN0b3I8S2V5ZnJhbWU+IHRvIEtleWZyYW1lTGlzdC4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvS2V5ZnJhbWVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUxpc3Q6Oktl
eWZyYW1lTGlzdCk6IFdlIHJlbW92ZSB0aGUgZGVmYXVsdCBpbnNlcnRpb25zIGF0IEtleWZyYW1l
TGlzdCBjb25zdHJ1Y3Rpb24gdGltZSBzaW5jZSBpdCByZXF1aXJlcworICAgICAgICBhbiBpbW1l
ZGlhdGUgY2FsbCB0byBjbGVhcigpIHdoZW4gZG9pbmcgYW55IG1lYW5pbmdmdWwgd29yayB3aXRo
IGEgS2V5ZnJhbWVMaXN0LiBXZSBhbHNvIGFkZCB0aGUgZGVmYXVsdCBtb3ZlIGFzc2lnbm1lbnQg
b3BlcmF0b3IKKyAgICAgICAgdG8gYWxsb3cgS2V5ZnJhbWVFZmZlY3Q6OnByb2Nlc3NLZXlmcmFt
ZXMoKSB0byBtYWtlIGEgbW92ZSBhc3NpZ25tZW50IGZyb20gdGhlIHRlbXBvcmFyeSBrZXlmcmFt
ZSBsaXN0IHdlIGJ1aWxkIGF0IHBhcnNpbmcgdG8gdGhlCisgICAgICAgIG1lbWJlciB2YXJpYWJs
ZS4KKwogMjAxNy0xMS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFTU0VSVElPTiBGQUlMRUQ6IHJlZ2lzdHJhdGlvbiBpbiBXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDQ2ZmYzM2M4
OGE5NDNiYzc1YjAyMWNiNzM5OTYzMDUzNGNkNTkyNzAuLmYyODkyOGYyMDM3MjI3ZTU5MjQ4MmY1
N2U0YmEzZjEyMWRkZmM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJXaWxsQ2hhbmdlRGF0YS5o
IgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CkBAIC01MCw2ICs1MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxLZXlmcmFtZUVm
ZmVjdD4+IEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgRWxlbWVuCiBL
ZXlmcmFtZUVmZmVjdDo6S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCogdGFyZ2V0KQogICAgIDogQW5p
bWF0aW9uRWZmZWN0KEtleWZyYW1lRWZmZWN0Q2xhc3MpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQp
CisgICAgLCBtX2tleWZyYW1lcyhlbXB0eVN0cmluZygpKQogewogfQogCkBAIC03Miw3ICs3NCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4
ZWNTdGF0ZSYgc3RhdGUsIFN0cm9uZzxKU09iCiAgICAgaWYgKCFpc0pTQXJyYXkoa2V5ZnJhbWVz
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAg
VmVjdG9yPEtleWZyYW1lPiBuZXdLZXlmcmFtZXMgeyB9OworICAgIEtleWZyYW1lTGlzdCBuZXdL
ZXlmcmFtZXMoImtleWZyYW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KTsKIAogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMTA3LDE0ICsxMDksMTggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
S2V5ZnJhbWVFZmZlY3Q6OnByb2Nlc3NLZXlmcmFtZXMoRXhlY1N0YXRlJiBzdGF0ZSwgU3Ryb25n
PEpTT2IKICAgICAgICAgc3R5bGVQcm9wZXJ0aWVzLT5wYXJzZURlY2xhcmF0aW9uKGNzc1RleHQu
dG9TdHJpbmcoKSwgcGFyc2VyQ29udGV4dCk7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ1NT
UHJvcGVydGllcyA9IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlDb3VudCgpOwogCi0gICAgICAg
IFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzKG51bWJlck9mQ1NTUHJvcGVydGllcyk7
CisgICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG51bWJlck9mQ1NTUHJvcGVydGllczsgKytrKSB7
Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzW2tdID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUF0
KGspLmlkKCk7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1N0eWxl
KHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBdChrKS5pZCgpLCBzdHlsZVByb3BlcnRpZXMtPnBy
b3BlcnR5QXQoaykudmFsdWUoKSwgV1RGTW92ZShyZW5kZXJTdHlsZSkpOworICAgICAgICAgICAg
YXV0byBjc3NQcm9wZXJ0eUlkID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUF0KGspLmlkKCk7
CisgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5KGNzc1Byb3BlcnR5SWQpOwor
ICAgICAgICAgICAgbmV3S2V5ZnJhbWVzLmFkZFByb3BlcnR5KGNzc1Byb3BlcnR5SWQpOworICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9TdHlsZShjc3NQcm9wZXJ0eUlk
LCBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaykudmFsdWUoKSwgV1RGTW92ZShyZW5kZXJT
dHlsZSkpOwogICAgICAgICAgICAgcmVuZGVyU3R5bGUgPSBzdHlsZVJlc29sdmVyLnN0YXRlKCku
dGFrZVN0eWxlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBuZXdLZXlmcmFtZXMuYXBwZW5kKHsg
UmVuZGVyU3R5bGU6OmNsb25lKCpyZW5kZXJTdHlsZSksIHByb3BlcnRpZXMgfSk7CisgICAgICAg
IGtleWZyYW1lVmFsdWUuc2V0S2V5KGkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZVB0cigqcmVuZGVyU3R5bGUpKTsKKyAgICAgICAgbmV3S2V5ZnJh
bWVzLmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKICAgICB9CiAKICAgICBtX2tleWZy
YW1lcyA9IFdURk1vdmUobmV3S2V5ZnJhbWVzKTsKQEAgLTEyNywxMiArMTMzLDEwIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4ZWNTdGF0ZSYg
c3RhdGUsIFN0cm9uZzxKU09iCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlU3RhY2tpbmdD
b250ZXh0SW1wYWN0KCkKIHsKICAgICBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0ID0gZmFsc2U7
Ci0gICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IG1fa2V5ZnJhbWVzKSB7Ci0gICAgICAgIGZvciAo
YXV0byBwcm9wZXJ0eUlEIDoga2V5ZnJhbWUucHJvcGVydGllcykgewotICAgICAgICAgICAgaWYg
KFdpbGxDaGFuZ2VEYXRhOjpwcm9wZXJ0eUNyZWF0ZXNTdGFja2luZ0NvbnRleHQocHJvcGVydHlJ
RCkpIHsKLSAgICAgICAgICAgICAgICBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0ID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICBmb3IgKGF1dG8gY3Nz
UHJvcGVydHlJZCA6IG1fa2V5ZnJhbWVzLnByb3BlcnRpZXMoKSkgeworICAgICAgICBpZiAoV2ls
bENoYW5nZURhdGE6OnByb3BlcnR5Q3JlYXRlc1N0YWNraW5nQ29udGV4dChjc3NQcm9wZXJ0eUlk
KSkgeworICAgICAgICAgICAgbV90cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1Miw5ICsxNTYsOCBAQCB2
b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseUF0TG9jYWxUaW1lKFNlY29uZHMgbG9jYWxUaW1lLCBS
ZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogCiAgICAgZmxvYXQgcHJvZ3Jlc3MgPSBsb2NhbFRpbWUg
LyB0aW1pbmcoKS0+ZHVyYXRpb24oKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgY3Jhc2gg
aWYgd2UgYXR0ZW1wdCB0byBhbmltYXRlIHByb3BlcnRpZXMgdGhhdCByZXF1aXJlIGFuIEFuaW1h
dGlvbkJhc2UuCi0gICAgZm9yIChhdXRvIHByb3BlcnR5SWQgOiBtX2tleWZyYW1lc1swXS5wcm9w
ZXJ0aWVzKQotICAgICAgICBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRo
aXMsIHByb3BlcnR5SWQsICZ0YXJnZXRTdHlsZSwgJm1fa2V5ZnJhbWVzWzBdLnN0eWxlLCAmbV9r
ZXlmcmFtZXNbMV0uc3R5bGUsIHByb2dyZXNzKTsKKyAgICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJ
ZCA6IG1fa2V5ZnJhbWVzLnByb3BlcnRpZXMoKSkKKyAgICAgICAgQ1NTUHJvcGVydHlBbmltYXRp
b246OmJsZW5kUHJvcGVydGllcyh0aGlzLCBjc3NQcm9wZXJ0eUlkLCAmdGFyZ2V0U3R5bGUsIG1f
a2V5ZnJhbWVzWzBdLnN0eWxlKCksIG1fa2V5ZnJhbWVzWzFdLnN0eWxlKCksIHByb2dyZXNzKTsK
IAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWItYW5pbWF0aW9ucy8jc2lkZS1lZmZl
Y3RzLXNlY3Rpb24KICAgICAvLyBGb3IgZXZlcnkgcHJvcGVydHkgdGFyZ2V0ZWQgYnkgYXQgbGVh
c3Qgb25lIGFuaW1hdGlvbiBlZmZlY3QgdGhhdCBpcyBjdXJyZW50IG9yIGluIGVmZmVjdCwgdGhl
IHVzZXIgYWdlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5k
ZXggYzc3YzlmYWNmNTQwN2E4YjgzNmQ2MGYyNjk4MGI4MjI1MTkzOWU3MC4uYmI0OWRmZTgwZGUx
ZmQ4Mzk1YTg0ZTg2NjQ0MDg4NDk2ODJjYWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlv
bkVmZmVjdC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCIKKyNpbmNs
dWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KIApAQCAtMzQsMTEgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBFbGVtZW50OwogCi1zdHJ1Y3QgS2V5ZnJhbWUgewotICAgIFJlbmRlclN0eWxlIHN0eWxl
OwotICAgIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzOwotfTsKLQogY2xhc3MgS2V5
ZnJhbWVFZmZlY3QgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uRWZmZWN0CiAgICAgLCBwdWJsaWMg
Q1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCB7CiBwdWJsaWM6CkBAIC02NCw3ICs2MCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAKICAgICBS
ZWZQdHI8RWxlbWVudD4gbV90YXJnZXQ7Ci0gICAgVmVjdG9yPEtleWZyYW1lPiBtX2tleWZyYW1l
czsKKyAgICBLZXlmcmFtZUxpc3QgbV9rZXlmcmFtZXM7CiAgICAgYm9vbCBtX3RyaWdnZXJzU3Rh
Y2tpbmdDb250ZXh0IHsgZmFsc2UgfTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9LZXlmcmFtZUxpc3QuaAppbmRleCBhYWM0YzJjN2E3YWE2MDE2MmU2ZDNlYTgxYTBj
MzU1MjZmMWI0ZDI3Li44NTk3OWE5ZGU0Zjk1MTk1MGZiMWJiZDc1ODQ5NWFiODA3MWE2MDYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oCkBAIC02
NSwxNCArNjUsMTMgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEtleWZyYW1lTGlzdChjb25zdCBB
dG9taWNTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCiAgICAgICAgIDogbV9hbmltYXRpb25OYW1lKGFu
aW1hdGlvbk5hbWUpCiAgICAgewotICAgICAgICBpbnNlcnQoS2V5ZnJhbWVWYWx1ZSgwLCAwKSk7
Ci0gICAgICAgIGluc2VydChLZXlmcmFtZVZhbHVlKDEsIDApKTsKICAgICB9CiAgICAgfktleWZy
YW1lTGlzdCgpOwogICAgICAgICAKKyAgICBLZXlmcmFtZUxpc3QmIG9wZXJhdG9yPShLZXlmcmFt
ZUxpc3QmJikgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxp
c3QmIG8pIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXlmcmFtZUxpc3QmIG8p
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLSAgICAKKwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgYW5pbWF0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uTmFtZTsg
fQogICAgIAogICAgIHZvaWQgaW5zZXJ0KEtleWZyYW1lVmFsdWUmJik7Cg==
</data>
<flag name="review"
          id="346683"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>