<?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>226761</bug_id>
          
          <creation_ts>2021-06-08 01:30:28 -0700</creation_ts>
          <short_desc>MediaPlayerPrivateRemote::didLoadingProgress should not send synchronous message to GPU process</short_desc>
          <delta_ts>2021-06-08 21:38:45 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767700</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 01:30:28 -0700</bug_when>
    <thetext>MediaPlayerPrivateRemote::didLoadingProgress should not send synchronous message to GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767701</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 01:31:24 -0700</bug_when>
    <thetext>rdar://78834312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767715</commentid>
    <comment_count>2</comment_count>
      <attachid>430821</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 02:34:41 -0700</bug_when>
    <thetext>Created attachment 430821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767941</commentid>
    <comment_count>3</comment_count>
      <attachid>430821</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 15:56:49 -0700</bug_when>
    <thetext>Comment on attachment 430821
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:428
&gt; +    using DidLoadingProgressCompletionHandler = CompletionHandler&lt;void(bool)&gt;;

Not sure why we need this alias considering it is longer than the underlying type.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:271
&gt; +    m_player-&gt;didLoadingProgress([completionHandler = WTFMove(completionHandler)](bool progress) mutable {

Can&apos;t this be simplified as:
m_player-&gt;didLoadingProgress(WTFMove(completionHandler));
?

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:288
&gt; +    ASSERT(false, &quot;Should always be using didLoadingProgressAsync&quot;);

ASSERT_NOT_REACHED()

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {

can this be:
connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), WTFMove(callback), m_id);
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767942</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 15:57:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 430821 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430821&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.h:428
&gt; &gt; +    using DidLoadingProgressCompletionHandler = CompletionHandler&lt;void(bool)&gt;;
&gt; 
&gt; Not sure why we need this alias considering it is longer than the underlying
&gt; type.
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:271
&gt; &gt; +    m_player-&gt;didLoadingProgress([completionHandler = WTFMove(completionHandler)](bool progress) mutable {
&gt; 
&gt; Can&apos;t this be simplified as:
&gt; m_player-&gt;didLoadingProgress(WTFMove(completionHandler));
&gt; ?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:288
&gt; &gt; +    ASSERT(false, &quot;Should always be using didLoadingProgressAsync&quot;);
&gt; 
&gt; ASSERT_NOT_REACHED()

or ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Should always be using didLoadingProgressAsync&quot;)

&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt; &gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {
&gt; 
&gt; can this be:
&gt; connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::
&gt; DidLoadingProgress(), WTFMove(callback), m_id);
&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767949</commentid>
    <comment_count>5</comment_count>
      <attachid>430821</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 16:23:13 -0700</bug_when>
    <thetext>Comment on attachment 430821
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:428
&gt;&gt;&gt; +    using DidLoadingProgressCompletionHandler = CompletionHandler&lt;void(bool)&gt;;
&gt;&gt; 
&gt;&gt; Not sure why we need this alias considering it is longer than the underlying type.
&gt; 
&gt; or ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Should always be using didLoadingProgressAsync&quot;)

so if we ever change the type in the future, you don&apos;t have to edit it everywhere. I think it&apos;s good practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767951</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 16:25:32 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #5)
&gt; Comment on attachment 430821 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430821&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:428
&gt; &gt;&gt;&gt; +    using DidLoadingProgressCompletionHandler = CompletionHandler&lt;void(bool)&gt;;
&gt; &gt;&gt; 
&gt; &gt;&gt; Not sure why we need this alias considering it is longer than the underlying type.
&gt; &gt; 
&gt; &gt; or ASSERT_NOT_REACHED_WITH_MESSAGE(&quot;Should always be using didLoadingProgressAsync&quot;)
&gt; 
&gt; so if we ever change the type in the future, you don&apos;t have to edit it
&gt; everywhere. I think it&apos;s good practice.

OK, if that&apos;s your preference. I don&apos;t feel strongly about having an alias or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767989</commentid>
    <comment_count>7</comment_count>
      <attachid>430821</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 17:26:11 -0700</bug_when>
    <thetext>Comment on attachment 430821
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt;&gt;&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {
&gt;&gt; 
&gt;&gt; can this be:
&gt;&gt; connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), WTFMove(callback), m_id);
&gt;&gt; ?
&gt; 
&gt; 

It can.
I guess, conceptually I&apos;ve seen them as different, it just happens to be the same underlying type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767998</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 17:44:58 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #7)
&gt; Comment on attachment 430821 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430821&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt; &gt;&gt;&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {
&gt; &gt;&gt; 
&gt; &gt;&gt; can this be:
&gt; &gt;&gt; connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), WTFMove(callback), m_id);
&gt; &gt;&gt; ?
&gt; &gt; 
&gt; &gt; 
&gt; 
&gt; It can.
&gt; I guess, conceptually I&apos;ve seen them as different, it just happens to be the
&gt; same underlying type.

