<?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>216012</bug_id>
          
          <creation_ts>2020-08-31 13:34:31 -0700</creation_ts>
          <short_desc>Webpages flash when switching between windows</short_desc>
          <delta_ts>2020-09-08 10:20:04 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=216047</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216263</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=216275</see_also>
          <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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>darin</cc>
    
    <cc>hector_i_lopez</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1684233</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 13:34:31 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684234</commentid>
    <comment_count>1</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 13:34:55 -0700</bug_when>
    <thetext>rdar://problem/67097019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684236</commentid>
    <comment_count>2</comment_count>
      <attachid>407620</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 13:42:19 -0700</bug_when>
    <thetext>Created attachment 407620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684237</commentid>
    <comment_count>3</comment_count>
      <attachid>407620</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 13:47:13 -0700</bug_when>
    <thetext>Comment on attachment 407620
Patch

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

&gt; Source/WebKit/ChangeLog:14
&gt; +        In the swithcing case, view to be unselected will detach from root layer in its web process, which makes its 

typo: &quot;switching&quot;

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:495
&gt; +        RefPtr&lt;WebPageProxy&gt; strongThis(weakThis.get());

Better style:

    auto strongThis = makeRefPtr(weakThis.get());

Also seems like we should make makeRefPtr smarter so the &quot;get()&quot; is not required.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:499
&gt; +        m_hasScheduledActivityStateUpdate = false;
&gt; +        strongThis-&gt;dispatchActivityStateChange();

Is suggest either using strongThis for both of the above, or for neither. If we use it for both, then we don’t need to capture &quot;this&quot; at all, and that’s probably the most elegant version, and clearest on object lifetime.

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:146
&gt; +        m_shouldHandleActivityStateChangeCallbacks = true;

I think you mean &quot;false&quot; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684238</commentid>
    <comment_count>4</comment_count>
      <attachid>407621</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 13:48:51 -0700</bug_when>
    <thetext>Created attachment 407621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684246</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 14:04:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 407620 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407620&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        In the swithcing case, view to be unselected will detach from root layer in its web process, which makes its 
&gt; 
&gt; typo: &quot;switching&quot;
&gt; 
Will update.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:495
&gt; &gt; +        RefPtr&lt;WebPageProxy&gt; strongThis(weakThis.get());
&gt; 
&gt; Better style:
&gt; 
&gt;     auto strongThis = makeRefPtr(weakThis.get());
&gt; 
Okay.

&gt; Also seems like we should make makeRefPtr smarter so the &quot;get()&quot; is not
&gt; required.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:499
&gt; &gt; +        m_hasScheduledActivityStateUpdate = false;
&gt; &gt; +        strongThis-&gt;dispatchActivityStateChange();
&gt; 
&gt; Is suggest either using strongThis for both of the above, or for neither. If
&gt; we use it for both, then we don’t need to capture &quot;this&quot; at all, and that’s
&gt; probably the most elegant version, and clearest on object lifetime.
&gt; 

Sure, will remove &quot;this&quot;.

&gt; &gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:146
&gt; &gt; +        m_shouldHandleActivityStateChangeCallbacks = true;
&gt; 
&gt; I think you mean &quot;false&quot; here?

Yes! Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684247</commentid>
    <comment_count>6</comment_count>
      <attachid>407621</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 14:05:35 -0700</bug_when>
    <thetext>Comment on attachment 407621
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:146
&gt; +        if (!m_shouldHandleActivityStateChangeCallbacks)
&gt; +            return;
&gt; +        m_shouldHandleActivityStateChangeCallbacks = true;

This doesn’t make logical sense. Why do we have to set something to true since we just exited if false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684248</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 14:05:57 -0700</bug_when>
    <thetext>Oh, I see your response now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684249</commentid>
    <comment_count>8</comment_count>
      <attachid>407624</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 14:09:12 -0700</bug_when>
    <thetext>Created attachment 407624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684250</commentid>
    <comment_count>9</comment_count>
      <attachid>407624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 14:10:47 -0700</bug_when>
    <thetext>Comment on attachment 407624
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:142
&gt; +        if (!weakThis)
&gt; +            return;

Why don’t we need the strongThis approach here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684260</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 14:37:02 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 407624 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407624&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:142
&gt; &gt; +        if (!weakThis)
&gt; &gt; +            return;
&gt; 
&gt; Why don’t we need the strongThis approach here?

Because TiledCoreAnimationDrawingArea is owned by WebPageProxy and is less likely get destroyed in the commit handlers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684266</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-31 14:53:50 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #10)
&gt; (In reply to Darin Adler from comment #9)
&gt; &gt; Comment on attachment 407624 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407624&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:142
&gt; &gt; &gt; +        if (!weakThis)
&gt; &gt; &gt; +            return;
&gt; &gt; 
&gt; &gt; Why don’t we need the strongThis approach here?
&gt; 
&gt; Because TiledCoreAnimationDrawingArea is owned by WebPageProxy and is less
&gt; likely get destroyed in the commit handlers?

Still no guarantee, though, is there? Probably should just do it, or we&apos;ll be here fixing a rare crashtracer in a year or two :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684267</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-08-31 14:54:24 -0700</bug_when>
    <thetext>Should the title be &quot;switching between tabs&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684268</commentid>
    <comment_count>13</comment_count>
      <attachid>407624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 14:58:17 -0700</bug_when>
    <thetext>Comment on attachment 407624
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:142
&gt;&gt;&gt;&gt; +            return;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why don’t we need the strongThis approach here?
&gt;&gt; 
&gt;&gt; Because TiledCoreAnimationDrawingArea is owned by WebPageProxy and is less likely get destroyed in the commit handlers?
&gt; 
&gt; Still no guarantee, though, is there? Probably should just do it, or we&apos;ll be here fixing a rare crashtracer in a year or two :)

Yes, &quot;less likely&quot; is not how to deal with object lifetime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684269</commentid>
    <comment_count>14</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 14:59:45 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Comment on attachment 407624 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407624&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:142
&gt; &gt;&gt;&gt;&gt; +            return;
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Why don’t we need the strongThis approach here?
&gt; &gt;&gt; 
&gt; &gt;&gt; Because TiledCoreAnimationDrawingArea is owned by WebPageProxy and is less likely get destroyed in the commit handlers?
&gt; &gt; 
&gt; &gt; Still no guarantee, though, is there? Probably should just do it, or we&apos;ll be here fixing a rare crashtracer in a year or two :)
&gt; 
&gt; Yes, &quot;less likely&quot; is not how to deal with object lifetime.

Okay, will update this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684283</commentid>
    <comment_count>15</comment_count>
      <attachid>407631</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 15:38:15 -0700</bug_when>
    <thetext>Created attachment 407631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684284</commentid>
    <comment_count>16</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 15:39:54 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #12)
&gt; Should the title be &quot;switching between tabs&quot;?

I considered about this and found tab is something API clients may use to place web views. WebKit seems to only care about window. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684285</commentid>
    <comment_count>17</comment_count>
      <attachid>407631</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-31 15:43:20 -0700</bug_when>
    <thetext>Comment on attachment 407631
Patch

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

I can&apos;t r+ but it looks reasonable to me :P

&gt; Source/WebKit/ChangeLog:14
&gt; +        In the swithcing case, view to be unselected will detach from root layer in its web process, which makes its 

switching is still misspelled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684286</commentid>
    <comment_count>18</comment_count>
      <attachid>407632</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 15:46:47 -0700</bug_when>
    <thetext>Created attachment 407632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684287</commentid>
    <comment_count>19</comment_count>
      <attachid>407632</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 16:04:19 -0700</bug_when>
    <thetext>Comment on attachment 407632
Patch

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

Can we find a way to make a regression test for this? We want this fixed for the long term, not just fixed now and then broken in the future. Tests the main way we do that.

We also need a test that would have detected our mistake before where m_shouldHandleActivityStateChangeCallbacks was never set back to false.

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:144
&gt; +        auto strongPage = makeRefPtr(weakThis-&gt;m_webPage);

If we’re going to be dereferencing this without null checking, then I suggest putting this into a Ref rather than a RefPtr.

    auto strongPage = makeRef(*weakThis-&gt;m_webPage);

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:145
&gt; +        auto* drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea*&gt;(strongPage-&gt;drawingArea());

If we’re going to be dereferencing this without null checking, then I suggest putting this into a reference rather than a pointer:

    auto&amp; drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea&amp;&gt;(*strongPage-&gt;drawingArea());

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:155
&gt; +        for (const auto&amp; callbackID : drawingArea-&gt;m_nextActivityStateChangeCallbackIDs)

Should just use auto here, not const auto&amp;. Seems fine to copy an ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684288</commentid>
    <comment_count>20</comment_count>
      <attachid>407632</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 16:04:41 -0700</bug_when>
    <thetext>Comment on attachment 407632
Patch

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

&gt; Source/WebKit/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

Tim already reviewed this, so it’s strange that I &quot;reviewed&quot; it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684295</commentid>
    <comment_count>21</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-31 16:23:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #20)
&gt; Comment on attachment 407632 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407632&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:6
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Tim already reviewed this, so it’s strange that I &quot;reviewed&quot; it.

Tim did not r+ because he wrote the original patch, so it&apos;s not strange!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684296</commentid>
    <comment_count>22</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-31 16:24:29 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #19)
&gt; Comment on attachment 407632 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407632&amp;action=review
&gt; 
&gt; Can we find a way to make a regression test for this? We want this fixed for
&gt; the long term, not just fixed now and then broken in the future. Tests the
&gt; main way we do that.

+1 since at least part of this is a regression (and I expect all of it is, in the longer term). But it&apos;s going to be tricky :P

&gt; We also need a test that would have detected our mistake before where
&gt; m_shouldHandleActivityStateChangeCallbacks was never set back to false.

I&apos;m pretty surprised none of the tests that test activity state changes failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684305</commentid>
    <comment_count>23</comment_count>
      <attachid>407632</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 16:42:56 -0700</bug_when>
    <thetext>Comment on attachment 407632
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:144
&gt;&gt; +        auto strongPage = makeRefPtr(weakThis-&gt;m_webPage);
&gt; 
&gt; If we’re going to be dereferencing this without null checking, then I suggest putting this into a Ref rather than a RefPtr.
&gt; 
&gt;     auto strongPage = makeRef(*weakThis-&gt;m_webPage);

Sure, will use Ref.

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:145
&gt;&gt; +        auto* drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea*&gt;(strongPage-&gt;drawingArea());
&gt; 
&gt; If we’re going to be dereferencing this without null checking, then I suggest putting this into a reference rather than a pointer:
&gt; 
&gt;     auto&amp; drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea&amp;&gt;(*strongPage-&gt;drawingArea());

Will add a check drawingArea != weakThis.get() here, since m_webPage above is a reference and drawingArea() returns a raw pointer.

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:155
&gt;&gt; +        for (const auto&amp; callbackID : drawingArea-&gt;m_nextActivityStateChangeCallbackIDs)
&gt; 
&gt; Should just use auto here, not const auto&amp;. Seems fine to copy an ID.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684307</commentid>
    <comment_count>24</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 16:49:06 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #22)
