<?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>218825</bug_id>
          
          <creation_ts>2020-11-11 15:40:27 -0800</creation_ts>
          <short_desc>[GPUProcess] Add basic GPUProcess crash handling for media playback</short_desc>
          <delta_ts>2020-11-12 14:12:23 -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>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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</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>1706644</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-11 15:40:27 -0800</bug_when>
    <thetext>Add basic GPUProcess crash handling for media playback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706647</commentid>
    <comment_count>1</comment_count>
      <attachid>413877</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-11 15:43:30 -0800</bug_when>
    <thetext>Created attachment 413877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706654</commentid>
    <comment_count>2</comment_count>
      <attachid>413880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-11 16:08:48 -0800</bug_when>
    <thetext>Created attachment 413880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706855</commentid>
    <comment_count>3</comment_count>
      <attachid>413880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 08:33:43 -0800</bug_when>
    <thetext>Comment on attachment 413880
Patch

Will investigate why API test is failing on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706863</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 08:51:18 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 413880 [details]
&gt; Patch
&gt; 
&gt; Will investigate why API test is failing on iOS.

It is caused by a flaky GPUProcess crash:

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000008
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [52931]

VM Regions Near 0x8:
--&gt; 
    __TEXT                      105e71000-105e72000    [    4K] r-x/r-x SM=COW  /Volumes/*/*.Development

Application Specific Information:
CoreSimulator 732.18 - Device: iPhone 8 (BF967462-6631-4C74-AFFE-1305D10AD782) - Runtime: iOS 14.2 (18B86) - DeviceType: iPhone 8

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x0000000106c71d70 WTF::RetainPtr&lt;CAContext&gt;::operator CAContext*() const + 16 (RetainPtr.h:104)
1   com.apple.WebKit              	0x0000000106c71e31 WebKit::LayerHostingContext::setFencePort(unsigned int) + 33 (LayerHostingContext.mm:153)
2   com.apple.WebKit              	0x0000000106bd2d09 WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;) + 73 (RemoteMediaPlayerProxyCocoa.mm:65)
3   com.apple.WebKit              	0x0000000106b32829 void IPC::callMemberFunctionImpl&lt;WebKit::RemoteMediaPlayerProxy, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;), std::__1::tuple&lt;WebCore::IntSize, WTF::MachSendRight&gt;, 0ul, 1ul&gt;(WebKit::RemoteMediaPlayerProxy*, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;), std::__1::tuple&lt;WebCore::IntSize, WTF::MachSendRight&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) + 185 (HandleMessage.h:41)
4   com.apple.WebKit              	0x0000000106b31bc0 void IPC::callMemberFunction&lt;WebKit::RemoteMediaPlayerProxy, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;), std::__1::tuple&lt;WebCore::IntSize, WTF::MachSendRight&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(std::__1::tuple&lt;WebCore::IntSize, WTF::MachSendRight&gt;&amp;&amp;, WebKit::RemoteMediaPlayerProxy*, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;)) + 112 (HandleMessage.h:47)
5   com.apple.WebKit              	0x0000000106b2157d void IPC::handleMessage&lt;Messages::RemoteMediaPlayerProxy::SetVideoInlineSizeFenced, WebKit::RemoteMediaPlayerProxy, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;)&gt;(IPC::Decoder&amp;, WebKit::RemoteMediaPlayerProxy*, void (WebKit::RemoteMediaPlayerProxy::*)(WebCore::IntSize const&amp;, WTF::MachSendRight const&amp;)) + 157 (HandleMessage.h:120)
6   com.apple.WebKit              	0x0000000106b1f883 WebKit::RemoteMediaPlayerProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 2675 (RemoteMediaPlayerProxyMessageReceiver.cpp:290)
7   com.apple.WebKit              	0x0000000106d1b954 WebKit::RemoteMediaPlayerManagerProxy::didReceivePlayerMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 100 (RemoteMediaPlayerManagerProxy.cpp:172)
8   com.apple.WebKit              	0x0000000106c82ddd WebKit::GPUConnectionToWebProcess::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 205 (GPUConnectionToWebProcess.cpp:352)
9   com.apple.WebKit              	0x0000000106b91489 WebKit::GPUConnectionToWebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 505 (GPUConnectionToWebProcessMessageReceiver.cpp:92)
10  com.apple.WebKit              	0x0000000106538c2a IPC::Connection::dispatchMessage(IPC::Decoder&amp;) + 634 (Connection.cpp:1048)
11  com.apple.WebKit              	0x0000000106539d70 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 528 (Connection.cpp:1148)
12  com.apple.WebKit              	0x000000010653a3d0 IPC::Connection::dispatchOneIncomingMessage() + 208 (Connection.cpp:1217)
13  com.apple.WebKit              	0x000000010655a2b8 IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_8::operator()() + 88 (Connection.cpp:1011)
14  com.apple.WebKit              	0x000000010655a1ce WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_8, void&gt;::call() + 30 (Function.h:52)
15  com.apple.JavaScriptCore      	0x000000011d1df602 WTF::Function&lt;void ()&gt;::operator()() const + 130 (Function.h:83)
16  com.apple.JavaScriptCore      	0x000000011d2541c5 WTF::RunLoop::performWork() + 341 (RunLoop.cpp:123)
17  com.apple.JavaScriptCore      	0x000000011d2579b1 WTF::RunLoop::performWork(void*) + 33 (RunLoopCF.cpp:46)
18  com.apple.CoreFoundation      	0x0000000113a8c37a __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
19  com.apple.CoreFoundation      	0x0000000113a8c272 __CFRunLoopDoSource0 + 180
20  com.apple.CoreFoundation      	0x0000000113a8b754 __CFRunLoopDoSources0 + 248
21  com.apple.CoreFoundation      	0x0000000113a85f1f __CFRunLoopRun + 878
22  com.apple.CoreFoundation      	0x0000000113a856c6 CFRunLoopRunSpecific + 567
23  com.apple.Foundation          	0x00000001060397b9 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 209
24  com.apple.Foundation          	0x00000001060399cd -[NSRunLoop(NSRunLoop) run] + 76
25  libxpc.dylib                  	0x0000000115395176 _xpc_objc_main + 591
26  libxpc.dylib                  	0x0000000115397115 xpc_main + 143
27  com.apple.WebKit              	0x0000000106f3edd2 WebKit::XPCServiceMain(int, char const**) + 434 (XPCServiceMain.mm:208)
28  com.apple.WebKit              	0x000000010838842b WKXPCServiceMain + 27 (WKMain.mm:33)
29  com.apple.WebKit.GPU          	0x0000000105e71d42 main + 34 (AuxiliaryProcessMain.cpp:30)
30  libdyld.dylib                 	0x0000000115046409 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706873</commentid>
    <comment_count>5</comment_count>
      <attachid>413941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 09:11:41 -0800</bug_when>
    <thetext>Created attachment 413941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706911</commentid>
    <comment_count>6</comment_count>
      <attachid>413941</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-12 10:08:43 -0800</bug_when>
    <thetext>Comment on attachment 413941
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        as if a network happened and we pause the player. We may be able to do

s/network/network error/

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:293
&gt; +            player-&gt;gpuProcessCrashed();

Nit. Probably &quot;restart()&quot; or something similar could be a better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706913</commentid>
    <comment_count>7</comment_count>
      <attachid>413941</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-12 10:12:51 -0800</bug_when>
    <thetext>Comment on attachment 413941
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:293
&gt;&gt; +            player-&gt;gpuProcessCrashed();
&gt; 
&gt; Nit. Probably &quot;restart()&quot; or something similar could be a better name?

I think the current name is good, better to be explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706951</commentid>
    <comment_count>8</comment_count>
      <attachid>413958</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 11:40:56 -0800</bug_when>
    <thetext>Created attachment 413958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706964</commentid>
    <comment_count>9</comment_count>
      <attachid>413958</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-11-12 12:04:35 -0800</bug_when>
    <thetext>Comment on attachment 413958
Patch

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

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:282
&gt; +    for (auto&amp; pair : std::exchange(m_players, { }))

Looks a little strange here. So the players will be destroyed and new ones will be created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706969</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 12:12:31 -0800</bug_when>
    <thetext>(In reply to Peng Liu from comment #9)
&gt; Comment on attachment 413958 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413958&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:282
&gt; &gt; +    for (auto&amp; pair : std::exchange(m_players, { }))
&gt; 
&gt; Looks a little strange here. So the players will be destroyed and new ones
&gt; will be created?

Yes, MediaPlayer::loadWithNextMediaEngine() gets called from MediaPlayer::reloadAndResumePlaybackIfNeeded(). MediaPlayer::loadWithNextMediaEngine() reconstructs m_private here:
    } else if (m_currentMediaEngine != engine) {
        m_currentMediaEngine = engine;
        m_private = engine-&gt;createMediaEnginePlayer(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706982</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 12:51:34 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to Peng Liu from comment #9)
&gt; &gt; Comment on attachment 413958 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=413958&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:282
&gt; &gt; &gt; +    for (auto&amp; pair : std::exchange(m_players, { }))
&gt; &gt; 
&gt; &gt; Looks a little strange here. So the players will be destroyed and new ones
&gt; &gt; will be created?
&gt; 
&gt; Yes, MediaPlayer::loadWithNextMediaEngine() gets called from
&gt; MediaPlayer::reloadAndResumePlaybackIfNeeded().
&gt; MediaPlayer::loadWithNextMediaEngine() reconstructs m_private here:
&gt;     } else if (m_currentMediaEngine != engine) {
&gt;         m_currentMediaEngine = engine;
&gt;         m_private = engine-&gt;createMediaEnginePlayer(this);

I don&apos;t have to std::exchange() here. If you want I can copy the HashMap instead. The fact is that calling reloadAndResumePlaybackIfNeeded() which destroy the MediaPlayerPrivateRemote objects, which will cause them to get removed from m_players.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706986</commentid>
    <comment_count>12</comment_count>
      <attachid>413969</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 12:58:43 -0800</bug_when>
    <thetext>Created attachment 413969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706988</commentid>
    <comment_count>13</comment_count>
      <attachid>413969</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-11-12 13:02:52 -0800</bug_when>
    <thetext>Comment on attachment 413969
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:735
&gt; +void MediaPlayer::seekWhenPossible(const MediaTime&amp; time)

Maybe I could merge this logic into seek() instead of adding this new function. I went the conservative way with this new function but I can try tweaking seek() instead if media people think it would be better.

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:287
&gt; +            ASSERT_WITH_MESSAGE(!player, &quot;reloadAndResumePlaybackIfNeeded should destroy this player and construct a new one&quot;);

I went with a HashMap copy and an ASSERT() based on Peng&apos;s comment. Hopefully it is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707000</commentid>
    <comment_count>14</comment_count>
      <attachid>413969</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-12 13:43:21 -0800</bug_when>
    <thetext>Comment on attachment 413969
Patch

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

Thanks Chris!

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:735
&gt;&gt; +void MediaPlayer::seekWhenPossible(const MediaTime&amp; time)
&gt; 
&gt; Maybe I could merge this logic into seek() instead of adding this new function. I went the conservative way with this new function but I can try tweaking seek() instead if media people think it would be better.

I think having this a a separate function is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707009</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-12 14:11:11 -0800</bug_when>
    <thetext>Committed r269750: &lt;https://trac.webkit.org/changeset/269750&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413969.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707010</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 14:12:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/71343235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413877</attachid>
            <date>2020-11-11 15:43:30 -0800</date>
            <delta_ts>2020-11-11 16:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218825-20201111154330.patch</filename>
            <type>text/plain</type>
            <size>8723</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDNjODJiMWJiZDgwNWU1
ZjEyN2M0ZDBjNWJmZTViYjc3MzMxNWMuLjZmOGNhYjMwMzBmNzI5NTQyOGZkYzZlMTYyYTJjYTgz
Njg5NTg0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTEtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQWRkIGJhc2lj
IEdQVVByb2Nlc3MgY3Jhc2ggaGFuZGxpbmcgZm9yIG1lZGlhIHBsYXliYWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBHUFVQcm9jZXNz
IGNyYXNoZXMgYW5kIHRoZXJlIGFyZSBhY3RpdmUgbWVkaWEgcGxheWVycywgd2Ugbm93IGFjdAor
ICAgICAgICBhcyBpZiBhIG5ldHdvcmsgaGFwcGVuZWQgYW5kIHdlIHBhdXNlIHRoZSBwbGF5ZXIu
IFdlIG1heSBiZSBhYmxlIHRvIGRvCisgICAgICAgIGJldHRlciB0aGFuIHRoaXMgaW4gYSBmb2xs
b3ctdXAgc28gdGhhdCB0aGUgcGxheWVyIGNhbiBwaWNrIHVwIHdoZXJlIGl0CisgICAgICAgIGxl
ZnQgb2ZmLiBCdXQgYXQgbGVhc3QsIHRoZSB1c2VyIGNhbiBwcmVzcyB0aGUgcGxheSBidXR0b24g
YWdhaW4gdG8KKyAgICAgICAgc3RhcnQgcGxheWluZyBhZ2Fpbi4KKworICAgICAgICBCZWZvcmUg
dGhpcyBwYXRjaCwgd2Ugd291bGQgZW5kIHVwIGJ1c3kgbG9vcGluZyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcworICAgICAgICB3b3VsZCB1c2UgMTAwJSBDUFUgYWZ0ZXIgYSBHUFUgcHJvY2Vz
cyBjcmFzaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphZGRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmdwdVByb2Nlc3ND
cmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcm94eUNvbmZpZ3VyYXRpb25Gb3JQ
bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0
ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6
CisKIDIwMjAtMTEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBEZWZpbmUgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDYzZDRlYmUyMDBhYjFmMzY1YTgzZWZlM2UxM2ZmNjU0ZDU3YjhiZjkuLjJjMGRmNWI5
ZjU0OTY4NDdlZDY2OTEwYmYyZjM5YjJjZGM2MGNhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTkzLDggKzkzLDgg
QEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgeyB9CiAgICAgfTsKLSAgICB2b2lkIGFkZENs
aWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKGNsaWVudCk7IH0KLSAgICB2b2lk
IHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7
IH0KKyAgICB2b2lkIGFkZENsaWVudChjb25zdCBDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMu
YWRkKGNsaWVudCk7IH0KKyAgICB2b2lkIHJlbW92ZUNsaWVudChjb25zdCBDbGllbnQmIGNsaWVu
dCkgeyBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7IH0KIAogcHJpdmF0ZToKICAgICBHUFVQcm9j
ZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IDc5YTIxMTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4
NjQ5YjUuLjhiYzMzODZhZGU4Nzc2ZTU2M2I0OGRhYWJlYTdiZmZjNDIwOGU2NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTYzNiw2ICs2MzYsMTQgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRl
Q2xpZW50KikKIH0KICNlbmRpZgogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Z3B1
UHJvY2Vzc0NyYXNoZWQoKQoreworICAgIC8vIEZJWE1FOiBJZGVhbGx5LCB3ZSB3b3VsZCBiZSBh
YmxlIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgYW5kIHNlYW1sZXNzbHkga2VlcCBwbGF5
aW5nIHRoZSBtZWRpYS4KKyAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcjsKKyAgICBtX3BsYXllci0+bmV0d29ya1N0
YXRlQ2hhbmdlZCgpOworICAgIHBsYXliYWNrU3RhdGVDaGFuZ2VkKHRydWUpOworfQorCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2Fk
KE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCAw
ZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhLi44Y2JjZjMyZmUyYzc2NWE0
ZDI0MzU3MWMxNzRkN2JjNmEwY2E1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAg
LTg2LDYgKzg2LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYW5hZ2VyLmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIq
IHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CisKKyAgICB2b2lkIGdwdVByb2Nl
c3NDcmFzaGVkKCk7CiAKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlhUGxh
eWVyU3RhdGUmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggMWQ2Y2RkZWI3
MzY1OTM3ZWMwZTM3YzA3NDRiM2Y0ZjgwYTg5NjkxNC4uNzYwYzU1YzBiZmE4MmFlMzk0ZWNiMzJh
MzczM2ViNWFlNDRiZDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTM2
LDcgKzEzNiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjppbml0aWFsaXplKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhCiAjZW5kaWYKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihNZWRpYVBsYXllciogcGxheWVyLCBNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmll
cikKK3N0YXRpYyBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiBwcm94eUNvbmZp
Z3VyYXRpb25Gb3JQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKIHsKICAgICBSZW1vdGVNZWRp
YVBsYXllclByb3h5Q29uZmlndXJhdGlvbiBwcm94eUNvbmZpZ3VyYXRpb247CiAgICAgcHJveHlD
b25maWd1cmF0aW9uLnJlZmVycmVyID0gcGxheWVyLT5yZWZlcnJlcigpOwpAQCAtMTYxLDkgKzE2
MSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIGF1dG8gZG9jdW1lbnRTZWN1cml0
eU9yaWdpbiA9IHBsYXllci0+ZG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwogICAgIHByb3h5Q29u
ZmlndXJhdGlvbi5kb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnRTZWN1cml0eU9yaWdp
bjsKIAorICAgIHJldHVybiBwcm94eUNvbmZpZ3VyYXRpb247Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBwcm94eUNvbmZpZ3VyYXRpb24gPSBwcm94eUNvbmZpZ3VyYXRpb25Gb3JQbGF5ZXIo
cGxheWVyKTsKKwogICAgIGF1dG8gaWRlbnRpZmllciA9IE1lZGlhUGxheWVySWRlbnRpZmllcjo6
Z2VuZXJhdGUoKTsKICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29u
ZmlndXJhdGlvbjsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIsIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4g
PSBXVEZNb3ZlKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4pXShhdXRvJiYgcGxheWVyQ29uZmlndXJh
dGlvbikgbXV0YWJsZSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBpZGVudGlmaWVyLCBkb2N1bWVudFNlY3VyaXR5T3Jp
Z2luID0gcGxheWVyLT5kb2N1bWVudFNlY3VyaXR5T3JpZ2luKCldKGF1dG8mJiBwbGF5ZXJDb25m
aWd1cmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMjc4LDEyICsyODUsMjkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogCiBHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgewogICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
ID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7
CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCit2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9ncHVQcm9jZXNzQ29u
bmVjdGlvbiA9PSAmY29ubmVjdGlvbik7CisgICAgY29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKnRo
aXMpOworCisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogbV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChhdXRvJiBwbGF5ZXIgPSBwYWly
LnZhbHVlKSB7CisgICAgICAgICAgICBhdXRvIHByb3h5Q29uZmlndXJhdGlvbiA9IHByb3h5Q29u
ZmlndXJhdGlvbkZvclBsYXllcihwbGF5ZXItPnBsYXllcigpKTsKKyAgICAgICAgICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKHBhaXIu
a2V5LCBwbGF5ZXItPnJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSwgcHJveHlDb25maWd1cmF0aW9u
KSwgW10oYXV0byYmKSB7IH0sIDApOworICAgICAgICAgICAgcGxheWVyLT5ncHVQcm9jZXNzQ3Jh
c2hlZCgpOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRleCA5ZDgxYTJmYWE1Y2ExOTVmZjRm
N2MzMDQyYjk4NmQ0MWRlMWZmOTk3Li4xZDZiM2VlM2U5NWU4MGFlODYwZTk2NmI4YzkyNzNkMDg2
NTNhOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Ry
dWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcgogICAgIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50Ci0gICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPiB7CisgICAgLCBw
dWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
KFdlYlByb2Nlc3MmKTsKQEAgLTcyLDYgKzcyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJQcm9j
ZXNzU3VwcGxlbWVudAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgZmluYWw7CiAKKyAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xp
ZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikgZmluYWw7CisKICAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0
b3J5OwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYpOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlQW5kQ29kZWNzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413880</attachid>
            <date>2020-11-11 16:08:48 -0800</date>
            <delta_ts>2020-11-12 09:11:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218825-20201111160847.patch</filename>
            <type>text/plain</type>
            <size>12981</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViMTdjMGU2OTc3NDZhM2M5
NGQwZjQ1NDA4NWRiNjRhMzc0MzVlZWIuLjk0MGZlZDVkZmNhZWY2ZTMxMTg1YjdhM2I5MGQ0Mzdj
YjdmMGVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTEtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQWRkIGJhc2lj
IEdQVVByb2Nlc3MgY3Jhc2ggaGFuZGxpbmcgZm9yIG1lZGlhIHBsYXliYWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBHUFVQcm9jZXNz
IGNyYXNoZXMgYW5kIHRoZXJlIGFyZSBhY3RpdmUgbWVkaWEgcGxheWVycywgd2Ugbm93IGFjdAor
ICAgICAgICBhcyBpZiBhIG5ldHdvcmsgaGFwcGVuZWQgYW5kIHdlIHBhdXNlIHRoZSBwbGF5ZXIu
IFdlIG1heSBiZSBhYmxlIHRvIGRvCisgICAgICAgIGJldHRlciB0aGFuIHRoaXMgaW4gYSBmb2xs
b3ctdXAgc28gdGhhdCB0aGUgcGxheWVyIGNhbiBwaWNrIHVwIHdoZXJlIGl0CisgICAgICAgIGxl
ZnQgb2ZmLiBCdXQgYXQgbGVhc3QsIHRoZSB1c2VyIGNhbiBwcmVzcyB0aGUgcGxheSBidXR0b24g
YWdhaW4gdG8KKyAgICAgICAgc3RhcnQgcGxheWluZyBhZ2Fpbi4KKworICAgICAgICBCZWZvcmUg
dGhpcyBwYXRjaCwgd2Ugd291bGQgZW5kIHVwIGJ1c3kgbG9vcGluZyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcworICAgICAgICB3b3VsZCB1c2UgMTAwJSBDUFUgYWZ0ZXIgYSBHUFUgcHJvY2Vz
cyBjcmFzaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphZGRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmdwdVByb2Nlc3ND
cmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcm94eUNvbmZpZ3VyYXRpb25Gb3JQ
bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0
ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6
CisKIDIwMjAtMTEtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBUZXJtaW5hdGUgV2ViUHJvY2Vzc2VzIGlmIEdQVVByb2Nlc3MgY3Jhc2hlcyBtb3JlIHRoYW4g
dHdpY2UgaW4gMzAgc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYzZDRlYmUyMDBhYjFmMzY1YTgzZWZlM2Ux
M2ZmNjU0ZDU3YjhiZjkuLjJjMGRmNWI5ZjU0OTY4NDdlZDY2OTEwYmYyZjM5YjJjZGM2MGNhMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgeyB9
CiAgICAgfTsKLSAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMu
YWRkKGNsaWVudCk7IH0KLSAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkgeyBt
X2NsaWVudHMucmVtb3ZlKGNsaWVudCk7IH0KKyAgICB2b2lkIGFkZENsaWVudChjb25zdCBDbGll
bnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKGNsaWVudCk7IH0KKyAgICB2b2lkIHJlbW92ZUNs
aWVudChjb25zdCBDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7IH0K
IAogcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDc5YTIxMTRiYTI0
OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUuLjhiYzMzODZhZGU4Nzc2ZTU2M2I0OGRhYWJl
YTdiZmZjNDIwOGU2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTYzNiw2
ICs2MzYsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgU3Ry
aW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikKIH0KICNlbmRpZgogCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6Z3B1UHJvY2Vzc0NyYXNoZWQoKQoreworICAgIC8vIEZJWE1F
OiBJZGVhbGx5LCB3ZSB3b3VsZCBiZSBhYmxlIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYg
YW5kIHNlYW1sZXNzbHkga2VlcCBwbGF5aW5nIHRoZSBtZWRpYS4KKyAgICBtX2NhY2hlZFN0YXRl
Lm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtFcnJvcjsK
KyAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworICAgIHBsYXliYWNrU3RhdGVD
aGFuZ2VkKHRydWUpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaAppbmRleCAwZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5
NWY1ODFhLi44Y2JjZjMyZmUyYzc2NWE0ZDI0MzU3MWMxNzRkN2JjNmEwY2E1MzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTg2LDYgKzg2LDkgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9CiAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9Cisg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVy
OyB9CisKKyAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCk7CiAKICAgICB2b2lkIG5ldHdvcmtT
dGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKICAgICB2b2lkIHJlYWR5U3Rh
dGVDaGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAKaW5kZXggMWQ2Y2RkZWI3MzY1OTM3ZWMwZTM3YzA3NDRiM2Y0ZjgwYTg5NjkxNC4u
NzYwYzU1YzBiZmE4MmFlMzk0ZWNiMzJhMzczM2ViNWFlNDRiZDkwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhCiAjZW5kaWYKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBsYXllcihN
ZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikKK3N0YXRpYyBSZW1vdGVNZWRpYVBsYXllclByb3h5
Q29uZmlndXJhdGlvbiBwcm94eUNvbmZpZ3VyYXRpb25Gb3JQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBs
YXllcikKIHsKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiBwcm94eUNv
bmZpZ3VyYXRpb247CiAgICAgcHJveHlDb25maWd1cmF0aW9uLnJlZmVycmVyID0gcGxheWVyLT5y
ZWZlcnJlcigpOwpAQCAtMTYxLDkgKzE2MSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQog
ICAgIGF1dG8gZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IHBsYXllci0+ZG9jdW1lbnRTZWN1cml0
eU9yaWdpbigpOwogICAgIHByb3h5Q29uZmlndXJhdGlvbi5kb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKIAorICAgIHJldHVybiBwcm94eUNvbmZpZ3VyYXRp
b247Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXIqIHBsYXllciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBwcm94eUNvbmZpZ3VyYXRpb24gPSBwcm94
eUNvbmZpZ3VyYXRpb25Gb3JQbGF5ZXIocGxheWVyKTsKKwogICAgIGF1dG8gaWRlbnRpZmllciA9
IE1lZGlhUGxheWVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIs
IGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBXVEZNb3ZlKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4p
XShhdXRvJiYgcGxheWVyQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7CisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBpZGVudGlm
aWVyLCBkb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcGxheWVyLT5kb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCldKGF1dG8mJiBwbGF5ZXJDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjc4LDEyICsyODUsMjkgQEAg
dm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VH
UFVQcm9jZXNzKQogCiBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2dwdVByb2Nl
c3NDb25uZWN0aW9uKQorICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikgewogICAgICAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24t
PmFkZENsaWVudCgqdGhpcyk7CisgICAgfQogCiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3NDb25u
ZWN0aW9uOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAg
ICBBU1NFUlQobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9PSAmY29ubmVjdGlvbik7CisgICAgY29u
bmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOworCisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
biA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wbGF5ZXJzKSB7CisgICAgICAg
IGlmIChhdXRvJiBwbGF5ZXIgPSBwYWlyLnZhbHVlKSB7CisgICAgICAgICAgICBhdXRvIHByb3h5
Q29uZmlndXJhdGlvbiA9IHByb3h5Q29uZmlndXJhdGlvbkZvclBsYXllcihwbGF5ZXItPnBsYXll
cigpKTsKKyAgICAgICAgICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkNyZWF0ZU1lZGlhUGxheWVyKHBhaXIua2V5LCBwbGF5ZXItPnJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIoKSwgcHJveHlDb25maWd1cmF0aW9uKSwgW10oYXV0byYmKSB7IH0sIDApOworICAgICAgICAg
ICAgcGxheWVyLT5ncHVQcm9jZXNzQ3Jhc2hlZCgpOworICAgICAgICB9CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApp
bmRleCA5ZDgxYTJmYWE1Y2ExOTVmZjRmN2MzMDQyYjk4NmQ0MWRlMWZmOTk3Li4xZDZiM2VlM2U5
NWU4MGFlODYwZTk2NmI4YzkyNzNkMDg2NTNhOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b247CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcgogICAgIDogcHVibGljIFdlYlBy
b2Nlc3NTdXBwbGVtZW50Ci0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyPiB7CisgICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKQEAgLTcyLDYgKzcyLDkgQEAg
cHJpdmF0ZToKICAgICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudAogICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgZmluYWw7CiAKKyAgICAvLyBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CisgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlv
bkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CisKICAgICBmcmllbmQgY2xh
c3MgTWVkaWFQbGF5ZXJSZW1vdGVGYWN0b3J5OwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzKFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZjNTYyMWEwYjA4M2QzNWVlMTEwMWUxMjc4YTE0MDdjMmUz
MTMyN2YuLmQ3ODRhOGFlZTExMjVlYTk0YTY3MGRkOGFhN2E5YjExYWQ1NWY3NWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMC0xMS0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFVQcm9jZXNzXSBTZWFtbGVzc2x5IHJlc3VtZSBXZWJBdWRpbyBwbGF5YmFjayBpZiB0aGUg
R1BVIFByb2Nlc3MgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4ODA2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTI5MzgxNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0dQVVByb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKwogMjAyMC0xMS0xMSAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBFeHBlcmltZW50
YWxOb3RpZmljYXRpb25zRW5hYmxlZCBzZXR0aW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KaW5kZXggYjA0NzUxMTgyNmY1OTlk
YmU1NmYyZjQwMTg0MmVlMTg1MzY1NThjYi4uYmE5NTgzMjJiYWI2OGUxMjk0OWE4ZDBhOGU5YmI1
NzViYTA1M2MwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9HUFVQcm9jZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvR1BVUHJvY2Vzcy5tbQpAQCAtMTk3LDMgKzE5Nyw4MCBAQCBURVNUKEdQVVByb2Nlc3Ms
IFdlYlByb2Nlc3NUZXJtaW5hdGlvbkFmdGVyVG9vTWFueUdQVVByb2Nlc3NDcmFzaGVzKQogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOwogICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IF9pc1BsYXlpbmdBdWRpb10pOwogfQorCitURVNUKEdQVVByb2Nlc3MsIENyYXNoV2hp
bGVQbGF5aW5nVmlkZW8pCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKF9XS0ludGVybmFs
RGVidWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVh
dHVyZXNdKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNl
R1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCJdKSB7CisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpm
ZWF0dXJlXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAibGFy
Z2UtdmlkZW9zLXdpdGgtYXVkaW8iXTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3ZpZGVvJylbMF0ucGxheSgpICYmIHRydWUiIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3Ip
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgYXV0byB3ZWJWaWV3UElEID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKKworICAgIC8vIFRoZSBHUFUgcHJvY2VzcyBzaG91bGQgZ2V0IGxhdW5j
aGVkLgorICAgIGF1dG8qIHByb2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
UG9vbDsKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtwcm9jZXNzUG9v
bCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bv
b2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgaWYgKCFbcHJvY2Vzc1Bvb2wgX2dw
dVByb2Nlc3NJZGVudGlmaWVyXSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZ3B1UHJvY2Vz
c1BJRCA9IFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gQXVk
aW8gc2hvdWxkIGJlIHBsYXlpbmcuCisgICAgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbd2Vi
VmlldyBfaXNQbGF5aW5nQXVkaW9dICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfaXNQ
bGF5aW5nQXVkaW9dKTsKKworICAgIC8vIEtpbGwgdGhlIEdQVSBQcm9jZXNzLgorICAgIGtpbGwo
Z3B1UHJvY2Vzc1BJRCwgOSk7CisKKyAgICAvLyBHUFUgUHJvY2VzcyBzaG91bGQgZ2V0IHJlbGF1
bmNoZWQuCisgICAgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCghW3Byb2Nlc3NQb29sIF9ncHVQ
cm9jZXNzSWRlbnRpZmllcl0gfHwgW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0g
PT0gZ3B1UHJvY2Vzc1BJRCkgJiYgdGltZW91dCsrIDwgMTAwKQorICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVBy
b2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgRVhQRUNUX05FKFtwcm9jZXNzUG9vbCBfZ3B1UHJv
Y2Vzc0lkZW50aWZpZXJdLCBncHVQcm9jZXNzUElEKTsKKyAgICBncHVQcm9jZXNzUElEID0gW3By
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBNYWtlIHN1cmUgdGhl
IFdlYlByb2Nlc3MgZGlkIG5vdCBjcmFzaC4KKyAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICAvLyBDdXJyZW50bHksIHdlIGRv
bid0IHJlc3VtZSB2aWRlbyBwbGF5YmFjayBhZnRlciBhIGNyYXNoLgorICAgIHRpbWVvdXQgPSAw
OworICAgIHdoaWxlIChbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9dICYmIHRpbWVvdXQrKyA8IDEw
MCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSk7CisKKyAgICAvLyBNYW51YWxseSByZXN1
bWUgdmlkZW8gcGxheWJhY2suCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBd
LnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IC8vIEF1ZGlvIHNob3VsZCBiZSBwbGF5aW5nLgorICAgIHRpbWVvdXQgPSAwOworICAgIHdoaWxl
ICghW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgX2lzUGxheWluZ0F1ZGlvXSk7CisKKyAgICBFWFBFQ1RfRVEoZ3B1UHJvY2Vzc1BJRCwgW3By
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9FUSh3ZWJWaWV3
UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413941</attachid>
            <date>2020-11-12 09:11:41 -0800</date>
            <delta_ts>2020-11-12 11:40:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218825-20201112091140.patch</filename>
            <type>text/plain</type>
            <size>13957</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0MjRjOTY2NGI3YzRjNjQx
ZjFlZTI2MmM3Mzk0ZmVmN2EzMmM3YzEuLmI4YzkwZGNkMWUwMWEzNzdkODg3NmM0ZjhhZGU5MjNj
MGExY2FhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMTEtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gQWRkIGJhc2lj
IEdQVVByb2Nlc3MgY3Jhc2ggaGFuZGxpbmcgZm9yIG1lZGlhIHBsYXliYWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBHUFVQcm9jZXNz
IGNyYXNoZXMgYW5kIHRoZXJlIGFyZSBhY3RpdmUgbWVkaWEgcGxheWVycywgd2Ugbm93IGFjdAor
ICAgICAgICBhcyBpZiBhIG5ldHdvcmsgaGFwcGVuZWQgYW5kIHdlIHBhdXNlIHRoZSBwbGF5ZXIu
IFdlIG1heSBiZSBhYmxlIHRvIGRvCisgICAgICAgIGJldHRlciB0aGFuIHRoaXMgaW4gYSBmb2xs
b3ctdXAgc28gdGhhdCB0aGUgcGxheWVyIGNhbiBwaWNrIHVwIHdoZXJlIGl0CisgICAgICAgIGxl
ZnQgb2ZmLiBCdXQgYXQgbGVhc3QsIHRoZSB1c2VyIGNhbiBwcmVzcyB0aGUgcGxheSBidXR0b24g
YWdhaW4gdG8KKyAgICAgICAgc3RhcnQgcGxheWluZyBhZ2Fpbi4KKworICAgICAgICBCZWZvcmUg
dGhpcyBwYXRjaCwgd2Ugd291bGQgZW5kIHVwIGJ1c3kgbG9vcGluZyBhbmQgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcworICAgICAgICB3b3VsZCB1c2UgMTAwJSBDUFUgYWZ0ZXIgYSBHUFUgcHJvY2Vz
cyBjcmFzaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphZGRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmdwdVByb2Nlc3ND
cmFzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcm94eUNvbmZpZ3VyYXRpb25Gb3JQ
bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0
ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6
CisKIDIwMjAtMTEtMTIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBjOWY4ZjNj
NTZmNzNiZWQwMGUxNWYwMTY4ODMzNTY3NzQwNDc2OThlLi40ZTFjN2FkMWY5ZGI1OGY0MmVmMzI5
NjgwZDFmNTM2MWJiMDlhZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKQEAgLTUwMywxMiArNTAzLDE1IEBAIHB1YmxpYzoKIAogICAgIGRv
dWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Q7CiAKKyAgICBib29s
IHNob3VsZFByZXBhcmVUb1JlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUHJlcGFyZVRv
UmVuZGVyOyB9CisKICAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0OwogICAg
IHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9E
ZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNv
dW50KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCk7Cisg
ICAgYm9vbCBwcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJv
d3Npbmc7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYzZDRlYmUyMDBhYjFmMzY1YTgz
ZWZlM2UxM2ZmNjU0ZDU3YjhiZjkuLjJjMGRmNWI5ZjU0OTY4NDdlZDY2OTEwYmYyZjM5YjJjZGM2
MGNhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikgeyB9CiAgICAgfTsKLSAgICB2b2lkIGFkZENsaWVudChDbGllbnQmIGNsaWVudCkgeyBtX2Ns
aWVudHMuYWRkKGNsaWVudCk7IH0KLSAgICB2b2lkIHJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVu
dCkgeyBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7IH0KKyAgICB2b2lkIGFkZENsaWVudChjb25z
dCBDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMuYWRkKGNsaWVudCk7IH0KKyAgICB2b2lkIHJl
bW92ZUNsaWVudChjb25zdCBDbGllbnQmIGNsaWVudCkgeyBtX2NsaWVudHMucmVtb3ZlKGNsaWVu
dCk7IH0KIAogcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDc5YTIx
MTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUuLjE3ZWExNTEzYzYzZTgxZTNhZDJk
YjZjYjMxYzI4NzlmMDgyZjAyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTYzNiw2ICs2MzYsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29u
c3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KikKIH0KICNlbmRpZgogCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Z3B1UHJvY2Vzc0NyYXNoZWQoKQoreworICAgIC8v
IEZJWE1FOiBJZGVhbGx5LCB3ZSB3b3VsZCBiZSBhYmxlIHRvIHBpY2sgdXAgd2hlcmUgd2UgbGVm
dCBvZmYgYW5kIHNlYW1sZXNzbHkga2VlcCBwbGF5aW5nIHRoZSBtZWRpYS4KKyAgICBtX2NhY2hl
ZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6Ok5ldHdvcmtF
cnJvcjsKKyAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworICAgIHBsYXliYWNr
U3RhdGVDaGFuZ2VkKHRydWUpOworICAgIHByZXBhcmVGb3JQbGF5YmFjayhtX3BsYXllci0+cHJp
dmF0ZUJyb3dzaW5nTW9kZSgpLCBtX3BsYXllci0+cHJlbG9hZCgpLCBtX3BsYXllci0+cHJlc2Vy
dmVzUGl0Y2goKSwgbV9wbGF5ZXItPnNob3VsZFByZXBhcmVUb1JlbmRlcigpKTsKK30KKwogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9h
ZChNZWRpYVN0cmVhbVByaXZhdGUmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXgg
MGQ3NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYS4uOGNiY2YzMmZlMmM3NjVh
NGQyNDM1NzFjMTc0ZDdiYzZhMGNhNTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBA
IC04Niw2ICs4Niw5IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciBpdGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsgfQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
KiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorCisgICAgdm9pZCBncHVQcm9j
ZXNzQ3Jhc2hlZCgpOwogCiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlh
UGxheWVyU3RhdGUmJik7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChSZW1vdGVNZWRpYVBs
YXllclN0YXRlJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCmluZGV4IDM5ZDJjM2Zm
NzRmODFlMWNmNGYwMjI4YmQ1MWZkOTQxYTg0YzAzZDkuLjY5Yjc3NDUwZjc1Y2M5YzI3Nzg1ZDU5
OWJlZjg5NjUzYTQwNDE2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTEz
OSw3ICsxMzksNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6aW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYQogI2VuZGlmCiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6Y3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXIqIHBsYXllciwgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIpCitzdGF0aWMgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gcHJveHlDb25m
aWd1cmF0aW9uRm9yUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiB7CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gcHJveHlDb25maWd1cmF0aW9uOwogICAgIHByb3h5
Q29uZmlndXJhdGlvbi5yZWZlcnJlciA9IHBsYXllci0+cmVmZXJyZXIoKTsKQEAgLTE2NCw5ICsx
NjQsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW0KICAgICBhdXRvIGRvY3VtZW50U2VjdXJp
dHlPcmlnaW4gPSBwbGF5ZXItPmRvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBwcm94eUNv
bmZpZ3VyYXRpb24uZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50U2VjdXJpdHlPcmln
aW47CiAKKyAgICByZXR1cm4gcHJveHlDb25maWd1cmF0aW9uOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKQorewor
ICAgIGF1dG8gcHJveHlDb25maWd1cmF0aW9uID0gcHJveHlDb25maWd1cmF0aW9uRm9yUGxheWVy
KHBsYXllcik7CisKICAgICBhdXRvIGlkZW50aWZpZXIgPSBNZWRpYVBsYXllcklkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNv
bmZpZ3VyYXRpb247Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBpZGVudGlmaWVyLCBkb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID0gV1RGTW92ZShkb2N1bWVudFNlY3VyaXR5T3JpZ2luKV0oYXV0byYmIHBsYXllckNvbmZpZ3Vy
YXRpb24pIG11dGFibGUgeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgaWRlbnRpZmllciwgZG9jdW1lbnRTZWN1cml0eU9y
aWdpbiA9IHBsYXllci0+ZG9jdW1lbnRTZWN1cml0eU9yaWdpbigpXShhdXRvJiYgcGxheWVyQ29u
ZmlndXJhdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTI2NSwxMiArMjcyLDI5IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKIAogR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKSBjb25zdAogewotICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pIHsKICAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
biA9ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
OworICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOworICAg
IH0KIAogICAgIHJldHVybiAqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKIH0KIAordm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gJmNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24ucmVtb3ZlQ2xpZW50KCp0
aGlzKTsKKworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIGZvciAo
YXV0byYgcGFpciA6IG1fcGxheWVycykgeworICAgICAgICBpZiAoYXV0byYgcGxheWVyID0gcGFp
ci52YWx1ZSkgeworICAgICAgICAgICAgYXV0byBwcm94eUNvbmZpZ3VyYXRpb24gPSBwcm94eUNv
bmZpZ3VyYXRpb25Gb3JQbGF5ZXIocGxheWVyLT5wbGF5ZXIoKSk7CisgICAgICAgICAgICBncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcihwYWly
LmtleSwgcGxheWVyLT5yZW1vdGVFbmdpbmVJZGVudGlmaWVyKCksIHByb3h5Q29uZmlndXJhdGlv
biksIFtdKGF1dG8mJikgeyB9LCAwKTsKKyAgICAgICAgICAgIHBsYXllci0+Z3B1UHJvY2Vzc0Ny
YXNoZWQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggOWQ4MWEyZmFhNWNhMTk1ZmY0
ZjdjMzA0MmI5ODZkNDFkZTFmZjk5Ny4uMWQ2YjNlZTNlOTVlODBhZTg2MGU5NjZiOGM5MjczZDA4
NjUzYThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0
cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIKICAgICA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAotICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4geworICAgICwg
cHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
cihXZWJQcm9jZXNzJik7CkBAIC03Miw2ICs3Miw5IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpIGZpbmFsOwogCisgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNs
aWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpIGZpbmFsOworCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyUmVtb3RlRmFj
dG9yeTsKICAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mKTsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjcyhXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMm
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2
N2Y4NjExMjNhNjgzMzI4OGUzZGI0MTQ2ZGIzNWE4ZTYwZWM5YTljLi4xN2U1YWM3N2IyMTJlMjU5
OTZhOGVlN2ZhNGNlYTkwYTRlZGY1OGRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUHJvY2Vzc10gU2VhbWxlc3Ns
eSByZXN1bWUgV2ViQXVkaW8gcGxheWJhY2sgaWYgdGhlIEdQVSBQcm9jZXNzIGNyYXNoZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODgwNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzEyOTM4MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjAtMTEtMTIgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUgQ2hlY2tPdXRTb3VyY2Ug
c3RlcCBmb3IgbmV3IGJ1aWxkYm90IChmb2xsb3ctdXAgZml4KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCmluZGV4IGIwNDc1MTE4
MjZmNTk5ZGJlNTZmMmY0MDE4NDJlZTE4NTM2NTU4Y2IuLmJhOTU4MzIyYmFiNjhlMTI5NDlhOGQw
YThlOWJiNTc1YmEwNTNjMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTE5NywzICsxOTcsODAgQEAgVEVTVChHUFVQ
cm9jZXNzLCBXZWJQcm9jZXNzVGVybWluYXRpb25BZnRlclRvb01hbnlHUFVQcm9jZXNzQ3Jhc2hl
cykKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKICAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9dKTsKIH0KKworVEVTVChHUFVQcm9jZXNzLCBD
cmFzaFdoaWxlUGxheWluZ1ZpZGVvKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChfV0tJ
bnRlcm5hbERlYnVnRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfaW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmlu
ZzpAIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiXSkgeworICAgICAgICAgICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9ySW50ZXJuYWxEZWJ1Z0Zl
YXR1cmU6ZmVhdHVyZV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1l
ZDpAImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
IWVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gd2ViVmlld1BJRCA9IFt3ZWJWaWV3IF93
ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBUaGUgR1BVIHByb2Nlc3Mgc2hvdWxkIGdl
dCBsYXVuY2hlZC4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCku
cHJvY2Vzc1Bvb2w7CisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbcHJv
Y2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisKKyAgICBFWFBFQ1RfTkUoW3By
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIGlmICghW3Byb2Nlc3NQ
b29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGdw
dVByb2Nlc3NQSUQgPSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKworICAg
IC8vIEF1ZGlvIHNob3VsZCBiZSBwbGF5aW5nLgorICAgIHRpbWVvdXQgPSAwOworICAgIHdoaWxl
ICghW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSAmJiB0aW1lb3V0KysgPCAxMDApCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgX2lzUGxheWluZ0F1ZGlvXSk7CisKKyAgICAvLyBLaWxsIHRoZSBHUFUgUHJvY2Vzcy4KKyAg
ICBraWxsKGdwdVByb2Nlc3NQSUQsIDkpOworCisgICAgLy8gR1BVIFByb2Nlc3Mgc2hvdWxkIGdl
dCByZWxhdW5jaGVkLgorICAgIHRpbWVvdXQgPSAwOworICAgIHdoaWxlICgoIVtwcm9jZXNzUG9v
bCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdIHx8IFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdID09IGdwdVByb2Nlc3NQSUQpICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfTkUoW3Byb2Nlc3NQb29s
IF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wg
X2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgZ3B1UHJvY2Vzc1BJRCk7CisgICAgZ3B1UHJvY2Vzc1BJ
RCA9IFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gTWFrZSBz
dXJlIHRoZSBXZWJQcm9jZXNzIGRpZCBub3QgY3Jhc2guCisgICAgRVhQRUNUX0VRKHdlYlZpZXdQ
SUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8gQ3VycmVudGx5
LCB3ZSBkb24ndCByZXN1bWUgdmlkZW8gcGxheWJhY2sgYWZ0ZXIgYSBjcmFzaC4KKyAgICB0aW1l
b3V0ID0gMDsKKyAgICB3aGlsZSAoW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSAmJiB0aW1lb3V0
KysgPCAxMDApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9pc1BsYXlpbmdBdWRpb10pOworCisgICAgLy8gTWFudWFs
bHkgcmVzdW1lIHZpZGVvIHBsYXliYWNrLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlk
ZW8nKVswXS5wbGF5KCkgJiYgdHJ1ZSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisKKyAgICAvLyBBdWRpbyBzaG91bGQgYmUgcGxheWluZy4KKyAgICB0aW1lb3V0ID0gMDsKKyAg
ICB3aGlsZSAoIVt3ZWJWaWV3IF9pc1BsYXlpbmdBdWRpb10gJiYgdGltZW91dCsrIDwgMTAwKQor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IF9pc1BsYXlpbmdBdWRpb10pOworCisgICAgRVhQRUNUX0VRKGdwdVByb2Nlc3NQ
SUQsIFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEo
d2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413958</attachid>
            <date>2020-11-12 11:40:56 -0800</date>
            <delta_ts>2020-11-12 12:58:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218825-20201112114055.patch</filename>
            <type>text/plain</type>
            <size>13842</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEyZjFhOGY3ODZmNWRm
MGM4NWI5ZjlhNGUyZWFkZTc3ZjNlOWE4ZC4uODNlOWE0NDQ1ZjJkY2ZmYmE5NTkyYjVlM2MyOTYx
ZjlkZTI5Y2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTExLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEFkZCBi
YXNpYyBHUFVQcm9jZXNzIGNyYXNoIGhhbmRsaW5nIGZvciBtZWRpYSBwbGF5YmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHV0aWxpdHkgZnVu
Y3Rpb24gdG8gTWVkaWFQbGF5ZXIgdG8gcmVsb2FkIHRoZSBtZWRpYSBlbmdpbmUgYW5kIHJlc3Vt
ZQorICAgICAgICBwbGF5YmFjayBpZiBuZWNlc3NhcnkuIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHRo
ZSBHUFUgcHJvY2VzcyBoYXMgY3Jhc2hlZAorICAgICAgICBzbyB0aGF0IHRoZSBwbGF5YmFjayBw
aWNrcyB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4KKworICAgICAgICBBbHNvIGFkZCBhIG5ldyBzZWVr
V2hlblBvc3NpYmxlKCkgZnVuY3Rpb24gdGhhdCBvbmx5IGF0dGVtcHRzIHRvIHNlZWsKKyAgICAg
ICAgb25jZSB3ZSd2ZSByZWNlaXZlZCB0aGUgbWV0YWRhdGEuIEFueSBhdHRlbXB0IHRvIHNlZWsg
YmVmb3JlIHRoZSBtZXRhZGF0YQorICAgICAgICBoYXMgYmVlbiByZWNlaXZlZCBnZXRzIGlnbm9y
ZWQgb3RoZXJ3aXNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlbG9hZEFuZFJlc3VtZVBsYXli
YWNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWtXaGVuUG9z
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorCiAyMDIwLTEx
LTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IENyYXNoIGluIFJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggODQyNGM5NjY0YjdjNGM2NDFmMWVlMjYyYzczOTRmZWY3YTMyYzdjMS4u
Y2RjZmZmMjFhNTNiMzY4Zjc3ZjY3ZDE4YWU0MTFlMDBhNzA2YzcxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0xMS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFVQcm9jZXNzXSBBZGQgYmFzaWMgR1BVUHJvY2VzcyBjcmFzaCBoYW5kbGlu
ZyBmb3IgbWVkaWEgcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdoZW4gdGhlIEdQVSBwcm9jZXNzIGNyYXNoZXMgYW5kIHRoZXJlIGFyZSBw
ZW5kaW5nIG1lZGlhIHBsYXllcnMsIHdlCisgICAgICAgIG5vdyByZWxhdW5jaCB0aGUgR1BVIHBy
b2Nlc3MgYW5kIGFzayB0aG9zZSBtZWRpYSBwbGF5ZXJzIHRvIHJlY29uc3R1Y3QKKyAgICAgICAg
dGhlaXIgcHJpdmF0ZSBtZWRpYSBwbGF5ZXJzLCByZWxvYWQgdGhlIGZpbGUgYW5kIHJlc3VtZSBw
bGF5YmFjayBpZgorICAgICAgICBuZWNlc3NhcnkuIFRoaXMgZW5zdXJlcyB0aGF0IGluIGNhc2Ug
b2YgYSBHUFUgcHJvY2VzcyBjcmFzaCB3aGlsZSB0aGUKKyAgICAgICAgdXNlciBpcyBwbGF5aW5n
IGEgdmlkZW8sIHRoZSB2aWRlbyBqdXN0IHNlYW1sZXNzbHkga2VlcHMgcGxheWluZyBmcm9tCisg
ICAgICAgIHdoZXJlIGl0IHdhcyBiZWZvcmUgdGhlIGNyYXNoLgorCisgICAgICAgIEJlZm9yZSB0
aGlzIHBhdGNoLCB3ZSB3b3VsZCBlbmQgdXAgYnVzeSBsb29waW5nIGFuZCB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzCisgICAgICAgIHdvdWxkIHVzZSAxMDAlIENQVSBhZnRlciBhIEdQVSBwcm9jZXNz
IGNyYXNoLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmFkZENsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnByb3h5Q29uZmlndXJhdGlvbkZvclBsYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Omdw
dVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorCiAyMDIwLTExLTEyICBEaWVnbyBQaW5v
IEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZpZXdlZCwg
bm9uLXVuaWZpZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdjZTlhMDc0OTFkNWEwNDZmYTIzMTliNWNjOGYx
MTI1MTNhOGQyOGMuLjI4ODM0OGU1MmExZWUzZmI5ZDFhMTdkNzc0Njg0ZDY5ZDZiNDEyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTUyNiw2ICs1MjYsMjEgQEAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXll
cjo6bmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3QKICAgICByZXR1cm4g
YmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7
CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZEFuZFJlc3VtZVBsYXliYWNrSWZOZWVkZWQo
KQoreworICAgIGF1dG8gcHJldmlvdXNNZWRpYVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGJv
b2wgd2FzUGF1c2VkID0gcGF1c2VkKCk7CisKKyAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9IG51
bGxwdHI7CisgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUobnVsbHB0cik7CisKKyAgICBwcmVw
YXJlVG9QbGF5KCk7CisgICAgaWYgKCF3YXNQYXVzZWQpCisgICAgICAgIHBsYXkoKTsKKyAgICBp
ZiAocHJldmlvdXNNZWRpYVRpbWUpCisgICAgICAgIHNlZWtXaGVuUG9zc2libGUocHJldmlvdXNN
ZWRpYVRpbWUpOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2lu
ZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkgCkBAIC03MTcsNiArNzMyLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoY29u
c3QgTWVkaWFUaW1lJiB0aW1lKQogICAgIG1fcHJpdmF0ZS0+c2Vlayh0aW1lKTsKIH0KIAordm9p
ZCBNZWRpYVBsYXllcjo6c2Vla1doZW5Qb3NzaWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7
CisgICAgaWYgKG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVNZXRhZGF0YSkKKyAgICAgICAgbV9wZW5kaW5nU2Vla1JlcXVlc3QgPSB0aW1lOwor
ICAgIGVsc2UKKyAgICAgICAgc2Vlayh0aW1lKTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6cGF1
c2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5wYXVzZWQoKTsKQEAgLTEyMzEs
NiArMTI1NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogdm9p
ZCBNZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoKTsKKyAgICBpZiAobV9wZW5kaW5nU2Vla1JlcXVlc3Qg
JiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVNZXRhZGF0YSkKKyAgICAgICAgc2Vlaygqc3RkOjpleGNoYW5nZShtX3BlbmRpbmdTZWVrUmVx
dWVzdCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnZvbHVtZUNoYW5n
ZWQoZG91YmxlIG5ld1ZvbHVtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IGM5ZjhmM2M1NmY3M2JlZDAwZTE1ZjAxNjg4MzM1Njc3NDA0
NzY5OGUuLjJhYjE1ODk5NWQ3ZDJlZWRhZjMwN2M2Nzk1MmMzZmY2YmVkZjRjNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzA3LDYg
KzMwNyw4IEBAIHB1YmxpYzoKICAgICBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21T
dHJpbmcmLCBBdG9tU3RyaW5nKiB2YWx1ZSA9IG51bGxwdHIpIGNvbnN0OwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKIAorICAgIHZvaWQgcmVsb2FkQW5kUmVzdW1l
UGxheWJhY2tJZk5lZWRlZCgpOworCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXll
cigpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKQEAgLTM4
MSw2ICszODMsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Q7CiAg
ICAgTWVkaWFUaW1lIGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZWVrKGNvbnN0IE1l
ZGlhVGltZSYpOworICAgIHZvaWQgc2Vla1doZW5Qb3NzaWJsZShjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFu
Y2UpOwogCiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0OwpAQCAtNjU2LDYgKzY1OSw3
IEBAIHByaXZhdGU6CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcg
bV9rZXlTeXN0ZW07CiAgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgT3B0aW9uYWw8TWVkaWFU
aW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBQcmVs
b2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAx
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKaW5kZXggNjNkNGViZTIwMGFiMWYzNjVhODNlZmUzZTEzZmY2NTRkNTdiOGJmOS4u
MmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJmMzliMmNkYzYwY2EwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtOTMs
OCArOTMsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSB7IH0KICAgICB9OwotICAgIHZv
aWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoY2xpZW50KTsgfQot
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUo
Y2xpZW50KTsgfQorICAgIHZvaWQgYWRkQ2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1f
Y2xpZW50cy5hZGQoY2xpZW50KTsgfQorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KGNvbnN0IENsaWVu
dCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsgfQogCiBwcml2YXRlOgogICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaAppbmRleCAwZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2
ZGM5NWY1ODFhLi4yYTNjMjY0NTVjYTZmNTY1YWVjNDIzNDliMjExYjUxOGEwZTIwNzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9
CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWVyOyB9CiAKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSYmKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggMzlkMmMzZmY3NGY4MWUx
Y2Y0ZjAyMjhiZDUxZmQ5NDFhODRjMDNkOS4uZjg3ZGU5OTY0OTY2OWQ5MzU5NjJkODY5MzU5ODAx
MTM3NjdhMzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMjY1LDEyICsy
NjUsMjQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3Mo
Ym9vbCB1c2VHUFVQcm9jZXNzKQogCiBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikg
ewogICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gJldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CisgICAgfQogCiAgICAgcmV0dXJuICptX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICBBU1NFUlQobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9PSAmY29ubmVjdGlvbik7
CisgICAgY29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOworCisgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBwYWlyIDogc3RkOjpleGNoYW5n
ZShtX3BsYXllcnMsIHsgfSkpCisgICAgICAgIHBhaXIudmFsdWUtPnBsYXllcigpLT5yZWxvYWRB
bmRSZXN1bWVQbGF5YmFja0lmTmVlZGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IDlkODFhMmZhYTVjYTE5NWZm
NGY3YzMwNDJiOTg2ZDQxZGUxZmY5OTcuLjFkNmIzZWUzZTk1ZTgwYWU4NjBlOTY2YjhjOTI3M2Qw
ODY1M2E4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNDcsNyArNDcsNyBAQCBz
dHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjsKIAogY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyCiAgICAgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKLSAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+IHsKKyAgICAs
IHB1YmxpYyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIoV2ViUHJvY2VzcyYpOwpAQCAtNzIsNiArNzIsOSBAQCBwcml2YXRlOgogICAgIC8vIFdlYlBy
b2Nlc3NTdXBwbGVtZW50CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKSBmaW5hbDsKIAorICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpD
bGllbnQKKyAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mKSBmaW5hbDsKKwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVBsYXllclJlbW90ZUZh
Y3Rvcnk7CiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGVBbmRDb2RlY3MoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJz
Jik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NjdmODYxMTIzYTY4MzMyODhlM2RiNDE0NmRiMzVhOGU2MGVjOWE5Yy4uYmQ4NmM4M2YzYTdiYTRh
ZDI3OWMxYjE3Yzk1ZTZkMDBhNjc1ODA3YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTExLTEyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEFkZCBiYXNp
YyBHUFVQcm9jZXNzIGNyYXNoIGhhbmRsaW5nIGZvciBtZWRpYSBwbGF5YmFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODI1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVy
YWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9j
ZXNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMTEtMTIgIEFha2FzaCBKYWluICA8YWFr
YXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUg
Q2hlY2tPdXRTb3VyY2Ugc3RlcCBmb3IgbmV3IGJ1aWxkYm90IChmb2xsb3ctdXAgZml4KQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1t
CmluZGV4IGIwNDc1MTE4MjZmNTk5ZGJlNTZmMmY0MDE4NDJlZTE4NTM2NTU4Y2IuLjhkODg0ZDFl
N2Q5NjFlN2Y4M2JkMWRlYmZkMzE0ZmIxMGIxOGY3NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTE5NywzICsxOTcs
NjYgQEAgVEVTVChHUFVQcm9jZXNzLCBXZWJQcm9jZXNzVGVybWluYXRpb25BZnRlclRvb01hbnlH
UFVQcm9jZXNzQ3Jhc2hlcykKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4x
KTsKICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9dKTsKIH0KKworVEVT
VChHUFVQcm9jZXNzLCBDcmFzaFdoaWxlUGxheWluZ1ZpZGVvKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgZm9yIChfV0tJbnRlcm5hbERlYnVnRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJl
bmNlcyBfaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5
IGlzRXF1YWxUb1N0cmluZzpAIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiXSkgeworICAg
ICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9y
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvIl07CisKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVl
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gd2ViVmlld1BJ
RCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBUaGUgR1BVIHBy
b2Nlc3Mgc2hvdWxkIGdldCBsYXVuY2hlZC4KKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IGNvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7CisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSAmJiB0aW1lb3V0
KysgPCAxMDApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisKKyAg
ICBFWFBFQ1RfTkUoW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAg
IGlmICghW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIGdwdVByb2Nlc3NQSUQgPSBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVu
dGlmaWVyXTsKKworICAgIC8vIEF1ZGlvIHNob3VsZCBiZSBwbGF5aW5nLgorICAgIHRpbWVvdXQg
PSAwOworICAgIHdoaWxlICghW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSAmJiB0aW1lb3V0Kysg
PCAxMDApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSk7CisKKyAgICAvLyBLaWxsIHRoZSBH
UFUgUHJvY2Vzcy4KKyAgICBraWxsKGdwdVByb2Nlc3NQSUQsIDkpOworCisgICAgLy8gR1BVIFBy
b2Nlc3Mgc2hvdWxkIGdldCByZWxhdW5jaGVkLgorICAgIHRpbWVvdXQgPSAwOworICAgIHdoaWxl
ICgoIVtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdIHx8IFtwcm9jZXNzUG9vbCBf
Z3B1UHJvY2Vzc0lkZW50aWZpZXJdID09IGdwdVByb2Nlc3NQSUQpICYmIHRpbWVvdXQrKyA8IDEw
MCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1Rf
TkUoW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0sIDApOworICAgIEVYUEVDVF9O
RShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSwgZ3B1UHJvY2Vzc1BJRCk7Cisg
ICAgZ3B1UHJvY2Vzc1BJRCA9IFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOwor
CisgICAgLy8gTWFrZSBzdXJlIHRoZSBXZWJQcm9jZXNzIGRpZCBub3QgY3Jhc2guCisgICAgRVhQ
RUNUX0VRKHdlYlZpZXdQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisg
ICAgLy8gQXVkaW8gc2hvdWxkIHJlc3VtZSBwbGF5aW5nLgorICAgIHRpbWVvdXQgPSAwOworICAg
IHdoaWxlICghW3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSAmJiB0aW1lb3V0KysgPCAxMDApCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgX2lzUGxheWluZ0F1ZGlvXSk7CisKKyAgICBFWFBFQ1RfRVEoZ3B1UHJvY2Vzc1BJ
RCwgW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9FUSh3
ZWJWaWV3UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413969</attachid>
            <date>2020-11-12 12:58:43 -0800</date>
            <delta_ts>2020-11-12 14:11:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218825-20201112125842.patch</filename>
            <type>text/plain</type>
            <size>14036</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEyZjFhOGY3ODZmNWRm
MGM4NWI5ZjlhNGUyZWFkZTc3ZjNlOWE4ZC4uODNlOWE0NDQ1ZjJkY2ZmYmE5NTkyYjVlM2MyOTYx
ZjlkZTI5Y2Q1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTExLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIEFkZCBi
YXNpYyBHUFVQcm9jZXNzIGNyYXNoIGhhbmRsaW5nIGZvciBtZWRpYSBwbGF5YmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHV0aWxpdHkgZnVu
Y3Rpb24gdG8gTWVkaWFQbGF5ZXIgdG8gcmVsb2FkIHRoZSBtZWRpYSBlbmdpbmUgYW5kIHJlc3Vt
ZQorICAgICAgICBwbGF5YmFjayBpZiBuZWNlc3NhcnkuIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHRo
ZSBHUFUgcHJvY2VzcyBoYXMgY3Jhc2hlZAorICAgICAgICBzbyB0aGF0IHRoZSBwbGF5YmFjayBw
aWNrcyB1cCB3aGVyZSBpdCBsZWZ0IG9mZi4KKworICAgICAgICBBbHNvIGFkZCBhIG5ldyBzZWVr
V2hlblBvc3NpYmxlKCkgZnVuY3Rpb24gdGhhdCBvbmx5IGF0dGVtcHRzIHRvIHNlZWsKKyAgICAg
ICAgb25jZSB3ZSd2ZSByZWNlaXZlZCB0aGUgbWV0YWRhdGEuIEFueSBhdHRlbXB0IHRvIHNlZWsg
YmVmb3JlIHRoZSBtZXRhZGF0YQorICAgICAgICBoYXMgYmVlbiByZWNlaXZlZCBnZXRzIGlnbm9y
ZWQgb3RoZXJ3aXNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlbG9hZEFuZFJlc3VtZVBsYXli
YWNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNlZWtXaGVuUG9z
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorCiAyMDIwLTEx
LTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IENyYXNoIGluIFJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggODQyNGM5NjY0YjdjNGM2NDFmMWVlMjYyYzczOTRmZWY3YTMyYzdjMS4u
Y2RjZmZmMjFhNTNiMzY4Zjc3ZjY3ZDE4YWU0MTFlMDBhNzA2YzcxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMC0xMS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFVQcm9jZXNzXSBBZGQgYmFzaWMgR1BVUHJvY2VzcyBjcmFzaCBoYW5kbGlu
ZyBmb3IgbWVkaWEgcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdoZW4gdGhlIEdQVSBwcm9jZXNzIGNyYXNoZXMgYW5kIHRoZXJlIGFyZSBw
ZW5kaW5nIG1lZGlhIHBsYXllcnMsIHdlCisgICAgICAgIG5vdyByZWxhdW5jaCB0aGUgR1BVIHBy
b2Nlc3MgYW5kIGFzayB0aG9zZSBtZWRpYSBwbGF5ZXJzIHRvIHJlY29uc3R1Y3QKKyAgICAgICAg
dGhlaXIgcHJpdmF0ZSBtZWRpYSBwbGF5ZXJzLCByZWxvYWQgdGhlIGZpbGUgYW5kIHJlc3VtZSBw
bGF5YmFjayBpZgorICAgICAgICBuZWNlc3NhcnkuIFRoaXMgZW5zdXJlcyB0aGF0IGluIGNhc2Ug
b2YgYSBHUFUgcHJvY2VzcyBjcmFzaCB3aGlsZSB0aGUKKyAgICAgICAgdXNlciBpcyBwbGF5aW5n
IGEgdmlkZW8sIHRoZSB2aWRlbyBqdXN0IHNlYW1sZXNzbHkga2VlcHMgcGxheWluZyBmcm9tCisg
ICAgICAgIHdoZXJlIGl0IHdhcyBiZWZvcmUgdGhlIGNyYXNoLgorCisgICAgICAgIEJlZm9yZSB0
aGlzIHBhdGNoLCB3ZSB3b3VsZCBlbmQgdXAgYnVzeSBsb29waW5nIGFuZCB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzCisgICAgICAgIHdvdWxkIHVzZSAxMDAlIENQVSBhZnRlciBhIEdQVSBwcm9jZXNz
IGNyYXNoLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmFkZENsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnByb3h5Q29uZmlndXJhdGlvbkZvclBsYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Omdw
dVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorCiAyMDIwLTExLTEyICBEaWVnbyBQaW5v
IEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZpZXdlZCwg
bm9uLXVuaWZpZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdjZTlhMDc0OTFkNWEwNDZmYTIzMTliNWNjOGYx
MTI1MTNhOGQyOGMuLjI4ODM0OGU1MmExZWUzZmI5ZDFhMTdkNzc0Njg0ZDY5ZDZiNDEyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTUyNiw2ICs1MjYsMjEgQEAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXll
cjo6bmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3QKICAgICByZXR1cm4g
YmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycywgY3VycmVudCk7
CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZEFuZFJlc3VtZVBsYXliYWNrSWZOZWVkZWQo
KQoreworICAgIGF1dG8gcHJldmlvdXNNZWRpYVRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGJv
b2wgd2FzUGF1c2VkID0gcGF1c2VkKCk7CisKKyAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9IG51
bGxwdHI7CisgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUobnVsbHB0cik7CisKKyAgICBwcmVw
YXJlVG9QbGF5KCk7CisgICAgaWYgKCF3YXNQYXVzZWQpCisgICAgICAgIHBsYXkoKTsKKyAgICBp
ZiAocHJldmlvdXNNZWRpYVRpbWUpCisgICAgICAgIHNlZWtXaGVuUG9zc2libGUocHJldmlvdXNN
ZWRpYVRpbWUpOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2lu
ZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkgCkBAIC03MTcsNiArNzMyLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNlZWsoY29u
c3QgTWVkaWFUaW1lJiB0aW1lKQogICAgIG1fcHJpdmF0ZS0+c2Vlayh0aW1lKTsKIH0KIAordm9p
ZCBNZWRpYVBsYXllcjo6c2Vla1doZW5Qb3NzaWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7
CisgICAgaWYgKG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVNZXRhZGF0YSkKKyAgICAgICAgbV9wZW5kaW5nU2Vla1JlcXVlc3QgPSB0aW1lOwor
ICAgIGVsc2UKKyAgICAgICAgc2Vlayh0aW1lKTsKK30KKwogYm9vbCBNZWRpYVBsYXllcjo6cGF1
c2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5wYXVzZWQoKTsKQEAgLTEyMzEs
NiArMTI1NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogdm9p
ZCBNZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGNsaWVudCgpLm1lZGlh
UGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoKTsKKyAgICBpZiAobV9wZW5kaW5nU2Vla1JlcXVlc3Qg
JiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6Okhh
dmVNZXRhZGF0YSkKKyAgICAgICAgc2Vlaygqc3RkOjpleGNoYW5nZShtX3BlbmRpbmdTZWVrUmVx
dWVzdCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXI6OnZvbHVtZUNoYW5n
ZWQoZG91YmxlIG5ld1ZvbHVtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IGM5ZjhmM2M1NmY3M2JlZDAwZTE1ZjAxNjg4MzM1Njc3NDA0
NzY5OGUuLjJhYjE1ODk5NWQ3ZDJlZWRhZjMwN2M2Nzk1MmMzZmY2YmVkZjRjNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzA3LDYg
KzMwNyw4IEBAIHB1YmxpYzoKICAgICBib29sIGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21T
dHJpbmcmLCBBdG9tU3RyaW5nKiB2YWx1ZSA9IG51bGxwdHIpIGNvbnN0OwogICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKIAorICAgIHZvaWQgcmVsb2FkQW5kUmVzdW1l
UGxheWJhY2tJZk5lZWRlZCgpOworCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXll
cigpOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKQEAgLTM4
MSw2ICszODMsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Q7CiAg
ICAgTWVkaWFUaW1lIGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZWVrKGNvbnN0IE1l
ZGlhVGltZSYpOworICAgIHZvaWQgc2Vla1doZW5Qb3NzaWJsZShjb25zdCBNZWRpYVRpbWUmKTsK
ICAgICB2b2lkIHNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFu
Y2UpOwogCiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0OwpAQCAtNjU2LDYgKzY1OSw3
IEBAIHByaXZhdGU6CiAgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcg
bV9rZXlTeXN0ZW07CiAgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyPiBtX2FjdGl2ZUVuZ2luZUlkZW50aWZpZXI7CisgICAgT3B0aW9uYWw8TWVkaWFU
aW1lPiBtX3BlbmRpbmdTZWVrUmVxdWVzdDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBQcmVs
b2FkIG1fcHJlbG9hZCB7IFByZWxvYWQ6OkF1dG8gfTsKICAgICBkb3VibGUgbV92b2x1bWUgeyAx
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKaW5kZXggNjNkNGViZTIwMGFiMWYzNjVhODNlZmUzZTEzZmY2NTRkNTdiOGJmOS4u
MmMwZGY1YjlmNTQ5Njg0N2VkNjY5MTBiZjJmMzliMmNkYzYwY2EwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtOTMs
OCArOTMsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSB7IH0KICAgICB9OwotICAgIHZv
aWQgYWRkQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5hZGQoY2xpZW50KTsgfQot
ICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENsaWVudCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUo
Y2xpZW50KTsgfQorICAgIHZvaWQgYWRkQ2xpZW50KGNvbnN0IENsaWVudCYgY2xpZW50KSB7IG1f
Y2xpZW50cy5hZGQoY2xpZW50KTsgfQorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KGNvbnN0IENsaWVu
dCYgY2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsgfQogCiBwcml2YXRlOgogICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaAppbmRleCAwZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2
ZGM5NWY1ODFhLi4yYTNjMjY0NTVjYTZmNTY1YWVjNDIzNDliMjExYjUxOGEwZTIwNzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9
CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWVyOyB9CiAKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSYmKTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3Rh
dGUmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggMzlkMmMzZmY3NGY4MWUx
Y2Y0ZjAyMjhiZDUxZmQ5NDFhODRjMDNkOS4uYmE1MGZiYzc0NDZkNzAxODE0NjZhZDUxNzM4MTMy
ZmIwMDc4YzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMjY1LDEyICsy
NjUsMzAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3Mo
Ym9vbCB1c2VHUFVQcm9jZXNzKQogCiBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikg
ewogICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gJldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CisgICAgfQogCiAgICAgcmV0dXJuICptX2dwdVBy
b2Nlc3NDb25uZWN0aW9uOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgY29ubmVjdGlv
bikKK3sKKyAgICBBU1NFUlQobV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9PSAmY29ubmVjdGlvbik7
CisgICAgY29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKnRoaXMpOworCisgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbiA9IG51bGxwdHI7CisKKyAgICBhdXRvIHBsYXllcnMgPSBtX3BsYXllcnM7Cisg
ICAgZm9yIChhdXRvJiBwbGF5ZXIgOiBwbGF5ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChw
bGF5ZXIpIHsKKyAgICAgICAgICAgIHBsYXllci0+cGxheWVyKCktPnJlbG9hZEFuZFJlc3VtZVBs
YXliYWNrSWZOZWVkZWQoKTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBsYXll
ciwgInJlbG9hZEFuZFJlc3VtZVBsYXliYWNrSWZOZWVkZWQgc2hvdWxkIGRlc3Ryb3kgdGhpcyBw
bGF5ZXIgYW5kIGNvbnN0cnVjdCBhIG5ldyBvbmUiKTsKKyAgICAgICAgfQorICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgK
aW5kZXggOWQ4MWEyZmFhNWNhMTk1ZmY0ZjdjMzA0MmI5ODZkNDFkZTFmZjk5Ny4uMWQ2YjNlZTNl
OTVlODBhZTg2MGU5NjZiOGM5MjczZDA4NjUzYThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uOwogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIKICAgICA6IHB1YmxpYyBXZWJQ
cm9jZXNzU3VwcGxlbWVudAotICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4geworICAgICwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGll
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcihXZWJQcm9jZXNzJik7CkBAIC03Miw2ICs3Miw5IEBA
IHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKICAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIGZpbmFsOwogCisgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOworCiAgICAgZnJpZW5kIGNs
YXNzIE1lZGlhUGxheWVyUmVtb3RlRmFjdG9yeTsKICAgICB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjcyhXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2N2Y4NjExMjNhNjgzMzI4OGUzZGI0MTQ2ZGIzNWE4ZTYw
ZWM5YTljLi5iZDg2YzgzZjNhN2JhNGFkMjc5YzFiMTdjOTVlNmQwMGE2NzU4MDdhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjAtMTEtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbR1BVUHJvY2Vzc10gQWRkIGJhc2ljIEdQVVByb2Nlc3MgY3Jhc2ggaGFuZGxpbmcgZm9yIG1l
ZGlhIHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKwogMjAyMC0x
MS0xMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2J1
aWxkLndlYmtpdC5vcmddIFVwZGF0ZSBDaGVja091dFNvdXJjZSBzdGVwIGZvciBuZXcgYnVpbGRi
b3QgKGZvbGxvdy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0dQVVByb2Nlc3MubW0KaW5kZXggYjA0NzUxMTgyNmY1OTlkYmU1NmYyZjQwMTg0
MmVlMTg1MzY1NThjYi4uOGQ4ODRkMWU3ZDk2MWU3ZjgzYmQxZGViZmQzMTRmYjEwYjE4Zjc3NSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9j
ZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJv
Y2Vzcy5tbQpAQCAtMTk3LDMgKzE5Nyw2NiBAQCBURVNUKEdQVVByb2Nlc3MsIFdlYlByb2Nlc3NU
ZXJtaW5hdGlvbkFmdGVyVG9vTWFueUdQVVByb2Nlc3NDcmFzaGVzKQogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOwogICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9pc1Bs
YXlpbmdBdWRpb10pOwogfQorCitURVNUKEdQVVByb2Nlc3MsIENyYXNoV2hpbGVQbGF5aW5nVmlk
ZW8pCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKF9XS0ludGVybmFsRGVidWdGZWF0dXJl
ICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVyZXNdKSB7Cisg
ICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiVXNlR1BVUHJvY2Vzc0Zv
ck1lZGlhRW5hYmxlZCJdKSB7CisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRFbmFibGVkOllFUyBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdp
dGgtYXVkaW8iXTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Zp
ZGVvJylbMF0ucGxheSgpICYmIHRydWUiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgYXV0byB3ZWJWaWV3UElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVy
XTsKKworICAgIC8vIFRoZSBHUFUgcHJvY2VzcyBzaG91bGQgZ2V0IGxhdW5jaGVkLgorICAgIGF1
dG8qIHByb2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbDsKKyAgICB1
bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vz
c0lkZW50aWZpZXJdICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c2xlZXAoMC4xKTsKKworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nl
c3NJZGVudGlmaWVyXSwgMCk7CisgICAgaWYgKCFbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVu
dGlmaWVyXSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtwcm9j
ZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gQXVkaW8gc2hvdWxkIGJl
IHBsYXlpbmcuCisgICAgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbd2ViVmlldyBfaXNQbGF5
aW5nQXVkaW9dICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9d
KTsKKworICAgIC8vIEtpbGwgdGhlIEdQVSBQcm9jZXNzLgorICAgIGtpbGwoZ3B1UHJvY2Vzc1BJ
RCwgOSk7CisKKyAgICAvLyBHUFUgUHJvY2VzcyBzaG91bGQgZ2V0IHJlbGF1bmNoZWQuCisgICAg
dGltZW91dCA9IDA7CisgICAgd2hpbGUgKCghW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRp
Zmllcl0gfHwgW3Byb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0gPT0gZ3B1UHJvY2Vz
c1BJRCkgJiYgdGltZW91dCsrIDwgMTAwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
bGVlcCgwLjEpOworICAgIEVYUEVDVF9ORShbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlm
aWVyXSwgMCk7CisgICAgRVhQRUNUX05FKFtwcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZp
ZXJdLCBncHVQcm9jZXNzUElEKTsKKyAgICBncHVQcm9jZXNzUElEID0gW3Byb2Nlc3NQb29sIF9n
cHVQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYlByb2Nlc3Mg
ZGlkIG5vdCBjcmFzaC4KKyAgICBFWFBFQ1RfRVEod2ViVmlld1BJRCwgW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICAvLyBBdWRpbyBzaG91bGQgcmVzdW1lIHBsYXlpbmcu
CisgICAgdGltZW91dCA9IDA7CisgICAgd2hpbGUgKCFbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9d
ICYmIHRpbWVvdXQrKyA8IDEwMCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAo
MC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfaXNQbGF5aW5nQXVkaW9dKTsKKworICAg
IEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBbcHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlm
aWVyXSk7CisgICAgRVhQRUNUX0VRKHdlYlZpZXdQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl0pOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>