If you create a lambda whose only thing it does is calling a lambda, then it&apos;s a tell-tell sign you may not need to wrap the lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768002</commentid>
    <comment_count>9</comment_count>
      <attachid>430821</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 17:57:46 -0700</bug_when>
    <thetext>Comment on attachment 430821
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt;&gt;&gt;&gt;&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; can this be:
&gt;&gt;&gt;&gt; connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), WTFMove(callback), m_id);
&gt;&gt;&gt;&gt; ?
&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt; 
&gt;&gt; It can.
&gt;&gt; I guess, conceptually I&apos;ve seen them as different, it just happens to be the same underlying type.
&gt; 
&gt; If you create a lambda whose only thing it does is calling a lambda, then it&apos;s a tell-tell sign you may not need to wrap the lambda.

There are so many ways you can define a template with varying parameters; yet they are to be used in the same manner, that it&apos;s unfortunately far from being the norm. 
Luckily, WK&apos;s IPC bindings makes it much easier than the ones I&apos;m used to work with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768009</commentid>
    <comment_count>10</comment_count>
      <attachid>430821</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 18:04:56 -0700</bug_when>
    <thetext>Comment on attachment 430821
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:294
&gt;&gt;&gt;&gt;&gt;&gt; +    connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), [callback = WTFMove(callback)](bool progress) mutable {
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; can this be:
&gt;&gt;&gt;&gt;&gt; connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), WTFMove(callback), m_id);
&gt;&gt;&gt;&gt;&gt; ?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt;&gt; It can.
&gt;&gt;&gt; I guess, conceptually I&apos;ve seen them as different, it just happens to be the same underlying type.
&gt;&gt; 
&gt;&gt; If you create a lambda whose only thing it does is calling a lambda, then it&apos;s a tell-tell sign you may not need to wrap the lambda.
&gt; 
&gt; There are so many ways you can define a template with varying parameters; yet they are to be used in the same manner, that it&apos;s unfortunately far from being the norm. 
&gt; Luckily, WK&apos;s IPC bindings makes it much easier than the ones I&apos;m used to work with.

I meant earlier: conceptually, the IPC&apos;s method is called with DidLoadingProgressAsyncReply, the other MediaPlayer::DidLoadingProgressCompletionHandler&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768017</commentid>
    <comment_count>11</comment_count>
      <attachid>430932</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-08 18:37:53 -0700</bug_when>
    <thetext>Created attachment 430932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768046</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 21:38:42 -0700</bug_when>
    <thetext>Committed r278646 (238628@main): &lt;https://commits.webkit.org/238628@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430932.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430821</attachid>
            <date>2021-06-08 02:34:41 -0700</date>
            <delta_ts>2021-06-08 18:37:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226761-20210608193440.patch</filename>
            <type>text/plain</type>
            <size>11214</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc5NWM2OGRiNjRhZmY2
