<?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>188005</bug_id>
          
          <creation_ts>2018-07-25 08:55:41 -0700</creation_ts>
          <short_desc>[GTK][WPE] Improve the way request displayRefresh notifications</short_desc>
          <delta_ts>2018-08-21 07:00:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>188793</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1445035</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-07-25 08:55:41 -0700</bug_when>
    <thetext>Currently, when we want to receive displayRefresh notifications, we directly schedule updates from ThreadedCompositor::requestDisplayRefreshMonitorUpdate and ThreadedCompositor::handleDisplayRefreshMonitorUpdate. But these updates are not properly coordinated with updates that may come from layer flushes, and they cause delays and even dropped frames in some animations that use rAF.

What should happen instead is that when we want to force repaints, we should perform a layer flush and then a painting that reflects the changes caused during that flush.

This way there are only 3 possibilities to cause repaints in the ThreadedCompositor:
- layer flush updates
- animations handled in the compositor thread
- arrival of new video frames</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445041</commentid>
    <comment_count>1</comment_count>
      <attachid>345762</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-07-25 09:09:07 -0700</bug_when>
    <thetext>Created attachment 345762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445043</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-25 09:12:05 -0700</bug_when>
    <thetext>Attachment 345762 did not pass style-queue:


ERROR: Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:59:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445338</commentid>
    <comment_count>3</comment_count>
      <attachid>345762</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-07-26 00:27:05 -0700</bug_when>
    <thetext>Comment on attachment 345762
Patch

Looks OK, but let me apply &amp; test it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445427</commentid>
    <comment_count>4</comment_count>
      <attachid>345762</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-26 08:44:52 -0700</bug_when>
    <thetext>Comment on attachment 345762
Patch

Clearing flags on attachment: 345762

Committed r234259: &lt;https://trac.webkit.org/changeset/234259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445428</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-26 08:44:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450648</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-16 04:03:00 -0700</bug_when>
    <thetext>I&apos;ve noticed that lately the matrix web applications uses a lot more CPU in the web process, and I&apos;ve checked that WTF::memoryFootprint() is called often. That comes from WTF::MemoryPressureHandler::currentMemoryUsagePolicy() used to decide the compositing policy, but the origin is in the threaded refresh monitor. So, I wonder if this patch could be the cause. It happens even when the application is not visible, the bt is always the same:

Thread 1 (Thread 0x7fe2db0409c0 (LWP 30970)):
#0  0x00007fe2e1ae5204 in __GI___libc_read (fd=67, buf=0x55a38c0716d0, nbytes=1024) at ../sysdeps/unix/sysv/linux/read.c:27
#1  0x00007fe2e1a77838 in _IO_new_file_underflow (fp=0x55a38c24cd00) at fileops.c:531
#2  0x00007fe2e1a6b9ac in _IO_getdelim (lineptr=0x7ffccbe42a50, n=0x7ffccbe42a58, delimiter=10, fp=0x55a38c24cd00) at iogetdelim.c:114
#3  0x00007fe2ed801fd7 in WTF::memoryFootprint() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#4  0x00007fe2ed7f97f6 in WTF::MemoryPressureHandler::currentMemoryUsagePolicy() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#5  0x00007fe2ed1e1cdd in WebCore::RenderLayerCompositor::updateCompositingPolicy() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#6  0x00007fe2ed1e1eec in WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#7  0x00007fe2eca6301e in WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#8  0x00007fe2eca6387a in WebCore::Document::updateStyleIfNeeded() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#9  0x00007fe2ec84b372 in WebCore::DocumentTimeline::updateAnimations() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#10 0x00007fe2ec84b585 in WebCore::DocumentAnimationScheduler::displayRefreshFired() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#11 0x00007fe2ecfc77be in WebCore::DisplayRefreshMonitor::displayDidRefresh() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#12 0x00007fe2ec118e38 in WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback() () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#13 0x00007fe2e9c5fa03 in WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&amp;)::{lambda(void*)#1}::_FUN(void*) () from /home/cgarcia/gnome/lib/libjavascriptcoregtk-4.0.so.18
#14 0x00007fe2e3c2a495 in g_main_dispatch (context=0x55a38b668460) at gmain.c:3177
#15 g_main_context_dispatch (context=context@entry=0x55a38b668460) at gmain.c:3830
#16 0x00007fe2e3c2a838 in g_main_context_iterate (context=0x55a38b668460, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at gmain.c:3903
#17 0x00007fe2e3c2ab42 in g_main_loop_run (loop=0x55a38b6eb6e0) at gmain.c:4099
#18 0x00007fe2e9c5fe20 in WTF::RunLoop::run() () from /home/cgarcia/gnome/lib/libjavascriptcoregtk-4.0.so.18
#19 0x00007fe2ec269630 in int WebKit::ChildProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMain&gt;(int, char**) () from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
#20 0x00007fe2e1a1eb17 in __libc_start_main (main=0x55a389a00c30 &lt;main&gt;, argc=3, argv=0x7ffccbe434d8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, 
    stack_end=0x7ffccbe434c8) at ../csu/libc-start.c:310
#21 0x000055a389a00cba in _start ()

I had to disable AC for matrix. I wonder why matrix uses AC all the time too, with the ondemand mode, it used to be disabled most of the time. Now it seems to be always enabled and the threaded refresh monitor is being fired even when there isn&apos;t any animation and the web view is not even visible or active.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451073</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-17 03:54:10 -0700</bug_when>
    <thetext>I&apos;ve reverted this and my laptops fans are quiet again, so this seems to be the cause of the excessive cpu usage. Since we have just branched, I&apos;ll revert it only in the stable branch, once the fix lands in trunk I&apos;ll backport both patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451088</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 05:58:35 -0700</bug_when>
    <thetext>I suggest we revert it in trunk too. Let&apos;s keep trunk in good state. We don&apos;t want this to come back to surprise us in six months. And if nothing else, it&apos;s important for Ephy Tech Preview.

