<?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>210491</bug_id>
          
          <creation_ts>2020-04-14 06:35:15 -0700</creation_ts>
          <short_desc>[Web Animations] Store an Element / PseudoId pair to define the KeyframeEffect target</short_desc>
          <delta_ts>2020-10-19 18:10:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</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=207290</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>
          
          <blocked>217936</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1641346</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-14 06:35:15 -0700</bug_when>
    <thetext>[Web Animations] Store an Element / PseudoId pair to define the KeyframeEffect target</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641347</commentid>
    <comment_count>1</comment_count>
      <attachid>396409</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-14 06:38:25 -0700</bug_when>
    <thetext>Created attachment 396409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641353</commentid>
    <comment_count>2</comment_count>
      <attachid>396409</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-04-14 07:05:12 -0700</bug_when>
    <thetext>Comment on attachment 396409
Patch

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

&gt; Source/WebCore/animation/DeclarativeAnimation.cpp:116
&gt; +        setEffect(KeyframeEffect::create(*m_owningElement, m_owningElement-&gt;pseudoId()));

pseudoId() is always None here so you should just pass that.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:763
&gt; -    auto&amp; styleResolver = m_target-&gt;styleResolver();
&gt; +    auto&amp; styleResolver = target()-&gt;styleResolver();

m_target-&gt;styleResolver() is the same.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:800
&gt; -    auto* renderer = m_target-&gt;renderer();
&gt; +    auto* renderer = target()-&gt;renderer();
&gt;      if (!renderer || !renderer-&gt;parent())

You can just use the existing renderer() helper.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:803
&gt; -    auto* frameView = m_target-&gt;document().view();
&gt; +    auto* frameView = target()-&gt;document().view();

