<?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>232728</bug_id>
          
          <creation_ts>2021-11-04 15:08:25 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 15): AudioContext.currentTime speeds up (and audio won&apos;t play) when Bluetooth speaker connected</short_desc>
          <delta_ts>2021-11-10 07:00:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>Safari 15</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Abbott">luke</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glefebvr</cc>
    
    <cc>glenn</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>thomas.gattenhof</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811977</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Abbott">luke</who>
    <bug_when>2021-11-04 15:08:25 -0700</bug_when>
    <thetext>When certain Bluetooth speakers are connected to certain Apple devices, AudioContext stops behaving properly. The most obvious thing is that my app&apos;s audio cuts out after a couple seconds, and will not return until the page is reloaded. Upon further inspection, I discovered that there is actually some *time dilation* going on inside the AudioContext – serious Einstein business!

Minimal reproduction steps, which can be executed on any webpage in Safari after connecting an affected speaker:

  ctx = new AudioContext();
  window.addEventListener(&apos;click&apos;, () =&gt; ctx.resume());
  setInterval(() =&gt; console.log(ctx.currentTime), 1000);

After tapping to start the AudioContext, the console should show the current time as increasing by one second every second. When it&apos;s acting up, I saw it increasing by 1.84 every second.

Many users have reported this issue to me, who are using various speakers, including expensive Sony and Bose speakers. At least one user has this issue on a Mac, although I have so far only reproduced it on my iPhone with my Tribit XSound Go. I ordered another affected speaker, the OontZ Angle 3 Ultra, and will be testing on that in a few days. The issue is intermittent; it was happening for a solid 30 reloads, and then it fixed itself just now, but I&apos;m sure it&apos;ll stop working again. Users have reported that it persists even after multiple device reboots.

This issue first appeared in Safari 15. It also affects Cordova apps in iOS 15.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812015</commentid>
    <comment_count>1</comment_count>
    <who name="Luke Abbott">luke</who>
    <bug_when>2021-11-04 16:57:51 -0700</bug_when>
    <thetext>Update: I just caught the issue happening on my iPhone (SE 2020) while it was NOT connected to a Bluetooth speaker. At first, I noticed around a second of latency between when the sound was supposed to be played and when I heard it (through the internal speaker). Later, it was a few seconds, at which point the sound cut out and would not come back until the page was reloaded, as before.

I quickly connected the Safari DevTools and ran the same console test, and determined that the AudioContext clock was advancing 1.09 seconds for every real second.

FYI, I also checked AudioContext.getOutputTimestamp().performanceTime, and that was advancing correctly (one second per second).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812090</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Lefebvre">glefebvr</who>
    <bug_when>2021-11-05 02:01:19 -0700</bug_when>
    <thetext>We just started seeing this behavior after releasing our Web Audio-based workaround for quiet WebRTC audio last week and not seeing it AT ALL through the beta process (and this was with intensive testing and focusing on Bluetooth behavior when backgrounding the app, etc to hand off best-effort audio playback by unmuting HTMLAudioElements whenever the AudioContext is not running).

So, while we generally fixed audio for folks who weren&apos;t using external devices previously, it seems like we broke it for most others. This issue extends back to earlier 15.0 releases suddenly, as if it were one of those &quot;silent&quot; updates all devices get to address fingerprinting or similar.

We have had some reports of the performance stabilizing if you pair the Bluetooth device after instantiating the AudioContext.

How does Apple &amp; the Safari/WebKit teams intend this to be used? It would be great to see a performant reference application that runs on actual hardware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812163</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-05 10:13:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/85075538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812766</commentid>
    <comment_count>4</comment_count>
    <who name="TomG">thomas.gattenhof</who>
    <bug_when>2021-11-08 12:44:42 -0800</bug_when>
    <thetext>We&apos;ve also discovered this behaviour on iOS15 devices.

Using this WebAudio example: https://mdn.github.io/webaudio-examples/audiocontext-states/ 

After creating the context, we&apos;ve had some of our devices have sound cut off at 6 seconds, some at 30 seconds. But the time display below is always faster than what it should be. Once it gets a few seconds ahead of what it should be (about 2), it cuts off. Suspending and renewing does nothing for the audio. The context needs to be killed and then recreated. But then it happens all over again.