No doubt Miguel will be able to look at this when he returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451090</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 06:09:12 -0700</bug_when>
    <thetext>We agreed to rollout and wait for Miguel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451091</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 06:15:47 -0700</bug_when>
    <thetext>Reverted r234259 for reason:

Caused excessive CPU usage

Committed r234981: &lt;https://trac.webkit.org/changeset/234981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451096</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-08-17 06:28:47 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; I&apos;ve noticed that lately the matrix web applications uses a lot more CPU in
&gt; the web process, and I&apos;ve checked that WTF::memoryFootprint() is called
&gt; often. That comes from
&gt; WTF::MemoryPressureHandler::currentMemoryUsagePolicy() used to decide the
&gt; compositing policy, but the origin is in the threaded refresh monitor. So, I
&gt; wonder if this patch could be the cause. It happens even when the
&gt; application is not visible, the bt is always the same:
&gt; 
&gt; Thread 1 (Thread 0x7fe2db0409c0 (LWP 30970)):
&gt; #0  0x00007fe2e1ae5204 in __GI___libc_read (fd=67, buf=0x55a38c0716d0,
&gt; nbytes=1024) at ../sysdeps/unix/sysv/linux/read.c:27
&gt; #1  0x00007fe2e1a77838 in _IO_new_file_underflow (fp=0x55a38c24cd00) at
&gt; fileops.c:531
&gt; #2  0x00007fe2e1a6b9ac in _IO_getdelim (lineptr=0x7ffccbe42a50,
&gt; n=0x7ffccbe42a58, delimiter=10, fp=0x55a38c24cd00) at iogetdelim.c:114
&gt; #3  0x00007fe2ed801fd7 in WTF::memoryFootprint() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #4  0x00007fe2ed7f97f6 in
&gt; WTF::MemoryPressureHandler::currentMemoryUsagePolicy() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #5  0x00007fe2ed1e1cdd in
&gt; WebCore::RenderLayerCompositor::updateCompositingPolicy() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #6  0x00007fe2ed1e1eec in
&gt; WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #7  0x00007fe2eca6301e in
&gt; WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #8  0x00007fe2eca6387a in WebCore::Document::updateStyleIfNeeded() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #9  0x00007fe2ec84b372 in WebCore::DocumentTimeline::updateAnimations() ()
&gt; from /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #10 0x00007fe2ec84b585 in
&gt; WebCore::DocumentAnimationScheduler::displayRefreshFired() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #11 0x00007fe2ecfc77be in
&gt; WebCore::DisplayRefreshMonitor::displayDidRefresh() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #12 0x00007fe2ec118e38 in
&gt; WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback() () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #13 0x00007fe2e9c5fa03 in
&gt; WTF::RunLoop::TimerBase::TimerBase(WTF::RunLoop&amp;)::{lambda(void*)#1}::
&gt; _FUN(void*) () from /home/cgarcia/gnome/lib/libjavascriptcoregtk-4.0.so.18
&gt; #14 0x00007fe2e3c2a495 in g_main_dispatch (context=0x55a38b668460) at
&gt; gmain.c:3177
&gt; #15 g_main_context_dispatch (context=context@entry=0x55a38b668460) at
&gt; gmain.c:3830
&gt; #16 0x00007fe2e3c2a838 in g_main_context_iterate (context=0x55a38b668460,
&gt; block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at
&gt; gmain.c:3903
&gt; #17 0x00007fe2e3c2ab42 in g_main_loop_run (loop=0x55a38b6eb6e0) at
&gt; gmain.c:4099
&gt; #18 0x00007fe2e9c5fe20 in WTF::RunLoop::run() () from
&gt; /home/cgarcia/gnome/lib/libjavascriptcoregtk-4.0.so.18
&gt; #19 0x00007fe2ec269630 in int WebKit::ChildProcessMain&lt;WebKit::WebProcess,
&gt; WebKit::WebProcessMain&gt;(int, char**) () from
&gt; /home/cgarcia/gnome/lib/libwebkit2gtk-4.0.so.37
&gt; #20 0x00007fe2e1a1eb17 in __libc_start_main (main=0x55a389a00c30 &lt;main&gt;,
&gt; argc=3, argv=0x7ffccbe434d8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;,
&gt; rtld_fini=&lt;optimized out&gt;, 
&gt;     stack_end=0x7ffccbe434c8) at ../csu/libc-start.c:310
&gt; #21 0x000055a389a00cba in _start ()
&gt; 
&gt; I had to disable AC for matrix. I wonder why matrix uses AC all the time
&gt; too, with the ondemand mode, it used to be disabled most of the time. Now it
&gt; seems to be always enabled and the threaded refresh monitor is being fired
&gt; even when there isn&apos;t any animation and the web view is not even visible or
&gt; active.

This problem is more likely due to r234330, which introduced repeated memory policy checks. But more indirectly, high CPU usage is due to the wasteful way that the memory footprint value is gathered on Linux.
https://trac.webkit.org/changeset/234330/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451098</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-08-17 06:31:51 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #11)
&gt; This problem is more likely due to r234330, which introduced repeated memory
&gt; policy checks. But more indirectly, high CPU usage is due to the wasteful
&gt; way that the memory footprint value is gathered on Linux.
&gt; https://trac.webkit.org/changeset/234330/webkit