&gt; (In reply to Darin Adler from comment #19)
&gt; &gt; Comment on attachment 407632 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407632&amp;action=review
&gt; &gt; 
&gt; &gt; Can we find a way to make a regression test for this? We want this fixed for
&gt; &gt; the long term, not just fixed now and then broken in the future. Tests the
&gt; &gt; main way we do that.
&gt; 
&gt; +1 since at least part of this is a regression (and I expect all of it is,
&gt; in the longer term). But it&apos;s going to be tricky :P
&gt; 

Do you mean tests for finding the flash, or test to make sure the ordering of events is correct?

&gt; &gt; We also need a test that would have detected our mistake before where
&gt; &gt; m_shouldHandleActivityStateChangeCallbacks was never set back to false.
&gt; 
&gt; I&apos;m pretty surprised none of the tests that test activity state changes
&gt; failed.

In that case we just try handleActivityStateChangeCallbacks on every commit, which seems ... not harmful if we don&apos;t have callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684308</commentid>
    <comment_count>25</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-31 16:56:53 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #24)
&gt; (In reply to Tim Horton from comment #22)
&gt; &gt; (In reply to Darin Adler from comment #19)
&gt; &gt; &gt; Comment on attachment 407632 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=407632&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we find a way to make a regression test for this? We want this fixed for
&gt; &gt; &gt; the long term, not just fixed now and then broken in the future. Tests the
&gt; &gt; &gt; main way we do that.
&gt; &gt; 
&gt; &gt; +1 since at least part of this is a regression (and I expect all of it is,
&gt; &gt; in the longer term). But it&apos;s going to be tricky :P
&gt; &gt; 
&gt; 
&gt; Do you mean tests for finding the flash, or test to make sure the ordering
&gt; of events is correct?

It might actually not be possible to catch the flash, since the only way the WP update leap-frogs the UI process is via the fact that it&apos;s directly connected to the window server and doesn&apos;t have to go through the UI process. /Maybe/ you can do it like you say, by following the order of events.

&gt; &gt; &gt; We also need a test that would have detected our mistake before where
&gt; &gt; &gt; m_shouldHandleActivityStateChangeCallbacks was never set back to false.
&gt; &gt; 
&gt; &gt; I&apos;m pretty surprised none of the tests that test activity state changes
&gt; &gt; failed.
&gt; 
&gt; In that case we just try handleActivityStateChangeCallbacks on every commit,
&gt; which seems ... not harmful if we don&apos;t have callback?

Oh! It&apos;s the opposite of what I thought. Yeah, OK. And that sounds untestable too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684316</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 17:34:43 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #25)
&gt; (In reply to Sihui Liu from comment #24)
&gt; &gt; Do you mean tests for finding the flash, or test to make sure the ordering
&gt; &gt; of events is correct?
&gt; 
&gt; It might actually not be possible to catch the flash, since the only way the
&gt; WP update leap-frogs the UI process is via the fact that it&apos;s directly
&gt; connected to the window server and doesn&apos;t have to go through the UI
&gt; process. /Maybe/ you can do it like you say, by following the order of
&gt; events.

I want to state the obvious: The goal of the test is to fail if we re-introduce the flash. We can be as tricky as we need to be about how we catch the mistake; it doesn’t have to literally prove we have a flash.

&gt; &gt; &gt; &gt; We also need a test that would have detected our mistake before where
&gt; &gt; &gt; &gt; m_shouldHandleActivityStateChangeCallbacks was never set back to false.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m pretty surprised none of the tests that test activity state changes
&gt; &gt; &gt; failed.
&gt; &gt; 
&gt; &gt; In that case we just try handleActivityStateChangeCallbacks on every commit,
&gt; &gt; which seems ... not harmful if we don&apos;t have callback?
&gt; 
&gt; Oh! It&apos;s the opposite of what I thought. Yeah, OK. And that sounds
&gt; untestable too.

If doing it every time is not bad performance they why do we bother with the dirty bit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684350</commentid>
    <comment_count>27</comment_count>
      <attachid>407648</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-08-31 19:04:26 -0700</bug_when>
    <thetext>Created attachment 407648
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684373</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-31 21:00:01 -0700</bug_when>
    <thetext>Committed r266384: &lt;https://trac.webkit.org/changeset/266384&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684630</commentid>
    <comment_count>29</comment_count>
    <who name="Hector Lopez">hector_i_lopez</who>
    <bug_when>2020-09-01 14:49:18 -0700</bug_when>
    <thetext>Reverted r266384 for reason:

Revision is causing 5 API faliures/timeouts and build failures on macOS

Committed r266412: &lt;https://trac.webkit.org/changeset/266412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684973</commentid>
    <comment_count>30</comment_count>
      <attachid>407805</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-02 14:04:55 -0700</bug_when>
    <thetext>Created attachment 407805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685002</commentid>
    <comment_count>31</comment_count>
      <attachid>407816</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-02 14:30:28 -0700</bug_when>
    <thetext>Created attachment 407816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685005</commentid>
    <comment_count>32</comment_count>
      <attachid>407817</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-02 14:42:46 -0700</bug_when>
    <thetext>Created attachment 407817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685705</commentid>
    <comment_count>33</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-04 09:38:23 -0700</bug_when>
    <thetext>ping for review...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685711</commentid>
    <comment_count>34</comment_count>
      <attachid>407817</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-09-04 09:43:42 -0700</bug_when>
    <thetext>Comment on attachment 407817
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:494
&gt; +    bool hasScheduledOnObserver = m_activityStateChangeDispatcher-&gt;isScheduled();

&quot;on&quot;?

&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:520
&gt; +    if (![CATransaction currentState]) {

Both of the places you check this should have comments, since it&apos;s very very weird.

Maybe we should just adjust the tests instead? Is this a state you can ever get to in &quot;reality&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685747</commentid>
    <comment_count>35</comment_count>
      <attachid>407817</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-04 10:24:34 -0700</bug_when>
    <thetext>Comment on attachment 407817
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:494
&gt;&gt; +    bool hasScheduledOnObserver = m_activityStateChangeDispatcher-&gt;isScheduled();
&gt; 
&gt; &quot;on&quot;?

I was using hasScheduledOnObserver and hasScheduledOnCommitHandler; will remove

&gt;&gt; Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:520
&gt;&gt; +    if (![CATransaction currentState]) {
&gt; 
&gt; Both of the places you check this should have comments, since it&apos;s very very weird.
&gt; 
&gt; Maybe we should just adjust the tests instead? Is this a state you can ever get to in &quot;reality&quot;?

According to https://developer.apple.com/documentation/quartzcore/catransaction?language=objc, implicit transactions are created when layer tree is modified without an active transaction, so theoretically this could happen either we already do the change in an explicit transaction, or there is no layer tree change?

The tests seem correct, at least for WKWebView.PrepareForMoveToWindow, which just calls _prepareForMoveToWindow and ensures callback is invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685776</commentid>
    <comment_count>36</comment_count>
      <attachid>408003</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-04 11:24:10 -0700</bug_when>
    <thetext>Created attachment 408003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685829</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-04 13:17:25 -0700</bug_when>
    <thetext>Committed r266634: &lt;https://trac.webkit.org/changeset/266634&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408003.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407620</attachid>
            <date>2020-08-31 13:42:19 -0700</date>
            <delta_ts>2020-08-31 13:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200831134218.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmU3NGI3NmExMDQzNTgxODNiZmVjMzk0NjBmMDc3ZDZk
YmRiYWFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0aGNp
bmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXll
ciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBl
bXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21t
aXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBj
b21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lz
ZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAg
ICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBz
ZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21t
aXQgCisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0
YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhl
Y3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI2NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2Vh
NS4uZGE2N2VkYTBhM2FiNWY4OTI0YTdiMzg5YzU0YzAxNzVlODNkYTAwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ4
NSw2ICs0ODUsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoUGF0
aChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKICAgICAKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpCit7CisgICAgaWYgKG1f
aGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
aGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSA9IHRydWU7CisKKyAgICBbQ0FUcmFuc2Fj
dGlvbiBhZGRDb21taXRIYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0geworICAgICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBzdHJvbmdUaGlzKHdlYWtUaGlzLmdl
dCgpKTsKKyAgICAgICAgaWYgKCFzdHJvbmdUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAg
c3Ryb25nVGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CisgICAgfSBmb3JQaGFz
ZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07Cit9CisKICNlbmRpZiAvLyBIQVZFKFFV
SUNLTE9PS19USFVNQk5BSUxJTkcpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWUwMjQzMmI0NzllNmMyNjliYzA3
ZWY4NjA4MzUxMzFkODBmZTE3YS4uYmY2MTA5NzI2ZWNmNzQ4NGI3NmNkMzBmYmE0NzQ4NjQ4YmM3
ZjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MzIs
MTIgKzUzMiw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAgICAgICAgIGRpc2FibGVTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnRJbk5ldHdvcmtQcm9jZXNzKCk7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNd
IHsKLSAgICAgICAgdGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7Ci0gICAgfSk7
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIG1faW5zcGVjdG9y
RGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKICAgICBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUtPmluaXQoKTsKQEAgLTE4NTYsNyArMTg1MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGJvb2wgZmxhZykKIAogICAgIGlm
ICghbV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAg
ICAgIHNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICAgICAgZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKQEAgLTE5MDgsNyArMTkwMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBtYXlIYXZlCiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURp
c3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAgc2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRlKCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkaXNwYXRjaE1vZGUpOwogICAgIGRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZSgpOwpAQCAtMTkzNiwxMCArMTkzMCw2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3coKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlQ2hhbmdlKCkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7Ci0jZW5kaWYKLQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGYzZDNjYjJiMjQzYTU2YzA4NDY5MGQwZThjZTkw
NWQ0ODk4NGEwODMuLmQ5MmRiZWQxM2EyOTU4ZjJhODdmYzZiYjgwY2Y1ODk5OTExNTFhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04OTgsNiArODk4LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJs
ZWQoYm9vbCk7CiAgICAgYm9vbCBzY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJs
ZWQ7IH0KICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
LmdldCgpOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhX
ZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKQEAgLTI3MTUsMTAgKzI3MTcsMTEgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB1c2luZyBUZW1wb3JhcnlQREZGaWxl
TWFwID0gSGFzaE1hcDxTdHJpbmcsIFN0cmluZz47CiAgICAgVGVtcG9yYXJ5UERGRmlsZU1hcCBt
X3RlbXBvcmFyeVBERkZpbGVzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSdW5Mb29w
T2JzZXJ2ZXI+IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXI7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPiBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YTsKICAgICBib29sIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29s
bGVjdGlvbkVuYWJsZWQgeyBmYWxzZSB9OworCisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZEFjdGl2
aXR5U3RhdGVVcGRhdGUgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgVXNlck9ic2VydmFibGVQYWdl
Q291bnRlcjo6VG9rZW4gbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50OwogICAgIFByb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGRiMDRiNTA1ZmVh
MjBlZDczMzMxOTY1OGZlMTk0NGI4NGU2MzUwZmIuLmM0ODAzMDEzM2YxODc3NzVlZTZmY2FiYTA1
YzU5ZTlkMTc4MjgwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VuZERp
ZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CisgICAgdm9pZCBoYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsKIAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikgb3ZlcnJpZGU7CkBAIC0xNTEsNyArMTUyLDYgQEAgcHJpdmF0ZToKICAgICBk
b3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CiAgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBtX3RyYW5zaWVudFpvb21PcmlnaW47CiAKLSAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyOwog
ICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJ
RHM7CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIHsg
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9OwogCkBAIC0xNjksNiArMTY5LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNTY2FsaW5nVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2ggeyB0cnVlIH07
CisgICAgYm9vbCBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MgeyBm
YWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmU+IHBhaW50TWlsZXN0b25lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQppbmRleCBiYzU1ZjBlZmE1NzY4NmIwMmE2NTJkOTQ5YzljZjRhMTExZWEyNmE0Li5kZGMz
MjY0MjdmZDliNjA0ZTQ4OTQ2YTZkZTI5MDE1NjQ1OTIzZmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03Myw3ICs3Myw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlw
ZVRpbGVkQ29yZUFuaW1hdGlvbiwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50aWZpZXIsIHdl
YlBhZ2UpCi0gICAgLCBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFj
dGl2aXR5U3RhdGVUaW1lckZpcmVkKQogICAgICwgbV9pc1BhaW50aW5nU3VzcGVuZGVkKCEocGFy
YW1ldGVycy5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKIHsKICAg
ICBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZSh0cnVlKTsKQEAgLTEzMyw2ICsxMzIsMzAgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgKICAg
ICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVl
ZGVkKCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFu
ZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fc2hvdWxk
SGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0gdHJ1
ZTsKKworICAgICAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0
ZUNoYW5nZUFzeW5jaHJvbm91cykKKyAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CisKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrSURzKQorICAgICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKworICAgICAgICBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzOworICAgIH0gZm9yUGhhc2U6
a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOworfQorCiB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzZXROZWVkc0Rpc3BsYXkoKQogewogfQpAQCAtNDkyLDYgKzUxNSw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyhV
cGRhdGVSZW5kZXJpbmdUeXBlIGZsdXNoVHlwCiAgICAgICAgIH0KIAogICAgICAgICBzZW5kRGlk
Rmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKKyAgICAgICAgaGFuZGxlQWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAgICAgICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRh
dGVSdW5Mb29wT2JzZXJ2ZXIoKTsKICAgICB9CiB9CkBAIC01MDksMjEgKzUzMyw5IEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PEFjdGl2aXR5U3RhCiAgICAgfQogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfHwgIW1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc2VuZERpZFVwZGF0
ZUFjdGl2aXR5U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KKyAgICAgICAgbV9zaG91
bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0gdHJ1ZTsKIAotdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmly
ZWQoKQotewotICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKLQotICAgIGlmIChtX2FjdGl2aXR5
U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQotICAgICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFja0lEIDogbV9uZXh0QWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwotCi0gICAgbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7Ci0gICAgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzOworICAgIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407621</attachid>
            <date>2020-08-31 13:48:51 -0700</date>
            <delta_ts>2020-08-31 14:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200831134850.patch</filename>
            <type>text/plain</type>
            <size>11568</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmU3NGI3NmExMDQzNTgxODNiZmVjMzk0NjBmMDc3ZDZk
YmRiYWFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0aGNp
bmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXll
ciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBl
bXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21t
aXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBj
b21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lz
ZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAg
ICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBz
ZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21t
aXQgCisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0
YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhl
Y3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI2NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2Vh
NS4uYjNjMTAxMWZlMzkyZWJlMmRlM2RhYmEyNWJlMjdmZWJmODM1ZWNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ4
Nyw2ICs0ODcsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoUGF0
aChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogI2VuZGlmIC8vIEhBVkUo
UVVJQ0tMT09LX1RIVU1CTkFJTElORykKIAordm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSgpCit7CisgICAgaWYgKG1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0
ZVVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0
ZVVwZGF0ZSA9IHRydWU7CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOlt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBSZWZQdHI8V2Vi
UGFnZVByb3h5PiBzdHJvbmdUaGlzKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgaWYgKCFzdHJv
bmdUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2hhc1NjaGVkdWxlZEFjdGl2
aXR5U3RhdGVVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgc3Ryb25nVGhpcy0+ZGlzcGF0Y2hBY3Rp
dml0eVN0YXRlQ2hhbmdlKCk7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9z
dENvbW1pdF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA1ZTAyNDMyYjQ3OWU2YzI2OWJjMDdlZjg2MDgzNTEzMWQ4MGZlMTdhLi5iZjYxMDk3MjZl
Y2Y3NDg0Yjc2Y2QzMGZiYTQ3NDg2NDhiYzdmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUzMiwxMiArNTMyLDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBSZWYKICAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudEluTmV0d29ya1By
b2Nlc3MoKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFj
dGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewotICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UoKTsKLSAgICB9KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdB
bGxvd2VkKHRydWUpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgpOwpAQCAtMTg1
Niw3ICsxODUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eVVw
ZGF0ZXMoYm9vbCBmbGFnKQogCiAgICAgaWYgKCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMp
IHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlz
cGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICAgICAgc2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRl
KCk7CiAjZWxzZQogICAgICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRp
ZgpAQCAtMTkwOCw3ICsxOTAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG1heUhhdmUKICAgICAgICAg
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICBzY2hl
ZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRpc3Bh
dGNoTW9kZSk7CiAgICAgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CkBAIC0xOTM2LDEw
ICsxOTMwLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFs
aWRhdGUoKTsKLSNlbmRpZgotCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjNk
M2NiMmIyNDNhNTZjMDg0NjkwZDBlOGNlOTA1ZDQ4OTg0YTA4My4uZDkyZGJlZDEzYTI5NThmMmE4
N2ZjNmJiODBjZjU4OTk5MTE1MWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTg5OCw2ICs4OTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQZXJm
b3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sKTsKICAgICBib29sIHNjcm9sbFBlcmZv
cm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQZXJm
b3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZDsgfQogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YSogc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkgeyByZXR1cm4g
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuZ2V0KCk7IH0KKworICAgIHZvaWQgc2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICB2
b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYp
OwpAQCAtMjcxNSwxMCArMjcxNywxMSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHVzaW5nIFRlbXBvcmFyeVBERkZpbGVNYXAgPSBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjsK
ICAgICBUZW1wb3JhcnlQREZGaWxlTWFwIG1fdGVtcG9yYXJ5UERGRmlsZXM7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9hY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE+IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogICAgIGJvb2wg
bV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CisKKyAg
ICBib29sIG1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSB7IGZhbHNlIH07CiAjZW5k
aWYKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyOjpUb2tlbiBtX3BhZ2VJc1VzZXJPYnNl
cnZhYmxlQ291bnQ7CiAgICAgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3ByZXZl
bnRQcm9jZXNzU3VwcHJlc3Npb25Db3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKaW5kZXggZGIwNGI1MDVmZWEyMGVkNzMzMzE5NjU4ZmUxOTQ0Yjg0ZTYzNTBmYi4u
YzQ4MDMwMTMzZjE4Nzc3NWVlNmZjYWJhMDVjNTllOWQxNzgyODA4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKKyAg
ICB2b2lkIGhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpOwogCiAg
ICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKQEAgLTE1MSw3
ICsxNTIsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3RyYW5zaWVudFpvb21TY2FsZSB7IDEg
fTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsKIAotICAg
IFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRV
cGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKICAgICBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgeyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
IH07CiAKQEAgLTE2OSw2ICsxNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NjYWxpbmdW
aWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyB0cnVlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZERp
ZEZpcnN0TGF5ZXJGbHVzaCB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkSGFuZGxlQWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRkTWlsZXN0b25lc1RvRGlzcGF0Y2goT3B0aW9u
U2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gcGFpbnRNaWxlc3RvbmVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGJjNTVmMGVmYTU3Njg2YjAyYTY1
MmQ5NDljOWNmNGExMTFlYTI2YTQuLmRkYzMyNjQyN2ZkOWI2MDRlNDg5NDZhNmRlMjkwMTU2NDU5
MjNmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTcz
LDcgKzczLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQ
YWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDog
RHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uLCBwYXJhbWV0ZXJz
LmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fc2VuZERpZFVwZGF0ZUFj
dGl2aXR5U3RhdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBt
X2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUpKQogewogICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5n
cygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpAQCAtMTMzLDYgKzEzMiwzMCBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZUlmTmVlZGVkKAogICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJv
eHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4dCkp
OwogfQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKQoreworICAgIGlmICghbV9zaG91bGRIYW5k
bGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICBb
Q0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmICghbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MgPSB0cnVlOworCisgICAgICAgIGlmIChtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQorICAgICAgICAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxiYWNrSUQgOiBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgICAgICAgICBtX3dlYlBhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwor
CisgICAgICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwor
ICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3lu
Y2hyb25vdXM7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07
Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxh
eSgpCiB7CiB9CkBAIC00OTIsNiArNTE1LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKFVwZGF0ZVJlbmRlcmluZ1R5cGUgZmx1c2hUeXAKICAg
ICAgICAgfQogCiAgICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAg
ICAgICBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsKICAgICAg
ICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogICAgIH0KIH0K
QEAgLTUwOSwyMSArNTMzLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGEKICAgICB9CiAKICAg
ICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmlzRW1wdHko
KSkKLSAgICAgICAgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOwotfQorICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja3MgPSB0cnVlOwogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRV
cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpCi17Ci0gICAgW0NBVHJhbnNhY3Rpb24gZmx1
c2hdOwotCi0gICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVD
aGFuZ2VBc3luY2hyb25vdXMpCi0gICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCi0g
ICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFj
ayhjYWxsYmFja0lEKSk7Ci0KLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJ
RHMuY2xlYXIoKTsKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5U3RhdGVD
aGFuZ2VBc3luY2hyb25vdXM7CisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAog
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407624</attachid>
            <date>2020-08-31 14:09:12 -0700</date>
            <delta_ts>2020-08-31 15:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200831140911.patch</filename>
            <type>text/plain</type>
            <size>11847</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmU3NGI3NmExMDQzNTgxODNiZmVjMzk0NjBmMDc3ZDZk
YmRiYWFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0aGNp
bmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXll
ciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBl
bXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21t
aXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBj
b21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lz
ZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAg
ICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBz
ZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21t
aXQgCisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0
YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhl
Y3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI2NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2Vh
NS4uNjNmNGYyZDM2MTEyMjQwZDRjMWYwYjJjOGIyM2U0YWE4NDA5MmFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgpAQCAtNDg3LDYgKzQ4OCwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0eVN0YXRl
VXBkYXRlKCkKK3sKKyAgICBpZiAobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0g
dHJ1ZTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nVGhpcyA9IG1ha2VSZWZQ
dHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXN0cm9uZ1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0cm9uZ1RoaXMtPm1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICBzdHJvbmdUaGlzLT5kaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UoKTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NP
TVBMRVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVl
MDI0MzJiNDc5ZTZjMjY5YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmJmNjEwOTcyNmVjZjc0ODRi
NzZjZDMwZmJhNDc0ODY0OGJjN2Y1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNTMyLDEyICs1MzIsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcygp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlT
dGF0ZUNoYW5nZSksIFt0aGlzXSB7Ci0gICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSgpOwotICAgIH0pOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
dHJ1ZSk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CkBAIC0xODU2LDcgKzE4
NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhi
b29sIGZsYWcpCiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcykgewogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
LT5zY2hlZHVsZSgpOworICAgICAgICBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNl
bHNlCiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogI2VuZGlmCkBAIC0x
OTA4LDcgKzE5MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZQogICAgICAgICBkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgIHNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGlzcGF0Y2hNb2Rl
KTsKICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKQEAgLTE5MzYsMTAgKzE5MzAs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgp
OwotI2VuZGlmCi0KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmM2QzY2IyYjI0
M2E1NmMwODQ2OTBkMGU4Y2U5MDVkNDg5ODRhMDgzLi5kOTJkYmVkMTNhMjk1OGYyYTg3ZmM2YmI4
MGNmNTg5OTkxMTUxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtODk4LDYgKzg5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIGJvb2wgc2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkOyB9CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSB7IHJldHVybiBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFjdGl2aXR5
U3RhdGVVcGRhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHZvaWQgY2hh
bmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CkBAIC0y
NzE1LDEwICsyNzE3LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXNp
bmcgVGVtcG9yYXJ5UERGRmlsZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OwogICAgIFRl
bXBvcmFyeVBERkZpbGVNYXAgbV90ZW1wb3JhcnlQREZGaWxlczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRj
aGVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YT4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKworICAgIGJvb2wg
bV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogICAg
IFVzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVD
b3VudDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nl
c3NTdXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAppbmRleCBkYjA0YjUwNWZlYTIwZWQ3MzMzMTk2NThmZTE5NDRiODRlNjM1MGZiLi5jNDgwMzAx
MzNmMTg3Nzc1ZWU2ZmNhYmEwNWM1OWU5ZDE3ODI4MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAgIHZvaWQg
aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAKICAgICB2b2lk
IGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpAQCAtMTUxLDcgKzE1Miw2
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgUnVuTG9v
cDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFj
dGl2aXR5U3RhdGVUaW1lcjsKICAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApA
QCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2NhbGluZ1ZpZXdUb0Zp
dERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRGlkRmlyc3RM
YXllckZsdXNoIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYmM1NWYwZWZhNTc2ODZiMDJhNjUyZDk0OWM5
Y2Y0YTExMWVhMjZhNC4uMDI3MWIxZTE0NzNmMGQ0YjVmMzNjMjFkMDI1OTdhMjBlNDEyMTJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNzMsNyArNzMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5n
QXJlYShEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24sIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICAsIG1faXNQYWlu
dGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkpCiB7CiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBAIC0xMzMsNiArMTMyLDMwIEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlSWZOZWVkZWQoCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAK
K3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIFtDQVRyYW5z
YWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrcyA9IGZhbHNlOworCisgICAgICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQorICAgICAgICAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgICAgICAgICBtX3dlYlBhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworCisgICAg
ICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOworICAgICAg
ICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25v
dXM7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07Cit9CisK
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7
CiB9CkBAIC00OTIsNiArNTE1LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6dXBkYXRlUmVuZGVyaW5nKFVwZGF0ZVJlbmRlcmluZ1R5cGUgZmx1c2hUeXAKICAgICAgICAg
fQogCiAgICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAgICAgICBo
YW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsKICAgICAgICAgaW52
YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogICAgIH0KIH0KQEAgLTUw
OSwyMSArNTMzLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGEKICAgICB9CiAKICAgICBpZiAo
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91
cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwotfQorICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mg
PSB0cnVlOwogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpCi17Ci0gICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwot
Ci0gICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VB
c3luY2hyb25vdXMpCi0gICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNh
bGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCi0gICAgICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxs
YmFja0lEKSk7Ci0KLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xl
YXIoKTsKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VB
c3luY2hyb25vdXM7CisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAogdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407631</attachid>
            <date>2020-08-31 15:38:15 -0700</date>
            <delta_ts>2020-08-31 15:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200831153814.patch</filename>
            <type>text/plain</type>
            <size>12134</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmU3NGI3NmExMDQzNTgxODNiZmVjMzk0NjBmMDc3ZDZk
YmRiYWFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0aGNp
bmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXll
ciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBl
bXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21t
aXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBj
b21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lz
ZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAg
ICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBz
ZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21t
aXQgCisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0
YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhl
Y3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI2NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2Vh
NS4uNjNmNGYyZDM2MTEyMjQwZDRjMWYwYjJjOGIyM2U0YWE4NDA5MmFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgpAQCAtNDg3LDYgKzQ4OCwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0eVN0YXRl
VXBkYXRlKCkKK3sKKyAgICBpZiAobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0g
dHJ1ZTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nVGhpcyA9IG1ha2VSZWZQ
dHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXN0cm9uZ1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0cm9uZ1RoaXMtPm1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICBzdHJvbmdUaGlzLT5kaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UoKTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NP
TVBMRVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVl
MDI0MzJiNDc5ZTZjMjY5YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmJmNjEwOTcyNmVjZjc0ODRi
NzZjZDMwZmJhNDc0ODY0OGJjN2Y1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNTMyLDEyICs1MzIsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcygp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlT
dGF0ZUNoYW5nZSksIFt0aGlzXSB7Ci0gICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSgpOwotICAgIH0pOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
dHJ1ZSk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CkBAIC0xODU2LDcgKzE4
NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhi
b29sIGZsYWcpCiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcykgewogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
LT5zY2hlZHVsZSgpOworICAgICAgICBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNl
bHNlCiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogI2VuZGlmCkBAIC0x
OTA4LDcgKzE5MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZQogICAgICAgICBkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgIHNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGlzcGF0Y2hNb2Rl
KTsKICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKQEAgLTE5MzYsMTAgKzE5MzAs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgp
OwotI2VuZGlmCi0KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmM2QzY2IyYjI0
M2E1NmMwODQ2OTBkMGU4Y2U5MDVkNDg5ODRhMDgzLi5kOTJkYmVkMTNhMjk1OGYyYTg3ZmM2YmI4
MGNmNTg5OTkxMTUxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtODk4LDYgKzg5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIGJvb2wgc2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkOyB9CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSB7IHJldHVybiBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFjdGl2aXR5
U3RhdGVVcGRhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHZvaWQgY2hh
bmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CkBAIC0y
NzE1LDEwICsyNzE3LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXNp
bmcgVGVtcG9yYXJ5UERGRmlsZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OwogICAgIFRl
bXBvcmFyeVBERkZpbGVNYXAgbV90ZW1wb3JhcnlQREZGaWxlczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRj
aGVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YT4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKworICAgIGJvb2wg
bV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogICAg
IFVzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVD
b3VudDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nl
c3NTdXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAppbmRleCBkYjA0YjUwNWZlYTIwZWQ3MzMzMTk2NThmZTE5NDRiODRlNjM1MGZiLi5jNDgwMzAx
MzNmMTg3Nzc1ZWU2ZmNhYmEwNWM1OWU5ZDE3ODI4MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAgIHZvaWQg
aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAKICAgICB2b2lk
IGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpAQCAtMTUxLDcgKzE1Miw2
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgUnVuTG9v
cDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFj
dGl2aXR5U3RhdGVUaW1lcjsKICAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApA
QCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2NhbGluZ1ZpZXdUb0Zp
dERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRGlkRmlyc3RM
YXllckZsdXNoIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYmM1NWYwZWZhNTc2ODZiMDJhNjUyZDk0OWM5
Y2Y0YTExMWVhMjZhNC4uNDBiZDc0MmY2ODFkY2NmNjViNmQ1OTdhZjRmYzQ1ODcxMDdmYmQ1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNzMsNyArNzMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5n
QXJlYShEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24sIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICAsIG1faXNQYWlu
dGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkpCiB7CiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBAIC0xMzMsNiArMTMyLDM0IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlSWZOZWVkZWQoCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAK
K3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIFtDQVRyYW5z
YWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YXV0byBzdHJvbmdQYWdlID0gbWFrZVJlZlB0cih3ZWFrVGhpcy0+bV93ZWJQYWdlKTsKKyAgICAg
ICAgYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYSo+KHN0cm9uZ1BhZ2UtPmRyYXdpbmdBcmVhKCkpOworICAgICAgICBBU1NFUlQod2Vh
a1RoaXMuZ2V0KCkgPT0gZHJhd2luZ0FyZWEpOworCisgICAgICAgIGlmICghZHJhd2luZ0FyZWEt
Pm1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgZHJhd2luZ0FyZWEtPm1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrcyA9IGZhbHNlOworCisgICAgICAgIGlmIChkcmF3aW5nQXJlYS0+bV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykK
KyAgICAgICAgICAgIHN0cm9uZ1BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxi
YWNrSUQgOiBkcmF3aW5nQXJlYS0+bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURz
KQorICAgICAgICAgICAgc3Ryb25nUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpW
b2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworCisgICAgICAgIGRyYXdpbmdBcmVhLT5tX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKyAgICAgICAgZHJhd2luZ0Fy
ZWEtPm1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJv
bm91czsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKK30K
Kwogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKIH0KQEAgLTQ5Miw2ICs1MTksNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjp1cGRhdGVSZW5kZXJpbmcoVXBkYXRlUmVuZGVyaW5nVHlwZSBmbHVzaFR5cAogICAgICAg
ICB9CiAKICAgICAgICAgc2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CisgICAgICAg
IGhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpOwogICAgICAgICBp
bnZhbGlkYXRlUmVuZGVyaW5nVXBkYXRlUnVuTG9vcE9ic2VydmVyKCk7CiAgICAgfQogfQpAQCAt
NTA5LDIxICs1MzcsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YQogICAgIH0KIAogICAgIGlm
IChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9u
b3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQot
ICAgICAgICBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDBf
cyk7Ci19CisgICAgICAgIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
cyA9IHRydWU7CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07
Ci0KLSAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUFzeW5jaHJvbm91cykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYg
Y2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKLSAgICAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNh
bGxiYWNrSUQpKTsKLQotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5j
bGVhcigpOwotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUFzeW5jaHJvbm91czsKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407632</attachid>
            <date>2020-08-31 15:46:47 -0700</date>
            <delta_ts>2020-08-31 19:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200831154646.patch</filename>
            <type>text/plain</type>
            <size>12134</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmVkNjVkNjcwZGQ4YzhiYWMzY2I0OWVhYjM1NWIyZDM2
YzMzZTExYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0Y2hp
bmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXll
ciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBl
bXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21t
aXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBj
b21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lz
ZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAg
ICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBz
ZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21t
aXQgCisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVB
Y3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5
U3RhdGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0
YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhl
Y3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI2NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2Vh
NS4uNjNmNGYyZDM2MTEyMjQwZDRjMWYwYjJjOGIyM2U0YWE4NDA5MmFhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgpAQCAtNDg3LDYgKzQ4OCwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0eVN0YXRl
VXBkYXRlKCkKK3sKKyAgICBpZiAobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlKQor
ICAgICAgICByZXR1cm47CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0g
dHJ1ZTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nVGhpcyA9IG1ha2VSZWZQ
dHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXN0cm9uZ1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0cm9uZ1RoaXMtPm1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICBzdHJvbmdUaGlzLT5kaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UoKTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NP
TVBMRVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVl
MDI0MzJiNDc5ZTZjMjY5YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmJmNjEwOTcyNmVjZjc0ODRi
NzZjZDMwZmJhNDc0ODY0OGJjN2Y1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNTMyLDEyICs1MzIsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgog
ICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcygp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlT
dGF0ZUNoYW5nZSksIFt0aGlzXSB7Ci0gICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSgpOwotICAgIH0pOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
dHJ1ZSk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CkBAIC0xODU2LDcgKzE4
NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhi
b29sIGZsYWcpCiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcykgewogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
LT5zY2hlZHVsZSgpOworICAgICAgICBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNl
bHNlCiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogI2VuZGlmCkBAIC0x
OTA4LDcgKzE5MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZQogICAgICAgICBkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgIHNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGlzcGF0Y2hNb2Rl
KTsKICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKQEAgLTE5MzYsMTAgKzE5MzAs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgp
OwotI2VuZGlmCi0KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmM2QzY2IyYjI0
M2E1NmMwODQ2OTBkMGU4Y2U5MDVkNDg5ODRhMDgzLi5kOTJkYmVkMTNhMjk1OGYyYTg3ZmM2YmI4
MGNmNTg5OTkxMTUxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtODk4LDYgKzg5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIGJvb2wgc2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkOyB9CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSB7IHJldHVybiBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFjdGl2aXR5
U3RhdGVVcGRhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHZvaWQgY2hh
bmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CkBAIC0y
NzE1LDEwICsyNzE3LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXNp
bmcgVGVtcG9yYXJ5UERGRmlsZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OwogICAgIFRl
bXBvcmFyeVBERkZpbGVNYXAgbV90ZW1wb3JhcnlQREZGaWxlczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRj
aGVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YT4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKworICAgIGJvb2wg
bV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogICAg
IFVzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVD
b3VudDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nl
c3NTdXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAppbmRleCBkYjA0YjUwNWZlYTIwZWQ3MzMzMTk2NThmZTE5NDRiODRlNjM1MGZiLi5jNDgwMzAx
MzNmMTg3Nzc1ZWU2ZmNhYmEwNWM1OWU5ZDE3ODI4MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAgIHZvaWQg
aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAKICAgICB2b2lk
IGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpAQCAtMTUxLDcgKzE1Miw2
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgUnVuTG9v
cDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFj
dGl2aXR5U3RhdGVUaW1lcjsKICAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApA
QCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2NhbGluZ1ZpZXdUb0Zp
dERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRGlkRmlyc3RM
YXllckZsdXNoIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYmM1NWYwZWZhNTc2ODZiMDJhNjUyZDk0OWM5
Y2Y0YTExMWVhMjZhNC4uNDBiZDc0MmY2ODFkY2NmNjViNmQ1OTdhZjRmYzQ1ODcxMDdmYmQ1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNzMsNyArNzMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5n
QXJlYShEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24sIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICAsIG1faXNQYWlu
dGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6
OklzVmlzaWJsZSkpCiB7CiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBAIC0xMzMsNiArMTMyLDM0IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlSWZOZWVkZWQoCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAK
K3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIFtDQVRyYW5z
YWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YXV0byBzdHJvbmdQYWdlID0gbWFrZVJlZlB0cih3ZWFrVGhpcy0+bV93ZWJQYWdlKTsKKyAgICAg
ICAgYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYSo+KHN0cm9uZ1BhZ2UtPmRyYXdpbmdBcmVhKCkpOworICAgICAgICBBU1NFUlQod2Vh
a1RoaXMuZ2V0KCkgPT0gZHJhd2luZ0FyZWEpOworCisgICAgICAgIGlmICghZHJhd2luZ0FyZWEt
Pm1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgZHJhd2luZ0FyZWEtPm1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrcyA9IGZhbHNlOworCisgICAgICAgIGlmIChkcmF3aW5nQXJlYS0+bV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykK
KyAgICAgICAgICAgIHN0cm9uZ1BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxi
YWNrSUQgOiBkcmF3aW5nQXJlYS0+bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURz
KQorICAgICAgICAgICAgc3Ryb25nUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpW
b2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworCisgICAgICAgIGRyYXdpbmdBcmVhLT5tX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKyAgICAgICAgZHJhd2luZ0Fy
ZWEtPm1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJv
bm91czsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKK30K
Kwogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKIH0KQEAgLTQ5Miw2ICs1MTksNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjp1cGRhdGVSZW5kZXJpbmcoVXBkYXRlUmVuZGVyaW5nVHlwZSBmbHVzaFR5cAogICAgICAg
ICB9CiAKICAgICAgICAgc2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CisgICAgICAg
IGhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpOwogICAgICAgICBp
bnZhbGlkYXRlUmVuZGVyaW5nVXBkYXRlUnVuTG9vcE9ic2VydmVyKCk7CiAgICAgfQogfQpAQCAt
NTA5LDIxICs1MzcsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YQogICAgIH0KIAogICAgIGlm
IChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9u
b3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQot
ICAgICAgICBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDBf
cyk7Ci19CisgICAgICAgIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
cyA9IHRydWU7CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07
Ci0KLSAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUFzeW5jaHJvbm91cykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYg
Y2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKLSAgICAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNh
bGxiYWNrSUQpKTsKLQotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5j
bGVhcigpOwotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUFzeW5jaHJvbm91czsKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407648</attachid>
            <date>2020-08-31 19:04:26 -0700</date>
            <delta_ts>2020-09-02 14:04:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216012-20200831190426.patch</filename>
            <type>text/plain</type>
            <size>12187</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMDMzNTkyMjg5MmFlNjc4
YmY5Y2Y5MmU5YzJlYzBiZTBhMjJiOTguLmM3ZTQyNjQzMDE5ODIxMWIwNzJmMzE5MTg1Y2I0OTk1
ZDI0ODcxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDgtMzEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZvaWQg
Zmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRlcyBp
dHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJhbnNh
Y3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJlY2Vp
dmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2ViIHBy
b2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBseSB3
b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBhbmQg
Y29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVkIHRy
YW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0aGlz
LCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQgaGFu
ZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLgorCisgICAgICAgIEluIHRoZSBzd2l0Y2hpbmcg
Y2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBsYXllciBp
biBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVudCBlbXB0
eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBjb21taXQs
IHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAgICBjb21t
aXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVyd2lzZSwg
ZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAKKyAgICAg
ICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2VzcyBzZW5k
IHRoZSBhY3Rpdml0eSBzdGF0ZSB1cGRhdGUgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
CisgICAgICAgIGhhbmRsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rp
dml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRh
dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3Rh
dGVDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRl
VGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAgPGhlY3Rv
cl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2
NjM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2MmJjNjMzY2VhNS4u
NjNmNGYyZDM2MTEyMjQwZDRjMWYwYjJjOGIyM2U0YWE4NDA5MmFhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQ5LDYg
KzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgpAQCAtNDg3LDYgKzQ4OCwyMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0xPT0tfVEhV
TUJOQUlMSU5HKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBk
YXRlKCkKK3sKKyAgICBpZiAobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlKQorICAg
ICAgICByZXR1cm47CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0gdHJ1
ZTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nVGhpcyA9IG1ha2VSZWZQdHIo
d2Vha1RoaXMuZ2V0KCkpOworICAgICAgICBpZiAoIXN0cm9uZ1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHN0cm9uZ1RoaXMtPm1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVw
ZGF0ZSA9IGZhbHNlOworICAgICAgICBzdHJvbmdUaGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UoKTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVlMDI0
MzJiNDc5ZTZjMjY5YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmJmNjEwOTcyNmVjZjc0ODRiNzZj
ZDMwZmJhNDc0ODY0OGJjN2Y1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtNTMyLDEyICs1MzIsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAg
ICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2VzcygpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5k
ZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0
ZUNoYW5nZSksIFt0aGlzXSB7Ci0gICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNo
YW5nZSgpOwotICAgIH0pOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CkBAIC0xODU2LDcgKzE4NTAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhib29s
IGZsYWcpCiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcykgewogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5z
Y2hlZHVsZSgpOworICAgICAgICBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNlbHNl
CiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogI2VuZGlmCkBAIC0xOTA4
LDcgKzE5MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2ZQogICAgICAgICBkaXNwYXRjaEFj
dGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgIHNjaGVkdWxlQWN0aXZp
dHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGlzcGF0Y2hNb2RlKTsK
ICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKQEAgLTE5MzYsMTAgKzE5MzAsNiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOwot
I2VuZGlmCi0KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmM2QzY2IyYjI0M2E1
NmMwODQ2OTBkMGU4Y2U5MDVkNDg5ODRhMDgzLi5kOTJkYmVkMTNhMjk1OGYyYTg3ZmM2YmI4MGNm
NTg5OTkxMTUxYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
ODk4LDYgKzg5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIGJvb2wgc2Nyb2xsUGVyZm9ybWFuY2VEYXRh
Q29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkOyB9CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSB7IHJldHVybiBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFjdGl2aXR5U3Rh
dGVVcGRhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHZvaWQgY2hhbmdl
Rm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CkBAIC0yNzE1
LDEwICsyNzE3LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXNpbmcg
VGVtcG9yYXJ5UERGRmlsZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OwogICAgIFRlbXBv
cmFyeVBERkZpbGVNYXAgbV90ZW1wb3JhcnlQREZGaWxlczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPiBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YT4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9sbFBl
cmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV9o
YXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFVz
ZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVDb3Vu
dDsKICAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nlc3NT
dXBwcmVzc2lvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApp
bmRleCBkYjA0YjUwNWZlYTIwZWQ3MzMzMTk2NThmZTE5NDRiODRlNjM1MGZiLi5jNDgwMzAxMzNm
MTg3Nzc1ZWU2ZmNhYmEwNWM1OWU5ZDE3ODI4MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOworICAgIHZvaWQgaGFu
ZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAKICAgICB2b2lkIGFk
anVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpAQCAtMTUxLDcgKzE1Miw2IEBA
IHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OwogICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOwogCi0gICAgUnVuTG9vcDo6
VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2
aXR5U3RhdGVUaW1lcjsKICAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBtX2FjdGl2aXR5
U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfTsKIApAQCAt
MTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2NhbGluZ1ZpZXdUb0ZpdERv
Y3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRGlkRmlyc3RMYXll
ckZsdXNoIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8V2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYmM1NWYwZWZhNTc2ODZiMDJhNjUyZDk0OWM5Y2Y0
YTExMWVhMjZhNC4uMWJkMmFhMTY2MjNmYmUxMjMzYTU1MmI3Y2MyZTc5ZjFmN2I2NTYwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNzMsNyArNzMsNiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24sIHBhcmFtZXRlcnMuZHJhd2luZ0Fy
ZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCkKICAgICAsIG1faXNQYWludGlu
Z1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSkpCiB7CiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBAIC0xMzMsNiArMTMyLDM2IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlSWZOZWVkZWQoCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKK3Zv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3NJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKworICAgIFtDQVRyYW5zYWN0
aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBzdHJvbmdQYWdlID0gbWFrZVJlZih3ZWFrVGhpcy0+bV93ZWJQYWdlKTsKKyAgICAgICAgYXV0
byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YSo+KHN0cm9uZ1BhZ2UtPmRyYXdpbmdBcmVhKCkpOworICAgICAgICBBU1NFUlQod2Vha1RoaXMu
Z2V0KCkgPT0gZHJhd2luZ0FyZWEpOworICAgICAgICBpZiAoZHJhd2luZ0FyZWEgIT0gd2Vha1Ro
aXMuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFkcmF3aW5nQXJl
YS0+bV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkcmF3aW5nQXJlYS0+bV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGRyYXdpbmdBcmVhLT5t
X2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
KQorICAgICAgICAgICAgc3Ryb25nUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOworCisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2tJ
RCA6IGRyYXdpbmdBcmVhLT5tX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisg
ICAgICAgICAgICBzdHJvbmdQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRD
YWxsYmFjayhjYWxsYmFja0lEKSk7CisgICAgICAgIGRyYXdpbmdBcmVhLT5tX25leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKworICAgICAgICBkcmF3aW5nQXJlYS0+
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
OworICAgIH0gZm9yUGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOworfQorCiB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXROZWVkc0Rpc3BsYXkoKQogewog
fQpAQCAtNDkyLDYgKzUyMSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5kZXJpbmdUeXBlIGZsdXNoVHlwCiAgICAgICAgIH0K
IAogICAgICAgICBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKKyAgICAgICAgaGFu
ZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAgICAgICAgIGludmFs
aWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKICAgICB9CiB9CkBAIC01MDks
MjEgKzUzOSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhCiAgICAgfQogCiAgICAgaWYgKG1f
YWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMg
fHwgIW1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
LX0KKyAgICAgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0g
dHJ1ZTsKIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKQotewotICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKLQot
ICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5
bmNocm9ub3VzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjYWxs
YmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQotICAgICAgICBt
X3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOwotCi0gICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFy
KCk7Ci0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5
bmNocm9ub3VzOworICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407805</attachid>
            <date>2020-09-02 14:04:55 -0700</date>
            <delta_ts>2020-09-02 14:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200902140454.patch</filename>
            <type>text/plain</type>
            <size>12990</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4NmEwZTg4YTgxNzg3NTVl
M2UxMjU0MTIyNzBhOWY4NzU0MmI1ZDIuLjM3OTUyYzk5MmEzOGE5YmQyMDcyZGM1MWNiZjU0MWMx
MGY5ODI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDktMDIgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2VicGFnZXMgZmxhc2ggd2hlbiBz
d2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVzIGZyb20gVGltIEhvcnRvbi4gVG8gYXZv
aWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZpZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRl
cyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJIHByb2Nlc3MgY29tbWl0cyBpdHMgdHJh
bnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBVSSBwcm9jZXNzIGJsb2NrIHVudGlsIHJl
Y2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIGZyb20gd2Vi
IHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRpZCBub3QgbWFrZSBzdXJlIHRoZSByZXBs
eSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBub3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBh
bmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29tbWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVk
IHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisgICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0
aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBseSBpbiB0cmFuc2FjdGlvbiBjb21taXQg
aGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLCBpZgorICAgICAgICB0aGVyZSBpcyBhbiBh
Y3RpdmUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgSW4gdGhlIHN3aXRjaGluZyBjYXNlLCB2aWV3
IHRvIGJlIHVuc2VsZWN0ZWQgd2lsbCBkZXRhY2ggZnJvbSByb290IGxheWVyIGluIGl0cyB3ZWIg
cHJvY2Vzcywgd2hpY2ggbWFrZXMgaXRzIAorICAgICAgICBjb250ZW50IGVtcHR5LiBUaGlzIGNo
YW5nZSBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZSBVSSBwcm9jZXNzIGNvbW1pdCwgc28gd2Ugd2Fu
dCB0aGlzIHRvIGhhcHBlbiBhZnRlciBVSSBwcm9jZXNzCisgICAgICAgIGNvbW1pdHMgKHdoaWNo
IHN1Ym1pdHMgdGhlIHZpZXcgaGllcmFjaHkgY2hhbmdlKS4gT3RoZXJ3aXNlLCBlbXB0eSBjb250
ZW50KHdoaXRlIGZsYXNoKSBvbiB0aGUgdW5zZWxlY3RlZCB2aWV3IAorICAgICAgICB3aWxsIGJl
IGRpc3BsYXllZC4gVG8gZml4IHRoaXMsIHdlIGxldCBVSSBwcm9jZXNzIHNlbmQgdGhlIGFjdGl2
aXR5IHN0YXRlIGNoYW5nZSBtZXNzYWdlIGluIHRyYW5zYWN0aW9uIGNvbW1pdCAKKyAgICAgICAg
aGFuZGxlciwgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRyYW5zYWN0aW9uLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRh
dGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGlt
ZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDktMDIgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0
aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVXBkYXRlIGRhdGUgcGlja2VyIHdoZW4g
dGhlIGlubmVyIGNvbnRyb2wgaXMgZWRpdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDRkNGY4ODdlZGM5NWIxZWQ1NzU3
NDBmMTk4YmJlNjJiYzYzM2NlYTUuLmIyYzU0OGIxMThmMDkyNTRiZmRhNTAyMWFmZGJlZWFmNmNl
Mzg1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCkBAIC00NSwxMCArNDUsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0
ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1J1bkxv
b3BPYnNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9ORUZpbHRl
clNvdXJjZVNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2lt
cG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CkBAIC00ODcsNiArNDg5LDM1IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpCiAKICNlbmRpZiAvLyBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcp
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKQorewor
ICAgIGJvb2wgaGFzU2NoZWR1bGVkT25PYnNlcnZlciA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURp
c3BhdGNoZXItPmlzU2NoZWR1bGVkKCk7CisgICAgYm9vbCBoYXNBY3RpdmVDQVRyYW5zYWN0aW9u
ID0gW0NBVHJhbnNhY3Rpb24gY3VycmVudFN0YXRlXTsKKworICAgIGlmIChoYXNTY2hlZHVsZWRP
bk9ic2VydmVyICYmIGhhc0FjdGl2ZUNBVHJhbnNhY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUKG1f
aGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSk7CisgICAgICAgIG1faGFzU2NoZWR1bGVk
QWN0aXZpdHlTdGF0ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7CisgICAgfQorCisgICAgaWYgKG1faGFzU2NoZWR1
bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFzU2NoZWR1
bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSA9IHRydWU7CisKKyAgICBpZiAoaGFzQWN0aXZlQ0FUcmFu
c2FjdGlvbikgeworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOlt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICAgICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKKyAgICAgICAgfSBmb3JQaGFz
ZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElP
TgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWUwMjQzMmI0
NzllNmMyNjliYzA3ZWY4NjA4MzUxMzFkODBmZTE3YS4uZTQ1MDJkMWViNDg2ZjJiMDdlMWIxMTQx
NDgyMjFjMDg5MjdmMTFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xODU2LDcgKzE4NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyhib29sIGZsYWcpCiAKICAgICBpZiAoIW1fc3VwcHJlc3NWaXNpYmls
aXR5VXBkYXRlcykgewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgpOworICAgICAgICBzY2hlZHVsZUFjdGl2aXR5
U3RhdGVVcGRhdGUoKTsKICNlbHNlCiAgICAgICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSgpOwogI2VuZGlmCkBAIC0xOTA4LDcgKzE5MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gbWF5SGF2
ZQogICAgICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5zY2hlZHVsZSgp
OworICAgIHNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZGlzcGF0Y2hNb2RlKTsKICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsK
QEAgLTE5MzcsNyArMTkzNyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5k
b3coKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hl
ci0+aW52YWxpZGF0ZSgpOworICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
LT5pc1NjaGVkdWxlZCgpKQorICAgICAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
LT5pbnZhbGlkYXRlKCk7CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0g
ZmFsc2U7CiAjZW5kaWYKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjNkM2NiMmIyNDNhNTZjMDg0NjkwZDBl
OGNlOTA1ZDQ4OTg0YTA4My4uNDAyOWU5MmU1ZmI4Yjg0NDI4ZTc1ZDhjNjg3NjM1MzM2NjFkYWFl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg5OCw2ICs4OTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZChib29sKTsKICAgICBib29sIHNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9u
RW5hYmxlZDsgfQogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSog
c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuZ2V0KCk7IH0KKworICAgIHZvaWQgc2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRlKCk7
CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOwpAQCAtMjcxOSw2ICsyNzIxLDgg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE+IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogICAgIGJvb2wg
bV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CisKKyAg
ICBib29sIG1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSB7IGZhbHNlIH07CiAjZW5k
aWYKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyOjpUb2tlbiBtX3BhZ2VJc1VzZXJPYnNl
cnZhYmxlQ291bnQ7CiAgICAgUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbiBtX3ByZXZl
bnRQcm9jZXNzU3VwcHJlc3Npb25Db3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKaW5kZXggZGIwNGI1MDVmZWEyMGVkNzMzMzE5NjU4ZmUxOTQ0Yjg0ZTYzNTBmYi4u
ZTEzM2ZhNmEzNzRiM2IxMjdkZDdiMTc3ZDBiY2ExMDM3OTYyZTkxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTg0LDcgKzg0LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpG
cmFtZVZpZXcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENo
YW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7CiAKICAgICB2b2lk
IGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CiAKQEAgLTEwOCw2ICsxMDcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZW5k
RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKKyAgICB2b2lkIGhhbmRsZUFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpOworICAgIHZvaWQgaGFuZGxlQWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcygpOwogCiAgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKQEAgLTE1MSw3ICsxNTIsNiBAQCBwcml2YXRlOgogICAg
IGRvdWJsZSBtX3RyYW5zaWVudFpvb21TY2FsZSB7IDEgfTsKICAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsKIAotICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7
CiAgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a0lEczsKICAgICBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
eyBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIH07CiAKQEAgLTE2OSw2ICsxNjksNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NjYWxpbmdWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
eyB0cnVlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZERpZEZpcnN0TGF5ZXJGbHVzaCB7IHRydWUg
fTsKKyAgICBib29sIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyB7
IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YWRkTWlsZXN0b25lc1RvRGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVz
dG9uZT4gcGFpbnRNaWxlc3RvbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCmluZGV4IGJjNTVmMGVmYTU3Njg2YjAyYTY1MmQ5NDljOWNmNGExMTFlYTI2YTQuLjQ2
Y2U2OTAwMGQ5ODgwZTg2NDUzNWFiZjgwYzVhZjNmZGZhNGYzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTczLDcgKzczLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFU
eXBlVGlsZWRDb3JlQW5pbWF0aW9uLCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwg
d2ViUGFnZSkKLSAgICAsIG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpCiAgICAgLCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQoIShw
YXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpKQogewog
ICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKHRydWUpOwpAQCAtNDkyLDEwICs0OTEsNTEgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKFVwZGF0ZVJlbmRlcmluZ1R5cGUgZmx1c2hUeXAK
ICAgICAgICAgfQogCiAgICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwor
ICAgICAgICBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsKICAg
ICAgICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogICAgIH0K
IH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrcygpCit7CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Nob3VsZEhhbmRs
ZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MgPSBmYWxzZTsKKworICAgIGlmIChtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQorICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKCkpOworCisgICAgZm9yIChhdXRvJiBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQorICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgIG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOworCisgICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzOworfQorCit2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tzSWZOZWVkZWQoKQoreworICAgIGlmICghbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIVtDQVRyYW5z
YWN0aW9uIGN1cnJlbnRTdGF0ZV0pIHsKKyAgICAgICAgaGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW0NBVHJhbnNhY3Rp
b24gYWRkQ29tbWl0SGFuZGxlcjpbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRv
IHByb3RlY3RlZFBhZ2UgPSBtYWtlUmVmKHdlYWtUaGlzLT5tX3dlYlBhZ2UpOworICAgICAgICBh
dXRvKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhKj4ocHJvdGVjdGVkUGFnZS0+ZHJhd2luZ0FyZWEoKSk7CisgICAgICAgIEFTU0VSVCh3ZWFr
VGhpcy5nZXQoKSA9PSBkcmF3aW5nQXJlYSk7CisgICAgICAgIGlmIChkcmF3aW5nQXJlYSAhPSB3
ZWFrVGhpcy5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkcmF3aW5nQXJl
YS0+aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcygpOworICAgIH0gZm9yUGhhc2U6
a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOworfQorCiB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0
ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tJRHMpCiB7CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzLmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKTsKQEAg
LTUwOSwyMSArNTQ5LDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGEKICAgICB9CiAKICAgICBp
ZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJv
bm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmlzRW1wdHkoKSkK
LSAgICAgICAgbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOwotfQorICAgICAgICBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a3MgPSB0cnVlOwogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRh
dGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpCi17Ci0gICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hd
OwotCi0gICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFu
Z2VBc3luY2hyb25vdXMpCi0gICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCi0gICAg
ICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhj
YWxsYmFja0lEKSk7Ci0KLSAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMu
Y2xlYXIoKTsKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5U3RhdGVDaGFu
Z2VBc3luY2hyb25vdXM7CisgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIH0KIAogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407816</attachid>
            <date>2020-09-02 14:30:28 -0700</date>
            <delta_ts>2020-09-02 14:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200902143027.patch</filename>
            <type>text/plain</type>
            <size>14165</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA2ZTIwYTIw
MWQxMWZmNjAxOTZmNjEzMmFiOTJkN2IxYTIzMWNjNGYyLi5jMGU2NzdkMDg1OTExODJlOWVjNDk1
MDJhOGQ4NTA1ZWU4YmE0OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMC0wOS0wMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJwYWdlcyBmbGFzaCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIHdpbmRvd3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFy
dHpDb3JlU1BJLmg6CisKIDIwMjAtMDgtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBkZXByZWNhdGVkIGFuZCB1bnVzZWQg
U1BJIHRvIHNldCBIU1RTIHN0b3JhZ2Ugb24gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDk4NmEwZTg4YTgxNzg3NTVlM2UxMjU0MTIyNzBhOWY4NzU0MmI1ZDIuLjM3OTUyYzk5
MmEzOGE5YmQyMDcyZGM1MWNiZjU0MWMxMGY5ODI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjAtMDktMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2VicGFnZXMgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVz
IGZyb20gVGltIEhvcnRvbi4gVG8gYXZvaWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZp
ZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRlcyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJ
IHByb2Nlc3MgY29tbWl0cyBpdHMgdHJhbnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBV
SSBwcm9jZXNzIGJsb2NrIHVudGlsIHJlY2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRh
dGVBY3Rpdml0eVN0YXRlIGZyb20gd2ViIHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRp
ZCBub3QgbWFrZSBzdXJlIHRoZSByZXBseSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBu
b3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBhbmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29t
bWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVkIHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisg
ICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBs
eSBpbiB0cmFuc2FjdGlvbiBjb21taXQgaGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLCBp
ZgorICAgICAgICB0aGVyZSBpcyBhbiBhY3RpdmUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgSW4g
dGhlIHN3aXRjaGluZyBjYXNlLCB2aWV3IHRvIGJlIHVuc2VsZWN0ZWQgd2lsbCBkZXRhY2ggZnJv
bSByb290IGxheWVyIGluIGl0cyB3ZWIgcHJvY2Vzcywgd2hpY2ggbWFrZXMgaXRzIAorICAgICAg
ICBjb250ZW50IGVtcHR5LiBUaGlzIGNoYW5nZSBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZSBVSSBw
cm9jZXNzIGNvbW1pdCwgc28gd2Ugd2FudCB0aGlzIHRvIGhhcHBlbiBhZnRlciBVSSBwcm9jZXNz
CisgICAgICAgIGNvbW1pdHMgKHdoaWNoIHN1Ym1pdHMgdGhlIHZpZXcgaGllcmFjaHkgY2hhbmdl
KS4gT3RoZXJ3aXNlLCBlbXB0eSBjb250ZW50KHdoaXRlIGZsYXNoKSBvbiB0aGUgdW5zZWxlY3Rl
ZCB2aWV3IAorICAgICAgICB3aWxsIGJlIGRpc3BsYXllZC4gVG8gZml4IHRoaXMsIHdlIGxldCBV
SSBwcm9jZXNzIHNlbmQgdGhlIGFjdGl2aXR5IHN0YXRlIGNoYW5nZSBtZXNzYWdlIGluIHRyYW5z
YWN0aW9uIGNvbW1pdCAKKyAgICAgICAgaGFuZGxlciwgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRy
YW5zYWN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0
ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrcyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpk
aWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDktMDIg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
VXBkYXRlIGRhdGUgcGlja2VyIHdoZW4gdGhlIGlubmVyIGNvbnRyb2wgaXMgZWRpdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKaW5kZXgg
OGZjNTRhNWI3YTNkMTEyYTUzZjQzNzQ3MDcwMGE1Yjg4NTUxNzBiZS4uMDBiYjQwMTA4MzE1MjY0
MGEzMTllMmVmMGFiMmFmODYwMTJmNmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHR5cGVkZWYg
ZW51bSB7CiArICh2b2lkKWFkZENvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkpYmxvY2sgZm9y
UGhhc2U6KENBVHJhbnNhY3Rpb25QaGFzZSlwaGFzZTsKICsgKENBVHJhbnNhY3Rpb25QaGFzZSlj
dXJyZW50UGhhc2U7CiArICh2b2lkKXN5bmNocm9uaXplOworKyAodWludDMyX3QpY3VycmVudFN0
YXRlOwogQGVuZAogCiBAaW50ZXJmYWNlIENBTGF5ZXJIb3N0IDogQ0FMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA0
ZDRmODg3ZWRjOTViMWVkNTc1NzQwZjE5OGJiZTYyYmM2MzNjZWE1Li4yOGYwM2JkOWM4MGZjNzBj
ZTc2ZjU0ZjhjYjE2MDkwZDE4MTBkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNDIsOSArNDIsMTEgQEAKICNpbXBv
cnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lt
cG9ydCAiV0tFcnJvckludGVybmFsLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rp
b25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wT2JzZXJ2ZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KQEAgLTQ4Nyw2ICs0ODksMzUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVt
Ym5haWxXaXRoUGF0aChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogI2Vu
ZGlmIC8vIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKIAordm9pZCBXZWJQYWdlUHJveHk6
OnNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpCit7CisgICAgYm9vbCBoYXNTY2hlZHVsZWRP
bk9ic2VydmVyID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aXNTY2hlZHVsZWQo
KTsKKyAgICBib29sIGhhc0FjdGl2ZUNBVHJhbnNhY3Rpb24gPSBbQ0FUcmFuc2FjdGlvbiBjdXJy
ZW50U3RhdGVdOworCisgICAgaWYgKGhhc1NjaGVkdWxlZE9uT2JzZXJ2ZXIgJiYgaGFzQWN0aXZl
Q0FUcmFuc2FjdGlvbikgeworICAgICAgICBBU1NFUlQobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0
YXRlVXBkYXRlKTsKKyAgICAgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRlID0g
ZmFsc2U7CisgICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRh
dGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRl
KQorICAgICAgICByZXR1cm47CisgICAgbV9oYXNTY2hlZHVsZWRBY3Rpdml0eVN0YXRlVXBkYXRl
ID0gdHJ1ZTsKKworICAgIGlmIChoYXNBY3RpdmVDQVRyYW5zYWN0aW9uKSB7CisgICAgICAgIFtD
QVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRo
aXMpXSB7CisgICAgICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtU
aGlzLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZUNoYW5nZSgpOworICAgICAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQ
b3N0Q29tbWl0XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZTAyNDMyYjQ3OWU2YzI2OWJjMDdlZjg2MDgzNTEz
MWQ4MGZlMTdhLi5lNDUwMmQxZWI0ODZmMmIwN2UxYjExNDE0ODIyMWMwODkyN2YxMWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4NTYsNyArMTg1Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGJvb2wg
ZmxhZykKIAogICAgIGlmICghbV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKSB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNj
aGVkdWxlKCk7CisgICAgICAgIHNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2Vsc2UK
ICAgICAgICAgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAjZW5kaWYKQEAgLTE5MDgs
NyArMTkwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9w
dGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBtYXlIYXZlCiAgICAgICAgIGRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPnNjaGVkdWxlKCk7CisgICAgc2NoZWR1bGVBY3Rpdml0
eVN0YXRlVXBkYXRlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkaXNwYXRjaE1vZGUpOwog
ICAgIGRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwpAQCAtMTkzNyw3ICsxOTM3LDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5pbnZhbGlkYXRlKCk7CisgICAg
aWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmlzU2NoZWR1bGVkKCkpCisgICAg
ICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsKKyAgICBt
X2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUgPSBmYWxzZTsKICNlbmRpZgogCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBmM2QzY2IyYjI0M2E1NmMwODQ2OTBkMGU4Y2U5MDVkNDg5ODRhMDgzLi40MDI5
ZTkyZTVmYjhiODQ0MjhlNzVkOGM2ODc2MzUzMzY2MWRhYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODk4LDYgKzg5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wpOwogICAgIGJv
b2wgc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkOyB9CiAgICAgUmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEoKSB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQorCisgICAg
dm9pZCBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKIAogICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZUNoYW5nZXMmJik7CkBAIC0yNzE5LDYgKzI3MjEsOCBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4gbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiAgICAgYm9vbCBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0
YUNvbGxlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV9oYXNTY2hlZHVsZWRB
Y3Rpdml0eVN0YXRlVXBkYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFVzZXJPYnNlcnZhYmxl
UGFnZUNvdW50ZXI6OlRva2VuIG1fcGFnZUlzVXNlck9ic2VydmFibGVDb3VudDsKICAgICBQcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIG1fcHJldmVudFByb2Nlc3NTdXBwcmVzc2lvbkNv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCBkYjA0YjUw
NWZlYTIwZWQ3MzMzMTk2NThmZTE5NDRiODRlNjM1MGZiLi5lMTMzZmE2YTM3NGIzYjEyN2RkN2Ix
NzdkMGJjYTEwMzc5NjJlOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaApAQCAtODQsNyArODQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRC
YWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFw
aGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIApAQCAtMTA4LDYg
KzEwNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmREaWRGaXJzdExheWVy
Rmx1c2hJZk5lZWRlZCgpOworICAgIHZvaWQgaGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrc0lmTmVlZGVkKCk7CisgICAgdm9pZCBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzKCk7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRl
OwpAQCAtMTUxLDcgKzE1Miw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9v
bVNjYWxlIHsgMSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3Jp
Z2luOwogCi0gICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+
IG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcjsKICAgICBWZWN0b3I8Q2FsbGJhY2tJ
RD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCB7IEFjdGl2aXR5U3RhdGVDaGFuZ2VB
c3luY2hyb25vdXMgfTsKIApAQCAtMTY5LDYgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzU2NhbGluZ1ZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNT
ZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKICAgICBib29sIG1f
bmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRI
YW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzIHsgZmFsc2UgfTsKIH07CiAKIGlubGlu
ZSBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNw
YXRjaChPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYmM1NWYwZWZh
NTc2ODZiMDJhNjUyZDk0OWM5Y2Y0YTExMWVhMjZhNC4uNDZjZTY5MDAwZDk4ODBlODY0NTM1YWJm
ODBjNWFmM2ZkZmE0ZjNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtNzMsNyArNzMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdl
YlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgOiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24s
IHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9zZW5k
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJl
ZCkKICAgICAsIG1faXNQYWludGluZ1N1c3BlbmRlZCghKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0
ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkpCiB7CiAgICAgbV93ZWJQYWdlLmNvcmVQYWdl
KCktPnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkBAIC00OTIsMTAg
KzQ5MSw1MSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5k
ZXJpbmcoVXBkYXRlUmVuZGVyaW5nVHlwZSBmbHVzaFR5cAogICAgICAgICB9CiAKICAgICAgICAg
c2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CisgICAgICAgIGhhbmRsZUFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpOwogICAgICAgICBpbnZhbGlkYXRlUmVuZGVy
aW5nVXBkYXRlUnVuTG9vcE9ic2VydmVyKCk7CiAgICAgfQogfQogCit2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKCkK
K3sKKyAgICBpZiAoIW1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykK
KyAgICAgICAgcmV0dXJuOworICAgIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrcyA9IGZhbHNlOworCisgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFj
dGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMpCisgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CisKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJ
RHMpCisgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRD
YWxsYmFjayhjYWxsYmFja0lEKSk7CisgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrSURzLmNsZWFyKCk7CisKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IEFjdGl2aXR5
U3RhdGVDaGFuZ2VBc3luY2hyb25vdXM7Cit9CisKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3NJZk5lZWRlZCgpCit7
CisgICAgaWYgKCFtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghW0NBVHJhbnNhY3Rpb24gY3VycmVudFN0YXRlXSkg
eworICAgICAgICBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOlt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcHJvdGVjdGVkUGFnZSA9IG1ha2VS
ZWYod2Vha1RoaXMtPm1fd2ViUGFnZSk7CisgICAgICAgIGF1dG8qIGRyYXdpbmdBcmVhID0gc3Rh
dGljX2Nhc3Q8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEqPihwcm90ZWN0ZWRQYWdlLT5k
cmF3aW5nQXJlYSgpKTsKKyAgICAgICAgQVNTRVJUKHdlYWtUaGlzLmdldCgpID09IGRyYXdpbmdB
cmVhKTsKKyAgICAgICAgaWYgKGRyYXdpbmdBcmVhICE9IHdlYWtUaGlzLmdldCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGRyYXdpbmdBcmVhLT5oYW5kbGVBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzKCk7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9z
dENvbW1pdF07Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQs
IEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3Rv
cjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKIHsKICAg
ICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9yKG5leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwpAQCAtNTA5LDIxICs1NDksOSBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9w
dGlvblNldDxBY3Rpdml0eVN0YQogICAgIH0KIAogICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFu
Z2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQotICAgICAgICBtX3NlbmREaWRVcGRh
dGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19CisgICAgICAgIG1fc2hv
dWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyA9IHRydWU7CiAKLXZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZp
cmVkKCkKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07Ci0KLSAgICBpZiAobV9hY3Rpdml0
eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKLSAgICAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbGJhY2tJRCA6IG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKLQotICAgIG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwotICAgIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91czsKKyAgICBz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407817</attachid>
            <date>2020-09-02 14:42:46 -0700</date>
            <delta_ts>2020-09-04 11:24:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200902144245.patch</filename>
            <type>text/plain</type>
            <size>14206</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA2ZTIwYTIw
MWQxMWZmNjAxOTZmNjEzMmFiOTJkN2IxYTIzMWNjNGYyLi5jMGU2NzdkMDg1OTExODJlOWVjNDk1
MDJhOGQ4NTA1ZWU4YmE0OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMC0wOS0wMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJwYWdlcyBmbGFzaCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIHdpbmRvd3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFy
dHpDb3JlU1BJLmg6CisKIDIwMjAtMDgtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBkZXByZWNhdGVkIGFuZCB1bnVzZWQg
U1BJIHRvIHNldCBIU1RTIHN0b3JhZ2Ugb24gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDk4NmEwZTg4YTgxNzg3NTVlM2UxMjU0MTIyNzBhOWY4NzU0MmI1ZDIuLjM3OTUyYzk5
MmEzOGE5YmQyMDcyZGM1MWNiZjU0MWMxMGY5ODI4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjAtMDktMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2VicGFnZXMgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB3aW5kb3dzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYwMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBwYXRjaGVz
IGZyb20gVGltIEhvcnRvbi4gVG8gYXZvaWQgZmxhc2gsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHZp
ZXcgdG8gYmUgc2VsZWN0ZWQgdXBkYXRlcyBpdHMgY29udGVudCAKKyAgICAgICAgYmVmb3JlIFVJ
IHByb2Nlc3MgY29tbWl0cyBpdHMgdHJhbnNhY3Rpb24uIFdlIGRpZCB0aGlzIGJ5IG1ha2luZyBV
SSBwcm9jZXNzIGJsb2NrIHVudGlsIHJlY2VpdmluZyBhIHJlcGx5IAorICAgICAgICBEaWRVcGRh
dGVBY3Rpdml0eVN0YXRlIGZyb20gd2ViIHByb2Nlc3MuIEhvd2V2ZXIsIHdlYiBwcm9jZXNzIGRp
ZCBub3QgbWFrZSBzdXJlIHRoZSByZXBseSB3b3VsZCBiZSBzZW50IGFmdGVyIAorICAgICAgICBu
b3JtYWwgcmVuZGVyaW5nIHVwZGF0ZSBhbmQgY29ycmVzcG9uZGluZyB0cmFuc2FzY3Rpb24gY29t
bWl0LiBJbnN0ZWFkLCBpdCBmbHVzaGVkIHRyYW5zYWN0aW9ucyBpbiBwcm9ncmVzcyBhbmQgCisg
ICAgICAgIHJlcGxpZWQuIFRvIGZpeCB0aGlzLCBub3cgd2UgbWFrZSB3ZWIgcHJvY2VzcyByZXBs
eSBpbiB0cmFuc2FjdGlvbiBjb21taXQgaGFuZGxlciBhZnRlciByZW5kZXJpbmcgdXBkYXRlLCBp
ZgorICAgICAgICB0aGVyZSBpcyBhbiBhY3RpdmUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgSW4g
dGhlIHN3aXRjaGluZyBjYXNlLCB2aWV3IHRvIGJlIHVuc2VsZWN0ZWQgd2lsbCBkZXRhY2ggZnJv
bSByb290IGxheWVyIGluIGl0cyB3ZWIgcHJvY2Vzcywgd2hpY2ggbWFrZXMgaXRzIAorICAgICAg
ICBjb250ZW50IGVtcHR5LiBUaGlzIGNoYW5nZSBpcyBpbmRlcGVuZGVudCBmcm9tIHRoZSBVSSBw
cm9jZXNzIGNvbW1pdCwgc28gd2Ugd2FudCB0aGlzIHRvIGhhcHBlbiBhZnRlciBVSSBwcm9jZXNz
CisgICAgICAgIGNvbW1pdHMgKHdoaWNoIHN1Ym1pdHMgdGhlIHZpZXcgaGllcmFjaHkgY2hhbmdl
KS4gT3RoZXJ3aXNlLCBlbXB0eSBjb250ZW50KHdoaXRlIGZsYXNoKSBvbiB0aGUgdW5zZWxlY3Rl
ZCB2aWV3IAorICAgICAgICB3aWxsIGJlIGRpc3BsYXllZC4gVG8gZml4IHRoaXMsIHdlIGxldCBV
SSBwcm9jZXNzIHNlbmQgdGhlIGFjdGl2aXR5IHN0YXRlIGNoYW5nZSBtZXNzYWdlIGluIHRyYW5z
YWN0aW9uIGNvbW1pdCAKKyAgICAgICAgaGFuZGxlciwgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRy
YW5zYWN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0
ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrcyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpk
aWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisKIDIwMjAtMDktMDIg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
VXBkYXRlIGRhdGUgcGlja2VyIHdoZW4gdGhlIGlubmVyIGNvbnRyb2wgaXMgZWRpdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKaW5kZXgg
OGZjNTRhNWI3YTNkMTEyYTUzZjQzNzQ3MDcwMGE1Yjg4NTUxNzBiZS4uMDBiYjQwMTA4MzE1MjY0
MGEzMTllMmVmMGFiMmFmODYwMTJmNmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHR5cGVkZWYg
ZW51bSB7CiArICh2b2lkKWFkZENvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkpYmxvY2sgZm9y
UGhhc2U6KENBVHJhbnNhY3Rpb25QaGFzZSlwaGFzZTsKICsgKENBVHJhbnNhY3Rpb25QaGFzZSlj
dXJyZW50UGhhc2U7CiArICh2b2lkKXN5bmNocm9uaXplOworKyAodWludDMyX3QpY3VycmVudFN0
YXRlOwogQGVuZAogCiBAaW50ZXJmYWNlIENBTGF5ZXJIb3N0IDogQ0FMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA0
ZDRmODg3ZWRjOTViMWVkNTc1NzQwZjE5OGJiZTYyYmM2MzNjZWE1Li5iMmM1NDhiMTE4ZjA5MjU0
YmZkYTUwMjFhZmRiZWVhZjZjZTM4NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNDUsMTAgKzQ1LDEyIEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9SdW5Mb29wT2JzZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VhcmNo
UG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgpAQCAtNDg3LDYg
KzQ4OSwzNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAjZW5kaWYgLy8gSEFWRShRVUlD
S0xPT0tfVEhVTUJOQUlMSU5HKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0
eVN0YXRlVXBkYXRlKCkKK3sKKyAgICBib29sIGhhc1NjaGVkdWxlZE9uT2JzZXJ2ZXIgPSBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyLT5pc1NjaGVkdWxlZCgpOworICAgIGJvb2wgaGFz
QWN0aXZlQ0FUcmFuc2FjdGlvbiA9IFtDQVRyYW5zYWN0aW9uIGN1cnJlbnRTdGF0ZV07CisKKyAg
ICBpZiAoaGFzU2NoZWR1bGVkT25PYnNlcnZlciAmJiBoYXNBY3RpdmVDQVRyYW5zYWN0aW9uKSB7
CisgICAgICAgIEFTU0VSVChtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUpOworICAg
ICAgICBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOworICAgIH0KKwor
ICAgIGlmIChtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUgPSB0cnVlOworCisgICAg
aWYgKGhhc0FjdGl2ZUNBVHJhbnNhY3Rpb24pIHsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gYWRk
Q29tbWl0SGFuZGxlcjpbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAg
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7
CisgICAgICAgIH0gZm9yUGhhc2U6a0NBVHJhbnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hl
ci0+c2NoZWR1bGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDVlMDI0MzJiNDc5ZTZjMjY5YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmU0NTAy
ZDFlYjQ4NmYyYjA3ZTFiMTE0MTQ4MjIxYzA4OTI3ZjExZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTg1Niw3ICsxODU2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBmbGFnKQogCiAgICAgaWYg
KCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMpIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICAg
ICAgc2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRlKCk7CiAjZWxzZQogICAgICAgICBkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNlbmRpZgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IG1heUhhdmUKICAgICAgICAgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdl
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlz
cGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICBzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRpc3BhdGNoTW9kZSk7CiAgICAgZGlzcGF0Y2hBY3Rp
dml0eVN0YXRlQ2hhbmdlKCk7CkBAIC0xOTM3LDcgKzE5MzcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dmlld0RpZEVudGVyV2luZG93KCkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlT
dGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9hY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aXNTY2hlZHVsZWQoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOworICAgIG1faGFzU2NoZWR1bGVkQWN0
aXZpdHlTdGF0ZVVwZGF0ZSA9IGZhbHNlOwogI2VuZGlmCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGYzZDNj
YjJiMjQzYTU2YzA4NDY5MGQwZThjZTkwNWQ0ODk4NGEwODMuLjQwMjllOTJlNWZiOGI4NDQyOGU3
NWQ4YzY4NzYzNTMzNjYxZGFhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC04OTgsNiArODk4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsUGVyZm9y
bWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBzY3JvbGxQZXJmb3Jt
YW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGVyZm9y
bWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7IH0KICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmdldCgpOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAgICAgdm9p
ZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsK
QEAgLTI3MTksNiArMjcyMSw4IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YTsKICAgICBib29sIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJs
ZWQgeyBmYWxzZSB9OworCisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRh
dGUgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgVXNlck9ic2VydmFibGVQYWdlQ291bnRlcjo6VG9r
ZW4gbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNvdW50OwogICAgIFByb2Nlc3NTdXBwcmVzc2lvbkRp
c2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGRiMDRiNTA1ZmVhMjBlZDczMzMxOTY1
OGZlMTk0NGI4NGU2MzUwZmIuLmUxMzNmYTZhMzc0YjNiMTI3ZGQ3YjE3N2QwYmNhMTAzNzk2MmU5
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC04NCw3ICs4
NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZp
ZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxi
YWNrSUQ+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJG
aXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCkBAIC0xMDgsNiArMTA3LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7
CisgICAgdm9pZCBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsK
KyAgICB2b2lkIGhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MoKTsKIAogICAgIHZv
aWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkBAIC0xNTEsNyArMTUy
LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CiAg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47CiAKLSAgICBSdW5M
b29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZVRpbWVyOwogICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0
aXZpdHlTdGF0ZUNoYW5nZUlEIHsgQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9Owog
CkBAIC0xNjksNiArMTY5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTY2FsaW5nVmlld1Rv
Rml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9uZWVkc1NlbmREaWRGaXJz
dExheWVyRmx1c2ggeyB0cnVlIH07CisgICAgYm9vbCBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja3MgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IHBhaW50TWlsZXN0b25lcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBiYzU1ZjBlZmE1NzY4NmIwMmE2NTJkOTQ5
YzljZjRhMTExZWEyNmE0Li40NmNlNjkwMDBkOTg4MGU4NjQ1MzVhYmY4MGM1YWYzZmRmYTRmM2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03Myw3ICs3
Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwg
Y29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdp
bmdBcmVhKERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbiwgcGFyYW1ldGVycy5kcmF3
aW5nQXJlYUlkZW50aWZpZXIsIHdlYlBhZ2UpCi0gICAgLCBtX3NlbmREaWRVcGRhdGVBY3Rpdml0
eVN0YXRlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKQogICAgICwgbV9pc1Bh
aW50aW5nU3VzcGVuZGVkKCEocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlKSkKIHsKICAgICBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKQEAgLTQ5MiwxMCArNDkxLDUxIEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5k
ZXJpbmdUeXBlIGZsdXNoVHlwCiAgICAgICAgIH0KIAogICAgICAgICBzZW5kRGlkRmlyc3RMYXll
ckZsdXNoSWZOZWVkZWQoKTsKKyAgICAgICAgaGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrc0lmTmVlZGVkKCk7CiAgICAgICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29w
T2JzZXJ2ZXIoKTsKICAgICB9CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MoKQoreworICAgIGlmICghbV9z
aG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm47
CisgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0gZmFsc2U7
CisKKyAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5n
ZUFzeW5jaHJvbm91cykKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKKworICAgIGZvciAoYXV0byYgY2FsbGJh
Y2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKKyAgICAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNr
SUQpKTsKKyAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsK
KworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91czsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxl
QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fc2hv
dWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFbQ0FUcmFuc2FjdGlvbiBjdXJyZW50U3RhdGVdKSB7CisgICAgICAgIGhhbmRs
ZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgYXV0byBwcm90ZWN0ZWRQYWdlID0gbWFrZVJlZih3ZWFrVGhpcy0+bV93
ZWJQYWdlKTsKKyAgICAgICAgYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYSo+KHByb3RlY3RlZFBhZ2UtPmRyYXdpbmdBcmVhKCkpOwor
ICAgICAgICBBU1NFUlQod2Vha1RoaXMuZ2V0KCkgPT0gZHJhd2luZ0FyZWEpOworICAgICAgICBp
ZiAoZHJhd2luZ0FyZWEgIT0gd2Vha1RoaXMuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgZHJhd2luZ0FyZWEtPmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mo
KTsKKyAgICB9IGZvclBoYXNlOmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKK30KKwog
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBu
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewogICAgIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja0lEcyk7CkBAIC01MDksMjEgKzU0OSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhCiAgICAgfQogCiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5
U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfHwgIW1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja0lEcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KKyAgICAgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0gdHJ1ZTsKIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKQotewotICAgIFtD
QVRyYW5zYWN0aW9uIGZsdXNoXTsKLQotICAgIGlmIChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCAh
PSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKQotICAgICAgICBtX3dlYlBhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOwotCi0g
ICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzKQotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwotCi0gICAgbV9uZXh0QWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7Ci0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
PSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzOworICAgIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3Bl
bmRQYWludGluZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408003</attachid>
            <date>2020-09-04 11:24:10 -0700</date>
            <delta_ts>2020-09-04 13:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216012-20200904112411.patch</filename>
            <type>text/plain</type>
            <size>14750</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA2ZTIwYTIw
MWQxMWZmNjAxOTZmNjEzMmFiOTJkN2IxYTIzMWNjNGYyLi5hZTIyMmIzYzA5NTg3MGM5NDU2M2Ni
OGNjNzVhNTYwYzYwMDM4NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMC0wOS0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJwYWdlcyBmbGFzaCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIHdpbmRvd3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaDoKKwogMjAyMC0wOC0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIGRlcHJlY2F0ZWQgYW5kIHVudXNlZCBTUEkg
dG8gc2V0IEhTVFMgc3RvcmFnZSBvbiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggOTQ5MTFkODk2MjUxYWU3Y2E2NTg1ODc0YzUyMGFiODg2ZmFlYjliMy4uMTM3MDY0NDU1NjRj
MzExMjJjYmE2NGQ4OTE4N2E0ODFhNGJjNDc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAor
MjAyMC0wOS0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJwYWdlcyBmbGFzaCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIHdpbmRvd3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjAxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQmFzZWQgb24gcGF0Y2hlcyBmcm9tIFRp
bSBIb3J0b24uIFRvIGF2b2lkIGZsYXNoLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB2aWV3IHRvIGJl
IHNlbGVjdGVkIHVwZGF0ZXMgaXRzIGNvbnRlbnQgCisgICAgICAgIGJlZm9yZSBVSSBwcm9jZXNz
IGNvbW1pdHMgaXRzIHRyYW5zYWN0aW9uLiBXZSBkaWQgdGhpcyBieSBtYWtpbmcgVUkgcHJvY2Vz
cyBibG9jayB1bnRpbCByZWNlaXZpbmcgYSByZXBseSAKKyAgICAgICAgRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSBmcm9tIHdlYiBwcm9jZXNzLiBIb3dldmVyLCB3ZWIgcHJvY2VzcyBkaWQgbm90IG1h
a2Ugc3VyZSB0aGUgcmVwbHkgd291bGQgYmUgc2VudCBhZnRlciAKKyAgICAgICAgbm9ybWFsIHJl
bmRlcmluZyB1cGRhdGUgYW5kIGNvcnJlc3BvbmRpbmcgdHJhbnNhc2N0aW9uIGNvbW1pdC4gSW5z
dGVhZCwgaXQgZmx1c2hlZCB0cmFuc2FjdGlvbnMgaW4gcHJvZ3Jlc3MgYW5kIAorICAgICAgICBy
ZXBsaWVkLiBUbyBmaXggdGhpcywgbm93IHdlIG1ha2Ugd2ViIHByb2Nlc3MgcmVwbHkgaW4gdHJh
bnNhY3Rpb24gY29tbWl0IGhhbmRsZXIgYWZ0ZXIgcmVuZGVyaW5nIHVwZGF0ZSwgaWYKKyAgICAg
ICAgdGhlcmUgaXMgYW4gYWN0aXZlIHRyYW5zYWN0aW9uLgorCisgICAgICAgIEluIHRoZSBzd2l0
Y2hpbmcgY2FzZSwgdmlldyB0byBiZSB1bnNlbGVjdGVkIHdpbGwgZGV0YWNoIGZyb20gcm9vdCBs
YXllciBpbiBpdHMgd2ViIHByb2Nlc3MsIHdoaWNoIG1ha2VzIGl0cyAKKyAgICAgICAgY29udGVu
dCBlbXB0eS4gVGhpcyBjaGFuZ2UgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgVUkgcHJvY2VzcyBj
b21taXQsIHNvIHdlIHdhbnQgdGhpcyB0byBoYXBwZW4gYWZ0ZXIgVUkgcHJvY2VzcworICAgICAg
ICBjb21taXRzICh3aGljaCBzdWJtaXRzIHRoZSB2aWV3IGhpZXJhY2h5IGNoYW5nZSkuIE90aGVy
d2lzZSwgZW1wdHkgY29udGVudCh3aGl0ZSBmbGFzaCkgb24gdGhlIHVuc2VsZWN0ZWQgdmlldyAK
KyAgICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQuIFRvIGZpeCB0aGlzLCB3ZSBsZXQgVUkgcHJvY2Vz
cyBzZW5kIHRoZSBhY3Rpdml0eSBzdGF0ZSBjaGFuZ2UgbWVzc2FnZSBpbiB0cmFuc2FjdGlvbiBj
b21taXQgCisgICAgICAgIGhhbmRsZXIsIGlmIHRoZXJlIGlzIGFuIGFjdGl2ZSB0cmFuc2FjdGlv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxl
QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOiBEZWxldGVkLgorCiAyMDIwLTA5LTA0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBjbGll
bnQgZGVjb2RlciBlbnRpdGxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oCmluZGV4IDhmYzU0YTViN2EzZDExMmE1M2Y0Mzc0NzA3MDBh
NWI4ODU1MTcwYmUuLjAwYmI0MDEwODMxNTI2NDBhMzE5ZTJlZjBhYjJhZjg2MDEyZjZhOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgK
QEAgLTE0Myw2ICsxNDMsNyBAQCB0eXBlZGVmIGVudW0gewogKyAodm9pZClhZGRDb21taXRIYW5k
bGVyOih2b2lkKF4pKHZvaWQpKWJsb2NrIGZvclBoYXNlOihDQVRyYW5zYWN0aW9uUGhhc2UpcGhh
c2U7CiArIChDQVRyYW5zYWN0aW9uUGhhc2UpY3VycmVudFBoYXNlOwogKyAodm9pZClzeW5jaHJv
bml6ZTsKKysgKHVpbnQzMl90KWN1cnJlbnRTdGF0ZTsKIEBlbmQKIAogQGludGVyZmFjZSBDQUxh
eWVySG9zdCA6IENBTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNGQ0Zjg4N2VkYzk1YjFlZDU3NTc0MGYxOThiYmU2
MmJjNjMzY2VhNS4uMTJmMWExNDNiYWUyY2Q1NWM4MThiZjhhM2YwMWUwMTJlOGQ2MjJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KQEAgLTQ1LDEwICs0NSwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcE9ic2VydmVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudUNvY29hLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxp
ZGF0aW9uQnViYmxlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJ
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYv
Y2YvVHlwZUNhc3RzQ0YuaD4KQEAgLTQ4Nyw2ICs0ODksMzkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmkKIAogI2VuZGlmIC8vIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKIAordm9pZCBX
ZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpCit7CisgICAgYm9vbCBo
YXNTY2hlZHVsZWRPYnNlcnZlciA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmlz
U2NoZWR1bGVkKCk7CisgICAgYm9vbCBoYXNBY3RpdmVDQVRyYW5zYWN0aW9uID0gW0NBVHJhbnNh
Y3Rpb24gY3VycmVudFN0YXRlXTsKKworICAgIGlmIChoYXNTY2hlZHVsZWRPYnNlcnZlciAmJiBo
YXNBY3RpdmVDQVRyYW5zYWN0aW9uKSB7CisgICAgICAgIEFTU0VSVChtX2hhc1NjaGVkdWxlZEFj
dGl2aXR5U3RhdGVVcGRhdGUpOworICAgICAgICBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVV
cGRhdGUgPSBmYWxzZTsKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+
aW52YWxpZGF0ZSgpOworICAgIH0KKworICAgIGlmIChtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3Rh
dGVVcGRhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2hhc1NjaGVkdWxlZEFjdGl2aXR5U3Rh
dGVVcGRhdGUgPSB0cnVlOworCisgICAgLy8gSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHRyYW5zYWN0
aW9uLCB3ZSBuZWVkIHRvIGRpc3BhdGNoIHRoZSB1cGRhdGUgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9u
IGlzIGNvbW1pdHRlZCwKKyAgICAvLyB0byBhdm9pZCBmbGFzaCBjYXVzZWQgYnkgd2ViIHByb2Nl
c3Mgc2V0dGluZyByb290IGxheWVyIHRvbyBlYXJseS4KKyAgICAvLyBJZiB0aGVyZSBpcyBubyBh
Y3RpdmUgdHJhbnNhY3Rpb24sIGxpa2VseSB0aGVyZSBpcyBubyByb290IGxheWVyIGNoYW5nZSBv
ciBjaGFuZ2UgaXMgY29tbWl0dGVkLAorICAgIC8vIHRoZW4gc2NoZWR1bGUgZGlzcGF0Y2ggb24g
cnVubG9vcCBvYnNlcnZlciB0byBjb2xsZWN0IGNoYW5nZXMgaW4gdGhlIHNhbWUgcnVubG9vcCBj
eWNsZSBiZWZvcmUgZGlzcGF0Y2hpbmcuCisgICAgaWYgKGhhc0FjdGl2ZUNBVHJhbnNhY3Rpb24p
IHsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CisgICAgICAgIH0gZm9yUGhhc2U6a0NBVHJh
bnNhY3Rpb25QaGFzZVBvc3RDb21taXRdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVlMDI0MzJiNDc5ZTZjMjY5
YmMwN2VmODYwODM1MTMxZDgwZmUxN2EuLmU0NTAyZDFlYjQ4NmYyYjA3ZTFiMTE0MTQ4MjIxYzA4
OTI3ZjExZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTg1Niw3ICsxODU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzVmlzaWJpbGl0
eVVwZGF0ZXMoYm9vbCBmbGFnKQogCiAgICAgaWYgKCFtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0
ZXMpIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICAgICAgc2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBk
YXRlKCk7CiAjZWxzZQogICAgICAgICBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICNl
bmRpZgpAQCAtMTkwOCw3ICsxOTA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IG1heUhhdmUKICAgICAg
ICAgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+c2NoZWR1bGUoKTsKKyAgICBz
Y2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRp
c3BhdGNoTW9kZSk7CiAgICAgZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CkBAIC0xOTM3
LDcgKzE5MzcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXItPmludmFs
aWRhdGUoKTsKKyAgICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aXNTY2hl
ZHVsZWQoKSkKKyAgICAgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxp
ZGF0ZSgpOworICAgIG1faGFzU2NoZWR1bGVkQWN0aXZpdHlTdGF0ZVVwZGF0ZSA9IGZhbHNlOwog
I2VuZGlmCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ2MDZiY2VhYTYwZGQ5NTIxNDdiMGYyYzNlZjAwOGQ3
MDE5NTExZWIuLjJiMDA2NmMyOTQ3MmI0NzQwMDU3OTY4N2FmMDVkZDdmNTIyOWViNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04OTgsNiArODk4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQo
Ym9vbCk7CiAgICAgYm9vbCBzY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQ7
IH0KICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmdl
dCgpOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSgpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQogCiAgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJD
b3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKQEAgLTI3MjAsNiArMjcyMiw4IEBAIHByaXZh
dGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhPiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKICAgICBib29sIG1fc2Nyb2xs
UGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgeyBmYWxzZSB9OworCisgICAgYm9vbCBt
X2hhc1NjaGVkdWxlZEFjdGl2aXR5U3RhdGVVcGRhdGUgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAg
VXNlck9ic2VydmFibGVQYWdlQ291bnRlcjo6VG9rZW4gbV9wYWdlSXNVc2VyT2JzZXJ2YWJsZUNv
dW50OwogICAgIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vz
c1N1cHByZXNzaW9uQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CmluZGV4IGRiMDRiNTA1ZmVhMjBlZDczMzMxOTY1OGZlMTk0NGI4NGU2MzUwZmIuLmUxMzNmYTZh
Mzc0YjNiMTI3ZGQ3YjE3N2QwYmNhMTAzNzk2MmU5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCkBAIC04NCw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0
aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hW
aWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRl
OwogCkBAIC0xMDgsNiArMTA3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Vu
ZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CisgICAgdm9pZCBoYW5kbGVBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tzSWZOZWVkZWQoKTsKKyAgICB2b2lkIGhhbmRsZUFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja3MoKTsKIAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKICAgICB2b2lk
IGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgb3ZlcnJpZGU7CkBAIC0xNTEsNyArMTUyLDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3Ry
YW5zaWVudFpvb21PcmlnaW47CiAKLSAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyOwogICAgIFZl
Y3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CiAg
ICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIHsgQWN0aXZp
dHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9OwogCkBAIC0xNjksNiArMTY5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNTY2FsaW5nVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsgdHJ1ZSB9
OwogICAgIGJvb2wgbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2ggeyB0cnVlIH07CisgICAg
Ym9vbCBtX3Nob3VsZEhhbmRsZUFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MgeyBmYWxzZSB9
OwogfTsKIAogaW5saW5lIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkZE1p
bGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IHBh
aW50TWlsZXN0b25lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpp
bmRleCBiYzU1ZjBlZmE1NzY4NmIwMmE2NTJkOTQ5YzljZjRhMTExZWEyNmE0Li44OGE2NGFhNmNl
MWM3NWQxODFmYThmN2JjYjdkNTg0NDk1MjdmYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03Myw3ICs3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZVRpbGVk
Q29yZUFuaW1hdGlvbiwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50aWZpZXIsIHdlYlBhZ2Up
Ci0gICAgLCBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGVUaW1lckZpcmVkKQogICAgICwgbV9pc1BhaW50aW5nU3VzcGVuZGVkKCEocGFyYW1ldGVy
cy5hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSkKIHsKICAgICBtX3dl
YlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVl
KTsKQEAgLTQ5MiwxMCArNDkxLDUzIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5kZXJpbmdUeXBlIGZsdXNoVHlwCiAgICAgICAg
IH0KIAogICAgICAgICBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKKyAgICAgICAg
aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrc0lmTmVlZGVkKCk7CiAgICAgICAgIGlu
dmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKICAgICB9CiB9CiAKK3Zv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmhhbmRsZUFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja3MoKQoreworICAgIGlmICghbV9zaG91bGRIYW5kbGVBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzKQorICAgICAgICByZXR1cm47CisgICAgbV9zaG91bGRIYW5kbGVBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzID0gZmFsc2U7CisKKyAgICBpZiAobV9hY3Rpdml0eVN0YXRl
Q2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cykKKyAgICAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSgpKTsKKworICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja0lEcykKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKKworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91czsKK30KKwordm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
c0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gYWN0
aXZlIHRyYW5zYWN0aW9uLCBsaWtlbHkgdGhlcmUgaXMgbm8gbGF5ZXIgY2hhbmdlIG9yIGNoYW5n
ZSBpcyBjb21taXR0ZWQsCisgICAgLy8gcGVyZm9ybSB0aGUgY2FsbGJhY2tzIGltbWVkaWF0ZWx5
LCB3aGljaCBtYXkgdW5ibG9jayBVSSBwcm9jZXNzLgorICAgIGlmICghW0NBVHJhbnNhY3Rpb24g
Y3VycmVudFN0YXRlXSkgeworICAgICAgICBoYW5kbGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRD
b21taXRIYW5kbGVyOlt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcHJvdGVj
dGVkUGFnZSA9IG1ha2VSZWYod2Vha1RoaXMtPm1fd2ViUGFnZSk7CisgICAgICAgIGF1dG8qIGRy
YXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEqPihw
cm90ZWN0ZWRQYWdlLT5kcmF3aW5nQXJlYSgpKTsKKyAgICAgICAgQVNTRVJUKHdlYWtUaGlzLmdl
dCgpID09IGRyYXdpbmdBcmVhKTsKKyAgICAgICAgaWYgKGRyYXdpbmdBcmVhICE9IHdlYWtUaGlz
LmdldCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRyYXdpbmdBcmVhLT5oYW5k
bGVBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKCk7CisgICAgfSBmb3JQaGFzZTprQ0FUcmFu
c2FjdGlvblBoYXNlUG9zdENvbW1pdF07Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGNoYW5nZWQsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja0lEcykKIHsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBw
ZW5kVmVjdG9yKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwpAQCAtNTA5LDIx
ICs1NTEsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YQogICAgIH0KIAogICAgIGlmIChtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8
ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuaXNFbXB0eSgpKQotICAgICAg
ICBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19
CisgICAgICAgIG1fc2hvdWxkSGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyA9IHRy
dWU7CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGVUaW1lckZpcmVkKCkKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07Ci0KLSAg
ICBpZiAobV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91cykKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbGJh
Y2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKLSAgICAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNr
SUQpKTsKLQotICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigp
OwotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5j
aHJvbm91czsKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwogfQogCiB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>