You could add document() helper.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:1075
&gt; +Element* KeyframeEffect::target() const
&gt; +{
&gt; +    if (m_pseudoId == PseudoId::None)
&gt; +        return m_target.get();

Either target() or m_target should be renamed since they don&apos;t return the same thing.

I think a good strategy is to call the function something descriptive like targetElementOrPseudoElement() and then try to reduce its usage. Note that not all call sites need to use it (m_target-&gt;document() is fine for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641354</commentid>
    <comment_count>3</comment_count>
      <attachid>396409</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-04-14 07:07:24 -0700</bug_when>
    <thetext>Comment on attachment 396409
Patch

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

&gt;&gt; Source/WebCore/animation/KeyframeEffect.cpp:1075
&gt;&gt; +        return m_target.get();
&gt; 
&gt; Either target() or m_target should be renamed since they don&apos;t return the same thing.
&gt; 
&gt; I think a good strategy is to call the function something descriptive like targetElementOrPseudoElement() and then try to reduce its usage. Note that not all call sites need to use it (m_target-&gt;document() is fine for example).

You may still want target() accessor that just returns m_target and matches setTarget()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641400</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-14 09:19:54 -0700</bug_when>
    <thetext>Committed r260076: &lt;https://trac.webkit.org/changeset/260076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641401</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-14 09:20:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/61774687&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396409</attachid>
            <date>2020-04-14 06:38:25 -0700</date>
            <delta_ts>2020-04-14 07:05:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210491-20200414153823.patch</filename>
            <type>text/plain</type>
            <size>17826</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YzYzBhMWY1ZjU0NjRk
YzY2Mzc1NDkzZjkwMzU3MjlhZTk3ZDdmMC4uZTc2NDI0NzhkZWFhZDU0N2ZjYTFiYjFmNGFiNTUy
MzZmYWI1YmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA0LTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBTdG9yZSBhbiBFbGVtZW50IC8gUHNldWRvSWQgcGFpciB0byBkZWZpbmUgdGhlIEtleWZyYW1l
RWZmZWN0IHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEwNDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gcHJlcGFyYXRpb24gZm9yIHdlYmtpdC5vcmcvYi8yMDcyOTAgd2hlcmUgd2Ugd2ls
bCBleHBvc2UgdGhlIGBwc2V1ZG9FbGVtZW50YCBKUyBBUEkgb24gS2V5ZnJhbWVFZmZlY3Qgd2Ug
bm93CisgICAgICAgIHVzZSBhbiBFbGVtZW50IC8gUHNldWRvSWQgKG1fdGFyZ2V0IC8gbV9wc2V1
ZG9JZCkgcGFpciB0byBzcGVjaWZ5IGFuIGVmZmVjdCdzIHRhcmdldC4gVGhpcyBtZWFucyBjaGFu
Z2luZyBtb3N0CisgICAgICAgIHVzZXMgb2YgbV90YXJnZXQgdGhyb3VnaG91dCBLZXlmcmFtZUVm
ZmVjdCB0byB1c2UgdGFyZ2V0KCksIHdoaWNoIHBvdGVudGlhbGx5IHJldHVybnMgYSBQc2V1ZG9F
bGVtZW50IGlmIG1fcHNldWRvSWQKKyAgICAgICAgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhh
biBpdHMgZGVmYXVsdCwgUHNldWRvSWQ6Ok5vbmUuCisKKyAgICAgICAgQXMgZm9yIHRoZSBKUyBB
UEksIHdoZW4gYHRhcmdldGAgaXMgcXVlcmllZCwgaXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gbV90
YXJnZXQsIHNvIHdlIGFkZCBhIGN1c3RvbSBmdW5jdGlvbiBmb3IgYWNjZXNzCisgICAgICAgIHRo
cm91Z2ggdGhlIEpTIGJpbmRpbmdzLgorCisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZl
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6S2V5ZnJhbWVFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OmNvcHlQcm9wZXJ0aWVzRnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6dXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmZvcmNlTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUNTU1RyYW5zaXRp
b25CbGVuZGluZ0tleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6
YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6dGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRCaW5kaW5nc1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVm
ZmVjdDo6c2V0VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Z2V0QW5pbWF0ZWRTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpyZW5kZXJlciBjb25zdCk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6YmluZGluZ3NUYXJnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OnRhcmdldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmlkbDoKKwogMjAyMC0wNC0xMCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEgUmVhbHRpbWVNZWRpYVNvdXJj
ZSBvYnNlcnZlciBkZWRpY2F0ZWQgdG8gcmVjZWl2aW5nIGF1ZGlvIHNhbXBsZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCmluZGV4IDQy
MGY3Njk5NWI4NzdlYzBlMzMzZjRlOTMzM2FiNjY2NDgxODk0MmUuLmI0NGQwNGQ0MWViMDkzNGEx
YjljMjFmZmJhY2UwZGZmZWM4NTAxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtMTA4LDcgKzEwOCwxMiBAQCB2b2lkIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyUwogCiAgICAgQVNTRVJUKG1fb3duaW5nRWxlbWVudCk7CiAKLSAgICBz
ZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50KSk7CisgICAg
aWYgKGlzPFBzZXVkb0VsZW1lbnQ+KG1fb3duaW5nRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAg
YXV0byYgcHNldWRvT3duaW5nRWxlbWVudCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCptX293
bmluZ0VsZW1lbnQpOworICAgICAgICBBU1NFUlQocHNldWRvT3duaW5nRWxlbWVudC5ob3N0RWxl
bWVudCgpKTsKKyAgICAgICAgc2V0RWZmZWN0KEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoKnBzZXVk
b093bmluZ0VsZW1lbnQuaG9zdEVsZW1lbnQoKSwgcHNldWRvT3duaW5nRWxlbWVudC5wc2V1ZG9J
ZCgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3Jl
YXRlKCptX293bmluZ0VsZW1lbnQsIG1fb3duaW5nRWxlbWVudC0+cHNldWRvSWQoKSkpOwogICAg
IHNldFRpbWVsaW5lKCZtX293bmluZ0VsZW1lbnQtPmRvY3VtZW50KCkudGltZWxpbmUoKSk7CiAg
ICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCgpKS0+Y29tcHV0ZURlY2xhcmF0aXZl
QW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0eWxlKTsKICAgICBzeW5j
UHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCA1ZjJhNjFmMDIwYmIzYzBjOTRmYzQ5MWQ3NjFh
YTE2MWFlOGE0NTNjLi43NGEwNGEyNWE4ODhiODE5NTUxZGYzNzk2ZDQ2ZjhiMWJkMjAzMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJKU0tleWZyYW1lRWZmZWN0LmgiCiAjaW5jbHVkZSAiS2V5ZnJh
bWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQc2V1ZG9F
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9k
ZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00NzUsNyArNDc2LDcg
QEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzUHJvcGVydHlJbmRleGVk
S2V5ZnJhbWVzKEpTR2xvYmFsT2JqZWN0JgogCiBFeGNlcHRpb25PcjxSZWY8S2V5ZnJhbWVFZmZl
Y3Q+PiBLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbGVtZW50KiB0YXJnZXQsIFN0cm9uZzxKU09iamVjdD4mJiBrZXlmcmFtZXMsIE9w
dGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBLZXlmcmFtZUVmZmVjdE9wdGlvbnM+PiYmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBrZXlmcmFtZUVmZmVjdCA9IGFkb3B0UmVmKCpuZXcgS2V5ZnJhbWVFZmZl
Y3QodGFyZ2V0KSk7CisgICAgYXV0byBrZXlmcmFtZUVmZmVjdCA9IGFkb3B0UmVmKCpuZXcgS2V5
ZnJhbWVFZmZlY3QodGFyZ2V0LCBQc2V1ZG9JZDo6Tm9uZSkpOwogCiAgICAgaWYgKG9wdGlvbnMp
IHsKICAgICAgICAgT3B0aW9uYWxFZmZlY3RUaW1pbmcgdGltaW5nOwpAQCAtNTEwLDI0ICs1MTEs
MjYgQEAgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNy
ZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEcKIAogRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1l
RWZmZWN0Pj4gS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVm
PEtleWZyYW1lRWZmZWN0PiYmIHNvdXJjZSkKIHsKLSAgICBhdXRvIGtleWZyYW1lRWZmZWN0ID0g
YWRvcHRSZWYoKm5ldyBLZXlmcmFtZUVmZmVjdChudWxscHRyKSk7CisgICAgYXV0byBrZXlmcmFt
ZUVmZmVjdCA9IGFkb3B0UmVmKCpuZXcgS2V5ZnJhbWVFZmZlY3QobnVsbHB0ciwgUHNldWRvSWQ6
Ok5vbmUpKTsKICAgICBrZXlmcmFtZUVmZmVjdC0+Y29weVByb3BlcnRpZXNGcm9tU291cmNlKFdU
Rk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGtleWZyYW1lRWZmZWN0OwogfQogCi1SZWY8S2V5
ZnJhbWVFZmZlY3Q+IEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoY29uc3QgRWxlbWVudCYgdGFyZ2V0
KQorUmVmPEtleWZyYW1lRWZmZWN0PiBLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKGNvbnN0IEVsZW1l
bnQmIHRhcmdldCwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgS2V5ZnJhbWVFZmZlY3QoY29uc3RfY2FzdDxFbGVtZW50Kj4oJnRhcmdldCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlmcmFtZUVmZmVjdChjb25zdF9jYXN0PEVsZW1lbnQqPigm
dGFyZ2V0KSwgcHNldWRvSWQpKTsKIH0KIAotS2V5ZnJhbWVFZmZlY3Q6OktleWZyYW1lRWZmZWN0
KEVsZW1lbnQqIHRhcmdldCkKK0tleWZyYW1lRWZmZWN0OjpLZXlmcmFtZUVmZmVjdChFbGVtZW50
KiB0YXJnZXQsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAgIDogbV90YXJnZXQobWFrZVdlYWtQdHIo
dGFyZ2V0KSkKKyAgICAsIG1fcHNldWRvSWQocHNldWRvSWQpCiB7CiB9CiAKIHZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OmNvcHlQcm9wZXJ0aWVzRnJvbVNvdXJjZShSZWY8S2V5ZnJhbWVFZmZlY3Q+JiYg
c291cmNlKQogewogICAgIG1fdGFyZ2V0ID0gc291cmNlLT5tX3RhcmdldDsKKyAgICBtX3BzZXVk
b0lkID0gc291cmNlLT5tX3BzZXVkb0lkOwogICAgIG1fY29tcG9zaXRlT3BlcmF0aW9uID0gc291
cmNlLT5tX2NvbXBvc2l0ZU9wZXJhdGlvbjsKICAgICBtX2l0ZXJhdGlvbkNvbXBvc2l0ZU9wZXJh
dGlvbiA9IHNvdXJjZS0+bV9pdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb247CiAKQEAgLTc1Mywx
MSArNzU2LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5
ZnJhbWVzKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsCiAKIHZvaWQgS2V5ZnJhbWVFZmZl
Y3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0eWxlJiBlbGVtZW50U3R5bGUpCiB7
Ci0gICAgaWYgKCFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSB8fCAhbV90YXJnZXQpCisg
ICAgaWYgKCFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSB8fCAhdGFyZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEtleWZyYW1lTGlzdCBrZXlmcmFtZUxpc3QoImtleWZyYW1lLWVm
ZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLSAgICBhdXRvJiBzdHlsZVJl
c29sdmVyID0gbV90YXJnZXQtPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICBhdXRvJiBzdHlsZVJlc29s
dmVyID0gdGFyZ2V0KCktPnN0eWxlUmVzb2x2ZXIoKTsKIAogICAgIGZvciAoYXV0byYga2V5ZnJh
bWUgOiBtX3BhcnNlZEtleWZyYW1lcykgewogICAgICAgICBLZXlmcmFtZVZhbHVlIGtleWZyYW1l
VmFsdWUoa2V5ZnJhbWUuY29tcHV0ZWRPZmZzZXQsIG51bGxwdHIpOwpAQCAtNzY3LDcgKzc3MCw3
IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKFJlbmRlclN0
eWxlJiBlbGVtZW50U3R5bGUpCiAgICAgICAgICAgICBrZXlmcmFtZUxpc3QuYWRkUHJvcGVydHko
c3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUF0KGkpLmlkKCkpOwogCiAgICAgICAgIGF1dG8ga2V5
ZnJhbWVSdWxlID0gU3R5bGVSdWxlS2V5ZnJhbWU6OmNyZWF0ZShXVEZNb3ZlKHN0eWxlUHJvcGVy
dGllcykpOwotICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuc3R5
bGVGb3JLZXlmcmFtZSgqbV90YXJnZXQsICZlbGVtZW50U3R5bGUsIGtleWZyYW1lUnVsZS5wdHIo
KSwga2V5ZnJhbWVWYWx1ZSkpOworICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxlKHN0eWxl
UmVzb2x2ZXIuc3R5bGVGb3JLZXlmcmFtZSgqdGFyZ2V0KCksICZlbGVtZW50U3R5bGUsIGtleWZy
YW1lUnVsZS5wdHIoKSwga2V5ZnJhbWVWYWx1ZSkpOwogICAgICAgICBrZXlmcmFtZUxpc3QuaW5z
ZXJ0KFdURk1vdmUoa2V5ZnJhbWVWYWx1ZSkpOwogICAgIH0KIApAQCAtNzkwLDE0ICs3OTMsMTQg
QEAgYm9vbCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0ZXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAogCiBib29sIEtleWZyYW1lRWZmZWN0Ojpmb3JjZUxheW91dElmTmVlZGVk
KCkKIHsKLSAgICBpZiAoIW1fbmVlZHNGb3JjZWRMYXlvdXQgfHwgIW1fdGFyZ2V0KQorICAgIGlm
ICghbV9uZWVkc0ZvcmNlZExheW91dCB8fCAhdGFyZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8qIHJlbmRlcmVyID0gbV90YXJnZXQtPnJlbmRlcmVyKCk7CisgICAgYXV0
byogcmVuZGVyZXIgPSB0YXJnZXQoKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8
ICFyZW5kZXJlci0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8q
IGZyYW1lVmlldyA9IG1fdGFyZ2V0LT5kb2N1bWVudCgpLnZpZXcoKTsKKyAgICBhdXRvKiBmcmFt
ZVZpZXcgPSB0YXJnZXQoKS0+ZG9jdW1lbnQoKS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTQxLDEzICs5NDQsMTMgQEAgdm9pZCBLZXlm
cmFtZUVmZmVjdDo6Y29tcHV0ZUNTU0FuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJl
bmRlclN0eWxlJiB1bmEKICAgICBhdXRvJiBiYWNraW5nQW5pbWF0aW9uID0gY3NzQW5pbWF0aW9u
LT5iYWNraW5nQW5pbWF0aW9uKCk7CiAKICAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KGJh
Y2tpbmdBbmltYXRpb24ubmFtZSgpKTsKLSAgICBpZiAoYXV0byogc3R5bGVTY29wZSA9IFN0eWxl
OjpTY29wZTo6Zm9yT3JkaW5hbCgqbV90YXJnZXQsIGJhY2tpbmdBbmltYXRpb24ubmFtZVN0eWxl
U2NvcGVPcmRpbmFsKCkpKQotICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1l
U3R5bGVzRm9yQW5pbWF0aW9uKCptX3RhcmdldCwgJnVuYW5pbWF0ZWRTdHlsZSwga2V5ZnJhbWVM
aXN0KTsKKyAgICBpZiAoYXV0byogc3R5bGVTY29wZSA9IFN0eWxlOjpTY29wZTo6Zm9yT3JkaW5h
bCgqdGFyZ2V0KCksIGJhY2tpbmdBbmltYXRpb24ubmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkpKQor
ICAgICAgICBzdHlsZVNjb3BlLT5yZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9u
KCp0YXJnZXQoKSwgJnVuYW5pbWF0ZWRTdHlsZSwga2V5ZnJhbWVMaXN0KTsKIAogICAgIC8vIEVu
c3VyZSByZXNvdXJjZSBsb2FkcyBmb3IgYWxsIHRoZSBmcmFtZXMuCiAgICAgZm9yIChhdXRvJiBr
ZXlmcmFtZSA6IGtleWZyYW1lTGlzdC5rZXlmcmFtZXMoKSkgewogICAgICAgICBpZiAoYXV0byog
c3R5bGUgPSBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4oa2V5ZnJhbWUuc3R5bGUoKSkpCi0gICAg
ICAgICAgICBTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMoKnN0eWxlLCBtX3RhcmdldC0+ZG9j
dW1lbnQoKSwgbV90YXJnZXQuZ2V0KCkpOworICAgICAgICAgICAgU3R5bGU6OmxvYWRQZW5kaW5n
UmVzb3VyY2VzKCpzdHlsZSwgdGFyZ2V0KCktPmRvY3VtZW50KCksIHRhcmdldCgpKTsKICAgICB9
CiAKICAgICBtX2JsZW5kaW5nS2V5ZnJhbWVzU291cmNlID0gQmxlbmRpbmdLZXlmcmFtZXNTb3Vy
Y2U6OkNTU0FuaW1hdGlvbjsKQEAgLTk2NCw4ICs5NjcsOCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
Ojpjb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKGNvbnN0IFJlbmRlclN0eWxl
KiBvbAogICAgIGF1dG8gcHJvcGVydHkgPSBkb3duY2FzdDxDU1NUcmFuc2l0aW9uPihhbmltYXRp
b24oKSktPnByb3BlcnR5KCk7CiAKICAgICBhdXRvIHRvU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIobmV3U3R5bGUpOwotICAgIGlmIChtX3RhcmdldCkKLSAgICAgICAgU3R5bGU6OmxvYWRQ
ZW5kaW5nUmVzb3VyY2VzKCp0b1N0eWxlLCBtX3RhcmdldC0+ZG9jdW1lbnQoKSwgbV90YXJnZXQu
Z2V0KCkpOworICAgIGlmICh0YXJnZXQoKSkKKyAgICAgICAgU3R5bGU6OmxvYWRQZW5kaW5nUmVz
b3VyY2VzKCp0b1N0eWxlLCB0YXJnZXQoKS0+ZG9jdW1lbnQoKSwgdGFyZ2V0KCkpOwogCiAgICAg
S2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJhbWUtZWZmZWN0LSIgKyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpOwogICAgIGtleWZyYW1lTGlzdC5hZGRQcm9wZXJ0eShwcm9wZXJ0
eSk7CkBAIC0xMDIzLDEzICsxMDI2LDEzIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVT
dGFja2luZ0NvbnRleHRJbXBhY3QoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25U
aW1lbGluZURpZENoYW5nZShBbmltYXRpb25UaW1lbGluZSogdGltZWxpbmUpCiB7Ci0gICAgaWYg
KCFtX3RhcmdldCkKKyAgICBpZiAoIXRhcmdldCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAodGltZWxpbmUpCi0gICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG1fdGFyZ2V0LT5l
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgbV9p
blRhcmdldEVmZmVjdFN0YWNrID0gdGFyZ2V0KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2so
KS5hZGRFZmZlY3QoKnRoaXMpOwogICAgIGVsc2UgewotICAgICAgICBtX3RhcmdldC0+ZW5zdXJl
S2V5ZnJhbWVFZmZlY3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CisgICAgICAgIHRhcmdl
dCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCp0aGlzKTsKICAg
ICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTA0MSwx
NCArMTA0NCwxNCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25UaW1pbmdEaWRDaGFu
Z2UoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVFZmZlY3RTdGFja01lbWJlcnNoaXAo
KQogewotICAgIGlmICghbV90YXJnZXQpCisgICAgaWYgKCF0YXJnZXQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYm9vbCBpc1JlbGV2YW50ID0gYW5pbWF0aW9uKCkgJiYgYW5pbWF0aW9uKCkt
PmlzUmVsZXZhbnQoKTsKICAgICBpZiAoaXNSZWxldmFudCAmJiAhbV9pblRhcmdldEVmZmVjdFN0
YWNrKQotICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBtX3RhcmdldC0+ZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVjdCgqdGhpcyk7CisgICAgICAgIG1faW5UYXJnZXRF
ZmZlY3RTdGFjayA9IHRhcmdldCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZm
ZWN0KCp0aGlzKTsKICAgICBlbHNlIGlmICghaXNSZWxldmFudCAmJiBtX2luVGFyZ2V0RWZmZWN0
U3RhY2spIHsKLSAgICAgICAgbV90YXJnZXQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5y
ZW1vdmVFZmZlY3QoKnRoaXMpOworICAgICAgICB0YXJnZXQoKS0+ZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CiAgICAgICAgIG1faW5UYXJnZXRFZmZlY3RT
dGFjayA9IGZhbHNlOwogICAgIH0KIH0KQEAgLTEwNjYsMTUgKzEwNjksNDMgQEAgdm9pZCBLZXlm
cmFtZUVmZmVjdDo6c2V0QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIHVw
ZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpOwogfQogCitFbGVtZW50KiBLZXlmcmFtZUVmZmVj
dDo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICBpZiAobV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9u
ZSkKKyAgICAgICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOworCisgICAgQVNTRVJUKG1fdGFyZ2V0
LmdldCgpKTsKKworICAgIGlmIChtX3BzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCisgICAg
ICAgIHJldHVybiBtX3RhcmdldC0+YmVmb3JlUHNldWRvRWxlbWVudCgpOworCisgICAgaWYgKG1f
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQorICAgICAgICByZXR1cm4gbV90YXJnZXQtPmFm
dGVyUHNldWRvRWxlbWVudCgpOworCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IHRhcmdldGluZyA6
OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8tZWxlbWVudHMgYXQgdGhlIG1vbWVudC4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBLZXlm
cmFtZUVmZmVjdDo6c2V0QmluZGluZ3NUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3VGFyZ2V0
KQoreworICAgIHNldFRhcmdldChXVEZNb3ZlKG5ld1RhcmdldCkpOworfQorCiB2b2lkIEtleWZy
YW1lRWZmZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3VGFyZ2V0KQogewotICAg
IGlmIChtX3RhcmdldC5nZXQoKSA9PSBuZXdUYXJnZXQuZ2V0KCkpCisgICAgYXV0byogcHJldmlv
dXNUYXJnZXQgPSB0YXJnZXQoKTsKKyAgICBpZiAocHJldmlvdXNUYXJnZXQgPT0gbmV3VGFyZ2V0
LmdldCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHByZXZpb3VzVGFyZ2V0ID0gc3Rk
OjpleGNoYW5nZShtX3RhcmdldCwgbWFrZVdlYWtQdHIobmV3VGFyZ2V0LmdldCgpKSk7CisgICAg
bV90YXJnZXQgPSBtYWtlV2Vha1B0cihuZXdUYXJnZXQuZ2V0KCkpOworCisgICAgLy8gVW50aWwg
d2Ugc3VwcG9ydCBwc2V1ZG8tZWxlbWVudHMgdmlhIHRoZSBXZWIgQW5pbWF0aW9ucyBBUEksIGNo
YW5naW5nIHRhcmdldCBtZWFucyB3ZSBzaG91bGQgcmVzZXQgbV9wc2V1ZG9JZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjkwCisgICAgbV9wc2V1
ZG9JZCA9IFBzZXVkb0lkOjpOb25lOwogCiAgICAgaWYgKGF1dG8qIGVmZmVjdEFuaW1hdGlvbiA9
IGFuaW1hdGlvbigpKQotICAgICAgICBlZmZlY3RBbmltYXRpb24tPmVmZmVjdFRhcmdldERpZENo
YW5nZShwcmV2aW91c1RhcmdldC5nZXQoKSwgbV90YXJnZXQuZ2V0KCkpOworICAgICAgICBlZmZl
Y3RBbmltYXRpb24tPmVmZmVjdFRhcmdldERpZENoYW5nZShwcmV2aW91c1RhcmdldCwgdGFyZ2V0
KCkpOwogCiAgICAgY2xlYXJCbGVuZGluZ0tleWZyYW1lcygpOwogCkBAIC0xMDg0LDE5ICsxMTE1
LDE5IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldChSZWZQdHI8RWxlbWVudD4mJiBu
ZXdUYXJnZXQpCiAKICAgICAvLyBMaWtld2lzZSwgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHN0eWxl
cyBvbiB0aGUgcHJldmlvdXMgdGFyZ2V0IHNvIHRoYXQKICAgICAvLyBhbnkgYW5pbWF0ZWQgc3R5
bGVzIGFyZSByZW1vdmVkIGltbWVkaWF0ZWx5LgotICAgIGludmFsaWRhdGVFbGVtZW50KHByZXZp
b3VzVGFyZ2V0LmdldCgpKTsKKyAgICBpbnZhbGlkYXRlRWxlbWVudChwcmV2aW91c1RhcmdldCk7
CiAKICAgICBpZiAocHJldmlvdXNUYXJnZXQpIHsKICAgICAgICAgcHJldmlvdXNUYXJnZXQtPmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBt
X2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG1fdGFyZ2V0KQot
ICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBtX3RhcmdldC0+ZW5zdXJlS2V5ZnJhbWVF
ZmZlY3RTdGFjaygpLmFkZEVmZmVjdCgqdGhpcyk7CisgICAgaWYgKHRhcmdldCgpKQorICAgICAg
ICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXQoKS0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjaygpLmFkZEVmZmVjdCgqdGhpcyk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5
KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKIHsKLSAgICBpZiAoIW1fdGFyZ2V0KQorICAgIGlm
ICghdGFyZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVwZGF0ZUJsZW5kaW5nS2V5ZnJh
bWVzKHRhcmdldFN0eWxlKTsKQEAgLTExMDQsNyArMTEzNSw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZl
Y3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKICAgICBhdXRvIGNvbXB1dGVkVGlt
aW5nID0gZ2V0Q29tcHV0ZWRUaW1pbmcoKTsKICAgICBtX3BoYXNlQXRMYXN0QXBwbGljYXRpb24g
PSBjb21wdXRlZFRpbWluZy5waGFzZTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoKm1fdGFyZ2V0LCAqdGhpcywgY29tcHV0ZWRUaW1pbmcp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3Qo
KnRhcmdldCgpLCAqdGhpcywgY29tcHV0ZWRUaW1pbmcpOwogCiAgICAgaWYgKCFjb21wdXRlZFRp
bWluZy5wcm9ncmVzcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTEzMyw3ICsxMTY0LDcgQEAgYm9v
bCBLZXlmcmFtZUVmZmVjdDo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25Gb3JQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIHByb3AKIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSgp
CiB7Ci0gICAgaW52YWxpZGF0ZUVsZW1lbnQobV90YXJnZXQuZ2V0KCkpOworICAgIGludmFsaWRh
dGVFbGVtZW50KHRhcmdldCgpKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZUFj
Y2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKCkKQEAgLTExNjEsNyArMTE5Miw3IEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSgpCiAKIHZvaWQg
S2V5ZnJhbWVFZmZlY3Q6OmdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIHsKLSAgICBpZiAoIW1fdGFyZ2V0IHx8ICFyZW5kZXJlcigp
IHx8ICFhbmltYXRpb24oKSkKKyAgICBpZiAoIXRhcmdldCgpIHx8ICFyZW5kZXJlcigpIHx8ICFh
bmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwcm9ncmVzcyA9IGdldENv
bXB1dGVkVGltaW5nKCkucHJvZ3Jlc3M7CkBAIC0xNDg0LDggKzE1MTUsOCBAQCB2b2lkIEtleWZy
YW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3A6CiAgICAgICAgICAg
ICByZW5kZXJlci0+YW5pbWF0aW9uRmluaXNoZWQobV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRp
b25OYW1lKCkpOwotICAgICAgICAgICAgaWYgKCFtX3RhcmdldC0+ZG9jdW1lbnQoKS5yZW5kZXJU
cmVlQmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgICAgICAgICBtX3RhcmdldC0+aW52YWxpZGF0
ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOworICAgICAgICAgICAgaWYgKCF0YXJnZXQoKS0+
ZG9jdW1lbnQoKS5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKKyAgICAgICAgICAgICAgICB0
YXJnZXQoKS0+aW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwogICAgICAgICAg
ICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTE1NDIsNyArMTU3Myw3IEBAIFJlZjxjb25zdCBBbmltYXRpb24+IEtleWZy
YW1lRWZmZWN0OjpiYWNraW5nQW5pbWF0aW9uRm9yQ29tcG9zaXRlZFJlbmRlcmVyKCkgY29uCiAK
IFJlbmRlckVsZW1lbnQqIEtleWZyYW1lRWZmZWN0OjpyZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdGFyZ2V0ID8gbV90YXJnZXQtPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIHJl
dHVybiB0YXJnZXQoKSA/IHRhcmdldCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKIH0KIAogY29u
c3QgUmVuZGVyU3R5bGUmIEtleWZyYW1lRWZmZWN0OjpjdXJyZW50U3R5bGUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCBiZThiNmQ5ZjRjOWQ4
NzJlOGIwOTUzMjEzMzQ1ZWRlMzQ5N2RmZmQ3Li44NjljNWQ5ZWZkYmI1NWRkYjkzODhiMmUwYjU2
ZmYyOTgyOTUxYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
aApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBLZXlmcmFtZUVmZmVjdCA6IHB1YmxpYyBBbmltYXRp
b25FZmZlY3QKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZm
ZWN0Pj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFbGVtZW50KiwgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4mJiwgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0
T3B0aW9ucz4+JiYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8S2V5ZnJhbWVFZmZlY3Q+
PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxLZXlmcmFtZUVmZmVjdD4mJik7Ci0g
ICAgc3RhdGljIFJlZjxLZXlmcmFtZUVmZmVjdD4gY3JlYXRlKGNvbnN0IEVsZW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmPEtleWZyYW1lRWZmZWN0PiBjcmVhdGUoY29uc3QgRWxlbWVudCYsIFBzZXVk
b0lkKTsKICAgICB+S2V5ZnJhbWVFZmZlY3QoKSB7IH0KIAogICAgIGJvb2wgaXNLZXlmcmFtZUVm
ZmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTEwMSw3ICsxMDEsOSBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8UGFyc2VkS2V5ZnJhbWU+JiBwYXJzZWRLZXlmcmFt
ZXMoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlZEtleWZyYW1lczsgfQogCi0gICAgRWxlbWVudCog
dGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KKyAgICBFbGVtZW50KiB0
YXJnZXQoKSBjb25zdDsKKyAgICBFbGVtZW50KiBiaW5kaW5nc1RhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisgICAgdm9pZCBzZXRCaW5kaW5nc1RhcmdldChSZWZQdHI8
RWxlbWVudD4mJik7CiAgICAgdm9pZCBzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYpOwogCiAg
ICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiBnZXRLZXlmcmFtZXMoSlNDOjpK
U0dsb2JhbE9iamVjdCYpOwpAQCAtMTU4LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV91bmFuaW1hdGVk
U3R5bGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBLZXlmcmFtZUVmZmVjdChFbGVtZW50Kik7
CisgICAgS2V5ZnJhbWVFZmZlY3QoRWxlbWVudCosIFBzZXVkb0lkKTsKIAogICAgIGVudW0gY2xh
c3MgQWNjZWxlcmF0ZWRBY3Rpb24gOiB1aW50OF90IHsgUGxheSwgUGF1c2UsIFNlZWssIFN0b3Ag
fTsKICAgICBlbnVtIGNsYXNzIEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlIDogdWludDhfdCB7IENT
U0FuaW1hdGlvbiwgQ1NTVHJhbnNpdGlvbiwgV2ViQW5pbWF0aW9uIH07CkBAIC0xOTIsNyArMTk0
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UGFyc2VkS2V5ZnJhbWU+IG1fcGFyc2VkS2V5ZnJh
bWVzOwogICAgIFZlY3RvcjxBY2NlbGVyYXRlZEFjdGlvbj4gbV9wZW5kaW5nQWNjZWxlcmF0ZWRB
Y3Rpb25zOwogICAgIFdlYWtQdHI8RWxlbWVudD4gbV90YXJnZXQ7Ci0KKyAgICBQc2V1ZG9JZCBt
X3BzZXVkb0lkIHsgUHNldWRvSWQ6Ok5vbmUgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
UmVuZGVyU3R5bGU+IG1fdW5hbmltYXRlZFN0eWxlOwogCiAgICAgQWNjZWxlcmF0ZWRBY3Rpb24g
bV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRlZEFjdGlvbiB7IEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9w
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbAppbmRleCBk
MmQwN2FjYzQzNjRlYWI4YmYxZTBhYjZlMWQwMzJiOGFlNjlmNzAwLi42NDRmMGE2MGZjZTRiOTFi
ZWZkMDgxYTIxODMyMWFiNTIwMjRkNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBDb25zdHJ1Y3RvcihFbGVt
ZW50PyB0YXJnZXQsIG9iamVjdD8ga2V5ZnJhbWVzLCBvcHRpb25hbCAodW5yZXN0cmljdGVkIGRv
dWJsZSBvciBLZXlmcmFtZUVmZmVjdE9wdGlvbnMpIG9wdGlvbnMpLAogICAgIENvbnN0cnVjdG9y
KEtleWZyYW1lRWZmZWN0IHNvdXJjZSkKIF0gaW50ZXJmYWNlIEtleWZyYW1lRWZmZWN0IDogQW5p
bWF0aW9uRWZmZWN0IHsKLSAgICBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0OworICAgIFtJbXBs
ZW1lbnRlZEFzPWJpbmRpbmdzVGFyZ2V0XSBhdHRyaWJ1dGUgRWxlbWVudD8gdGFyZ2V0OwogICAg
IFtFbmFibGVkQXRSdW50aW1lPVdlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zXSBhdHRy
aWJ1dGUgSXRlcmF0aW9uQ29tcG9zaXRlT3BlcmF0aW9uIGl0ZXJhdGlvbkNvbXBvc2l0ZTsKICAg
ICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zQ29tcG9zaXRlT3BlcmF0aW9uc10gYXR0
cmlidXRlIENvbXBvc2l0ZU9wZXJhdGlvbiBjb21wb3NpdGU7CiAgICAgW0NhbGxXaXRoPUdsb2Jh
bE9iamVjdF0gc2VxdWVuY2U8b2JqZWN0PiBnZXRLZXlmcmFtZXMoKTsK
</data>
<flag name="review"
          id="411813"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>