Confirmed, CPU usage goes bonkers with or without this patch on the following site:
https://inexorabletash.github.io/polyfill/demos/raf.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451106</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 07:13:13 -0700</bug_when>
    <thetext>Should we revert this rollout, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451107</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 07:15:07 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #12)
&gt; Confirmed, CPU usage goes bonkers with or without this patch on the
&gt; following site:
&gt; https://inexorabletash.github.io/polyfill/demos/raf.html

Warning: don&apos;t open that page unless you&apos;re prepared to cut power to your machine :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451169</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 11:21:41 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; Warning: don&apos;t open that page unless you&apos;re prepared to cut power to your
&gt; machine :(

Ah, it&apos;s fine, I just forgot I was compiling stuff at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451558</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-20 02:24:03 -0700</bug_when>
    <thetext>without the patch the refresh monitor is not firing all the time in matrix app.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451574</commentid>
    <comment_count>17</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-08-20 05:33:16 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #16)
&gt; without the patch the refresh monitor is not firing all the time in matrix
&gt; app.

That&apos;s not necessarily wrong. We need extra flushes for correct display of the latest scene state in combination with requestAnimationFrame() requests.

Layer flushes on their own can still be expensive because of potential painting that might be done during the process. That can&apos;t be improved ATM.

But the pain point here is the way we gather memory footprint information. That&apos;s too expensive to be done on every frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451577</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-20 05:39:40 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #17)
&gt; (In reply to Carlos Garcia Campos from comment #16)
&gt; &gt; without the patch the refresh monitor is not firing all the time in matrix
&gt; &gt; app.
&gt; 
&gt; That&apos;s not necessarily wrong. We need extra flushes for correct display of
&gt; the latest scene state in combination with requestAnimationFrame() requests.

But this is happening all the time, even when nothing is happening in the app, and even when the matrix app is in the background. I would expect that a) AC mode should be disabled in those cases, b) even in AC mode, no layer flushes happen, painting should be suspended. For some reason it seems that WebKit thinks there&apos;s an active animation, bu there&apos;s nothing.

&gt; Layer flushes on their own can still be expensive because of potential
&gt; painting that might be done during the process. That can&apos;t be improved ATM.
&gt; 
&gt; But the pain point here is the way we gather memory footprint information.
&gt; That&apos;s too expensive to be done on every frame.

But that&apos;s a separated issue, memory footprint parsing wasn&apos;t supposed to be called so often and it&apos;s an expensive operation. We could try to improve that too, but I think it&apos;s not the main cause of this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452037</commentid>
    <comment_count>19</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-08-21 05:06:01 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #18)
&gt; (In reply to Zan Dobersek from comment #17)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #16)
&gt; &gt; &gt; without the patch the refresh monitor is not firing all the time in matrix
&gt; &gt; &gt; app.
&gt; &gt; 
&gt; &gt; That&apos;s not necessarily wrong. We need extra flushes for correct display of
&gt; &gt; the latest scene state in combination with requestAnimationFrame() requests.
&gt; 
&gt; But this is happening all the time, even when nothing is happening in the
&gt; app, and even when the matrix app is in the background. I would expect that
&gt; a) AC mode should be disabled in those cases, b) even in AC mode, no layer
&gt; flushes happen, painting should be suspended. For some reason it seems that
&gt; WebKit thinks there&apos;s an active animation, bu there&apos;s nothing.
&gt; 

If the Matrix app is in the background but animations are still going, then there&apos;s a problem with composition suspension.

But even when in the foreground, if the app request an animation frame but changes nothing in the content, the frame notification has to be delivered. This patch enforced layer flushes in these cases because only this way we can correctly handle any pending changes in the content.

&gt; &gt; Layer flushes on their own can still be expensive because of potential
&gt; &gt; painting that might be done during the process. That can&apos;t be improved ATM.
&gt; &gt; 
&gt; &gt; But the pain point here is the way we gather memory footprint information.
&gt; &gt; That&apos;s too expensive to be done on every frame.
&gt; 
&gt; But that&apos;s a separated issue, memory footprint parsing wasn&apos;t supposed to be
&gt; called so often and it&apos;s an expensive operation. We could try to improve
&gt; that too, but I think it&apos;s not the main cause of this issue.

Why is it not the main cause of this issue? It&apos;s what was causing the high CPU usage on the Matrix app, which is still a problem on any continuous animation example. Revert of this patch only fixed the Matrix app.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452082</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-21 07:00:00 -0700</bug_when>
    <thetext>The rollout has been rolled out -&gt; RESOLVED FIXED.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345762</attachid>
            <date>2018-07-25 09:09:07 -0700</date>
            <delta_ts>2018-07-26 08:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188005-20180725180905.patch</filename>
            <type>text/plain</type>
            <size>22626</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQwNTNjMTFkYTkyYWVhOWFk
