<?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>183556</bug_id>
          
          <creation_ts>2018-03-11 19:43:17 -0700</creation_ts>
          <short_desc>[Web Animations] Create keyframes for declarative animations based on backing Animation and RenderStyle objects</short_desc>
          <delta_ts>2018-03-12 06:03:19 -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>DUPLICATE</resolution>
          <dup_id>183504</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183504</see_also>
          <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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405627</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-11 19:43:17 -0700</bug_when>
    <thetext>[Web Animations] Create keyframes for declarative animations based on backing Animation and RenderStyle objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405628</commentid>
    <comment_count>1</comment_count>
      <attachid>335567</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-11 19:48:17 -0700</bug_when>
    <thetext>Created attachment 335567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405629</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-11 19:49:51 -0700</bug_when>
    <thetext>Attachment 335567 did not pass style-queue:


ERROR: Source/WebCore/animation/KeyframeEffectReadOnly.cpp:512:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WebCore/animation/KeyframeEffectReadOnly.cpp:550:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 3 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>1405688</commentid>
    <comment_count>3</comment_count>
      <attachid>335567</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-12 03:23:37 -0700</bug_when>
    <thetext>Comment on attachment 335567
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        animations() and transitions() functions during style resolution. We add new methods on KeyframeEffectReadOnly to create blending keyframes, which

is blending keyframes a spec term? i&apos;m not sure what it is supposed to mean

&gt; Source/WebCore/ChangeLog:21
&gt; +        looking up the keyframes date obtained from the @keyframes rule with this backing animation&apos;s name.

data

&gt; Source/WebCore/animation/KeyframeEffectReadOnly.cpp:837
&gt; +    return !m_blendingKeyframes.isEmpty();

return hasBlendingKeyframes()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405689</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-12 03:30:47 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 335567 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335567&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        animations() and transitions() functions during style resolution. We add new methods on KeyframeEffectReadOnly to create blending keyframes, which
&gt; 
&gt; is blending keyframes a spec term? i&apos;m not sure what it is supposed to mean

It&apos;s not part of the spec. It&apos;s a term we&apos;ve been using in our Web Animations implementation to distinguish between the keyframes parsed from the JS API, which are Vector&lt;ParsedKeyframe&gt; and contain raw unparsed values that can be roundtripped through getKeyframes() calls, and the keyframes used for blending, using CSSPropertyAnimation::blendProperties(), which are KeyframeList and pre-date the Web Animations code.

&gt; &gt; Source/WebCore/ChangeLog:21
&gt; &gt; +        looking up the keyframes date obtained from the @keyframes rule with this backing animation&apos;s name.
&gt; 
&gt; data

Will fix.

&gt; &gt; Source/WebCore/animation/KeyframeEffectReadOnly.cpp:837
&gt; &gt; +    return !m_blendingKeyframes.isEmpty();
&gt; 
&gt; return hasBlendingKeyframes()

That is much nicer, yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405711</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-12 06:03:19 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 183504 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335567</attachid>
            <date>2018-03-11 19:48:17 -0700</date>
            <delta_ts>2018-03-12 03:23:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183556-20180312034816.patch</filename>
            <type>text/plain</type>
            <size>18728</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwZjE0YjczMDM0ZmI0