One interesting thing to note. We only experience that behaviour remotely. If we run the same code for the test above in a local server, we have no problem. The context time ticks along at the correct speed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813213</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 10:34:56 -0800</bug_when>
    <thetext>(In reply to TomG from comment #4)
&gt; We&apos;ve also discovered this behaviour on iOS15 devices.
&gt; 
&gt; Using this WebAudio example:
&gt; https://mdn.github.io/webaudio-examples/audiocontext-states/ 
&gt; 
&gt; After creating the context, we&apos;ve had some of our devices have sound cut off
&gt; at 6 seconds, some at 30 seconds. But the time display below is always
&gt; faster than what it should be. Once it gets a few seconds ahead of what it
&gt; should be (about 2), it cuts off. Suspending and renewing does nothing for
&gt; the audio. The context needs to be killed and then recreated. But then it
&gt; happens all over again.
&gt; 
&gt; One interesting thing to note. We only experience that behaviour remotely.
&gt; If we run the same code for the test above in a local server, we have no
&gt; problem. The context time ticks along at the correct speed.

Ok, it looks like we are able to reproduce with https://mdn.github.io/webaudio-examples/audiocontext-states/ on macOS (without bluetooth), simply by changing the hardware sample rate (using Audio MIDI Setup app) while the demo is rendering.
After a little bit, the audio will stop rendering.

Seems related to our WebAudio stack not dealing properly with the hardware sample rate changing. We are investigating, thanks for the report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813320</commentid>
    <comment_count>6</comment_count>
      <attachid>443725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 14:05:07 -0800</bug_when>
    <thetext>Created attachment 443725
WIP Patch

Still under discussion whether this is the best approach but this does fix the issue for me locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813345</commentid>
    <comment_count>7</comment_count>
      <attachid>443733</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 14:50:41 -0800</bug_when>
    <thetext>Created attachment 443733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813351</commentid>
    <comment_count>8</comment_count>
      <attachid>443733</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-09 15:03:14 -0800</bug_when>
    <thetext>Comment on attachment 443733
Patch

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

&gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:112
&gt; +        if (m_ringBuffer-&gt;fetchIfHasEnoughData(ioData, numberOfFrames, m_startFrame, WebCore::CARingBuffer::Copy, &amp;remainingFramesInRingBuffer)) {

RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render is probably dealing with the same issue without having to tweak fetchIfHasEnoughData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813355</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 15:04:55 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; Comment on attachment 443733 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443733&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:112
&gt; &gt; +        if (m_ringBuffer-&gt;fetchIfHasEnoughData(ioData, numberOfFrames, m_startFrame, WebCore::CARingBuffer::Copy, &amp;remainingFramesInRingBuffer)) {
&gt; 
&gt; RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render is
&gt; probably dealing with the same issue without having to tweak
&gt; fetchIfHasEnoughData.

Could you clarify how? As far as I can tell RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render() may have the same bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813358</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 15:06:15 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to youenn fablet from comment #8)
&gt; &gt; Comment on attachment 443733 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=443733&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:112
&gt; &gt; &gt; +        if (m_ringBuffer-&gt;fetchIfHasEnoughData(ioData, numberOfFrames, m_startFrame, WebCore::CARingBuffer::Copy, &amp;remainingFramesInRingBuffer)) {
&gt; &gt; 
&gt; &gt; RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render is
&gt; &gt; probably dealing with the same issue without having to tweak
&gt; &gt; fetchIfHasEnoughData.
&gt; 
&gt; Could you clarify how? As far as I can tell
&gt; RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render() may
&gt; have the same bug?

Oh I see, it seems to rely on m_generateOffset. I can probably do the same if we prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813360</commentid>
    <comment_count>11</comment_count>
      <attachid>443733</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 15:10:42 -0800</bug_when>
    <thetext>Comment on attachment 443733
Patch

Clearing r? flag while I investigate Youenn&apos;s proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813364</commentid>
    <comment_count>12</comment_count>
      <attachid>443737</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-09 15:19:57 -0800</bug_when>
    <thetext>Created attachment 443737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813436</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-09 17:26:03 -0800</bug_when>
    <thetext>Committed r285550 (244064@main): &lt;https://commits.webkit.org/244064@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443737.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813592</commentid>
    <comment_count>14</comment_count>
    <who name="Luke Abbott">luke</who>
    <bug_when>2021-11-10 07:00:15 -0800</bug_when>
    <thetext>Wonderful news! My users and I thank you very much. 🙏</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443725</attachid>
            <date>2021-11-09 14:05:07 -0800</date>
            <delta_ts>2021-11-09 14:50:38 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>sample_rate_change_fix.patch</filename>
            <type>text/plain</type>
            <size>4616</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZm
ZXIuY3BwCmluZGV4IDFiMWQ0MWM0MzRlZS4uYjY1N2Y0NjRlOGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTM4
MSwxNSArMzgxLDIwIEBAIHZvaWQgQ0FSaW5nQnVmZmVyOjp1cGRhdGVGcmFtZUJvdW5kcygpCiAg
ICAgbV9idWZmZXJzLT51cGRhdGVGcmFtZUJvdW5kcygpOwogfQogCi1ib29sIENBUmluZ0J1ZmZl
cjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXplX3QgZnJh
bWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlIG1vZGUpCitib29sIENBUmlu
Z0J1ZmZlcjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEoQXVkaW9CdWZmZXJMaXN0KiBsaXN0LCBzaXpl
X3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlIG1vZGUsIHVpbnQ2
NF90KiByZW1haW5pbmdGcmFtZXMpCiB7CiAgICAgLy8gV2hlbiB0aGUgUmluZ0J1ZmZlciBpcyBi
YWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgZ2V0Q3VycmVudEZyYW1lQm91bmRzKCkgbWFrZXMgc3Vy
ZSB3ZSBwdWxsIGZyYW1lIGJvdW5kcyBmcm9tIHNoYXJlZCBtZW1vcnkgYmVmb3JlIGZldGNoaW5n
LgogICAgIHVpbnQ2NF90IHN0YXJ0LCBlbmQ7CiAgICAgZ2V0Q3VycmVudEZyYW1lQm91bmRzKHN0
YXJ0LCBlbmQpOwotICAgIGlmIChzdGFydEZyYW1lIDwgc3RhcnQgfHwgc3RhcnRGcmFtZSArIGZy
YW1lQ291bnQgPiBlbmQpCisgICAgaWYgKHN0YXJ0RnJhbWUgPCBzdGFydCB8fCBzdGFydEZyYW1l
ICsgZnJhbWVDb3VudCA+IGVuZCkgeworICAgICAgICBpZiAocmVtYWluaW5nRnJhbWVzKQorICAg
ICAgICAgICAgKnJlbWFpbmluZ0ZyYW1lcyA9IGVuZCAtIHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0
RnJhbWUsIHN0YXJ0KSwgZW5kKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAg
IGZldGNoSW50ZXJuYWwobGlzdCwgZnJhbWVDb3VudCwgc3RhcnRGcmFtZSwgbW9kZSk7CisgICAg
aWYgKHJlbWFpbmluZ0ZyYW1lcykKKyAgICAgICAgKnJlbWFpbmluZ0ZyYW1lcyA9IGVuZCAtIChz
dGFydEZyYW1lICsgZnJhbWVDb3VudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmgKaW5kZXgg
ZTE1N2MyMTI5MTcwLi4yYjE5MzAwM2VlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEVycm9yIHN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlz
dCosIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lKTsKIAogICAgIGVudW0g
RmV0Y2hNb2RlIHsgQ29weSwgTWl4IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElm
SGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0
X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZlckxpc3QqLCBzaXplX3QgZnJhbWVDb3Vu
dCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSwgdWludDY0X3QqIHJlbWFp
bmluZ0ZyYW1lcyA9IG51bGxwdHIpOwogCiAgICAgLy8gRmlsbHMgYnVmZmVyIHdpdGggc2lsZW5j
ZSBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
ZXRjaChBdWRpb0J1ZmZlckxpc3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRG
cmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApp
bmRleCBhMmFkZmNlZTFiOGEuLjBlNTY5ZTU5OGIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIuY3BwCkBAIC00Myw2ICs0Myw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGRlZmF1bHROdW1iZXJPZlF1YW50dW1zVG9Xcml0ZUFoZWFk
ID0gMjsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZRdWFudHVtc1RvV3Jp
dGVBaGVhZCA9IDEwOworCiBjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGZpbmFsCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVuZGVyZXIK
QEAgLTEwNywxMyArMTEwLDIyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CiAKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGcmFtZXNUb1JlcXVl
c3RGcm9tUmVtb3RlID0gbnVtYmVyT2ZGcmFtZXM7CiAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9
IC0xOwotICAgICAgICBpZiAobV9yaW5nQnVmZmVyLT5mZXRjaElmSGFzRW5vdWdoRGF0YShpb0Rh
dGEsIG51bWJlck9mRnJhbWVzLCBtX3N0YXJ0RnJhbWUpKSB7CisgICAgICAgIHVpbnQ2NF90IHJl
bWFpbmluZ0ZyYW1lc0luUmluZ0J1ZmZlciA9IDA7CisgICAgICAgIGlmIChtX3JpbmdCdWZmZXIt
PmZldGNoSWZIYXNFbm91Z2hEYXRhKGlvRGF0YSwgbnVtYmVyT2ZGcmFtZXMsIG1fc3RhcnRGcmFt
ZSwgV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpDb3B5LCAmcmVtYWluaW5nRnJhbWVzSW5SaW5nQnVm
ZmVyKSkgewogICAgICAgICAgICAgbV9zdGFydEZyYW1lICs9IG51bWJlck9mRnJhbWVzOwogICAg
ICAgICAgICAgc3RhdHVzID0gbm9FcnI7CisKKyAgICAgICAgICAgIGlmIChyZW1haW5pbmdGcmFt
ZXNJblJpbmdCdWZmZXIgPj0gbnVtYmVyT2ZGcmFtZXMgKiBtX251bWJlck9mUXVhbnR1bXNUb1dy
aXRlQWhlYWQpCisgICAgICAgICAgICAgICAgbnVtYmVyT2ZGcmFtZXNUb1JlcXVlc3RGcm9tUmVt
b3RlID0gMDsgLy8gRG8gbm90IGxldCB0aGUgd3JpdGVyIGdldCBtb3JlIHRoYW4gfG1fbnVtYmVy
T2ZRdWFudHVtc1RvV3JpdGVBaGVhZHwgcXVhbnR1bXMgYWhlYWQuCisgICAgICAgIH0gZWxzZSBp
ZiAobV9zdGFydEZyYW1lKSB7CisgICAgICAgICAgICAvLyBJdCBzZWVtcyB3ZSBoaXQgYSBjYXNl
IHdoZXJlIHRoZSBXZWJQcm9jZXNzIGlzIG5vdCBmaWxsaW5nIGluIHRoZSByaW5nIGJ1ZmZlciBm
YXN0IGVub3VnaCB0byBrZWVwIHVwIHdpdGggdGhlIHJlYWRlcgorICAgICAgICAgICAgLy8gc28g
d2UgYWxsb3cgdGhlIHdyaXRlciB0byB3cml0ZSBhaGVhZCBhbiBleHRyYSByZW5kZXJpbmcgcXVh
bnR1bS4KKyAgICAgICAgICAgIG1fbnVtYmVyT2ZRdWFudHVtc1RvV3JpdGVBaGVhZCA9IHN0ZDo6
bWluKG1fbnVtYmVyT2ZRdWFudHVtc1RvV3JpdGVBaGVhZCArIDEsIG1heE51bWJlck9mUXVhbnR1
bXNUb1dyaXRlQWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mRnJhbWVzOyBpICs9IFdlYkNvcmU6OkF1ZGlvVXRpbGl0aWVzOjpyZW5k
ZXJRdWFudHVtU2l6ZSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZGcmFtZXNUb1JlcXVlc3RGcm9tUmVtb3RlOyBpICs9IFdlYkNvcmU6OkF1ZGlvVXRpbGl0aWVz
OjpyZW5kZXJRdWFudHVtU2l6ZSkgewogICAgICAgICAgICAgLy8gQXNrIHRoZSBhdWRpbyB0aHJl
YWQgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB0byByZW5kZXIgYSBxdWFudHVtLgogICAgICAg
ICAgICAgbV9yZW5kZXJTZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0KQEAgLTEzMyw2ICsx
NDUsNyBAQCBwcml2YXRlOgogICAgIElQQzo6U2VtYXBob3JlIG1fcmVuZGVyU2VtYXBob3JlOwog
CiAgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV9udW1iZXJP
ZlF1YW50dW1zVG9Xcml0ZUFoZWFkIHsgZGVmYXVsdE51bWJlck9mUXVhbnR1bXNUb1dyaXRlQWhl
YWQgfTsKIH07CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443733</attachid>
            <date>2021-11-09 14:50:41 -0800</date>
            <delta_ts>2021-11-09 15:19:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232728-20211109145040.patch</filename>
            <type>text/plain</type>
            <size>7051</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA4MTllZGQ3NTUzZmVh
YjEwYWE1MzdkNDRkOTE0NGFlNmNjNWYyNC4uMTRiOTMwYzc4ZmYwYjY3YjIwYWMxYWRhMGIxZDM1
Nzk1MWYxZDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJp
IDE1KTogQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lIHNwZWVkcyB1cCAoYW5kIGF1ZGlvIHdvbid0
IHBsYXkpIHdoZW4gQmx1ZXRvb3RoIHNwZWFrZXIgY29ubmVjdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg1MDc1NTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBDQVJpbmdCdWZmZXI6OmZldGNoSWZIYXNFbm91Z2hEYXRhKCkgdG8g
cHJvdmlkZSB0byB0aGUgY2FsbGVyIHRoZSBudW1iZXIgb2YgZnJhbWVzIHJlbWFpbmluZworICAg
ICAgICBpbiB0aGUgcmluZyBidWZmZXIgYWZ0ZXIgdGhlIGZldGNoLgorCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcjo6ZmV0Y2hJZkhhc0Vub3VnaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oOgorCiAyMDIxLTExLTA5ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzE3MzUpOiBQYXltZW50
U2hpcHBpbmdPcHRpb24uc2VsZWN0ZWQgaWdub3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZGIxOTU2NWU0Mjhj
M2YyYjJhNGNhYTEzYzQ3ZDBlYzBhMzBiMDU2Li4yNDdhMWRjYWRkMDMxNmVkZjA4MzNiMDI5NjE2
MGNkMWRhMTg5ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTExLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJp
IDE1KTogQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lIHNwZWVkcyB1cCAoYW5kIGF1ZGlvIHdvbid0
IHBsYXkpIHdoZW4gQmx1ZXRvb3RoIHNwZWFrZXIgY29ubmVjdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg1MDc1NTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBmcm9tIHVzIG1vdmluZyBXZWJBdWRpbyB0
byB0aGUgR1BVUHJvY2VzcyBpbiBTYWZhcmkgMTUuIFRoZSBpc3N1ZSBvY2N1cnJlZCBiZWNhdXNl
IHRoZQorICAgICAgICBXZWJQcm9jZXNzICh3cml0ZXIpIHdvdWxkIGdldCBmdXJ0aGVyIGFuZCBm
dXJ0aGVyIGFoZWFkIG9mIHRoZSBHUFVQcm9jZXNzIChyZWFkZXIpIGFmdGVyIGEgaGFyZHdhcmUg
c2FtcGxlCisgICAgICAgIHJhdGUgY2hhbmdlLgorCisgICAgICAgIFdoZW4gcmVuZGVyaW5nIG9u
IGh0dHBzOi8vbWRuLmdpdGh1Yi5pby93ZWJhdWRpby1leGFtcGxlcy9hdWRpb2NvbnRleHQtc3Rh
dGVzLyB3aXRoIGEgaGFyZHdhcmUgc2FtcGxlIHJhdGUgb2YKKyAgICAgICAgOTZLaHosIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb246OnJlbmRlcigpIHdvdWxkIGdldCBjYWxsZWQgd2l0aCBhIG51bWJl
ck9mRnJhbWU9MTI4LiBFYWNoIHRpbWUKKyAgICAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6
cmVuZGVyKCkgd2FzIGNhbGxlZCwgaXQgd291bGQgc2lnbmFsIHRoZSBJUEMgc2VtYXBob3JlLCBj
YXVzaW5nIHRoZSBXZWJQcm9jZXNzIHRvCisgICAgICAgIHByb2R1Y2Ugb25lIFdlYkF1ZGlvIHJl
bmRlcmluZyBxdWFudHVtICgxMjggZnJhbWVzKS4gVGhpcyB3b3VsZCBtYXRjaCBwZXJmZWN0bHkg
YW5kIHRoZXJlIHdvdWxkIGJlIG5vIGlzc3Vlcy4KKyAgICAgICAgSG93ZXZlciwgaWYgZHVyaW5n
IHBsYXliYWNrLCB0aGUgaGFyZHdhcmUgc2FtcGxlIHJhdGUgY2hhbmdlcyAod2hpY2ggY2FuIGhh
cHBlbiB3aGVuIGNvbm5lY3RpbmcgdG8gYmx1ZXRvb3RoCisgICAgICAgIHNwZWFrZXJzKSwgQ29y
ZUF1ZGlvIHdvdWxkIHN0YXJ0IGNhbGxpbmcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVuZGVy
KCkgd2l0aCBhIGRpZmZlcmVudCBudW1iZXJPZkZyYW1lLgorICAgICAgICBGb3IgZXhhbXBsZSwg
d2hlbiBzd2l0Y2hpbmcgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlIHRvIDQ0LjFLaHosIG51bWJl
ck9mRnJhbWVzIHdvdWxkIGJlIDI3OC4gRXZlcnkgdGltZSBpdAorICAgICAgICBpcyBjYWxsZWQs
IHJlbmRlcigpIHdvdWxkIHNpZ25hbCB0aGUgc2VtYXBob3JlIDMgdGltZXMsIGNhdXNpbmcgdGhl
IFdlYlByb2Nlc3MgdG8gcHJvZHVjZSAzIFdlYkF1ZGlvIHJlbmRlcmluZworICAgICAgICBxdWFu
dHVtcyAoMyAqIDEyOCA9IDM4NCBmcmFtZXMpLiBTbyBlYWNoIHRpbWUgcmVuZGVyKCkgaXMgY2Fs
bGVkLCB0aGUgV2ViUHJvY2VzcyB3b3VsZCBnZW5lcmF0ZSBgMzg0IC0gMjc4ID0gMTA1YAorICAg
ICAgICBmcmFtZXMgdG9vIG1hbnksIGNhdXNpbmcgaXQgdG8gZ2V0IGZ1cnRoZXIgYW5kIGZ1cnRo
ZXIgYWhlYWQgb2YgdGhlIEdQVVByb2Nlc3MuIE9uZSBzeW1wdG9tIHdvdWxkIGJlIHRoYXQKKyAg
ICAgICAgQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lIHdvdWxkIHByb2dyZXNzIHRvbyBmYXN0LiBB
bHNvLCBldmVudHVhbGx5LCBvdXIgUmluZ0J1ZmZlciBiZXR3ZWVuIHRoZSAyIHByb2Nlc3Mgd291
bGQKKyAgICAgICAgZmlsbCB1cCBhbmQgbGVhZCB0byByZW5kZXJpbmcgaXNzdWVzLgorCisgICAg
ICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCBJIHVwZGF0ZWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6cmVuZGVyKCkgdG8gTk9UIHNpZ25hbCB0aGUgc2VtYXBob3JlIGlmIHRoZXJlIGFyZSBtb3Jl
CisgICAgICAgIHRoYW4gfG51bWJlck9mRnJhbWV8IGZyYW1lcyBsZWZ0IGluIHRoZSByaW5nIGJ1
ZmZlciBhZnRlciB0aGUgY3VycmVudCBmZXRjaC4gVGhpcyB3YXksIHRoZSBXZWJQcm9jZXNzIG5l
dmVyIGdldHMKKyAgICAgICAgbW9yZSB0aGFuIG9uZSBDQSByZW5kZXJpbmcgcXVhbnR1bSBhaGVh
ZCBvZiB0aGUgR1BVUHJvY2Vzcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorCiAyMDIxLTExLTA5ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzE3MzUpOiBQYXlt
ZW50U2hpcHBpbmdPcHRpb24uc2VsZWN0ZWQgaWdub3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMWIxZDQxYzQz
NGVlNmMwZWUwMGZiODgwZmY2NWIyMjAzNjEzZDJjOS4uYjY1N2Y0NjRlOGU3NzZkYTJiZDgwMTkz
ODU4Yzg0MTUzNmJmMDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQ0FSaW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCkBAIC0zODEsMTUgKzM4MSwyMCBAQCB2b2lkIENB
UmluZ0J1ZmZlcjo6dXBkYXRlRnJhbWVCb3VuZHMoKQogICAgIG1fYnVmZmVycy0+dXBkYXRlRnJh
bWVCb3VuZHMoKTsKIH0KIAotYm9vbCBDQVJpbmdCdWZmZXI6OmZldGNoSWZIYXNFbm91Z2hEYXRh
KEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW1lQ291bnQsIHVpbnQ2NF90IHN0YXJ0
RnJhbWUsIEZldGNoTW9kZSBtb2RlKQorYm9vbCBDQVJpbmdCdWZmZXI6OmZldGNoSWZIYXNFbm91
Z2hEYXRhKEF1ZGlvQnVmZmVyTGlzdCogbGlzdCwgc2l6ZV90IGZyYW1lQ291bnQsIHVpbnQ2NF90
IHN0YXJ0RnJhbWUsIEZldGNoTW9kZSBtb2RlLCB1aW50NjRfdCogcmVtYWluaW5nRnJhbWVzKQog
ewogICAgIC8vIFdoZW4gdGhlIFJpbmdCdWZmZXIgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnks
IGdldEN1cnJlbnRGcmFtZUJvdW5kcygpIG1ha2VzIHN1cmUgd2UgcHVsbCBmcmFtZSBib3VuZHMg
ZnJvbSBzaGFyZWQgbWVtb3J5IGJlZm9yZSBmZXRjaGluZy4KICAgICB1aW50NjRfdCBzdGFydCwg
ZW5kOwogICAgIGdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydCwgZW5kKTsKLSAgICBpZiAoc3Rh
cnRGcmFtZSA8IHN0YXJ0IHx8IHN0YXJ0RnJhbWUgKyBmcmFtZUNvdW50ID4gZW5kKQorICAgIGlm
IChzdGFydEZyYW1lIDwgc3RhcnQgfHwgc3RhcnRGcmFtZSArIGZyYW1lQ291bnQgPiBlbmQpIHsK
KyAgICAgICAgaWYgKHJlbWFpbmluZ0ZyYW1lcykKKyAgICAgICAgICAgICpyZW1haW5pbmdGcmFt
ZXMgPSBlbmQgLSBzdGQ6Om1pbihzdGQ6Om1heChzdGFydEZyYW1lLCBzdGFydCksIGVuZCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBmZXRjaEludGVybmFsKGxpc3QsIGZy
YW1lQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpOworICAgIGlmIChyZW1haW5pbmdGcmFtZXMpCisg
ICAgICAgICpyZW1haW5pbmdGcmFtZXMgPSBlbmQgLSAoc3RhcnRGcmFtZSArIGZyYW1lQ291bnQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZlci5oCmluZGV4IGUxNTdjMjEyOTE3MGU3ZWI1ZmUyYjcz
YjkwNzllYmZkNTQwMGU3YWMuLjJiMTkzMDAzZWVhMWRiZmMzYjhmNzNjZmRmMGY5MjZmMjkzNzhk
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmlu
Z0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmlu
Z0J1ZmZlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IEVycm9yIHN0b3JlKGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCosIHNpemVfdCBmcmFtZUNvdW50LCB1
aW50NjRfdCBzdGFydEZyYW1lKTsKIAogICAgIGVudW0gRmV0Y2hNb2RlIHsgQ29weSwgTWl4IH07
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElmSGFzRW5vdWdoRGF0YShBdWRpb0J1ZmZl
ckxpc3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2Rl
ID0gQ29weSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmZXRjaElmSGFzRW5vdWdoRGF0YShB
dWRpb0J1ZmZlckxpc3QqLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwg
RmV0Y2hNb2RlID0gQ29weSwgdWludDY0X3QqIHJlbWFpbmluZ0ZyYW1lcyA9IG51bGxwdHIpOwog
CiAgICAgLy8gRmlsbHMgYnVmZmVyIHdpdGggc2lsZW5jZSBpZiB0aGVyZSBpcyBub3QgZW5vdWdo
IGRhdGEuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmZXRjaChBdWRpb0J1ZmZlckxpc3QqLCBz
aXplX3QgZnJhbWVDb3VudCwgdWludDY0X3Qgc3RhcnRGcmFtZSwgRmV0Y2hNb2RlID0gQ29weSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCBhMmFkZmNlZTFiOGFkMmJmODYz
NzM1ZjJkYzFkODkxYmQyNTYxYjMwLi4zZTM2ZGYwODdkYjMzN2RjMzhlMGFmNTMxNzlkNzQ0NTg5
ZGM0YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTEwOCw5ICsxMDgs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogCiAgICAg
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IC0xOwotICAgICAgICBpZiAobV9yaW5nQnVmZmVyLT5mZXRj
aElmSGFzRW5vdWdoRGF0YShpb0RhdGEsIG51bWJlck9mRnJhbWVzLCBtX3N0YXJ0RnJhbWUpKSB7
CisgICAgICAgIHVpbnQ2NF90IHJlbWFpbmluZ0ZyYW1lc0luUmluZ0J1ZmZlciA9IDA7CisgICAg
ICAgIGlmIChtX3JpbmdCdWZmZXItPmZldGNoSWZIYXNFbm91Z2hEYXRhKGlvRGF0YSwgbnVtYmVy
T2ZGcmFtZXMsIG1fc3RhcnRGcmFtZSwgV2ViQ29yZTo6Q0FSaW5nQnVmZmVyOjpDb3B5LCAmcmVt
YWluaW5nRnJhbWVzSW5SaW5nQnVmZmVyKSkgewogICAgICAgICAgICAgbV9zdGFydEZyYW1lICs9
IG51bWJlck9mRnJhbWVzOwogICAgICAgICAgICAgc3RhdHVzID0gbm9FcnI7CisKKyAgICAgICAg
ICAgIGlmIChyZW1haW5pbmdGcmFtZXNJblJpbmdCdWZmZXIgPiBudW1iZXJPZkZyYW1lcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOyAvLyBEbyBub3QgbGV0IHRoZSB3cml0ZXIgZ2V0
IG1vcmUgdGhhbiBvbmUgcmVuZGVyaW5nIHF1YW50dW0gYWhlYWQuCiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZGcmFtZXM7IGkgKz0gV2ViQ29y
ZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443737</attachid>
            <date>2021-11-09 15:19:57 -0800</date>
            <delta_ts>2021-11-09 17:26:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232728-20211109151956.patch</filename>
            <type>text/plain</type>
            <size>3972</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkYjE5NTY1ZTQyOGMzZjJi
MmE0Y2FhMTNjNDdkMGVjMGEzMGIwNTYuLjU2Y2Y5MjZhZWEzMjNkOGY3ZDIxODczODIyZGRhMjQ1
MTVkYzQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMTEtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZhcmkgMTUp
OiBBdWRpb0NvbnRleHQuY3VycmVudFRpbWUgc3BlZWRzIHVwIChhbmQgYXVkaW8gd29uJ3QgcGxh
eSkgd2hlbiBCbHVldG9vdGggc3BlYWtlciBjb25uZWN0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODUwNzU1Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGZyb20gdXMgbW92aW5nIFdlYkF1ZGlvIHRvIHRo
ZSBHUFVQcm9jZXNzIGluIFNhZmFyaSAxNS4gVGhlIGlzc3VlIG9jY3VycmVkIGJlY2F1c2UgdGhl
CisgICAgICAgIFdlYlByb2Nlc3MgKHdyaXRlcikgd291bGQgZ2V0IGZ1cnRoZXIgYW5kIGZ1cnRo
ZXIgYWhlYWQgb2YgdGhlIEdQVVByb2Nlc3MgKHJlYWRlcikgYWZ0ZXIgYSBoYXJkd2FyZSBzYW1w
bGUKKyAgICAgICAgcmF0ZSBjaGFuZ2UuCisKKyAgICAgICAgV2hlbiByZW5kZXJpbmcgb24gaHR0
cHM6Ly9tZG4uZ2l0aHViLmlvL3dlYmF1ZGlvLWV4YW1wbGVzL2F1ZGlvY29udGV4dC1zdGF0ZXMv
IHdpdGggYSBoYXJkd2FyZSBzYW1wbGUgcmF0ZSBvZgorICAgICAgICA5NktoeiwgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbjo6cmVuZGVyKCkgd291bGQgZ2V0IGNhbGxlZCB3aXRoIGEgbnVtYmVyT2ZG
cmFtZT0xMjguIEVhY2ggdGltZQorICAgICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpyZW5k
ZXIoKSB3YXMgY2FsbGVkLCBpdCB3b3VsZCBzaWduYWwgdGhlIElQQyBzZW1hcGhvcmUsIGNhdXNp
bmcgdGhlIFdlYlByb2Nlc3MgdG8KKyAgICAgICAgcHJvZHVjZSBvbmUgV2ViQXVkaW8gcmVuZGVy
aW5nIHF1YW50dW0gKDEyOCBmcmFtZXMpLiBUaGlzIHdvdWxkIG1hdGNoIHBlcmZlY3RseSBhbmQg
dGhlcmUgd291bGQgYmUgbm8gaXNzdWVzLgorICAgICAgICBIb3dldmVyLCBpZiBkdXJpbmcgcGxh
eWJhY2ssIHRoZSBoYXJkd2FyZSBzYW1wbGUgcmF0ZSBjaGFuZ2VzICh3aGljaCBjYW4gaGFwcGVu
IHdoZW4gY29ubmVjdGluZyB0byBibHVldG9vdGgKKyAgICAgICAgc3BlYWtlcnMpLCBDb3JlQXVk
aW8gd291bGQgc3RhcnQgY2FsbGluZyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpyZW5kZXIoKSB3
aXRoIGEgZGlmZmVyZW50IG51bWJlck9mRnJhbWUuCisgICAgICAgIEZvciBleGFtcGxlLCB3aGVu
IHN3aXRjaGluZyB0aGUgaGFyZHdhcmUgc2FtcGxlIHJhdGUgdG8gNDQuMUtoeiwgbnVtYmVyT2ZG
cmFtZXMgd291bGQgYmUgMjc4LiBFdmVyeSB0aW1lIGl0CisgICAgICAgIGlzIGNhbGxlZCwgcmVu
ZGVyKCkgd291bGQgc2lnbmFsIHRoZSBzZW1hcGhvcmUgMyB0aW1lcywgY2F1c2luZyB0aGUgV2Vi
UHJvY2VzcyB0byBwcm9kdWNlIDMgV2ViQXVkaW8gcmVuZGVyaW5nCisgICAgICAgIHF1YW50dW1z
ICgzICogMTI4ID0gMzg0IGZyYW1lcykuIFNvIGVhY2ggdGltZSByZW5kZXIoKSBpcyBjYWxsZWQs
IHRoZSBXZWJQcm9jZXNzIHdvdWxkIGdlbmVyYXRlIGAzODQgLSAyNzggPSAxMDVgCisgICAgICAg
IGZyYW1lcyB0b28gbWFueSwgY2F1c2luZyBpdCB0byBnZXQgZnVydGhlciBhbmQgZnVydGhlciBh
aGVhZCBvZiB0aGUgR1BVUHJvY2Vzcy4gT25lIHN5bXB0b20gd291bGQgYmUgdGhhdAorICAgICAg
ICBBdWRpb0NvbnRleHQuY3VycmVudFRpbWUgd291bGQgcHJvZ3Jlc3MgdG9vIGZhc3QuIEFsc28s
IGV2ZW50dWFsbHksIG91ciBSaW5nQnVmZmVyIGJldHdlZW4gdGhlIDIgcHJvY2VzcyB3b3VsZAor
ICAgICAgICBmaWxsIHVwIGFuZCBsZWFkIHRvIHJlbmRlcmluZyBpc3N1ZXMuCisKKyAgICAgICAg
VG8gYWRkcmVzcyB0aGUgaXNzdWUsIEkgdXBkYXRlZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpy
ZW5kZXIoKSB0byBrZWVwIHRyYWNrIG9mIGhvdyBtYW55IGV4dHJhIHNhbXBsZXMgaXQKKyAgICAg
ICAgcmVxdWVzdGVkIGZyb20gdGhlIFdlYlByb2Nlc3MgcHJldmlvdXNseS4gVGhpcyBhdm9pZHMg
c2lnbmFsbGluZyB0aGUgSVBDIHNlbWFwaG9yZSB0b28gbWFueSB0aW1lcyBhbmQgdGhlCisgICAg
ICAgIFdlYlByb2Nlc3MgY2FuIG5vIGxvbmdlciBnZXQgdG9vIGZhciBhaGVhZCBvZiB0aGUgR1BV
UHJvY2Vzcy4gVGhlIGxvZ2ljIG1hdGNoZXMgd2hhdCB3YXMgYWxyZWFkeSBkb25lIGluCisgICAg
ICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0TWFuYWdl
cjo6VW5pdDo6cmVuZGVyKCkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDoKKwogMjAyMS0xMS0wOSAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcxNzM1KTogUGF5bWVu
dFNoaXBwaW5nT3B0aW9uLnNlbGVjdGVkIGlnbm9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IGEyYWRmY2VlMWI4YWQyYmY4NjM3MzVmMmRjMWQ4OTFiZDI1NjFiMzAuLmE5
ZjhlMDc3M2U4NzA2YmQxZmYyMDZkYTk4MjVhYTVhZmFmMDY2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmNwcApAQCAtMTEzLDEwICsxMTMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHN0YXR1cyA9IG5vRXJyOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mRnJhbWVzOyBpICs9IFdlYkNvcmU6OkF1ZGlvVXRpbGl0aWVzOjpy
ZW5kZXJRdWFudHVtU2l6ZSkgeworICAgICAgICB1bnNpZ25lZCByZXF1ZXN0ZWRTYW1wbGVzQ291
bnQgPSBtX2V4dHJhUmVxdWVzdGVkRnJhbWVzOworICAgICAgICBmb3IgKDsgcmVxdWVzdGVkU2Ft
cGxlc0NvdW50IDwgbnVtYmVyT2ZGcmFtZXM7IHJlcXVlc3RlZFNhbXBsZXNDb3VudCArPSBXZWJD
b3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUpIHsKICAgICAgICAgICAgIC8v
IEFzayB0aGUgYXVkaW8gdGhyZWFkIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdG8gcmVuZGVy
IGEgcXVhbnR1bS4KICAgICAgICAgICAgIG1fcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwogICAg
ICAgICB9CisgICAgICAgIG1fZXh0cmFSZXF1ZXN0ZWRGcmFtZXMgPSByZXF1ZXN0ZWRTYW1wbGVz
Q291bnQgLSBudW1iZXJPZkZyYW1lczsKIAogICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0K
QEAgLTEyOSw2ICsxMzEsNyBAQCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwogICAgIHVpbnQ2NF90IG1fc3RhcnRGcmFtZSB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX2V4dHJhUmVxdWVzdGVkRnJhbWVzIHsgMCB9OwogI2VuZGlmCiAg
ICAgSVBDOjpTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhvcmU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>