YzdmZThiNmFjNzBkYjMxZjBkNTE0ZWEuLmI3YWZlZDg2ZGYzZGFhMTM3ZjNhYTI0NWFmZjdjYTFh
YTg0Yzc5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTgtMDctMjUgIE1pZ3VlbCBH
b21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEltcHJvdmUg
dGhlIHdheSByZXF1ZXN0IGRpc3BsYXlSZWZyZXNoIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODAwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBpbnRlcmZhY2Ug
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVudCBhbmQgdXNlIGl0IHRvIHBpcGUg
dGhlIHRoZQorICAgICAgICByZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlIGFuZCBo
YW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUgdG8gdGhlCisgICAgICAgIFRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LgorCisgICAgICAgIEluIHJlc3BvbnNlIHRvIHJlcXVl
c3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUsIHRoZSBMYXllclRyZWVIb3N0IHdpbGwgZm9y
Y2UgYSBsYXllcgorICAgICAgICBmbHVzaCB0aGF0IGluIHRoZSBlbmQgY2F1c2VzIGEgcmVwYWlu
dCwgd2hpY2ggZ2VuZXJhdGVzIHRoZSByZXF1ZXN0ZWQgZGlzcGxheSByZWZyZXNoCisgICAgICAg
IGV2ZW50LgorCisgICAgICAgIEluIHJlc3BvbnNlIHRvIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9u
aXRvclVwZGF0ZSwgdGhlIGNhbGwgdG8gcmVuZGVyTmV4dEZyYW1lIHdpbGwgaGFwcGVuLAorICAg
ICAgICBhbmQgaWYgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvciBoYXMgYmVlbiByZXNjaGVkdWxl
ZCwgcmVuZGVyTmV4dEZyYW1lIHdpbGwgYWxzbyBmb3JjZQorICAgICAgICBhIG5ldyBsYXllciBm
bHVzaCwgY2F1c2luZyB0aGUgcmVwYWludCB0aGF0IHdpbGwgZ2VuZXJhdGUgdGhlIGRpc3BsYXkg
cmVmcmVoIGV2ZW50LgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IpOgorICAgICAgICAoV2ViS2l0OjptX2Rpc3Bs
YXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6
aGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpyZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OlRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVm
cmVzaENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJl
c2hNb25pdG9yLmg6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaExheWVyc0FuZEZvcmNlUmVwYWludCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6VGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpoYW5k
bGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lmg6CisKIDIwMTgtMDctMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5hYmxlIFdlYiBDb250ZW50IEZpbHRlcmluZyBvbiB3YXRjaE9TCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcAppbmRleCA2ZjFmZjJjOTNlN2E2MTk4NTNhMmE2ODdhODYxODZjMWQ2YTU1NzU2Li4yY2Rj
MWZmYjlhMzc1YWE2NTA2M2Q4ZWM1ZDZmNWQwZDliNzgxYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTQ1
LDE4ICs0NSwxOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUo
Q2xpZW50JiBjbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgU2hvdWxkRG9GcmFtZVN5bmMgZG9G
cmFtZVN5bmMsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgcGFpbnRGbGFncykKK1JlZjxUaHJl
YWRlZENvbXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVudCYgY2xpZW50
LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgU2hvdWxkRG9GcmFtZVN5bmMgZG9GcmFt
ZVN5bmMsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgcGFpbnRGbGFncykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRlZENvbXBvc2l0b3IoY2xpZW50LCBkaXNwbGF5SUQsIHZp
ZXdwb3J0U2l6ZSwgc2NhbGVGYWN0b3IsIGRvRnJhbWVTeW5jLCBwYWludEZsYWdzKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkZWRDb21wb3NpdG9yKGNsaWVudCwgZGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50LCBkaXNwbGF5SUQsIHZpZXdwb3J0U2l6ZSwgc2NhbGVGYWN0b3Is
IGRvRnJhbWVTeW5jLCBwYWludEZsYWdzKSk7CiB9CiAKLVRocmVhZGVkQ29tcG9zaXRvcjo6VGhy
ZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbGVGYWN0b3IsIFNob3Vs
ZERvRnJhbWVTeW5jIGRvRnJhbWVTeW5jLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50
RmxhZ3MpCitUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNs
aWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVudCYgZGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbGVGYWN0b3IsIFNob3VsZERvRnJhbWVTeW5jIGRv
RnJhbWVTeW5jLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX2RvRnJhbWVTeW5jKGRvRnJhbWVTeW5jKQogICAgICwg
bV9wYWludEZsYWdzKHBhaW50RmxhZ3MpCiAgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6
Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVl
KCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1Ip
Ci0gICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgKnRoaXMpKQorICAgICwgbV9kaXNwbGF5UmVmcmVzaE1v
bml0b3IoVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKIHsKICAgICB7CkBAIC0zMDQsMjIg
KzMwNCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFRocmVhZGVk
Q29tcG9zaXRvcjo6ZGlzcGxheVJlZnJlc2hNb25pdG9yCiAgICAgcmV0dXJuIG1fZGlzcGxheVJl
ZnJlc2hNb25pdG9yLmNvcHlSZWYoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJl
cXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKQotewotICAgIC8vIFRoaXMgaXMgaW52
b2tlZCBieSBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvciB3aGVuIGEgZnJlc2ggdXBkYXRl
IGlzIHJlcXVpcmVkLgotCi0gICAgTG9ja0hvbGRlciBzdGF0ZUxvY2tlcihtX2NvbXBvc2l0aW5n
UnVuTG9vcC0+c3RhdGVMb2NrKCkpOwotICAgIHsKLSAgICAgICAgLy8gY29vcmRpbmF0ZVVwZGF0
ZUNvbXBsZXRpb25XaXRoQ2xpZW50IGlzIHNldCB0byB0cnVlIGluIG9yZGVyIHRvIGRlbGF5IHRo
ZSBzY2VuZSB1cGRhdGUKLSAgICAgICAgLy8gY29tcGxldGlvbiB1bnRpbCB0aGUgRGlzcGxheVJl
ZnJlc2hNb25pdG9yIGlzIGZpcmVkIG9uIHRoZSBtYWluIHRocmVhZCBhZnRlciB0aGUgY29tcG9z
aXRpb24KLSAgICAgICAgLy8gaXMgY29tcGxldGVkLgotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2F0dHJpYnV0ZXMubG9jayk7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jb29yZGluYXRlVXBk
YXRlQ29tcGxldGlvbldpdGhDbGllbnQgPSB0cnVlOwotICAgIH0KLSAgICBtX2NvbXBvc2l0aW5n
UnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoc3RhdGVMb2NrZXIpOwotfQotCi12b2lkIFRocmVhZGVk
Q29tcG9zaXRvcjo6aGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVl
blJlc2NoZWR1bGVkKQordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmhhbmRsZURpc3BsYXlSZWZy
ZXNoTW9uaXRvclVwZGF0ZSgpCiB7CiAgICAgLy8gUmV0cmlldmUgY29vcmRpbmF0ZVVwZGF0ZUNv
bXBsZXRpb25XaXRoQ2xpZW50LgogICAgIGJvb2wgY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25X
aXRoQ2xpZW50IHsgZmFsc2UgfTsKQEAgLTMyOCwxMiArMzEzLDYgQEAgdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sIGhhc0JlZW5S
ZXNjaGVkdWwKICAgICAgICAgY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRoQ2xpZW50ID0g
c3RkOjpleGNoYW5nZShtX2F0dHJpYnV0ZXMuY29vcmRpbmF0ZVVwZGF0ZUNvbXBsZXRpb25XaXRo
Q2xpZW50LCBmYWxzZSk7CiAgICAgfQogCi0gICAgLy8gVGhlIGNsaWVudCBpcyBmaW5hbGx5IG5v
dGlmaWVkIGFib3V0IHRoZSBzY2VuZSB1cGRhdGUgbmVhcmluZyBjb21wbGV0aW9uLiBUaGUgY2xp
ZW50IHdpbGwgdXNlIHRoaXMKLSAgICAvLyBvcHBvcnR1bml0eSB0byBjbGVhbiB1cCByZXNvdXJj
ZXMgYXMgYXBwcm9wcmlhdGUuIEl0IGNhbiBhbHNvIHBlcmZvcm0gYW55IGxheWVyIGZsdXNoIHRo
YXQgd2FzCi0gICAgLy8gcmVxdWVzdGVkIGR1cmluZyB0aGUgY29tcG9zaXRpb24sIG9yIGJ5IGFu
eSBEaXNwbGF5UmVmcmVzaE1vbml0b3Igbm90aWZpY2F0aW9ucyB0aGF0IGhhdmUgYmVlbgotICAg
IC8vIGhhbmRsZWQgYXQgdGhpcyBwb2ludC4KLSAgICBtX2NsaWVudC5yZW5kZXJOZXh0RnJhbWUo
KTsKLQogICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9jb21wb3NpdGluZ1J1bkxvb3AtPnN0
YXRlTG9jaygpKTsKIAogICAgIC8vIElmIHJlcXVpcmVkLCBtYXJrIHRoZSBjdXJyZW50IHNjZW5l
IHVwZGF0ZSBhcyBjb21wbGV0ZWQuIENvbXBvc2l0aW5nUnVuTG9vcCB3aWxsIHRha2UgY2FyZSBv
ZgpAQCAtMzQxLDE2ICszMjAsNiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6aGFuZGxlRGlz
cGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bAogICAgIC8vIG9y
IERpc3BsYXlSZWZyZXNoTW9uaXRvciBub3RpZmljYXRpb25zLgogICAgIGlmIChjb29yZGluYXRl
VXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQpCiAgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT51cGRhdGVDb21wbGV0ZWQoc3RhdGVMb2NrZXIpOwotCi0gICAgLy8gSWYgdGhlIERpc3BsYXlS
ZWZyZXNoTW9uaXRvciB3YXMgc2NoZWR1bGVkIGFnYWluLCB3ZSBpbW1lZGlhdGVseSBkZW1hbmQg
dGhlIHVwZGF0ZSBjb21wbGV0aW9uCi0gICAgLy8gY29vcmRpbmF0aW9uIChsaWtlIHdlIGRvIGlu
IHJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKSkgYW5kIHJlcXVlc3QgYW4gdXBk
YXRlLgotICAgIGlmIChoYXNCZWVuUmVzY2hlZHVsZWQpIHsKLSAgICAgICAgewotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOwotICAgICAgICAgICAgbV9h
dHRyaWJ1dGVzLmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKHN0
YXRlTG9ja2VyKTsKLSAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAppbmRleCAwMzdmZDc3MGM0MzEy
YTllYzgwMTY5MDMzYzFkZTkzMTNkMWVjOWI3Li40MmIyNDZkMmIwNjlkNjQxYjczOWJkNWM4MzFj
ZWVlM2U1OWRlZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtMzksMTQgKzM5LDEzIEBACiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUVfRElTUExBWV9NT05JVE9SKQotI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmg+CisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50OwotY2xhc3MgVGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3I7CiAKIGNsYXNzIFRocmVhZGVkQ29tcG9zaXRvciA6IHB1Ymxp
YyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxUaHJlYWRlZENvbXBvc2l0b3I+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJl
YWRlZENvbXBvc2l0b3IpOwpAQCAtNTQsOCArNTMsNiBAQCBjbGFzcyBUaHJlYWRlZENvbXBvc2l0
b3IgOiBwdWJsaWMgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50LCBwdWJsaWMgVGhyZWFk
UwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwotCiAgICAgICAgIHZpcnR1YWwgdWludDY0
X3QgbmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGVzdHJveUdMQ29udGV4dCgpID0gMDsKIApAQCAtNjUsNyArNjIsNyBAQCBw
dWJsaWM6CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZERvRnJhbWVTeW5jIHsgTm8sIFllcyB9Owog
Ci0gICAgc3RhdGljIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IGNyZWF0ZShDbGllbnQmLCBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNj
YWxlRmFjdG9yLCBTaG91bGREb0ZyYW1lU3luYyA9IFNob3VsZERvRnJhbWVTeW5jOjpZZXMsIFdl
YkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsKKyAgICBzdGF0aWMgUmVmPFRo
cmVhZGVkQ29tcG9zaXRvcj4gY3JlYXRlKENsaWVudCYsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpDbGllbnQmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlRmFjdG9yLCBTaG91bGREb0ZyYW1lU3luYyA9IFNob3Vs
ZERvRnJhbWVTeW5jOjpZZXMsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAw
KTsKICAgICB2aXJ0dWFsIH5UaHJlYWRlZENvbXBvc2l0b3IoKTsKIAogICAgIHZvaWQgc2V0TmF0
aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KTsKQEAgLTgyLDE0ICs3OSwx
MyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQogICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGRpc3Bs
YXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7Ci0gICAgdm9pZCBy
ZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7Ci0gICAgdm9pZCBoYW5kbGVEaXNw
bGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQpOworICAgIHZv
aWQgaGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgZnJhbWVDb21wbGV0ZSgpOwogCiBwcml2YXRlOgotICAgIFRocmVhZGVkQ29tcG9zaXRvcihD
bGllbnQmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIGZsb2F0IHNjYWxlRmFjdG9yLCBTaG91bGREb0ZyYW1lU3luYywgV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlcjo6UGFpbnRGbGFncyk7CisgICAgVGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYsIFRo
cmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQmLCBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlRmFjdG9yLCBTaG91
bGREb0ZyYW1lU3luYywgV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyk7CiAKICAg
ICAvLyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQKICAgICB2b2lkIHVwZGF0ZVZpZXdw
b3J0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggNTE0
ODdiOTk4YzM2OWUyMWNjODA5ZDE4NWIzM2QwNmYyMThjZGQxZi4uZDA4OGYyODE1MmQ3MTNhNjE5
ZTM2MTFhN2UzMWRhZmFmZjc5ZDk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cApAQCAtMzcsMTAgKzM3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1UaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBUaHJlYWRlZENvbXBvc2l0b3ImIGNvbXBv
c2l0b3IpCitUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6VGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBDbGllbnQm
IGNsaWVudCkKICAgICA6IFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQp
CiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2spCi0gICAg
LCBtX2NvbXBvc2l0b3IoJmNvbXBvc2l0b3IpCisgICAgLCBtX2NsaWVudCgmY2xpZW50KQogewog
I2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnNldFBy
aW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIp
OwpAQCAtNTAsNyArNTAsNyBAQCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6VGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaQogCiBib29sIFRocmVh
ZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAg
ICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBib29sIHByZXZpb3VzRnJhbWVEb25lIHsgZmFsc2UgfTsKQEAgLTY0LDcg
KzY0LDcgQEAgYm9vbCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCiAgICAgLy8gcmVmcmVzaCBub3RpZmljYXRpb25zIHVuZGVyIFRocmVhZGVk
RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkuCiAgICAgLy8g
QW55IHN1Y2ggc2NoZWR1bGUgcmVxdWVzdCBpcyBoYW5kbGVkIGluIHRoYXQgbWV0aG9kIGFmdGVy
IHRoZSBub3RpZmljYXRpb25zLgogICAgIGlmIChwcmV2aW91c0ZyYW1lRG9uZSkKLSAgICAgICAg
bV9jb21wb3NpdG9yLT5yZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CisgICAg
ICAgIG1fY2xpZW50LT5yZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6cmVxdWlyZXNEaXNwbGF5UmVmcmVzaENhbGxiYWNrKCkKIAogdm9pZCBU
aHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGF0Y2hEaXNwbGF5UmVmcmVzaENhbGxi
YWNrKCkKIHsKLSAgICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICBpZiAoIW1fY2xpZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwogfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwYXRjaERpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogdm9pZCBUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgbV9kaXNwbGF5UmVmcmVzaFRpbWVy
LnN0b3AoKTsKLSAgICBtX2NvbXBvc2l0b3IgPSBudWxscHRyOworICAgIG1fY2xpZW50ID0gbnVs
bHB0cjsKIH0KIAogdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJl
ZnJlc2hDYWxsYmFjaygpCkBAIC0xMTEsOCArMTExLDggQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCiAgICAgLy8gTm90aWZ5IHRo
ZSBjb21wb3NpdG9yIGFib3V0IHRoZSBjb21wbGV0ZWQgRGlzcGxheVJlZnJlc2hNb25pdG9yIHVw
ZGF0ZSwgcGFzc2luZwogICAgIC8vIGFsb25nIGluZm9ybWF0aW9uIGFib3V0IGFueSBzY2hlZHVs
ZSByZXF1ZXN0IHRoYXQgbWlnaHQgaGF2ZSBvY2N1cnJlZCBkdXJpbmcKICAgICAvLyB0aGUgbm90
aWZpY2F0aW9uIGhhbmRsaW5nLgotICAgIGlmIChtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29t
cG9zaXRvci0+aGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVk
dWxlZCk7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+aGFuZGxlRGlzcGxh
eVJlZnJlc2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVkdWxlZCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXggZDBiMDdmMzE2
ZTM0NWI3NTVhYzI0MDZmZmEwMTAzZjIzMmVkMmZiZC4uNDg3ZTY2MDc0ZjI3OTMyMWJmODllYmEz
YWI5ZWY4MDkxNGEzZDMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBAIC0zNiw5
ICszNiwxNSBAQCBjbGFzcyBUaHJlYWRlZENvbXBvc2l0b3I7CiAKIGNsYXNzIFRocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gY3JlYXRlKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgVGhyZWFkZWRD
b21wb3NpdG9yJiBjb21wb3NpdG9yKQorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVw
ZGF0ZShib29sKSA9IDA7CisgICAgfTsKKworICAgIHN0YXRpYyBSZWY8VGhyZWFkZWREaXNwbGF5
UmVmcmVzaE1vbml0b3I+IGNyZWF0ZShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQsIENsaWVudCYgY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlELCBjb21wb3NpdG9yKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
KGRpc3BsYXlJRCwgY2xpZW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yKCkgPSBkZWZhdWx0OwogCkBAIC00OSwxMSArNTUsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgotICAgIFRocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBUaHJlYWRlZENvbXBv
c2l0b3ImKTsKKyAgICBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCwgQ2xpZW50Jik7CiAKICAgICB2b2lkIGRpc3BsYXlSZWZyZXNoQ2FsbGJh
Y2soKTsKICAgICBSdW5Mb29wOjpUaW1lcjxUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
bV9kaXNwbGF5UmVmcmVzaFRpbWVyOwotICAgIFRocmVhZGVkQ29tcG9zaXRvciogbV9jb21wb3Np
dG9yOworICAgIENsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcAppbmRleCA3NTEyM2M5NzdiNmM5MmY4Y2RiNDNmNzkyMDY4ZWUyYTVjZTkxODdlLi43
MDkyZmM1MzIwYjgxYmI5NGQ2NjAzNjg3MmJhOTBmYjQwMzI0ZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0x
NDUsNyArMTQ1LDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHNjaGVkdWxlTGF5ZXJGbHVz
aCgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1l
KCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9vbCBm
b3JjZVJlcGFpbnQpCiB7CiAgICAgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciA9IGZhbHNlOwogICAg
IGJvb2wgc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIgPSBzdGQ6OmV4Y2hhbmdlKG1f
c2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIsIGZhbHNlKTsKQEAgLTE2Nyw4ICsxNjcs
MTAgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSgpCiAg
ICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoID0gZmFsc2U7CiAgICAg
fQogCi0gICAgaWYgKHNjaGVkdWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyIHx8IG1fbGF5ZXJG
bHVzaFRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICBpZiAoc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9y
UmVuZGVyZXIgfHwgbV9sYXllckZsdXNoVGltZXIuaXNBY3RpdmUoKSB8fCBmb3JjZVJlcGFpbnQp
IHsKICAgICAgICAgbV9sYXllckZsdXNoVGltZXIuc3RvcCgpOworICAgICAgICBpZiAoZm9yY2VS
ZXBhaW50KQorICAgICAgICAgICAgbV9jb29yZGluYXRvci5mb3JjZUZyYW1lU3luYygpOwogICAg
ICAgICBsYXllckZsdXNoVGltZXJGaXJlZCgpOwogICAgIH0KIH0KQEAgLTIwOSw2ICsyMTEsMTUg
QEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgPSB0
cnVlOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hMYXllcnNBbmRG
b3JjZVJlcGFpbnQoKQoreworICAgIGlmIChtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX2xheWVyRmx1c2hUaW1lci5zdG9wKCk7CisKKyAgICBtX2Nvb3JkaW5hdG9yLmZv
cmNlRnJhbWVTeW5jKCk7CisgICAgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKK30KKwogdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
CiB7CiAgICAgbV9jb29yZGluYXRvci5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IDUwNjFiNzVkZGE5ZGVmYjhlMzFlMzE1ZWFhNmIzZDEwZjM4MDZiZjYuLjBhOGJl
YzhhMzk4NmNlYTJhODBkYTUwOTkyYWJhMmE4MzFjMzUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTgsNyArNTgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5n
ZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOworICAgIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKGJvb2wpOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZh
Y3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAKQEAgLTcxLDYgKzcxLDgg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpIG92ZXJyaWRlIHsg
c2NoZWR1bGVMYXllckZsdXNoKCk7IH07CiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0
IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwogCisgICAgdm9p
ZCBmbHVzaExheWVyc0FuZEZvcmNlUmVwYWludCgpOworCiBwcml2YXRlOgogICAgIHZvaWQgbGF5
ZXJGbHVzaFRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA1NDE5
ODUxZTExMjcwOGE2M2IzODVjZmQ2NmQwYzdhNDY0MTk5ZmRjLi5kOTlmMTZiY2U3NTA1OTc0NDhi
MWRhNzk3NzliYjM1OGRmZDM4ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNzcs
MTAgKzc3LDEwIEBAIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpUaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQCiAgICAgICAgIGlmIChtX3N1cmZh
Y2UtPnNob3VsZFBhaW50TWlycm9yZWQoKSkKICAgICAgICAgICAgIHBhaW50RmxhZ3MgfD0gVGV4
dHVyZU1hcHBlcjo6UGFpbnRpbmdNaXJyb3JlZDsKIAotICAgICAgICBtX2NvbXBvc2l0b3IgPSBU
aHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShtX2NvbXBvc2l0b3JDbGllbnQsIGNvbXBvc2l0aW5n
RGlzcGxheUlELCBzY2FsZWRTaXplLCBzY2FsZUZhY3RvciwgVGhyZWFkZWRDb21wb3NpdG9yOjpT
aG91bGREb0ZyYW1lU3luYzo6WWVzLCBwYWludEZsYWdzKTsKKyAgICAgICAgbV9jb21wb3NpdG9y
ID0gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUobV9jb21wb3NpdG9yQ2xpZW50LCBtX2NvbXBv
c2l0b3JDbGllbnQsIGNvbXBvc2l0aW5nRGlzcGxheUlELCBzY2FsZWRTaXplLCBzY2FsZUZhY3Rv
ciwgVGhyZWFkZWRDb21wb3NpdG9yOjpTaG91bGREb0ZyYW1lU3luYzo6WWVzLCBwYWludEZsYWdz
KTsKICAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3Vy
ZmFjZUlEKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fY29tcG9zaXRvciA9IFRocmVhZGVkQ29t
cG9zaXRvcjo6Y3JlYXRlKG1fY29tcG9zaXRvckNsaWVudCwgY29tcG9zaXRpbmdEaXNwbGF5SUQs
IHNjYWxlZFNpemUsIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgbV9jb21wb3NpdG9yID0gVGhyZWFk
ZWRDb21wb3NpdG9yOjpjcmVhdGUobV9jb21wb3NpdG9yQ2xpZW50LCBtX2NvbXBvc2l0b3JDbGll
bnQsIGNvbXBvc2l0aW5nRGlzcGxheUlELCBzY2FsZWRTaXplLCBzY2FsZUZhY3Rvcik7CiAKICAg
ICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKGNvbXBvc2l0aW5nRGlzcGxheUlEKTsK
IApAQCAtMTA1LDYgKzEwNSwyMiBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpmcmFtZUNvbXBsZXRlKCkKICAgICBtX2NvbXBvc2l0b3ItPmZyYW1lQ29tcGxldGUoKTsK
IH0KIAordm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVxdWVzdERpc3Bs
YXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpCit7CisgICAgLy8gRmx1c2ggbGF5ZXJzIHRvIGNhdXNl
IGEgcmVwYWludC4gSWYgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciB3YXMgdHJ1ZSBhdCB0aGlzIHBv
aW50LCB0aGUgbGF5ZXIKKyAgICAvLyBmbHVzaCB3b24ndCBkbyBhbnl0aGluZywgYnV0IHRoYXQg
bWVhbnMgdGhlcmUncyBhIHBhaW50aW5nIG9uZ29pbmcgdGhhdCB3aWxsIHNlbmQgdGhlCisgICAg
Ly8gZGlzcGxheSByZWZyZXNoIG5vdGlmaWNhdGlvbiB3aGVuIGl0J3MgZG9uZS4KKyAgICBmbHVz
aExheWVyc0FuZEZvcmNlUmVwYWludCgpOworfQorCit2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpoYW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCBoYXNC
ZWVuUmVzY2hlZHVsZWQpCit7CisgICAgLy8gQ2FsbCByZW5kZXJOZXh0RnJhbWUuIElmIGhhc0Jl
ZW5SZXNjaGVkdWxlZCBpcyB0cnVlLCB0aGUgbGF5ZXIgZmx1c2ggd2lsbCBmb3JjZSBhIHJlcGFp
bnQKKyAgICAvLyB0aGF0IHdpbGwgY2F1c2UgdGhlIGRpc3BsYXkgcmVmcmVzaCBub3RpZmljYXRp
b24gdG8gY29tZS4KKyAgICByZW5kZXJOZXh0RnJhbWUoaGFzQmVlblJlc2NoZWR1bGVkKTsKKyAg
ICBtX2NvbXBvc2l0b3ItPmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOworfQor
CiB1aW50NjRfdCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKCkKIHsKICAgICBpZiAoIW1fc3VyZmFjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuaAppbmRleCA2MjlkZGFmNjFhNzAyODFmYjA4OGViYzFjZmY0ZmM2OGFhZWU3MWEx
Li44N2E3ZGE3MTdjZGQ5YTRlMTE1ODVhNzIyNDVkYzZjZWNlMmZiNWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkZWRDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTcxLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAg
IGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFkZWRDb21wb3NpdG9y
OjpDbGllbnQgeworICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhy
ZWFkZWRDb21wb3NpdG9yOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6Q2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0b3JD
bGllbnQpOwogICAgIHB1YmxpYzoKICAgICAgICAgQ29tcG9zaXRvckNsaWVudChUaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCYgbGF5ZXJUcmVlSG9zdCkKQEAgLTgwLDExICs4MSw2IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgcmVuZGVy
TmV4dEZyYW1lKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LnJlbmRlck5leHRGcmFtZSgpOwotICAgICAgICB9Ci0KICAgICAgICAgdWludDY0X3QgbmF0
aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcoKTsKQEAgLTEwNSw2ICsxMDEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC5kaWRSZW5kZXJGcmFtZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9p
ZCByZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCkgb3ZlcnJpZGUKKyAgICAgICAg
eworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LnJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0
b3JVcGRhdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJl
c2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2xheWVyVHJlZUhvc3QuaGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRl
KGhhc0JlZW5SZXNjaGVkdWxlZCk7CisgICAgICAgIH0KKwogICAgICAgICBUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdCYgbV9sYXllclRyZWVIb3N0OwogICAgIH07CiAKQEAgLTEyNSw2
ICsxMzEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVzdHJveUdMQ29udGV4dCgpOwogICAg
IHZvaWQgd2lsbFJlbmRlckZyYW1lKCk7CiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZSgpOworICAg
IHZvaWQgcmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOworICAgIHZvaWQgaGFu
ZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wpOwogCiAgICAgZW51bSBjbGFzcyBE
aXNjYXJkYWJsZVN5bmNBY3Rpb25zIHsKICAgICAgICAgVXBkYXRlU2l6ZSA9IDEgPDwgMSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>