MzVmMjU2NzVhYjkwNjA3OTUzZjViNjJjZi4uNjBmNTliMGU1MzAyZWM2NmJlYmQ0MjFiYjMwZWNm
YjAzYmU1ZDc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBDcmVhdGUga2V5ZnJhbWVzIGZvciBkZWNsYXJhdGl2ZSBhbmltYXRpb25zIGJhc2VkIG9uIGJh
Y2tpbmcgQW5pbWF0aW9uIGFuZCBSZW5kZXJTdHlsZSBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1NTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWNsYXJhdGl2ZSBhbmltYXRpb25zIHdp
bGwgYmUgY3JlYXRlZCBiYXNlZCBvbiBhIGJhY2tpbmcgQW5pbWF0aW9uIG9iamVjdCwgbWFkZSBh
dmFpbGFibGUgdGhyb3VnaCBhbiBBbmltYXRpb25MaXN0IGV4cG9zZWQgdmlhIGEgUmVuZGVyU3R5
bGUncworICAgICAgICBhbmltYXRpb25zKCkgYW5kIHRyYW5zaXRpb25zKCkgZnVuY3Rpb25zIGR1
cmluZyBzdHlsZSByZXNvbHV0aW9uLiBXZSBhZGQgbmV3IG1ldGhvZHMgb24gS2V5ZnJhbWVFZmZl
Y3RSZWFkT25seSB0byBjcmVhdGUgYmxlbmRpbmcga2V5ZnJhbWVzLCB3aGljaAorICAgICAgICBh
cmUgS2V5ZnJhbWVMaXN0IG9iamVjdHMsIGFuZCB0byBpZGVudGlmeSB3aGV0aGVyIGEgS2V5ZnJh
bWVFZmZlY3RSZWFkT25seSB3b3VsZCByZXF1aXJlIG5ldyBrZXlmcmFtZXMgYmFzZWQgb24gYSBk
aWZmZXJlbnQgc2V0IG9mIG9sZCBhbmQgbmV3CisgICAgICAgIFJlbmRlclN0eWxlLCB3aGljaCB3
aWxsIGJlIGNyaXRpY2FsIHdoaWxlIHJlc29sdmluZyBDU1MgVHJhbnNpdGlvbnMgaW4gb3JkZXIg
dG8ga25vdyB3aGVuIHRvIGNyZWF0ZSBuZXcgQ1NTVHJhbnNpdGlvbiBvYmplY3RzIGFuZCB3aGVu
IG5vdCB0by4gCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBzaW5jZSBpbiB0aGUgY2FzZSBvZiBk
ZWNsYXJhdGl2ZSBhbmltYXRpb25zIHdlIHdpbGwgbm90IGhhdmUgYSBzZXQgb2YgcGFyc2luZyBr
ZXlmcmFtZXMgKG1fcGFyc2luZ0tleWZyYW1lcykgYXZhaWxhYmxlLCB3ZSB1cGRhdGUKKyAgICAg
ICAgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBnZXRBbmltYXRpb25zKCkgYW5kIHNldEFuaW1hdGVk
UHJvcGVydGllc0luU3R5bGUoKSB0byB3b3JrIHVuZGVyIGNpcmN1bXN0YW5jZXMgd2hlcmUgb25s
eSBibGVuZGluZyBrZXlmcmFtZXMgYXJlIGF2YWlsYWJsZS4KKworICAgICAgICAqIGFuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0UmVhZE9ubHk6OmdldEtleWZyYW1lcyk6IFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlv
biBvZiBnZXRLZXlmcmFtZXMoKSB1c2VkIHRoZSBQYXJzZWRLZXlmcmFtZSBsaXN0IGhlbGQgYXMg
bV9wYXJzZWRLZXlmcmFtZXMKKyAgICAgICAgdG8gY29tcHV0ZSBrZXlmcmFtZXMuIEluIHRoZSBj
YXNlIG9mIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMsIHRoZXJlIGFyZSBubyBQYXJzZWRLZXlmcmFt
ZSBzaW5jZSB0aGUgSlMgQVBJIHdhcyBub3QgaW52b2x2ZWQsIHNvIHdlIHVzZSB0aGUgYmxlbmRp
bmcga2V5ZnJhbWVzCisgICAgICAgIHRvIGxvb2sgZm9yIGtleWZyYW1lIGRhdGEuCisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Ojpjb21wdXRlQ1NTQW5pbWF0aW9uQmxl
bmRpbmdLZXlmcmFtZXMpOiBDYWxsZWQgYnkgQ1NTQW5pbWF0aW9uOjppbml0aWFsaXplKCksIHRo
aXMgZnVuY3Rpb24gY3JlYXRlcyBibGVuZGluZyBrZXlmcmFtZXMgYnkKKyAgICAgICAgbG9va2lu
ZyB1cCB0aGUga2V5ZnJhbWVzIGRhdGUgb2J0YWluZWQgZnJvbSB0aGUgQGtleWZyYW1lcyBydWxl
IHdpdGggdGhpcyBiYWNraW5nIGFuaW1hdGlvbidzIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdFJlYWRPbmx5Ojpjb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJh
bWVzKTogQ2FsbGVkIGJ5IENTU1RyYW5zaXRpb246OmNyZWF0ZSgpLCB0aGlzIGZ1bmN0aW9uIGNy
ZWF0ZXMgYmxlbmRpbmcga2V5ZnJhbWVzIGJ5CisgICAgICAgIGNyZWF0aW5nIGEgMC1vZmZzZXQg
a2V5ZnJhbWUgd2l0aCB0aGUgb2xkIHN0eWxlIGFuZCBhIDEtb2Zmc2V0IGtleWZyYW1lIHdpdGgg
dGhlIG5ldyBzdHlsZSBhcyBwcm92aWRlZCBkdXJpbmcgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmlt
YXRlZEVsZW1lbnRVcGRhdGUoKS4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0UmVh
ZE9ubHk6OnN0eWxlc1dvdWxkWWllbGROZXdDU1NUcmFuc2l0aW9uc0JsZW5kaW5nS2V5ZnJhbWVz
IGNvbnN0KTogQ2FsbGVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9u
c0ZvckVsZW1lbnQoKQorICAgICAgICB0byBjaGVjayB0aGF0IGEgcHJvdmlkZWQgYmFja2luZyBB
bmltYXRpb24gYW5kIGEgcGFpciBvZiBvbGQgYW5kIG5ldyBSZW5kZXJTdHlsZXMgdGhhdCBtYXkg
YmUgZGlmZmVyZW50IG9iamVjdHMgYWN0dWFsbHkgd291bGQgeWllbGQgZGlmZmVyZW50IHRpbWlu
ZworICAgICAgICBwcm9wZXJ0aWVzIGFuZCBrZXlmcmFtZSBDU1MgdmFsdWVzIGZvciBhIGdpdmVu
IENTUyB0cmFuc2l0aW9uIHRvIGF2b2lkIHRoZSBkZWxldGlvbiBhbmQgY3JlYXRpb24gb2YgQ1NT
VHJhbnNpdGlvbiBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RSZWFk
T25seTo6c2hvdWxkUnVuQWNjZWxlcmF0ZWQpOiBXZSBtaXN0YWtlbmx5IGFzc3VtZWQgd2UgYWx3
YXlzIGhhZCBibGVuZGluZyBrZXlmcmFtZXMsIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGNhc2Ug
d2l0aCBhCisgICAgICAgIENTU1RyYW5zaXRpb24gd2hlcmUgdGhlIHRyYW5zaXRpb24gc3R5bGUg
aXRzZWxmIG1pZ2h0IGJlIHNldCBmaXJzdCwgYnV0IHRoZSB0YXJnZXQgdmFsdWUgYWZ0ZXIuIFNv
IHdlIHNob3VsZCBvbmx5IHJ1biBhY2NlbGVyYXRlZCBwcm92aWRlZCB0aGVyZSBhcmUgYmxlbmRp
bmcKKyAgICAgICAga2V5ZnJhbWVzIGF0IGxlYXN0LCB0aGUgZnVuY3Rpb24gYWxyZWFkeSByZXR1
cm5pbmcgZmFsc2UgaWYgaXQgZmluZHMgYSBibGVuZGluZyBrZXlmcmFtZSBhbmltYXRpbmcgYSBu
b24tYWNjZWxlcmF0ZWQgQ1NTIHByb3BlcnR5LgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3RSZWFkT25seTo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZSk6IENoZWNrIHRoYXQg
dGhlcmUgYWN0dWFsbHkgaXMgYSBtYXRjaGluZyBQYXJzZWRLZXlmcmFtZSB0byByZWFkIHRoZSB0
aW1pbmcgZnVuY3Rpb24gZnJvbS4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RS
ZWFkT25seS5oOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3RSZWFkT25seTo6aGFz
QmxlbmRpbmdLZXlmcmFtZXMgY29uc3QpOgorCiAyMDE4LTAzLTEwICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgcXVlcnkgZm9yIGRlZmF1
bHQgYXBwZWFyYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0UmVhZE9ubHkuY3BwCmluZGV4IDY4YmUyYzFjNzEyOTYzYmY5YTg0NmFlNGMzMTNkMzQ2
NDVjNWQwMDcuLjE4OTBkYjA3NGIyNjZiMzdiYjJlNWY5MzdkYjkyMDdkNDc3MWQwNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5j
cHAKQEAgLTI4LDExICsyOCwxMyBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkuaCIKKyNpbmNsdWRlICJDU1NBbmltYXRp
b24uaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJKU0NvbXBvc2l0ZU9w
ZXJhdGlvbi5oIgpAQCAtNDAsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
LmgiCisjaW5jbHVkZSAiU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiV2lsbENo
YW5nZURhdGEuaCIKQEAgLTUwMCw0MCArNTAzLDgxIEBAIFZlY3RvcjxTdHJvbmc8SlNPYmplY3Q+
PiBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5OjpnZXRLZXlmcmFtZXMoRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICAvLyAyLiBMZXQga2V5ZnJhbWVzIGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhlIHBy
b2NlZHVyZSB0byBjb21wdXRlIG1pc3Npbmcga2V5ZnJhbWUgb2Zmc2V0cyB0byB0aGUga2V5ZnJh
bWVzIGZvciB0aGlzIGtleWZyYW1lIGVmZmVjdC4KIAogICAgIC8vIDMuIEZvciBlYWNoIGtleWZy
YW1lIGluIGtleWZyYW1lcyBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgZm9yIChh
dXRvJiBwYXJzZWRLZXlmcmFtZSA6IG1fcGFyc2VkS2V5ZnJhbWVzKSB7Ci0gICAgICAgIC8vIDEu
IEluaXRpYWxpemUgYSBkaWN0aW9uYXJ5IG9iamVjdCwgb3V0cHV0IGtleWZyYW1lLCB1c2luZyB0
aGUgZm9sbG93aW5nIGRlZmluaXRpb246Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIGRpY3Rpb25h
cnkgQmFzZUNvbXB1dGVkS2V5ZnJhbWUgewotICAgICAgICAvLyAgICAgIGRvdWJsZT8gICAgICAg
ICAgICAgb2Zmc2V0ID0gbnVsbDsKLSAgICAgICAgLy8gICAgICBkb3VibGUgICAgICAgICAgICAg
IGNvbXB1dGVkT2Zmc2V0OwotICAgICAgICAvLyAgICAgIERPTVN0cmluZyAgICAgICAgICAgZWFz
aW5nID0gImxpbmVhciI7Ci0gICAgICAgIC8vICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uPyBjb21w
b3NpdGUgPSBudWxsOwotICAgICAgICAvLyB9OwotCi0gICAgICAgIC8vIDIuIFNldCBvZmZzZXQs
IGNvbXB1dGVkT2Zmc2V0LCBlYXNpbmcsIGNvbXBvc2l0ZSBtZW1iZXJzIG9mIG91dHB1dCBrZXlm
cmFtZSB0byB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMga2V5ZnJhbWUgb2Zmc2V0LCBjb21wdXRlZCBr
ZXlmcmFtZQotICAgICAgICAvLyBvZmZzZXQsIGtleWZyYW1lLXNwZWNpZmljIHRpbWluZyBmdW5j
dGlvbiBhbmQga2V5ZnJhbWUtc3BlY2lmaWMgY29tcG9zaXRlIG9wZXJhdGlvbiBvZiBrZXlmcmFt
ZS4KLSAgICAgICAgQmFzZUNvbXB1dGVkS2V5ZnJhbWUgY29tcHV0ZWRLZXlmcmFtZTsKLSAgICAg
ICAgY29tcHV0ZWRLZXlmcmFtZS5vZmZzZXQgPSBwYXJzZWRLZXlmcmFtZS5vZmZzZXQ7Ci0gICAg
ICAgIGNvbXB1dGVkS2V5ZnJhbWUuY29tcHV0ZWRPZmZzZXQgPSBwYXJzZWRLZXlmcmFtZS5jb21w
dXRlZE9mZnNldDsKLSAgICAgICAgY29tcHV0ZWRLZXlmcmFtZS5lYXNpbmcgPSBwYXJzZWRLZXlm
cmFtZS50aW1pbmdGdW5jdGlvbi0+Y3NzVGV4dCgpOwotICAgICAgICBjb21wdXRlZEtleWZyYW1l
LmNvbXBvc2l0ZSA9IHBhcnNlZEtleWZyYW1lLmNvbXBvc2l0ZTsKLQotICAgICAgICBhdXRvIG91
dHB1dEtleWZyYW1lID0gY29udmVydERpY3Rpb25hcnlUb0pTKHN0YXRlLCAqanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgY29tcHV0ZWRLZXlm
cmFtZSk7Ci0KLSAgICAgICAgLy8gMy4gRm9yIGVhY2ggYW5pbWF0aW9uIHByb3BlcnR5LXZhbHVl
IHBhaXIgc3BlY2lmaWVkIG9uIGtleWZyYW1lLCBkZWNsYXJhdGlvbiwgcGVyZm9ybSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgICAgICBmb3IgKGF1dG8gaXQgPSBwYXJzZWRLZXlmcmFtZS51bnBh
cnNlZFN0eWxlLmJlZ2luKCksIGVuZCA9IHBhcnNlZEtleWZyYW1lLnVucGFyc2VkU3R5bGUuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgLy8gMS4gTGV0IHByb3BlcnR5IG5h
bWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgYW5pbWF0aW9uIHByb3BlcnR5IG5hbWUg
dG8gSURMIGF0dHJpYnV0ZSBuYW1lIGFsZ29yaXRobSB0byB0aGUgcHJvcGVydHkgbmFtZSBvZiBk
ZWNsYXJhdGlvbi4KLSAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gQ1NTUHJvcGVydHlJ
RFRvSURMQXR0cmlidXRlTmFtZShpdC0+a2V5KTsKLSAgICAgICAgICAgIC8vIDIuIExldCBJREwg
dmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBzZXJpYWxpemluZyB0aGUgcHJvcGVydHkgdmFsdWUgb2Yg
ZGVjbGFyYXRpb24gYnkgcGFzc2luZyBkZWNsYXJhdGlvbiB0byB0aGUgYWxnb3JpdGhtIHRvIHNl
cmlhbGl6ZSBhIENTUyB2YWx1ZS4KLSAgICAgICAgICAgIC8vIDMuIExldCB2YWx1ZSBiZSB0aGUg
cmVzdWx0IG9mIGNvbnZlcnRpbmcgSURMIHZhbHVlIHRvIGFuIEVDTUFTY3JpcHQgU3RyaW5nIHZh
bHVlLgotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwg
aXQtPnZhbHVlKTsKLSAgICAgICAgICAgIC8vIDQuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVy
dHldXSBpbnRlcm5hbCBtZXRob2Qgb24gb3V0cHV0IGtleWZyYW1lIHdpdGggcHJvcGVydHkgbmFt
ZSBwcm9wZXJ0eSBuYW1lLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7
IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxl
XV06IHRydWUsIFtbVmFsdWVdXTogdmFsdWUgfSBhbmQgQm9vbGVhbiBmbGFnIGZhbHNlLgotICAg
ICAgICAgICAgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KG91dHB1dEtleWZyYW1lLCAmc3Rh
dGUsIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpLmltcGwoKSwgUHJvcGVydHlEZXNjcmlwdG9y
KHZhbHVlLCAwKSwgZmFsc2UpOworICAgIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigp
KSB8fCBpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24oKSkpIHsKKyAgICAgICAgYXV0byBjb21w
dXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihtX3RhcmdldC5nZXQo
KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibGVuZGluZ0tleWZyYW1lcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgLy8gMS4gSW5pdGlhbGl6ZSBhIGRpY3Rpb25hcnkg
b2JqZWN0LCBvdXRwdXQga2V5ZnJhbWUsIHVzaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbjoK
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBkaWN0aW9uYXJ5IEJhc2VDb21wdXRlZEtl
eWZyYW1lIHsKKyAgICAgICAgICAgIC8vICAgICAgZG91YmxlPyAgICAgICAgICAgICBvZmZzZXQg
PSBudWxsOworICAgICAgICAgICAgLy8gICAgICBkb3VibGUgICAgICAgICAgICAgIGNvbXB1dGVk
T2Zmc2V0OworICAgICAgICAgICAgLy8gICAgICBET01TdHJpbmcgICAgICAgICAgIGVhc2luZyA9
ICJsaW5lYXIiOworICAgICAgICAgICAgLy8gICAgICBDb21wb3NpdGVPcGVyYXRpb24/IGNvbXBv
c2l0ZSA9IG51bGw7CisgICAgICAgICAgICAvLyB9OworCisgICAgICAgICAgICBhdXRvJiBrZXlm
cmFtZSA9IG1fYmxlbmRpbmdLZXlmcmFtZXNbaV07CisKKyAgICAgICAgICAgIC8vIDIuIFNldCBv
ZmZzZXQsIGNvbXB1dGVkT2Zmc2V0LCBlYXNpbmcgbWVtYmVycyBvZiBvdXRwdXQga2V5ZnJhbWUg
dG8gdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGtleWZyYW1lIG9mZnNldCwgY29tcHV0ZWQga2V5ZnJh
bWUgb2Zmc2V0LAorICAgICAgICAgICAgLy8gYW5kIGtleWZyYW1lLXNwZWNpZmljIHRpbWluZyBm
dW5jdGlvbiBvZiBrZXlmcmFtZS4KKyAgICAgICAgICAgIEJhc2VDb21wdXRlZEtleWZyYW1lIGNv
bXB1dGVkS2V5ZnJhbWU7CisgICAgICAgICAgICBjb21wdXRlZEtleWZyYW1lLm9mZnNldCA9IGtl
eWZyYW1lLmtleSgpOworICAgICAgICAgICAgY29tcHV0ZWRLZXlmcmFtZS5jb21wdXRlZE9mZnNl
dCA9IGtleWZyYW1lLmtleSgpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dEtleWZyYW1lID0g
Y29udmVydERpY3Rpb25hcnlUb0pTKHN0YXRlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgY29tcHV0ZWRLZXlmcmFtZSk7CisKKyAgICAg
ICAgICAgIC8vIDMuIEZvciBlYWNoIGFuaW1hdGlvbiBwcm9wZXJ0eS12YWx1ZSBwYWlyIHNwZWNp
ZmllZCBvbiBrZXlmcmFtZSwgZGVjbGFyYXRpb24sIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVw
czoKKyAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gKmtleWZyYW1lLnN0eWxlKCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJZCA6IGtleWZyYW1lLnByb3BlcnRpZXMoKSkgewor
ICAgICAgICAgICAgICAgIC8vIDEuIExldCBwcm9wZXJ0eSBuYW1lIGJlIHRoZSByZXN1bHQgb2Yg
YXBwbHlpbmcgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0eSBuYW1lIHRvIElETCBhdHRyaWJ1dGUgbmFt
ZSBhbGdvcml0aG0gdG8gdGhlIHByb3BlcnR5IG5hbWUgb2YgZGVjbGFyYXRpb24uCisgICAgICAg
ICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBDU1NQcm9wZXJ0eUlEVG9JRExBdHRyaWJ1dGVO
YW1lKGNzc1Byb3BlcnR5SWQpOworICAgICAgICAgICAgICAgIC8vIDIuIExldCBJREwgdmFsdWUg
YmUgdGhlIHJlc3VsdCBvZiBzZXJpYWxpemluZyB0aGUgcHJvcGVydHkgdmFsdWUgb2YgZGVjbGFy
YXRpb24gYnkgcGFzc2luZyBkZWNsYXJhdGlvbiB0byB0aGUgYWxnb3JpdGhtIHRvIHNlcmlhbGl6
ZSBhIENTUyB2YWx1ZS4KKyAgICAgICAgICAgICAgICBhdXRvIGlkbFZhbHVlID0gY29tcHV0ZWRT
dHlsZUV4dHJhY3Rvci52YWx1ZUZvclByb3BlcnR5aW5TdHlsZShzdHlsZSwgY3NzUHJvcGVydHlJ
ZCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICAvLyAzLiBMZXQgdmFsdWUgYmUgdGhlIHJl
c3VsdCBvZiBjb252ZXJ0aW5nIElETCB2YWx1ZSB0byBhbiBFQ01BU2NyaXB0IFN0cmluZyB2YWx1
ZS4KKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRl
LCBpZGxWYWx1ZSk7CisgICAgICAgICAgICAgICAgLy8gNC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvbiBvdXRwdXQga2V5ZnJhbWUgd2l0aCBwcm9wZXJ0
eSBuYW1lIHByb3BlcnR5IG5hbWUsCisgICAgICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVz
Y3JpcHRvciB7IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29u
ZmlndXJhYmxlXV06IHRydWUsIFtbVmFsdWVdXTogdmFsdWUgfSBhbmQgQm9vbGVhbiBmbGFnIGZh
bHNlLgorICAgICAgICAgICAgICAgIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvdXRwdXRL
ZXlmcmFtZSwgJnN0YXRlLCBBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKS5pbXBsKCksIFByb3Bl
cnR5RGVzY3JpcHRvcih2YWx1ZSwgMCksIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gNS4gQXBwZW5kIG91dHB1dCBrZXlmcmFtZSB0byByZXN1bHQuCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHsgc3RhdGUudm0oKSwg
b3V0cHV0S2V5ZnJhbWUgfSk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3Ig
KGF1dG8mIHBhcnNlZEtleWZyYW1lIDogbV9wYXJzZWRLZXlmcmFtZXMpIHsKKyAgICAgICAgICAg
IC8vIDEuIEluaXRpYWxpemUgYSBkaWN0aW9uYXJ5IG9iamVjdCwgb3V0cHV0IGtleWZyYW1lLCB1
c2luZyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb246CisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gZGljdGlvbmFyeSBCYXNlQ29tcHV0ZWRLZXlmcmFtZSB7CisgICAgICAgICAgICAvLyAg
ICAgIGRvdWJsZT8gICAgICAgICAgICAgb2Zmc2V0ID0gbnVsbDsKKyAgICAgICAgICAgIC8vICAg
ICAgZG91YmxlICAgICAgICAgICAgICBjb21wdXRlZE9mZnNldDsKKyAgICAgICAgICAgIC8vICAg
ICAgRE9NU3RyaW5nICAgICAgICAgICBlYXNpbmcgPSAibGluZWFyIjsKKyAgICAgICAgICAgIC8v
ICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uPyBjb21wb3NpdGUgPSBudWxsOworICAgICAgICAgICAg
Ly8gfTsKKworICAgICAgICAgICAgLy8gMi4gU2V0IG9mZnNldCwgY29tcHV0ZWRPZmZzZXQsIGVh
c2luZywgY29tcG9zaXRlIG1lbWJlcnMgb2Ygb3V0cHV0IGtleWZyYW1lIHRvIHRoZSByZXNwZWN0
aXZlIHZhbHVlcyBrZXlmcmFtZSBvZmZzZXQsIGNvbXB1dGVkIGtleWZyYW1lCisgICAgICAgICAg
ICAvLyBvZmZzZXQsIGtleWZyYW1lLXNwZWNpZmljIHRpbWluZyBmdW5jdGlvbiBhbmQga2V5ZnJh
bWUtc3BlY2lmaWMgY29tcG9zaXRlIG9wZXJhdGlvbiBvZiBrZXlmcmFtZS4KKyAgICAgICAgICAg
IEJhc2VDb21wdXRlZEtleWZyYW1lIGNvbXB1dGVkS2V5ZnJhbWU7CisgICAgICAgICAgICBjb21w
dXRlZEtleWZyYW1lLm9mZnNldCA9IHBhcnNlZEtleWZyYW1lLm9mZnNldDsKKyAgICAgICAgICAg
IGNvbXB1dGVkS2V5ZnJhbWUuY29tcHV0ZWRPZmZzZXQgPSBwYXJzZWRLZXlmcmFtZS5jb21wdXRl
ZE9mZnNldDsKKyAgICAgICAgICAgIGNvbXB1dGVkS2V5ZnJhbWUuZWFzaW5nID0gcGFyc2VkS2V5
ZnJhbWUudGltaW5nRnVuY3Rpb24tPmNzc1RleHQoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkS2V5
ZnJhbWUuY29tcG9zaXRlID0gcGFyc2VkS2V5ZnJhbWUuY29tcG9zaXRlOworCisgICAgICAgICAg
ICBhdXRvIG91dHB1dEtleWZyYW1lID0gY29udmVydERpY3Rpb25hcnlUb0pTKHN0YXRlLCAqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgY29t
cHV0ZWRLZXlmcmFtZSk7CisKKyAgICAgICAgICAgIC8vIDMuIEZvciBlYWNoIGFuaW1hdGlvbiBw
cm9wZXJ0eS12YWx1ZSBwYWlyIHNwZWNpZmllZCBvbiBrZXlmcmFtZSwgZGVjbGFyYXRpb24sIHBl
cmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIGZvciAoYXV0byBpdCA9IHBh
cnNlZEtleWZyYW1lLnVucGFyc2VkU3R5bGUuYmVnaW4oKSwgZW5kID0gcGFyc2VkS2V5ZnJhbWUu
dW5wYXJzZWRTdHlsZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAgICAg
Ly8gMS4gTGV0IHByb3BlcnR5IG5hbWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgYW5p
bWF0aW9uIHByb3BlcnR5IG5hbWUgdG8gSURMIGF0dHJpYnV0ZSBuYW1lIGFsZ29yaXRobSB0byB0
aGUgcHJvcGVydHkgbmFtZSBvZiBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IENTU1Byb3BlcnR5SURUb0lETEF0dHJpYnV0ZU5hbWUoaXQtPmtleSk7Cisg
ICAgICAgICAgICAgICAgLy8gMi4gTGV0IElETCB2YWx1ZSBiZSB0aGUgcmVzdWx0IG9mIHNlcmlh
bGl6aW5nIHRoZSBwcm9wZXJ0eSB2YWx1ZSBvZiBkZWNsYXJhdGlvbiBieSBwYXNzaW5nIGRlY2xh
cmF0aW9uIHRvIHRoZSBhbGdvcml0aG0gdG8gc2VyaWFsaXplIGEgQ1NTIHZhbHVlLgorICAgICAg
ICAgICAgICAgIC8vIDMuIExldCB2YWx1ZSBiZSB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgSURM
IHZhbHVlIHRvIGFuIEVDTUFTY3JpcHQgU3RyaW5nIHZhbHVlLgorICAgICAgICAgICAgICAgIGF1
dG8gdmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGl0LT52YWx1ZSk7CisgICAgICAg
ICAgICAgICAgLy8gNC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1l
dGhvZCBvbiBvdXRwdXQga2V5ZnJhbWUgd2l0aCBwcm9wZXJ0eSBuYW1lIHByb3BlcnR5IG5hbWUs
CisgICAgICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7IFtbV3JpdGFibGVd
XTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWUsIFtb
VmFsdWVdXTogdmFsdWUgfSBhbmQgQm9vbGVhbiBmbGFnIGZhbHNlLgorICAgICAgICAgICAgICAg
IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShvdXRwdXRLZXlmcmFtZSwgJnN0YXRlLCBBdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKS5pbXBsKCksIFByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwg
MCksIGZhbHNlKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAvLyA0LiBBcHBlbmQgb3V0cHV0
IGtleWZyYW1lIHRvIHJlc3VsdC4KLSAgICAgICAgcmVzdWx0LmFwcGVuZChKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0PiB7IHN0YXRlLnZtKCksIG91dHB1dEtleWZyYW1lIH0pOworICAgICAgICAg
ICAgLy8gNC4gQXBwZW5kIG91dHB1dCBrZXlmcmFtZSB0byByZXN1bHQuCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHsgc3RhdGUudm0oKSwgb3V0
cHV0S2V5ZnJhbWUgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyA0LiBSZXR1cm4gcmVz
dWx0LgpAQCAtNjQxLDYgKzY4NSw3OCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0UmVhZE9ubHk6OnVw
ZGF0ZUJsZW5kaW5nS2V5ZnJhbWVzKCkKICAgICBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0
KCk7CiB9CiAKK3ZvaWQgS2V5ZnJhbWVFZmZlY3RSZWFkT25seTo6Y29tcHV0ZUNTU0FuaW1hdGlv
bkJsZW5kaW5nS2V5ZnJhbWVzKCkKK3sKKyAgICBBU1NFUlQoaXM8Q1NTQW5pbWF0aW9uPihhbmlt
YXRpb24oKSkpOworCisgICAgYXV0byYgYmFja2luZ0FuaW1hdGlvbiA9IGRvd25jYXN0PENTU0Fu
aW1hdGlvbj4oYW5pbWF0aW9uKCkpLT5iYWNraW5nQW5pbWF0aW9uKCk7CisgICAgaWYgKGJhY2tp
bmdBbmltYXRpb24ubmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKKyAgICAvLyBXZSBuZWVk
IHRvIGNhbGwgdXBkYXRlKCkgb24gdGhlIEZvbnRDYXNjYWRlIG9yIHdlJ2xsIGhpdCBhbiBBU1NF
UlQgd2hlbiBwYXJzaW5nIGZvbnQtcmVsYXRlZCBwcm9wZXJ0aWVzLgorICAgIHJlbmRlclN0eWxl
LT5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRyKTsKKworICAgIEtleWZyYW1lTGlzdCBrZXlm
cmFtZUxpc3QoYmFja2luZ0FuaW1hdGlvbi5uYW1lKCkpOworICAgIGlmIChhdXRvKiBzdHlsZVNj
b3BlID0gU3R5bGU6OlNjb3BlOjpmb3JPcmRpbmFsKCptX3RhcmdldCwgYmFja2luZ0FuaW1hdGlv
bi5uYW1lU3R5bGVTY29wZU9yZGluYWwoKSkpCisgICAgICAgIHN0eWxlU2NvcGUtPnJlc29sdmVy
KCkua2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oKm1fdGFyZ2V0LCByZW5kZXJTdHlsZS5nZXQo
KSwga2V5ZnJhbWVMaXN0KTsKKworICAgIC8vIEVuc3VyZSByZXNvdXJjZSBsb2FkcyBmb3IgYWxs
IHRoZSBmcmFtZXMuCisgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IGtleWZyYW1lTGlzdC5rZXlm
cmFtZXMoKSkgeworICAgICAgICBpZiAoYXV0byogc3R5bGUgPSBjb25zdF9jYXN0PFJlbmRlclN0
eWxlKj4oa2V5ZnJhbWUuc3R5bGUoKSkpCisgICAgICAgICAgICBTdHlsZTo6bG9hZFBlbmRpbmdS
ZXNvdXJjZXMoKnN0eWxlLCBtX3RhcmdldC0+ZG9jdW1lbnQoKSwgbV90YXJnZXQuZ2V0KCkpOwor
ICAgIH0KKworICAgIG1fYmxlbmRpbmdLZXlmcmFtZXMgPSBXVEZNb3ZlKGtleWZyYW1lTGlzdCk7
CisKKyAgICBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7Cit9CisKK3ZvaWQgS2V5ZnJh
bWVFZmZlY3RSZWFkT25seTo6Y29tcHV0ZUNTU1RyYW5zaXRpb25CbGVuZGluZ0tleWZyYW1lcyhj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkK
K3sKKyAgICBBU1NFUlQoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKCkpKTsKKworICAgIGlm
ICghb2xkU3R5bGUgfHwgbV9ibGVuZGluZ0tleWZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8mIGJhY2tpbmdBbmltYXRpb24gPSBkb3duY2FzdDxDU1NUcmFuc2l0aW9u
PihhbmltYXRpb24oKSktPmJhY2tpbmdBbmltYXRpb24oKTsKKworICAgIGF1dG8gdG9TdHlsZSA9
IFJlbmRlclN0eWxlOjpjbG9uZVB0cihuZXdTdHlsZSk7CisgICAgaWYgKG1fdGFyZ2V0KQorICAg
ICAgICBTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMoKnRvU3R5bGUsIG1fdGFyZ2V0LT5kb2N1
bWVudCgpLCBtX3RhcmdldC5nZXQoKSk7CisKKyAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0
KCJrZXlmcmFtZS1lZmZlY3QtIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAg
a2V5ZnJhbWVMaXN0LmFkZFByb3BlcnR5KGJhY2tpbmdBbmltYXRpb24ucHJvcGVydHkoKSk7CisK
KyAgICBLZXlmcmFtZVZhbHVlIGZyb21LZXlmcmFtZVZhbHVlKDAsIFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqb2xkU3R5bGUpKTsKKyAgICBmcm9tS2V5ZnJhbWVWYWx1ZS5hZGRQcm9wZXJ0eShiYWNr
aW5nQW5pbWF0aW9uLnByb3BlcnR5KCkpOworICAgIGtleWZyYW1lTGlzdC5pbnNlcnQoV1RGTW92
ZShmcm9tS2V5ZnJhbWVWYWx1ZSkpOworCisgICAgS2V5ZnJhbWVWYWx1ZSB0b0tleWZyYW1lVmFs
dWUoMSwgV1RGTW92ZSh0b1N0eWxlKSk7CisgICAgdG9LZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5
KGJhY2tpbmdBbmltYXRpb24ucHJvcGVydHkoKSk7CisgICAga2V5ZnJhbWVMaXN0Lmluc2VydChX
VEZNb3ZlKHRvS2V5ZnJhbWVWYWx1ZSkpOworCisgICAgbV9ibGVuZGluZ0tleWZyYW1lcyA9IFdU
Rk1vdmUoa2V5ZnJhbWVMaXN0KTsKKworICAgIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3Qo
KTsKK30KKworYm9vbCBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5OjpzdHlsZXNXb3VsZFlpZWxkTmV3
Q1NTVHJhbnNpdGlvbnNCbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXM8
Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKCkpKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gZG93bmNh
c3Q8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKCkpLT5iYWNraW5nQW5pbWF0aW9uKCkucHJvcGVy
dHkoKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBoYXZlIGJsZW5kaW5nIGtleWZyYW1lcyB5ZXQs
IHdlIHdvdWxkIGNyZWF0ZSBuZXcgYmxlbmRpbmcga2V5ZnJhbWVzIHByb3ZpZGVkCisgICAgLy8g
dGhlIHN0YXJ0IGFuZCBlbmQgc3R5bGVzIGhvbGQgZGlmZmVyZW50IHZhbHVlcyBmb3IgdGhpcyBw
cm9wZXJ0eS4KKyAgICBpZiAoIWhhc0JsZW5kaW5nS2V5ZnJhbWVzKCkpCisgICAgICAgIHJldHVy
biAhQ1NTUHJvcGVydHlBbmltYXRpb246OnByb3BlcnRpZXNFcXVhbChwcm9wZXJ0eSwgJm9sZFN0
eWxlLCAmbmV3U3R5bGUpOworCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBjcmVhdGUgbmV3
IGJsZW5kaW5nIGtleWZyYW1lcyBwcm92aWRlZCB0aGUgY3VycmVudCBzdGFydCBrZXlmcmFtZSBo
b2xkcworICAgIC8vIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4gdGhlIG5ldyBzdGFydCBzdHlsZSBv
ciB0aGUgY3VycmVudCBlbmQga2V5ZnJhbWUgaG9sZHMgYSBkaWZmZXJlbnQgdmFsdWUKKyAgICAv
LyB0aGFuIHRoZSBuZXcgZW5kIHN0eWxlIGZvciB0aGlzIHByb3BlcnR5LgorICAgIHJldHVybiAh
Q1NTUHJvcGVydHlBbmltYXRpb246OnByb3BlcnRpZXNFcXVhbChwcm9wZXJ0eSwgbV9ibGVuZGlu
Z0tleWZyYW1lc1swXS5zdHlsZSgpLCAmb2xkU3R5bGUpIHx8ICFDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCBtX2JsZW5kaW5nS2V5ZnJhbWVzWzFdLnN0eWxl
KCksICZuZXdTdHlsZSk7Cit9CisKIHZvaWQgS2V5ZnJhbWVFZmZlY3RSZWFkT25seTo6Y29tcHV0
ZVN0YWNraW5nQ29udGV4dEltcGFjdCgpCiB7CiAgICAgbV90cmlnZ2Vyc1N0YWNraW5nQ29udGV4
dCA9IGZhbHNlOwpAQCAtNzE4LDcgKzgzNCw3IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3RSZWFkT25s
eTo6c2hvdWxkUnVuQWNjZWxlcmF0ZWQoKQogICAgICAgICBpZiAoIUNTU1Byb3BlcnR5QW5pbWF0
aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChjc3NQcm9wZXJ0eUlkKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuICFtX2JsZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVm
ZmVjdFJlYWRPbmx5OjpnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4mIGFuaW1hdGVkU3R5bGUpCkBAIC04NjEsNyArOTc3LDggQEAgdm9pZCBLZXlmcmFtZUVmZmVj
dFJlYWRPbmx5OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHkKICAgICAgICAgLy8gMTcuIExldCB0cmFuc2Zvcm1lZCBkaXN0YW5jZSBiZSB0aGUgcmVz
dWx0IG9mIGV2YWx1YXRpbmcgdGhlIHRpbWluZyBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhl
IGZpcnN0IGtleWZyYW1lIGluIGludGVydmFsIGVuZHBvaW50cwogICAgICAgICAvLyAgICAgcGFz
c2luZyBpbnRlcnZhbCBkaXN0YW5jZSBhcyB0aGUgaW5wdXQgcHJvZ3Jlc3MuCiAgICAgICAgIGF1
dG8gdHJhbnNmb3JtZWREaXN0YW5jZSA9IGludGVydmFsRGlzdGFuY2U7Ci0gICAgICAgIGlmIChz
dGFydEtleWZyYW1lSW5kZXgpIHsKKyAgICAgICAgLy8gSW4gY2FzZSB3ZSdyZSBiYWNraW5nIGEg
Q1NTQW5pbWF0aW9uIG9yIENTU1RyYW5zaXRpb24gd2Ugd29uJ3QgYWN0dWFsbHkgaGF2ZSBwYXJz
ZWQga2V5ZnJhbWVzLgorICAgICAgICBpZiAoc3RhcnRLZXlmcmFtZUluZGV4ICYmIHN0YXJ0S2V5
ZnJhbWVJbmRleC52YWx1ZSgpICsgMSA8PSBtX3BhcnNlZEtleWZyYW1lcy5zaXplKCkpIHsKICAg
ICAgICAgICAgIGlmIChhdXRvIGl0ZXJhdGlvbkR1cmF0aW9uID0gdGltaW5nKCktPml0ZXJhdGlv
bkR1cmF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJhbmdlRHVyYXRpb24gPSAoZW5k
T2Zmc2V0IC0gc3RhcnRPZmZzZXQpICogaXRlcmF0aW9uRHVyYXRpb24uc2Vjb25kcygpOwogICAg
ICAgICAgICAgICAgIHRyYW5zZm9ybWVkRGlzdGFuY2UgPSBtX3BhcnNlZEtleWZyYW1lc1tzdGFy
dEtleWZyYW1lSW5kZXgudmFsdWUoKV0udGltaW5nRnVuY3Rpb24tPnRyYW5zZm9ybVRpbWUoaW50
ZXJ2YWxEaXN0YW5jZSwgcmFuZ2VEdXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuaAppbmRleCAzYzUzYzBjNjBlZGY3YjY3NjVh
ZDVkZmE5OWUxMjViZDhlMGI2ZmI2Li4wMzk2ZDFlYjIzZWI3NDcyNDk3MzEyYjY0YzcyZjZkY2Qy
YjIwNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3RSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dFJlYWRPbmx5LmgKQEAgLTEwOSw2ICsxMDksMTEgQEAgcHVibGljOgogICAgIGJvb2wgYmFja2Ry
b3BGaWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogI2VuZGlmCiAKKyAgICB2b2lkIGNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZy
YW1lcygpOworICAgIHZvaWQgY29tcHV0ZUNTU1RyYW5zaXRpb25CbGVuZGluZ0tleWZyYW1lcyhj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7
CisgICAgYm9vbCBzdHlsZXNXb3VsZFlpZWxkTmV3Q1NTVHJhbnNpdGlvbnNCbGVuZGluZ0tleWZy
YW1lcyhjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSkgY29uc3Q7CisgICAgYm9vbCBoYXNCbGVuZGluZ0tleWZyYW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxlbmRpbmdLZXlmcmFtZXMuc2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKICAgICB2b2lk
IGNvcHlQcm9wZXJ0aWVzRnJvbVNvdXJjZShSZWY8S2V5ZnJhbWVFZmZlY3RSZWFkT25seT4mJik7
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc0tleWZyYW1lcyhKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYpOwo=
</data>
<flag name="review"
          id="354187"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>