ZTE5NmU4NTg1MDlhYjZkZDNmMGE0NDE3Ni4uNmNjY2U0NjZmNTY4YzAzY2MyYTI1YzFmNWJmODMz
YTA2ODExNzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA2LTA4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mgc2hvdWxkIG5vdCBzZW5kIHN5bmNocm9ub3Vz
IG1lc3NhZ2UgdG8gR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjc2MQorICAgICAgICByZGFyOi8vNzg4MzQzMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE1lZGlhUGxheWVy
OjpkaWRMb2FkaW5nUHJvZ3Jlc3MgbWV0aG9kIGFzeW5jaHJvbm91cy4gVGhpcyBtZXRob2QgaXMg
cGFydGljdWxhcmx5IHdlbGwKKyAgICAgICAgc3VpdGVkIHRvIGJlIG1hZGUgYXN5bmMgYXMgdGhl
cmUncyBvbmx5IG9uZSBjYWxsaW5nIHBvaW50IGZyb20gdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGhh
dAorICAgICAgICBvY2N1cnMgd2hlbiB0aGUgcHJvZ3Jlc3NFdmVudFRpbWVyIGdldHMgZmlyZWQu
IEFzIHN1Y2gsIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBwcmVjaXNlbHkgcnVuCisgICAgICAgIGlz
bid0IHBhcnRpY3VsYXJseSByZWxldmFudCBhcyBwZXIgc3BlYzoKKyAgICAgICAgIldoaWxlIHRo
ZSBsb2FkIGlzIG5vdCBzdXNwZW5kZWQgKHNlZSBiZWxvdyksIGV2ZXJ5IDM1MG1zICjCsTIwMG1z
KSBvciBmb3IgZXZlcnkgYnl0ZSByZWNlaXZlZCwKKyAgICAgICAgIHdoaWNoZXZlciBpcyBsZWFz
dCBmcmVxdWVudCwgcXVldWUgYSBtZWRpYSBlbGVtZW50IHRhc2sgZ2l2ZW4gdGhlIG1lZGlhIGVs
ZW1lbnQgdG8gZmlyZSBhbgorICAgICAgICAgZXZlbnQgbmFtZWQgcHJvZ3Jlc3MgYXQgdGhlIGVs
ZW1lbnQuIi4KKyAgICAgICAgVGhpcyBhbGxvd3MgdG8gbWFrZSB0aGUgcXVlcnkgdG8gdGhlIEdQ
VSBwcm9jZXNzIGFzeW5jLgorICAgICAgICBXaGlsZSB3ZSBjYW4gZXhwZWN0IHRoZSB0aW1lIHRv
IHF1ZXJ5IHRoZSBHUFUgcHJvY2VzcyB0byB0YWtlIGxlc3MgdGhhbiAyMDBtcyBvbiBhdmVyYWdl
LAorICAgICAgICB0aGVyZSB3aWxsIGJlIG5vIGNoYW5nZSBpbiB0aGUgb2J2ZXJzYWJsZSBiZWhh
dmlvdXIgY29tcGFyZSB0byB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgd2hl
cmUgdGhlIGNhbGwgdG8gdGhlIEdQVSBwcm9jZXNzIHdhcyBzeW5jaHJvbm91cy4KKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2
ZW50VGltZXJGaXJlZCk6IFVzZSBuZXcgbWV0aG9kIGRlZmluaXRpb24uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzQXN5bmMgY29uc3QpOiBBZGQgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0aGF0IGNhbGxzIHRoZSBvbGQgc3luYyBkaWRMb2FkaW5nUHJvZ3Jl
c3MgbWV0aG9kLgorCiAyMDIxLTA2LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgW01TRV0gQXNzZXJ0aW9uIGlmIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBl
dmljdGlvbiBiZWZvcmUgcGxheWJhY2sgc3RhcnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjYTI0Y2Y2NDVkODI3
ZGY3YTU0Yjg3ZDVkMGYxZGEwYjRjODlkMWU0Li42MTdlNjIwNzlkOWI4MTkwOTYyYzI2ZTVkNzI3
ZjgxMDUxN2FiMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA2LTA4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mgc2hvdWxkIG5vdCBzZW5kIHN5bmNocm9ub3Vz
IG1lc3NhZ2UgdG8gR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjc2MQorICAgICAgICByZGFyOi8vNzg4MzQzMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmRpZExvYWRpbmdQcm9ncmVzcyk6IEZvcndhcmQgY2FsbCB0byB0aGUg
YWN0dWFsCisgICAgICAgIHByb3hpZWQgTWVkaWFQbGF5ZXIuCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOiBNYWtlIG1lc3NhZ2Ug
YXN5bmMuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpk
aWRMb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOiBUaGlzIG1ldGhvZCBzaG91bGQgbm8KKyAgICAgICAg
bG9uZ2VyIGV2ZXIgYmUgY2FsbGVkLCBidXQgaXMgcmVxdWlyZWQgYXMgaXQncyBwdXJlLXZpcnR1
YWwuCisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGlu
Z1Byb2dyZXNzQXN5bmMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOiBBZGQgbmV3IGRpZExvYWRpbmdQcm9ncmVzc0FzeW5j
IG1ldGhvZC4KKwogMjAyMS0wNi0wNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNU0VdIFJld29yayBoYW5kbGluZyBvZiBTb3VyY2VCdWZmZXIncyBidWZm
ZXIgZnVsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDZk
NzAzM2IxZTBhODY5YWQwMzc5YjVhY2Q2OTYwZmJhNWVjNDgzMzUuLjIxOGU0MmRhODliN2JmZjJk
ZTRlMDJiM2E3N2ZmZDAwNWJjYWYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMjc5OCwxOSArMjc5OCwyMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKCkKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gTkVU
V09SS19MT0FESU5HKQogICAgICAgICByZXR1cm47CiAKLSAgICBNb25vdG9uaWNUaW1lIHRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBTZWNvbmRzIHRpbWVkZWx0YSA9IHRpbWUgLSBt
X3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOwotCi0gICAgaWYgKG1fcGxheWVyLT5kaWRMb2FkaW5nUHJv
Z3Jlc3MoKSkgewotICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2
ZW50KTsKLSAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNzVGltZSA9IHRpbWU7Ci0gICAgICAgIG1f
c2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOwotICAgICAgICB1cGRhdGVSZW5kZXJlcigpOwotICAg
IH0gZWxzZSBpZiAodGltZWRlbHRhID4gM19zICYmICFtX3NlbnRTdGFsbGVkRXZlbnQpIHsKLSAg
ICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuc3RhbGxlZEV2ZW50KTsKLSAgICAgICAg
bV9zZW50U3RhbGxlZEV2ZW50ID0gdHJ1ZTsKLSAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQoZmFsc2UpOwotICAgIH0KKyAgICBtX3BsYXllci0+ZGlkTG9hZGluZ1Byb2dyZXNzKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIHByb2dyZXNzKSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE1vbm90b25pY1Rp
bWUgdGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICBTZWNvbmRzIHRpbWVkZWx0
YSA9IHRpbWUgLSBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lOworICAgICAgICBpZiAocHJvZ3Jlc3Mp
IHsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQp
OworICAgICAgICAgICAgbV9wcmV2aW91c1Byb2dyZXNzVGltZSA9IHRpbWU7CisgICAgICAgICAg
ICBtX3NlbnRTdGFsbGVkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIHVwZGF0ZVJlbmRlcmVy
KCk7CisgICAgICAgIH0gZWxzZSBpZiAodGltZWRlbHRhID4gM19zICYmICFtX3NlbnRTdGFsbGVk
RXZlbnQpIHsKKyAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnN0YWxsZWRF
dmVudCk7CisgICAgICAgICAgICBtX3NlbnRTdGFsbGVkRXZlbnQgPSB0cnVlOworICAgICAgICAg
ICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOworICAgICAgICB9CisgICAgfSk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
ZWRmZDZhMzAzOGU3MmRhODRkMzYyNzRjOTRjMmYwNWJkZjM1NGI2YS4uMmFlMjk1OTY4MjU0ZmRi
YzhlOGM4NzJkYjZmYzQ2N2IxM2ZmZTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTc4LDkgKzk3OCw5IEBAIGRvdWJsZSBN
ZWRpYVBsYXllcjo6bGl2ZVVwZGF0ZUludGVydmFsKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5s
aXZlVXBkYXRlSW50ZXJ2YWwoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllcjo6ZGlkTG9hZGluZ1By
b2dyZXNzKCkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmRpZExvYWRpbmdQcm9ncmVzcyhEaWRMb2FkaW5n
UHJvZ3Jlc3NDb21wbGV0aW9uSGFuZGxlciYmIGNhbGxiYWNrKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmRpZExvYWRpbmdQcm9ncmVzcygpOworICAgIG1fcHJpdmF0ZS0+ZGlkTG9h
ZGluZ1Byb2dyZXNzQXN5bmMoV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA5N2ExYjBjOTE1MzEwZTZmNzA4NmVi
ZWM4ZGVhMDU2Y2JhYjQyNGIzLi5lMDIzOTQzMWE3Y2MwYWY5YzYxYTcxM2U0MjI4MmY1NjY5YTA2
MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTQyNSw3ICs0MjUsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJh
bmdlc0xhc3RNb2RpZmllZFRpbWUoKTsKICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCk7
CiAKLSAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpOworICAgIHVzaW5nIERpZExvYWRpbmdQ
cm9ncmVzc0NvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47
CisgICAgdm9pZCBkaWRMb2FkaW5nUHJvZ3Jlc3MoRGlkTG9hZGluZ1Byb2dyZXNzQ29tcGxldGlv
bkhhbmRsZXImJikgY29uc3Q7CiAKICAgICBkb3VibGUgdm9sdW1lKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRWb2x1bWUoZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggOWI1MmUxNjRiMjQ3Nzc4MGZiMjRm
NThmOGZhNTc5YjU3YjEzZDkyYy4uNTNkZjhiNjdjYTg5OGViMWQxN2QzMTdhZmJiNmYxOTJkNmUw
MDRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1Nyw2ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAwOworICAg
IC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIGRpZExvYWRpbmdQcm9ncmVzc0FzeW5j
IGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mCisgICAgLy8gc3luY2hyb25vdXMgZGlkTG9hZGlu
Z1Byb2dyZXNzKCkgY2FsbHMuIEltcGxlbWVudGF0aW9ucyBtYXkgYWxzbworICAgIC8vIG92ZXJy
aWRlIGRpZExvYWRpbmdQcm9ncmVzc0FzeW5jIHRvIGNyZWF0ZSBhIG1vcmUgcHJvcGVyIGFzeW5j
IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkaW5nUHJvZ3Jlc3NBc3lu
YyhNZWRpYVBsYXllcjo6RGlkTG9hZGluZ1Byb2dyZXNzQ29tcGxldGlvbkhhbmRsZXImJiBjYWxs
YmFjaykgY29uc3QgeyBjYWxsYmFjayhkaWRMb2FkaW5nUHJvZ3Jlc3MoKSk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CmluZGV4IDRmNThlZDFjNTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQwNjY4MDkuLjdhZWM2NjA0
ODMyYTRiZTA2NmE0MzAzMTBlMmZmNmJkMGY3NGYwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAg
LTI2OCw3ICsyNjgsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldFJhdGUoZG91
YmxlIHJhdGUpCiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6ZGlkTG9hZGluZ1Byb2dy
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9wbGF5ZXItPmRpZExvYWRpbmdQcm9ncmVzcygpKTsK
KyAgICBtX3BsYXllci0+ZGlkTG9hZGluZ1Byb2dyZXNzKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHByb2dyZXNzKSBtdXRhYmxlIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocHJvZ3Jlc3MpOworICAgIH0pOwogfQogCiBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpyZXF1ZXN0UmVzb3Vy
Y2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
OjpMb2FkT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCA3MmU5NTQ2OWFkMTIwZGJhNzViMWFiOWRlOWRhYTc5NzVkYjhkNTlmLi5iOGNmYmM0Y2Yx
ODhlMDJhNThmYmRlOGViMWIxNTJkNzU0MjhiYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNTQsNyArNTQsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXll
clByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIEFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFu
Z2VkKGJvb2wgY2FuQmVBY2NlbGVyYXRlZCkKICAgICBTZXRTaG91bGREaXNhYmxlU2xlZXAoYm9v
bCBkaXNhYmxlKQogICAgIFNldFJhdGUoZG91YmxlIHJhdGUpCi0gICAgRGlkTG9hZGluZ1Byb2dy
ZXNzKCkgLT4gKGJvb2wgZmxhZykgU3luY2hyb25vdXMKKyAgICBEaWRMb2FkaW5nUHJvZ3Jlc3Mo
KSAtPiAoYm9vbCBmbGFnKSBBc3luYwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAppbmRleCAzYTE5ZmE5MDc3NDkxYzdiYjYwYWFlMWU0MGQ2MjRhZTli
ZWRhMGU3Li5hNDA0YjgyMDkxYzFmZDY2YjRjYWMwYWI5OGNkZjkwZmJhMDQyNGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0yODUsOSArMjg1LDE1IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRp
bWUsIGNvbnN0IE1lCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5n
UHJvZ3Jlc3MoKSBjb25zdAogewotICAgIGJvb2wgZmxhZyA9IGZhbHNlOwotICAgIGNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6RGlkTG9hZGlu
Z1Byb2dyZXNzKCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpEaWRMb2FkaW5n
UHJvZ3Jlc3M6OlJlcGx5KGZsYWcpLCBtX2lkKTsKLSAgICByZXR1cm4gZmxhZzsKKyAgICBBU1NF
UlQoZmFsc2UsICJTaG91bGQgYWx3YXlzIGJlIHVzaW5nIGRpZExvYWRpbmdQcm9ncmVzc0FzeW5j
Iik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzQXN5bmMoTWVkaWFQbGF5ZXI6OkRpZExvYWRpbmdQcm9ncmVz
c0NvbXBsZXRpb25IYW5kbGVyJiYgY2FsbGJhY2spIGNvbnN0Cit7CisgICAgY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6RGlk
TG9hZGluZ1Byb2dyZXNzKCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHBy
b2dyZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2socHJvZ3Jlc3MpOworICAgIH0sIG1f
aWQpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6aGFzVmlkZW8oKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNzFiZTRlMjM0NTA5MWZkZjYzMjZlOGQ1
MzQ0OWJhYjI5MTU1YTI4MS4uMTNjNGYxZGY4MzM1Njc4NzMzYjc4ZWJjNmJlOWE2ZDMwMTA0YzA0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yODAsNiArMjgwLDcgQEAgcHJpdmF0
ZToKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRpZExv
YWRpbmdQcm9ncmVzc0FzeW5jKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpEaWRMb2FkaW5nUHJvZ3Jl
c3NDb21wbGV0aW9uSGFuZGxlciYmKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7
CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430932</attachid>
            <date>2021-06-08 18:37:53 -0700</date>
            <delta_ts>2021-06-08 21:38:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226761-20210609113752.patch</filename>
            <type>text/plain</type>
            <size>11062</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAzYzBiMzMwYWVkMWRk
OGQ4MTJjMzc5MDk0MjhhNGFiYmMzMWVjZC4uYTQ2ZjQzODM4NDc1OGFkOTAxMjI0NGI0MWQzMDA3
ZWJhNmE3MTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA2LTA4ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mgc2hvdWxkIG5vdCBzZW5kIHN5bmNocm9ub3Vz
IG1lc3NhZ2UgdG8gR1BVIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjc2MQorICAgICAgICByZGFyOi8vNzg4MzQzMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTWFrZSBNZWRpYVBsYXllcjo6
ZGlkTG9hZGluZ1Byb2dyZXNzIG1ldGhvZCBhc3luY2hyb25vdXMuIFRoaXMgbWV0aG9kIGlzIHBh
cnRpY3VsYXJseSB3ZWxsCisgICAgICAgIHN1aXRlZCB0byBiZSBtYWRlIGFzeW5jIGFzIHRoZXJl
J3Mgb25seSBvbmUgY2FsbGluZyBwb2ludCBmcm9tIHRoZSBIVE1MTWVkaWFFbGVtZW50IHRoYXQK
KyAgICAgICAgb2NjdXJzIHdoZW4gdGhlIHByb2dyZXNzRXZlbnRUaW1lciBnZXRzIGZpcmVkLiBB
cyBzdWNoLCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgcHJlY2lzZWx5IHJ1bgorICAgICAgICBpc24n
dCBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgYXMgcGVyIHNwZWM6CisgICAgICAgICJXaGlsZSB0aGUg
bG9hZCBpcyBub3Qgc3VzcGVuZGVkIChzZWUgYmVsb3cpLCBldmVyeSAzNTBtcyAowrEyMDBtcykg
b3IgZm9yIGV2ZXJ5IGJ5dGUgcmVjZWl2ZWQsCisgICAgICAgICB3aGljaGV2ZXIgaXMgbGVhc3Qg
ZnJlcXVlbnQsIHF1ZXVlIGEgbWVkaWEgZWxlbWVudCB0YXNrIGdpdmVuIHRoZSBtZWRpYSBlbGVt
ZW50IHRvIGZpcmUgYW4KKyAgICAgICAgIGV2ZW50IG5hbWVkIHByb2dyZXNzIGF0IHRoZSBlbGVt
ZW50LiIuCisgICAgICAgIFRoaXMgYWxsb3dzIHRvIG1ha2UgdGhlIHF1ZXJ5IHRvIHRoZSBHUFUg
cHJvY2VzcyBhc3luYy4KKyAgICAgICAgV2hpbGUgd2UgY2FuIGV4cGVjdCB0aGUgdGltZSB0byBx
dWVyeSB0aGUgR1BVIHByb2Nlc3MgdG8gdGFrZSBsZXNzIHRoYW4gMjAwbXMgb24gYXZlcmFnZSwK
KyAgICAgICAgdGhlcmUgd2lsbCBiZSBubyBjaGFuZ2UgaW4gdGhlIG9idmVyc2FibGUgYmVoYXZp
b3VyIGNvbXBhcmUgdG8gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHdoZXJl
IHRoZSBjYWxsIHRvIHRoZSBHUFUgcHJvY2VzcyB3YXMgc3luY2hyb25vdXMuCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJvZ3Jlc3NFdmVu
dFRpbWVyRmlyZWQpOiBVc2UgbmV3IG1ldGhvZCBkZWZpbml0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3MgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6OmRpZExvYWRpbmdQcm9ncmVzc0FzeW5jIGNvbnN0KTogQWRkIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdGhhdCBjYWxscyB0aGUgb2xkIHN5bmMgZGlkTG9hZGluZ1Byb2dyZXNz
IG1ldGhvZC4KKwogMjAyMS0wNi0wNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNU0VdIEFzc2VydGlvbiBpZiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gZXZp
Y3Rpb24gYmVmb3JlIHBsYXliYWNrIHN0YXJ0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTcxOTVmNmU2N2M2Y2Jm
YThmZjQ2MzM4OTMzMTg2YWU0Zjk0Njc3Yy4uYjBhNzMxNGFhZWYxMTE3NmY3N2I1YmNhYTI4MzFm
YjhhMzVhMjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wNi0wOCAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNzIHNob3VsZCBub3Qgc2VuZCBzeW5jaHJvbm91cyBt
ZXNzYWdlIHRvIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY3NjEKKyAgICAgICAgcmRhcjovLzc4ODM0MzEyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6ZGlkTG9hZGluZ1Byb2dyZXNzKTogRm9yd2FyZCBjYWxsIHRvIHRoZSBhY3R1
YWwKKyAgICAgICAgcHJveGllZCBNZWRpYVBsYXllci4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW46IE1ha2UgbWVzc2FnZSBhc3lu
Yy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmRpZExv
YWRpbmdQcm9ncmVzcyBjb25zdCk6IFRoaXMgbWV0aG9kIHNob3VsZCBubworICAgICAgICBsb25n
ZXIgZXZlciBiZSBjYWxsZWQsIGJ1dCBpcyByZXF1aXJlZCBhcyBpdCdzIHB1cmUtdmlydHVhbC4K
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJv
Z3Jlc3NBc3luYyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmg6IEFkZCBuZXcgZGlkTG9hZGluZ1Byb2dyZXNzQXN5bmMgbWV0
aG9kLgorCiAyMDIxLTA2LTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01TRV0gUmV3b3JrIGhhbmRsaW5nIG9mIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlciBm
dWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmQ3MDMz
YjFlMGE4NjlhZDAzNzliNWFjZDY5NjBmYmE1ZWM0ODMzNS4uMjE4ZTQyZGE4OWI3YmZmMmRlNGUw
MmIzYTc3ZmZkMDA1YmNhZjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0yNzk4LDE5ICsyNzk4LDIyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJv
Z3Jlc3NFdmVudFRpbWVyRmlyZWQoKQogICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JL
X0xPQURJTkcpCiAgICAgICAgIHJldHVybjsKIAotICAgIE1vbm90b25pY1RpbWUgdGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotICAgIFNlY29uZHMgdGltZWRlbHRhID0gdGltZSAtIG1fcHJl
dmlvdXNQcm9ncmVzc1RpbWU7Ci0KLSAgICBpZiAobV9wbGF5ZXItPmRpZExvYWRpbmdQcm9ncmVz
cygpKSB7Ci0gICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnByb2dyZXNzRXZlbnQp
OwotICAgICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gdGltZTsKLSAgICAgICAgbV9zZW50
U3RhbGxlZEV2ZW50ID0gZmFsc2U7Ci0gICAgICAgIHVwZGF0ZVJlbmRlcmVyKCk7Ci0gICAgfSBl
bHNlIGlmICh0aW1lZGVsdGEgPiAzX3MgJiYgIW1fc2VudFN0YWxsZWRFdmVudCkgewotICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFsbGVkRXZlbnQpOwotICAgICAgICBtX3Nl
bnRTdGFsbGVkRXZlbnQgPSB0cnVlOwotICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChm
YWxzZSk7Ci0gICAgfQorICAgIG1fcGxheWVyLT5kaWRMb2FkaW5nUHJvZ3Jlc3MoW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgcHJvZ3Jlc3MpIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgTW9ub3RvbmljVGltZSB0
aW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgICAgIFNlY29uZHMgdGltZWRlbHRhID0g
dGltZSAtIG1fcHJldmlvdXNQcm9ncmVzc1RpbWU7CisgICAgICAgIGlmIChwcm9ncmVzcykgewor
ICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucHJvZ3Jlc3NFdmVudCk7Cisg
ICAgICAgICAgICBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lID0gdGltZTsKKyAgICAgICAgICAgIG1f
c2VudFN0YWxsZWRFdmVudCA9IGZhbHNlOworICAgICAgICAgICAgdXBkYXRlUmVuZGVyZXIoKTsK
KyAgICAgICAgfSBlbHNlIGlmICh0aW1lZGVsdGEgPiAzX3MgJiYgIW1fc2VudFN0YWxsZWRFdmVu
dCkgeworICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuc3RhbGxlZEV2ZW50
KTsKKyAgICAgICAgICAgIG1fc2VudFN0YWxsZWRFdmVudCA9IHRydWU7CisgICAgICAgICAgICBz
ZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9KTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXdpbmQoZG91YmxlIHRpbWVEZWx0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBlZGZk
NmEzMDM4ZTcyZGE4NGQzNjI3NGM5NGMyZjA1YmRmMzU0YjZhLi4yYWUyOTU5NjgyNTRmZGJjOGU4
Yzg3MmRiNmZjNDY3YjEzZmZlMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05NzgsOSArOTc4LDkgQEAgZG91YmxlIE1lZGlh
UGxheWVyOjpsaXZlVXBkYXRlSW50ZXJ2YWwoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPmxpdmVV
cGRhdGVJbnRlcnZhbCgpOwogfQogCi1ib29sIE1lZGlhUGxheWVyOjpkaWRMb2FkaW5nUHJvZ3Jl
c3MoKQordm9pZCBNZWRpYVBsYXllcjo6ZGlkTG9hZGluZ1Byb2dyZXNzKERpZExvYWRpbmdQcm9n
cmVzc0NvbXBsZXRpb25IYW5kbGVyJiYgY2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+ZGlkTG9hZGluZ1Byb2dyZXNzKCk7CisgICAgbV9wcml2YXRlLT5kaWRMb2FkaW5n
UHJvZ3Jlc3NBc3luYyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6
OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDk3YTFiMGM5MTUzMTBlNmY3MDg2ZWJlYzhk
ZWEwNTZjYmFiNDI0YjMuLmUwMjM5NDMxYTdjYzBhZjljNjFhNzEzZTQyMjgyZjU2NjlhMDYwYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNDI1LDcgKzQyNSw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2Vz
TGFzdE1vZGlmaWVkVGltZSgpOwogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKTsKIAot
ICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCk7CisgICAgdXNpbmcgRGlkTG9hZGluZ1Byb2dy
ZXNzQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKKyAg
ICB2b2lkIGRpZExvYWRpbmdQcm9ncmVzcyhEaWRMb2FkaW5nUHJvZ3Jlc3NDb21wbGV0aW9uSGFu
ZGxlciYmKSBjb25zdDsKIAogICAgIGRvdWJsZSB2b2x1bWUoKSBjb25zdDsKICAgICB2b2lkIHNl
dFZvbHVtZShkb3VibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA5YjUyZTE2NGIyNDc3NzgwZmIyNGY1OGY4
ZmE1NzliNTdiMTNkOTJjLi41M2RmOGI2N2NhODk4ZWIxZDE3ZDMxN2FmYmI2ZjE5MmQ2ZTAwNGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1U
aW1lUmFuZ2VzLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTU3LDYgKzE1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCA9IDA7CisgICAgLy8g
VGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZGlkTG9hZGluZ1Byb2dyZXNzQXN5bmMgaXMg
aW1wbGVtZW50ZWQgaW4gdGVybXMgb2YKKyAgICAvLyBzeW5jaHJvbm91cyBkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjYWxscy4gSW1wbGVtZW50YXRpb25zIG1heSBhbHNvCisgICAgLy8gb3ZlcnJpZGUg
ZGlkTG9hZGluZ1Byb2dyZXNzQXN5bmMgdG8gY3JlYXRlIGEgbW9yZSBwcm9wZXIgYXN5bmMgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRpbmdQcm9ncmVzc0FzeW5jKE1l
ZGlhUGxheWVyOjpEaWRMb2FkaW5nUHJvZ3Jlc3NDb21wbGV0aW9uSGFuZGxlciYmIGNhbGxiYWNr
KSBjb25zdCB7IGNhbGxiYWNrKGRpZExvYWRpbmdQcm9ncmVzcygpKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5k
ZXggNGY1OGVkMWM1NDBlZWE4YWJjMjk3NmNjODE1Zjc4NmYyZDA2NjgwOS4uOGIyZDYwMGE1Mjdl
ZGMyODQxY2I1OGQ2YWQzZjY3N2Q1MjhlMjVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMjY4
LDcgKzI2OCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0UmF0ZShkb3VibGUg
cmF0ZSkKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpkaWRMb2FkaW5nUHJvZ3Jlc3Mo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX3BsYXllci0+ZGlkTG9hZGluZ1Byb2dyZXNzKCkpOworICAg
IG1fcGxheWVyLT5kaWRMb2FkaW5nUHJvZ3Jlc3MoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpyZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCA3MmU5NTQ2OWFkMTIwZGJhNzViMWFiOWRlOWRhYTc5NzVk
YjhkNTlmLi5iOGNmYmM0Y2YxODhlMDJhNThmYmRlOGViMWIxNTJkNzU0MjhiYWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTQsNyArNTQsNyBAQCBtZXNzYWdlcyAt
PiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIEFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKGJvb2wgY2FuQmVBY2NlbGVyYXRlZCkKICAgICBTZXRTaG91
bGREaXNhYmxlU2xlZXAoYm9vbCBkaXNhYmxlKQogICAgIFNldFJhdGUoZG91YmxlIHJhdGUpCi0g
ICAgRGlkTG9hZGluZ1Byb2dyZXNzKCkgLT4gKGJvb2wgZmxhZykgU3luY2hyb25vdXMKKyAgICBE
aWRMb2FkaW5nUHJvZ3Jlc3MoKSAtPiAoYm9vbCBmbGFnKSBBc3luYwogCiAjaWYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUlt
YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAzYTE5ZmE5MDc3NDkxYzdi
YjYwYWFlMWU0MGQ2MjRhZTliZWRhMGU3Li5jMzc1MjljOGUwMjdmZGQ0ZGE4OWIwZTQ0ODg3ZTdl
NDUwZDBmOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0yODUsOSArMjg1
LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShj
b25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IE1lCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAogewotICAgIGJvb2wgZmxhZyA9IGZh
bHNlOwotICAgIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6RGlkTG9hZGluZ1Byb2dyZXNzKCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpEaWRMb2FkaW5nUHJvZ3Jlc3M6OlJlcGx5KGZsYWcpLCBtX2lkKTsKLSAgICByZXR1
cm4gZmxhZzsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJTaG91bGQgYWx3
YXlzIGJlIHVzaW5nIGRpZExvYWRpbmdQcm9ncmVzc0FzeW5jIik7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZGlkTG9hZGluZ1Byb2dyZXNz
QXN5bmMoTWVkaWFQbGF5ZXI6OkRpZExvYWRpbmdQcm9ncmVzc0NvbXBsZXRpb25IYW5kbGVyJiYg
Y2FsbGJhY2spIGNvbnN0Cit7CisgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6RGlkTG9hZGluZ1Byb2dyZXNzKCksIFdU
Rk1vdmUoY2FsbGJhY2spLCBtX2lkKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Omhhc1ZpZGVvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDcxYmU0
ZTIzNDUwOTFmZGY2MzI2ZThkNTM0NDliYWIyOTE1NWEyODEuLjEzYzRmMWRmODMzNTY3ODczM2I3
OGViYzZiZTlhNmQzMDEwNGMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjgw
LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
cygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCBkaWRMb2FkaW5nUHJvZ3Jlc3NBc3luYyhXZWJDb3JlOjpNZWRpYVBsYXll
cjo6RGlkTG9hZGluZ1Byb2dyZXNzQ29tcGxldGlvbkhhbmRsZXImJikgY29uc3QgZmluYWw7CiAK
ICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmlu
YWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>