<?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>221673</bug_id>
          
          <creation_ts>2021-02-10 07:36:01 -0800</creation_ts>
          <short_desc>Page updates and rAF callbacks should run at a frequency close to 60Hz on high refresh-rate displays</short_desc>
          <delta_ts>2021-02-18 00:04:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727530</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 07:36:01 -0800</bug_when>
    <thetext>Currently if you plug a 144Hz display into a Mac Mini, WebKit will update the page and fire rAF callbacks at 144Hz.

However, we should ensure that rAF, non-accelerated animations and page rendering in general refreshes at closest interval to the one used for 60Hz, so that we would run at 72Hz on a 144Hz display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727531</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 07:36:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/72398605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727538</commentid>
    <comment_count>2</comment_count>
      <attachid>419844</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 07:52:25 -0800</bug_when>
    <thetext>Created attachment 419844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727596</commentid>
    <comment_count>3</comment_count>
      <attachid>419844</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-10 10:11:07 -0800</bug_when>
    <thetext>Comment on attachment 419844
Patch

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

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:59
&gt; +    if (nominalFramesPerSecond &lt; FullSpeedFramesPerSecond)

I think we should make an early return if the nominalFramesPerSecond is 60fps, i.e 

if (nominalFramesPerSecond &lt;= FullSpeedFramesPerSecond)

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:71
&gt; +    auto fullSpeedInterval = 1.0 / FullSpeedFramesPerSecond;
&gt; +    auto fullSpeedRatio = nominalFramesPerSecond / FullSpeedFramesPerSecond;
&gt; +
&gt; +    auto floorInterval = 1.0 / (nominalFramesPerSecond / std::floor(fullSpeedRatio)); // =&gt;  1 / 72
&gt; +    auto ceilInterval = 1.0 / (nominalFramesPerSecond / std::ceil(fullSpeedRatio)); // =&gt; 1 / 48
&gt; +
&gt; +    auto intervalToFloor = fullSpeedInterval - floorInterval;
&gt; +    auto intervalToCeil = ceilInterval - fullSpeedInterval;
&gt; +
&gt; +    return framesPerSecondForInterval((intervalToFloor &lt; intervalToCeil) ? floorInterval : ceilInterval);

I think this calculation can be simplified if we use integer calculation. I think something like this might work:

    float fullSpeedRatio = nominalFramesPerSecond / FullSpeedFramesPerSecond; // 2.4
    FramesPerSecond floorSpeed = nominalFramesPerSecond / std::floor(fullSpeedRatio); //  144 / 2 = 72
    FramesPerSecond ceilSpeed = nominalFramesPerSecond / std::ceil(fullSpeedRatio); // 144 / 3 = 48

    return fullSpeedRatio - std::floor(fullSpeedRatio) &lt;= 0.5 ? floorSpeed : ceilSpeed; // 72</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727598</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 10:14:54 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #3)
&gt; Comment on attachment 419844 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419844&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:59
&gt; &gt; +    if (nominalFramesPerSecond &lt; FullSpeedFramesPerSecond)
&gt; 
&gt; I think we should make an early return if the nominalFramesPerSecond is
&gt; 60fps, i.e 
&gt; 
&gt; if (nominalFramesPerSecond &lt;= FullSpeedFramesPerSecond)

Absolutely, no need to run the maths if we already know the answer.

&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:71
&gt; &gt; +    auto fullSpeedInterval = 1.0 / FullSpeedFramesPerSecond;
&gt; &gt; +    auto fullSpeedRatio = nominalFramesPerSecond / FullSpeedFramesPerSecond;
&gt; &gt; +
&gt; &gt; +    auto floorInterval = 1.0 / (nominalFramesPerSecond / std::floor(fullSpeedRatio)); // =&gt;  1 / 72
&gt; &gt; +    auto ceilInterval = 1.0 / (nominalFramesPerSecond / std::ceil(fullSpeedRatio)); // =&gt; 1 / 48

Whoops, those comments shouldn&apos;t have remained there.

&gt; &gt; +
&gt; &gt; +    auto intervalToFloor = fullSpeedInterval - floorInterval;
&gt; &gt; +    auto intervalToCeil = ceilInterval - fullSpeedInterval;
&gt; &gt; +
&gt; &gt; +    return framesPerSecondForInterval((intervalToFloor &lt; intervalToCeil) ? floorInterval : ceilInterval);
&gt; 
&gt; I think this calculation can be simplified if we use integer calculation. I
&gt; think something like this might work:
&gt; 
&gt;     float fullSpeedRatio = nominalFramesPerSecond /
&gt; FullSpeedFramesPerSecond; // 2.4
&gt;     FramesPerSecond floorSpeed = nominalFramesPerSecond /
&gt; std::floor(fullSpeedRatio); //  144 / 2 = 72
&gt;     FramesPerSecond ceilSpeed = nominalFramesPerSecond /
&gt; std::ceil(fullSpeedRatio); // 144 / 3 = 48
&gt; 
&gt;     return fullSpeedRatio - std::floor(fullSpeedRatio) &lt;= 0.5 ? floorSpeed :
&gt; ceilSpeed; // 72

I&apos;ll check that works correctly and use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727608</commentid>
    <comment_count>5</comment_count>
      <attachid>419844</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-10 10:25:36 -0800</bug_when>
    <thetext>Comment on attachment 419844
Patch

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

My reading of the specification says that the browser is free to pick a refresh rate based on the hardware refresh, so this patch is ok. However, I think we need to propose changes to the specification to be clear why we are unilaterally picking a value closer to 60 and not even attempting to run at the native frame rate.

&gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:781
&gt; +VariablePageUpdateRefreshRateEnabled:
&gt; +  type: bool
&gt; +  humanReadableName: &quot;Variable Page Update Refresh Rate&quot;
&gt; +  humanReadableDescription: &quot;Enable a refresh rate that varies depending on the display refresh rate for software Web Animations, requestAnimationFrame() and anything triggering the page rendering steps&quot;

It&apos;s not really a variable rate - it&apos;s fixed to the monitor refresh.

And, from reading the spec, it&apos;s what we should have been doing already. So maybe the flag needs to be the other way around: ForcePageUpdatesTo60Hz?

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:66
&gt; +    auto floorInterval = 1.0 / (nominalFramesPerSecond / std::floor(fullSpeedRatio)); // =&gt;  1 / 72
&gt; +    auto ceilInterval = 1.0 / (nominalFramesPerSecond / std::ceil(fullSpeedRatio)); // =&gt; 1 / 48

where does the 48 come from?

A 90Hz display would want 45Hz, not 48.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727614</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 10:32:38 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #5)
&gt; Comment on attachment 419844 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419844&amp;action=review
&gt; 
&gt; My reading of the specification says that the browser is free to pick a
&gt; refresh rate based on the hardware refresh, so this patch is ok. However, I
&gt; think we need to propose changes to the specification to be clear why we are
&gt; unilaterally picking a value closer to 60 and not even attempting to run at
&gt; the native frame rate.

I&apos;ll file an issue on this, watch this space.

&gt; &gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:781
&gt; &gt; +VariablePageUpdateRefreshRateEnabled:
&gt; &gt; +  type: bool
&gt; &gt; +  humanReadableName: &quot;Variable Page Update Refresh Rate&quot;
&gt; &gt; +  humanReadableDescription: &quot;Enable a refresh rate that varies depending on the display refresh rate for software Web Animations, requestAnimationFrame() and anything triggering the page rendering steps&quot;
&gt; 
&gt; It&apos;s not really a variable rate - it&apos;s fixed to the monitor refresh.

I&apos;ll fix the wording.

&gt; And, from reading the spec, it&apos;s what we should have been doing already. So
&gt; maybe the flag needs to be the other way around: ForcePageUpdatesTo60Hz?

Good idea! I&apos;ll flip it around and make it off by default.

&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:66
&gt; &gt; +    auto floorInterval = 1.0 / (nominalFramesPerSecond / std::floor(fullSpeedRatio)); // =&gt;  1 / 72
&gt; &gt; +    auto ceilInterval = 1.0 / (nominalFramesPerSecond / std::ceil(fullSpeedRatio)); // =&gt; 1 / 48
&gt; 
&gt; where does the 48 come from?

This was stray comments from playing around with 144Hz. Should not have been in the patch.

&gt; A 90Hz display would want 45Hz, not 48.

Actually, a 90Hz display could get either 90fps or 45fps since 60fps falls right in the middle. In fact, 90fps would be the fastest we would ever run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727657</commentid>
    <comment_count>7</comment_count>
      <attachid>419873</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-10 11:22:44 -0800</bug_when>
    <thetext>Created attachment 419873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727751</commentid>
    <comment_count>8</comment_count>
      <attachid>419873</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-10 13:54:45 -0800</bug_when>
    <thetext>Comment on attachment 419873
Patch

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

&gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:274
&gt; +  humanReadableDescription: &quot;Force the rate for updates to software Web Animations, requestAnimationFrame() and anything triggering the page rendering steps to 60 frames per second rather than use the display&apos;s refresh rate&quot;

Keep in mind this goes in a tooltip, so this is a lot of words</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728551</commentid>
    <comment_count>9</comment_count>
      <attachid>420120</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-12 07:00:34 -0800</bug_when>
    <thetext>Created attachment 420120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728553</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-12 07:16:47 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #8)
&gt; Comment on attachment 419873 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419873&amp;action=review
&gt; 
&gt; &gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:274
&gt; &gt; +  humanReadableDescription: &quot;Force the rate for updates to software Web Animations, requestAnimationFrame() and anything triggering the page rendering steps to 60 frames per second rather than use the display&apos;s refresh rate&quot;
&gt; 
&gt; Keep in mind this goes in a tooltip, so this is a lot of words

I&apos;ve made it a bit snappier in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728615</commentid>
    <comment_count>11</comment_count>
      <attachid>420120</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-12 09:50:03 -0800</bug_when>
    <thetext>Comment on attachment 420120
Patch

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

&gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:273
&gt; +ForcePageRenderingUpdatesAt60FPSEnabled:
&gt; +  type: bool
&gt; +  humanReadableName: &quot;Force Page Rendering Updates at 60fps&quot;

I think the &quot;at60&quot; is deceptive. Maybe call it &quot;WebCompatibleRenderingUpdateFrequencyEnabled&quot; or soothing a bit more vague like that.

&gt; Source/WebCore/page/RenderingUpdateScheduler.cpp:143
&gt; +    manager.windowScreenDidChange(displayID, *this);
&gt; +    manager.setPreferredFramesPerSecond(*this, m_preferredFramesPerSecond);

It would be nicer if windowScreenDidChange() took care of updating preferred FPS.

Did you test this? Do we have the new FPS at the right time here?

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:61
&gt; +    return fullSpeedRatio - std::floor(fullSpeedRatio) &lt;= 0.5 ? floorSpeed : ceilSpeed;

If you&apos;re half way between, does this prefer the lower or higher?

Can we API-test this code?

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:70
&gt; +        // FIXME: handle ThrottlingReason::VisuallyIdle

Do we have to address this FIXME now? If we don&apos;t, won&apos;t that cause massive power regressions?

&gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:81
&gt; +        interval *= 2;

The &apos;2&apos; should be in a named constant.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:822
&gt; +void WebProcessPool::setDisplayLinkPreferredFramesPerSecond(PlatformDisplayID displayID, WebCore::FramesPerSecond preferredFramesPerSecond)
&gt; +{
&gt; +    for (auto&amp; displayLink : m_displayLinks) {
&gt; +        if (displayLink-&gt;displayID() == displayID) {
&gt; +            displayLink-&gt;setPreferredFramesPerSecond(preferredFramesPerSecond);
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +}

If you have two windows on the same screen, and one is obscured (or throttled for some reason), will they both call this with different preferredFramesPerSecond and therefore clobber eachother&apos;s value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728619</commentid>
    <comment_count>12</comment_count>
      <attachid>420120</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-12 10:03:47 -0800</bug_when>
    <thetext>Comment on attachment 420120
Patch

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

&gt; Source/WebKit/UIProcess/mac/DisplayLink.cpp:79
&gt; +void DisplayLink::setPreferredFramesPerSecond(WebCore::FramesPerSecond preferredFramesPerSecond)
&gt; +{
&gt; +    m_preferredFramesPerSecond = preferredFramesPerSecond;
&gt; +}

There is one DisplayLink per display, so you can&apos;t have clients push preferredFramesPerSecond here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730476</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-17 13:11:28 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #11)
&gt; Comment on attachment 420120 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420120&amp;action=review
&gt; 
&gt; &gt; Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml:273
&gt; &gt; +ForcePageRenderingUpdatesAt60FPSEnabled:
&gt; &gt; +  type: bool
&gt; &gt; +  humanReadableName: &quot;Force Page Rendering Updates at 60fps&quot;
&gt; 
&gt; I think the &quot;at60&quot; is deceptive. Maybe call it
&gt; &quot;WebCompatibleRenderingUpdateFrequencyEnabled&quot; or soothing a bit more vague
&gt; like that.

Note that this flag is about forcing 60fps updates which is the old path. The code added here is enabled with the flag turned off, which is the default. This was to address feedback from Dean in comment #5.

&gt; &gt; Source/WebCore/page/RenderingUpdateScheduler.cpp:143
&gt; &gt; +    manager.windowScreenDidChange(displayID, *this);
&gt; &gt; +    manager.setPreferredFramesPerSecond(*this, m_preferredFramesPerSecond);
&gt; 
&gt; It would be nicer if windowScreenDidChange() took care of updating preferred
&gt; FPS.
&gt; 
&gt; Did you test this? Do we have the new FPS at the right time here?

This is now out of scope for this patch which won&apos;t make changes to the display link on macOS.

&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:61
&gt; &gt; +    return fullSpeedRatio - std::floor(fullSpeedRatio) &lt;= 0.5 ? floorSpeed : ceilSpeed;
&gt; 
&gt; If you&apos;re half way between, does this prefer the lower or higher?

I&apos;d say the higher fps (lower ratio), looking at the code.

&gt; Can we API-test this code?

Looking into it.

&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:70
&gt; &gt; +        // FIXME: handle ThrottlingReason::VisuallyIdle
&gt; 
&gt; Do we have to address this FIXME now? If we don&apos;t, won&apos;t that cause massive
&gt; power regressions?

What do you suggest we do in this case? Halve the refresh rate?

&gt; &gt; Source/WebCore/platform/graphics/AnimationFrameRate.h:81
&gt; &gt; +        interval *= 2;
&gt; 
&gt; The &apos;2&apos; should be in a named constant.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:822
&gt; &gt; +void WebProcessPool::setDisplayLinkPreferredFramesPerSecond(PlatformDisplayID displayID, WebCore::FramesPerSecond preferredFramesPerSecond)
&gt; &gt; +{
&gt; &gt; +    for (auto&amp; displayLink : m_displayLinks) {
&gt; &gt; +        if (displayLink-&gt;displayID() == displayID) {
&gt; &gt; +            displayLink-&gt;setPreferredFramesPerSecond(preferredFramesPerSecond);
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; If you have two windows on the same screen, and one is obscured (or
&gt; throttled for some reason), will they both call this with different
&gt; preferredFramesPerSecond and therefore clobber eachother&apos;s value?

This is now outside the scope of this patch, but I&apos;ll consider this for a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730482</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-17 13:15:42 -0800</bug_when>
    <thetext>(In reply to Antoine Quint from comment #13)

&gt; &gt; If you have two windows on the same screen, and one is obscured (or
&gt; &gt; throttled for some reason), will they both call this with different
&gt; &gt; preferredFramesPerSecond and therefore clobber eachother&apos;s value?
&gt; 
&gt; This is now outside the scope of this patch, but I&apos;ll consider this for a
&gt; future patch.

I don&apos;t think it&apos;s OK to regress that with this patch. It reveals an architectural fault that you need to address in this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730487</commentid>
    <comment_count>15</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-17 13:21:23 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)
&gt; (In reply to Antoine Quint from comment #13)
&gt; 
&gt; &gt; &gt; If you have two windows on the same screen, and one is obscured (or
&gt; &gt; &gt; throttled for some reason), will they both call this with different
&gt; &gt; &gt; preferredFramesPerSecond and therefore clobber eachother&apos;s value?
&gt; &gt; 
&gt; &gt; This is now outside the scope of this patch, but I&apos;ll consider this for a
&gt; &gt; future patch.
&gt; 
&gt; I don&apos;t think it&apos;s OK to regress that with this patch. It reveals an
&gt; architectural fault that you need to address in this change.

What I&apos;m saying is that this DisplayLink-related change is no longer within the scope of this patch, ie. this code is no longer there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730546</commentid>
    <comment_count>16</comment_count>
      <attachid>420720</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-02-17 14:41:41 -0800</bug_when>
    <thetext>Created attachment 420720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730759</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 00:04:28 -0800</bug_when>
    <thetext>Committed r273067: &lt;https://commits.webkit.org/r273067&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420720.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419844</attachid>
            <date>2021-02-10 07:52:25 -0800</date>
            <delta_ts>2021-02-10 11:22:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221673-20210210165224.patch</filename>
            <type>text/plain</type>
            <size>9330</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLjQ0YzRmNmI1OGM2MWU3ZjJlMWZjZjdhZjk1NTg2YjIwZWVmOGEz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTAgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tz
IHNob3VsZCBydW4gYXQgYSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gt
cmF0ZSBkaXNwbGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgaW50ZXJu
YWwgcHJlZmVyZW5jZSB0byBjb250cm9sIHdoZXRoZXIgdGhlIHJlZnJlc2ggcmF0ZSBmb3IgcGFn
ZSByZW5kZXJpbmcgdXBkYXRlcyBtYXkKKyAgICAgICAgdmFyeSBiYXNlZCBvbiB0aGUgZGlzcGxh
eSdzIHJlZnJlc2ggcmF0ZS4gVGhpcyBzZXR0aW5nIGRlZmF1bHRzIHRvIHRydWUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbDoKKwog
MjAyMS0wMi0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE5vbi1zcGVjaWFsIFVSTHMgc2hvdWxkIGhhdmUgYW4gb3BhcXVlIG9yaWdpbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDExMTZhZTRkOThkZTU2MmE3MDk4YTUyOWVlODg2MzEzOTg1MWNiMzIuLmRk
NTI2YTUwODIxMDQzZDI3ZjYxMDE2M2I2ZWM3MWM1YzVmMmYwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMS0wMi0xMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBQYWdlIHVwZGF0ZXMgYW5kIHJBRiBjYWxsYmFja3Mgc2hvdWxkIHJ1biBh
dCBhIGZyZXF1ZW5jeSBjbG9zZSB0byA2MEh6IG9uIGhpZ2ggcmVmcmVzaC1yYXRlIGRpc3BsYXlz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NzMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzk4NjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwIHRvIG5vdywgcGFnZSByZW5kZXJpbmcgdXBk
YXRlcywgd2hpY2ggY2FuLCBmb3IgaW5zdGFuY2UsIGJlIHRyaWdnZXJlZCBieSByZWdpc3Rlcmlu
ZyBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpCisgICAgICAgIGNhbGxiYWNrIG9yIGhhdmluZyBD
U1MgQW5pbWF0aW9ucywgQ1NTIFRyYW5zaXRpb25zIG9yIFdlYiBBbmltYXRpb25zIHJ1bm5pbmcg
bm9uLWFjY2VsZXJhdGVkLCB3b3VsZCBiZSB0cmlnZ2VyZWQKKyAgICAgICAgYXQgdGhlIGN1cnJl
bnQgZGlzcGxheSdzIHJlZnJlc2ggcmF0ZSBvbiBtYWNPUywgYW5kIDYwZnBzIG9uIGlPUy4KKwor
ICAgICAgICBGb3IgaW5zdGFuY2UsIHRoaXMgbWVhbnQgdGhhdCBwbHVnZ2luZyBpbiBhIDE0NEh6
IGRpc3BsYXkgb24gYSBNYWMgd291bGQgYXR0ZW1wdCB0byB1cGRhdGUgdGhlIHBhZ2UgcmVuZGVy
aW5nIGF0CisgICAgICAgIDE0NGZwcy4gV2UgdGhpbmsgaXQncyBiZXR0ZXIsIGZvciBXZWIgY29t
cGF0aWJpbGl0eSByZWFzb25zLCB0byB0cnkgdG8gdXNlIGEgcGFnZSByZW5kZXJpbmcgdXBkYXRl
IGNhZGVuY2UgdGhhdAorICAgICAgICBpcyBhcyBjbG9zZSB0byA2MGZwcyBhcyBwb3NzaWJsZSB3
aGlsZSBtYXRjaGluZyBhIGRpc3BsYXkgdXBkYXRlLiBUaGlzIG1lYW5zIGZpbmRpbmcgdGhlIHdo
b2xlIG11bHRpcGxlIGZvciB3aGljaAorICAgICAgICB0aGUgaW50ZXJ2YWwgYmV0d2VlbiBmcmFt
ZXMgd291bGQgYmUgYXMgY2xvc2UgdG8gdGhhdCBmb3IgNjBIei4KKworICAgICAgICBVc2luZyB0
aGUgMTQ0SHogY2FzZSBhZ2FpbiwgdGhpcyBtZWFucyB3ZSB3b3VsZCBzaG9vdCBmb3IgNzJmcHMs
IHNpbmNlIHRoZSByZWZyZXNoIGludGVydmFsIGZvciA3MmZwcyBpcyBuZWFyZXN0CisgICAgICAg
IHRoYXQgYXQgNjBmcHMgdGhhbiB0aGF0IGF0IDQ4ZnBzIChhbm90aGVyIG11bHRpcGxlIG9mIDE0
NCkuCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGludGVybmFsIHByZWZlcmVuY2Ug
dG8gY29udHJvbCB3aGV0aGVyIHRoZSByZWZyZXNoIHJhdGUgZm9yIHBhZ2UgcmVuZGVyaW5nIHVw
ZGF0ZXMgbWF5IHZhcnkKKyAgICAgICAgYmFzZWQgb24gdGhlIGRpc3BsYXkncyByZWZyZXNoIHJh
dGUsIHdoaWNoIGRlZmF1bHRzIHRvIHRydWUsIHdlIHBhc3MgaW4gdGhlIHBhZ2UncyAibm9taW5h
bCByZWZyZXNoIHJhdGUiIHRvCisgICAgICAgIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoKS4gSWYg
dGhhdCByYXRlIGlzIDYwZnBzLCB3ZSB1c2UgdGhlIHNhbWUgcmF0ZSBhbmQgaW50ZXJ2YWxzIGFz
IHdlIGFsd2F5cyBoYXZlLiBJZiB0aGF0CisgICAgICAgIHJhdGUgaXMgbGVzcyB0aGFuIDYwZnBz
LCB3ZSB1c2UgdGhhdCByYXRlIGFzLWlzLgorCisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OnByZWZlcnJlZFNjcmlwdGVkQW5pbWF0aW9uSW50ZXJ2YWwgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwcmVmZXJyZWRS
ZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQW5pbWF0aW9uRnJhbWVSYXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpmcmFtZXNQZXJTZWNv
bmRGb3JJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpmcmFtZXNQZXJTZWNvbmROZWFyZXN0
RnVsbFNwZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEZyYW1lSW50ZXJ2YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKToKKwogMjAyMS0wMi0w
OCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgYXV0byAmJiA8
cmF0aW8+IHVzZSBjb250ZW50IGJveC1zaXppbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RG
L1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDI3
ZjY1ZjdlYjFmZjVmZmU0Nzc5YzQxY2UxNDA4YmZlZDJhZjI0MjguLjFiZGYxOTNlMDJhMDc0ZGU1
ODRmMzAwZjc1NmJlYzMxMWQ3M2IzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAtNzc1LDYg
Kzc3NSwxOCBAQCBVc2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkOgogICAgIFdlYktpdDoKICAg
ICAgIGRlZmF1bHQ6IGRlZmF1bHRVc2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkKIAorVmFy
aWFibGVQYWdlVXBkYXRlUmVmcmVzaFJhdGVFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiVmFyaWFibGUgUGFnZSBVcGRhdGUgUmVmcmVzaCBSYXRlIgorICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgYSByZWZyZXNoIHJhdGUgdGhhdCB2YXJpZXMg
ZGVwZW5kaW5nIG9uIHRoZSBkaXNwbGF5IHJlZnJlc2ggcmF0ZSBmb3Igc29mdHdhcmUgV2ViIEFu
aW1hdGlvbnMsIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGFuZCBhbnl0aGluZyB0cmlnZ2VyaW5n
IHRoZSBwYWdlIHJlbmRlcmluZyBzdGVwcyIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExl
Z2FjeToKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiB0
cnVlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IHRydWUKKwogV2ViQVBJU3RhdGlzdGlj
c0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJXZWIgQVBJIFN0
YXRpc3RpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDM2MTJiZGY4MDljZjhkOGE5Mjk5ZjJmMDk3NTc0ZDM1YjI2MzA2
ZWEuLjdkYWRhNGZiOGY4MmRjOTM3MzM1NjgwNTQwZmQ3NWU2ZGM5Y2IwMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC03
OSw3ICs3OSwxMiBAQCBTZWNvbmRzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6aW50ZXJ2
YWwoKSBjb25zdAogCiBTZWNvbmRzIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cHJlZmVy
cmVkU2NyaXB0ZWRBbmltYXRpb25JbnRlcnZhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHByZWZl
cnJlZEZyYW1lSW50ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29ucyk7CisgICAgT3B0aW9uYWw8RnJh
bWVzUGVyU2Vjb25kPiBwcmVmZXJyZWRGUFM7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5w
YWdlKCkpIHsKKyAgICAgICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkudmFyaWFibGVQYWdlVXBkYXRl
UmVmcmVzaFJhdGVFbmFibGVkKCkpCisgICAgICAgICAgICBwcmVmZXJyZWRGUFMgPSBwYWdlLT5k
aXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpOworICAgIH0KKyAgICByZXR1cm4gcHJlZmVy
cmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25zLCBwcmVmZXJyZWRGUFMpOwogfQog
CiBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
Ojp0aHJvdHRsaW5nUmVhc29ucygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhYTIxMmYw
Yzc5MTZmYmYwNDcyNDUzNzcwYTRhNzFmNzRjNzk3ZDJiLi5mZWY4MGIwZTIxMTA1MGZkY2U3MjUy
NTMwNzAyM2FkNjgwNTE3Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE3NDIsNyArMTc0Miw5
IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCkKIAogU2Vjb25kcyBQYWdl
OjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29ucyk7CisgICAgaWYgKHNl
dHRpbmdzKCkudmFyaWFibGVQYWdlVXBkYXRlUmVmcmVzaFJhdGVFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVydmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMsIG1fZGlz
cGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUlu
dGVydmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMsIFdURjo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgUGFn
ZTo6c2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChib29sIGlzVmlzdWFsbHlJZGxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUu
aAppbmRleCAxMjg5MmVkZWM3ZjZjYTYxZDM1MDQwZWE3NDAyYjY5ZjQ0NzhkNTZhLi5hNDliYTBi
NGI4MzBjNWIwZTNmYzI5NzM5NTJhMzcyMmFjYmJmMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuaApAQCAtNDgsMTgg
KzQ4LDQ5IEBAIGNvbnN0ZXhwciBjb25zdCBTZWNvbmRzIEFnZ3Jlc3NpdmVUaHJvdHRsaW5nQW5p
bWF0aW9uSW50ZXJ2YWwgeyAxMF9zIH07CiAKIGNvbnN0ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNv
bmQgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kID0gNjA7CiBjb25zdGV4cHIgY29uc3QgRnJhbWVz
UGVyU2Vjb25kIEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQgPSAzMDsKLWNvbnN0
ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNvbmQgWmVyb0ZyYW1lc1BlclNlY29uZCA9IDA7CiAKLWlu
bGluZSBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoY29uc3QgT3B0aW9uU2V0PFRocm90
dGxpbmdSZWFzb24+JiByZWFzb25zKQoraW5saW5lIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJT
ZWNvbmRGb3JJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgcmV0dXJuIHN0ZDo6cm91
bmQoMSAvIGludGVydmFsKTsKK30KKworaW5saW5lIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJT
ZWNvbmROZWFyZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyU2Vj
b25kKQoreworICAgIGlmIChub21pbmFsRnJhbWVzUGVyU2Vjb25kIDwgRnVsbFNwZWVkRnJhbWVz
UGVyU2Vjb25kKQorICAgICAgICByZXR1cm4gbm9taW5hbEZyYW1lc1BlclNlY29uZDsKKworICAg
IGF1dG8gZnVsbFNwZWVkSW50ZXJ2YWwgPSAxLjAgLyBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQ7
CisgICAgYXV0byBmdWxsU3BlZWRSYXRpbyA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQgLyBGdWxs
U3BlZWRGcmFtZXNQZXJTZWNvbmQ7CisKKyAgICBhdXRvIGZsb29ySW50ZXJ2YWwgPSAxLjAgLyAo
bm9taW5hbEZyYW1lc1BlclNlY29uZCAvIHN0ZDo6Zmxvb3IoZnVsbFNwZWVkUmF0aW8pKTsgLy8g
PT4gIDEgLyA3MgorICAgIGF1dG8gY2VpbEludGVydmFsID0gMS4wIC8gKG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQgLyBzdGQ6OmNlaWwoZnVsbFNwZWVkUmF0aW8pKTsgLy8gPT4gMSAvIDQ4CisKKyAg
ICBhdXRvIGludGVydmFsVG9GbG9vciA9IGZ1bGxTcGVlZEludGVydmFsIC0gZmxvb3JJbnRlcnZh
bDsKKyAgICBhdXRvIGludGVydmFsVG9DZWlsID0gY2VpbEludGVydmFsIC0gZnVsbFNwZWVkSW50
ZXJ2YWw7CisKKyAgICByZXR1cm4gZnJhbWVzUGVyU2Vjb25kRm9ySW50ZXJ2YWwoKGludGVydmFs
VG9GbG9vciA8IGludGVydmFsVG9DZWlsKSA/IGZsb29ySW50ZXJ2YWwgOiBjZWlsSW50ZXJ2YWwp
OworfQorCitpbmxpbmUgU2Vjb25kcyBwcmVmZXJyZWRGcmFtZUludGVydmFsKGNvbnN0IE9wdGlv
blNldDxUaHJvdHRsaW5nUmVhc29uPiYgcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25k
PiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewotICAgIC8vIEZJWE1FOiBoYW5kbGUgVGhyb3R0
bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlCiAgICAgaWYgKHJlYXNvbnMuY29udGFpbnMoVGhyb3R0
bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKICAgICAgICAgcmV0dXJuIEFnZ3Jlc3NpdmVU
aHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7Ci0gICAgCisKKyAgICBpZiAoIW5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQgfHwgKm5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPT0gRnVsbFNwZWVkRnJhbWVz
UGVyU2Vjb25kKSB7CisgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgVGhyb3R0bGluZ1JlYXNvbjo6
VmlzdWFsbHlJZGxlCisgICAgICAgIGlmIChyZWFzb25zLmNvbnRhaW5zQW55KHsgVGhyb3R0bGlu
Z1JlYXNvbjo6TG93UG93ZXJNb2RlLCBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jv
c3NPcmlnaW5GcmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBIYWxmU3BlZWRUaHJvdHRsaW5n
QW5pbWF0aW9uSW50ZXJ2YWw7CisgICAgICAgIHJldHVybiBGdWxsU3BlZWRBbmltYXRpb25JbnRl
cnZhbDsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lc1BlclNlY29uZCA9IGZyYW1lc1BlclNlY29u
ZE5lYXJlc3RGdWxsU3BlZWQoKm5vbWluYWxGcmFtZXNQZXJTZWNvbmQpOworICAgIGF1dG8gaW50
ZXJ2YWwgPSBTZWNvbmRzKDEuMCAvIGZyYW1lc1BlclNlY29uZCk7CisKKyAgICAvLyBGSVhNRTog
aGFuZGxlIFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZQogICAgIGlmIChyZWFzb25zLmNv
bnRhaW5zQW55KHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlLCBUaHJvdHRsaW5nUmVh
c29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9KSkKLSAgICAgICAgcmV0dXJuIEhh
bGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbDsKKyAgICAgICAgaW50ZXJ2YWwgKj0g
MjsKIAotICAgIHJldHVybiBGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbDsKKyAgICByZXR1cm4g
aW50ZXJ2YWw7CiB9CiAKIGlubGluZSBGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKFNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbCkKQEAgLTcwLDggKzEwMSw3IEBA
IGlubGluZSBGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKFNlY29uZHMg
cHJlZmVycmVkRnJhbWVJbnRlcnZhbCkKICAgICBpZiAocHJlZmVycmVkRnJhbWVJbnRlcnZhbCA9
PSBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpCiAgICAgICAgIHJldHVybiBI
YWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vjb25kOwogCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFplcm9GcmFtZXNQZXJTZWNvbmQ7CisgICAgcmV0dXJuIGZyYW1l
c1BlclNlY29uZEZvckludGVydmFsKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwuc2Vjb25kcygpKTsK
IH0KIAogaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiYgcmVhc29ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419873</attachid>
            <date>2021-02-10 11:22:44 -0800</date>
            <delta_ts>2021-02-17 14:41:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221673-20210210202243.patch</filename>
            <type>text/plain</type>
            <size>8931</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLjVjN2FmNDJkODNkODA5Y2NlM2YwNmYyYmYwM2ZlMmU3YzU5ZTE3
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTAgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tz
IHNob3VsZCBydW4gYXQgYSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gt
cmF0ZSBkaXNwbGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgaW50ZXJu
YWwgcHJlZmVyZW5jZSB0byBmb3JjZSB0aGUgcmVmcmVzaCByYXRlIGZvciBwYWdlIHJlbmRlcmlu
ZyB1cGRhdGVzIHRvIDYwZnBzCisgICAgICAgIHJhdGhlciB0aGFuIHVzZSB0aGUgZGlzcGxheSdz
IHJlZnJlc2ggcmF0ZS4gVGhpcyBzZXR0aW5nIGRlZmF1bHRzIHRvIGZhbHNlLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIw
MjEtMDItMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBOb24tc3BlY2lhbCBVUkxzIHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxMTE2YWU0ZDk4ZGU1NjJhNzA5OGE1MjllZTg4NjMxMzk4NTFjYjMyLi4yM2Jk
YWMwMzI4NjE1M2YzYWNjYmJmYTE5YmQ5MjNkMTQ4YjU0MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMjEtMDItMTAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tzIHNob3VsZCBydW4gYXQg
YSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gtcmF0ZSBkaXNwbGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcCB0byBub3csIHBhZ2UgcmVuZGVyaW5nIHVwZGF0
ZXMsIHdoaWNoIGNhbiwgZm9yIGluc3RhbmNlLCBiZSB0cmlnZ2VyZWQgYnkgcmVnaXN0ZXJpbmcg
YSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQorICAgICAgICBjYWxsYmFjayBvciBoYXZpbmcgQ1NT
IEFuaW1hdGlvbnMsIENTUyBUcmFuc2l0aW9ucyBvciBXZWIgQW5pbWF0aW9ucyBydW5uaW5nIG5v
bi1hY2NlbGVyYXRlZCwgd291bGQgYmUgdHJpZ2dlcmVkCisgICAgICAgIGF0IHRoZSBjdXJyZW50
IGRpc3BsYXkncyByZWZyZXNoIHJhdGUgb24gbWFjT1MsIGFuZCA2MGZwcyBvbiBpT1MuCisKKyAg
ICAgICAgRm9yIGluc3RhbmNlLCB0aGlzIG1lYW50IHRoYXQgcGx1Z2dpbmcgaW4gYSAxNDRIeiBk
aXNwbGF5IG9uIGEgTWFjIHdvdWxkIGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBwYWdlIHJlbmRlcmlu
ZyBhdAorICAgICAgICAxNDRmcHMuIFdlIHRoaW5rIGl0J3MgYmV0dGVyLCBmb3IgV2ViIGNvbXBh
dGliaWxpdHkgcmVhc29ucywgdG8gdHJ5IHRvIHVzZSBhIHBhZ2UgcmVuZGVyaW5nIHVwZGF0ZSBj
YWRlbmNlIHRoYXQKKyAgICAgICAgaXMgYXMgY2xvc2UgdG8gNjBmcHMgYXMgcG9zc2libGUgd2hp
bGUgbWF0Y2hpbmcgYSBkaXNwbGF5IHVwZGF0ZS4gVGhpcyBtZWFucyBmaW5kaW5nIHRoZSB3aG9s
ZSBtdWx0aXBsZSBmb3Igd2hpY2gKKyAgICAgICAgdGhlIGludGVydmFsIGJldHdlZW4gZnJhbWVz
IHdvdWxkIGJlIGFzIGNsb3NlIHRvIHRoYXQgZm9yIDYwSHouCisKKyAgICAgICAgVXNpbmcgdGhl
IDE0NEh6IGNhc2UgYWdhaW4sIHRoaXMgbWVhbnMgd2Ugd291bGQgc2hvb3QgZm9yIDcyZnBzLCBz
aW5jZSB0aGUgcmVmcmVzaCBpbnRlcnZhbCBmb3IgNzJmcHMgaXMgbmVhcmVzdAorICAgICAgICB0
aGF0IGF0IDYwZnBzIHRoYW4gdGhhdCBhdCA0OGZwcyAoYW5vdGhlciBtdWx0aXBsZSBvZiAxNDQp
LgorCisgICAgICAgIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnRlcm5hbCBwcmVmZXJlbmNlIHRv
IGNvbnRyb2wgd2hldGhlciB0aGUgcmVmcmVzaCByYXRlIGZvciBwYWdlIHJlbmRlcmluZyB1cGRh
dGVzIGlzCisgICAgICAgIGZvcmNlZCB0byA2MGZwcywgd2hpY2ggZGVmYXVsdHMgdG8gZmFsc2Us
IHdlIHBhc3MgaW4gdGhlIHBhZ2UncyAibm9taW5hbCByZWZyZXNoIHJhdGUiIHRvIHByZWZlcnJl
ZEZyYW1lSW50ZXJ2YWwoKS4KKyAgICAgICAgSWYgdGhhdCByYXRlIGlzIDYwZnBzLCB3ZSB1c2Ug
dGhlIHNhbWUgcmF0ZSBhbmQgaW50ZXJ2YWxzIGFzIHdlIGFsd2F5cyBoYXZlLiBJZiB0aGF0IHJh
dGUgaXMgbGVzcyB0aGFuIDYwZnBzLCB3ZQorICAgICAgICB1c2UgdGhhdCByYXRlIGFzLWlzLgor
CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnByZWZlcnJlZFNjcmlwdGVk
QW5pbWF0aW9uSW50ZXJ2YWwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZWZlcnJlZEZyYW1lSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKToKKwogMjAyMS0wMi0wOCAgUm9iIEJ1aXMgIDxyYnVp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgYXV0byAmJiA8cmF0aW8+IHVzZSBjb250ZW50
IGJveC1zaXppbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDI3ZjY1ZjdlYjFmZjVmZmU0Nzc5
YzQxY2UxNDA4YmZlZDJhZjI0MjguLjA1Mzc1ZTY0NjQyYTVhNGQ5MjIxYmFjOGZlODFhODEyMDc3
YWFhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAtMjY4LDYgKzI2OCwxOCBAQCBGYXN0ZXJD
bGlja3NFbmFibGVkOgogICAgIFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IHRydWUKIAorRm9yY2VQ
YWdlUmVuZGVyaW5nVXBkYXRlc0F0NjBGUFNFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiRm9yY2UgUGFnZSBSZW5kZXJpbmcgVXBkYXRlcyBhdCA2MGZwcyIKKyAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRm9yY2UgdGhlIHJhdGUgZm9yIHVwZGF0ZXMgdG8g
c29mdHdhcmUgV2ViIEFuaW1hdGlvbnMsIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGFuZCBhbnl0
aGluZyB0cmlnZ2VyaW5nIHRoZSBwYWdlIHJlbmRlcmluZyBzdGVwcyB0byA2MCBmcmFtZXMgcGVy
IHNlY29uZCByYXRoZXIgdGhhbiB1c2UgdGhlIGRpc3BsYXkncyByZWZyZXNoIHJhdGUiCisgIGRl
ZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAg
IFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1
bHQ6IGZhbHNlCisKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlY29uY2lsZWQgd2l0aCAnRnJh
bWVGbGF0dGVuaW5nJyBpbiBXZWJQcmVmZXJlbmNlcy55YW1sIC4KIEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzYxMmJkZjgwOWNmOGQ4YTkyOTlmMmYwOTc1
NzRkMzViMjYzMDZlYS4uMDg2M2NjOTMwN2I1N2FkNGNhODU2Yjg0NjlhOTZlMTc5ZjcwMzg2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTc5LDcgKzc5LDEyIEBAIFNlY29uZHMgU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjppbnRlcnZhbCgpIGNvbnN0CiAKIFNlY29uZHMgU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjpwcmVmZXJyZWRTY3JpcHRlZEFuaW1hdGlvbkludGVydmFsKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcHJlZmVycmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25zKTsKKyAgICBP
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZQUzsKKyAgICBpZiAoYXV0byogcGFn
ZSA9IHRoaXMtPnBhZ2UoKSkgeworICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkuZm9yY2VQ
YWdlUmVuZGVyaW5nVXBkYXRlc0F0NjBGUFNFbmFibGVkKCkpCisgICAgICAgICAgICBwcmVmZXJy
ZWRGUFMgPSBwYWdlLT5kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpOworICAgIH0KKyAg
ICByZXR1cm4gcHJlZmVycmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25zLCBwcmVm
ZXJyZWRGUFMpOwogfQogCiBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjp0aHJvdHRsaW5nUmVhc29ucygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBhYTIxMmYwYzc5MTZmYmYwNDcyNDUzNzcwYTRhNzFmNzRjNzk3ZDJiLi5hY2M4YWFl
MGY4ZWFmNjVmZTM4YjE3YTEwNjc2OGQ4NThiMTllY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTE3NDIsNyArMTc0Miw5IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCkK
IAogU2Vjb25kcyBQYWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29u
cyk7CisgICAgaWYgKHNldHRpbmdzKCkuZm9yY2VQYWdlUmVuZGVyaW5nVXBkYXRlc0F0NjBGUFNF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVydmFsKG1fdGhyb3R0
bGluZ1JlYXNvbnMsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29ucywgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29u
ZCk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChib29sIGlzVmlz
dWFsbHlJZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QW5pbWF0aW9uRnJhbWVSYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
bmltYXRpb25GcmFtZVJhdGUuaAppbmRleCAxMjg5MmVkZWM3ZjZjYTYxZDM1MDQwZWE3NDAyYjY5
ZjQ0NzhkNTZhLi5mZWNlNjk3N2M1MDI5MmY4MjRlNWJlOTc0M2I2ZmQ2OWY2N2EzMzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFt
ZVJhdGUuaApAQCAtNDgsMTggKzQ4LDM5IEBAIGNvbnN0ZXhwciBjb25zdCBTZWNvbmRzIEFnZ3Jl
c3NpdmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwgeyAxMF9zIH07CiAKIGNvbnN0ZXhwciBj
b25zdCBGcmFtZXNQZXJTZWNvbmQgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kID0gNjA7CiBjb25z
dGV4cHIgY29uc3QgRnJhbWVzUGVyU2Vjb25kIEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJT
ZWNvbmQgPSAzMDsKLWNvbnN0ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNvbmQgWmVyb0ZyYW1lc1Bl
clNlY29uZCA9IDA7CiAKLWlubGluZSBTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoY29u
c3QgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+JiByZWFzb25zKQoraW5saW5lIEZyYW1lc1Bl
clNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kKQoreworICAgIGlmIChub21pbmFsRnJhbWVzUGVyU2Vjb25k
IDw9IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkKKyAgICAgICAgcmV0dXJuIG5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQ7CisKKyAgICBmbG9hdCBmdWxsU3BlZWRSYXRpbyA9IG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQgLyBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQ7CisgICAgRnJhbWVzUGVyU2Vjb25k
IGZsb29yU3BlZWQgPSBub21pbmFsRnJhbWVzUGVyU2Vjb25kIC8gc3RkOjpmbG9vcihmdWxsU3Bl
ZWRSYXRpbyk7CisgICAgRnJhbWVzUGVyU2Vjb25kIGNlaWxTcGVlZCA9IG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQgLyBzdGQ6OmNlaWwoZnVsbFNwZWVkUmF0aW8pOworCisgICAgcmV0dXJuIGZ1bGxT
cGVlZFJhdGlvIC0gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRpbykgPD0gMC41ID8gZmxvb3JTcGVl
ZCA6IGNlaWxTcGVlZDsKK30KKworaW5saW5lIFNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZh
bChjb25zdCBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4mIHJlYXNvbnMsIE9wdGlvbmFsPEZy
YW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCkKIHsKLSAgICAvLyBGSVhNRTog
aGFuZGxlIFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZQogICAgIGlmIChyZWFzb25zLmNv
bnRhaW5zKFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCkpCiAgICAgICAgIHJldHVy
biBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsOwotICAgIAorCisgICAgaWYg
KCFub21pbmFsRnJhbWVzUGVyU2Vjb25kIHx8ICpub21pbmFsRnJhbWVzUGVyU2Vjb25kID09IEZ1
bGxTcGVlZEZyYW1lc1BlclNlY29uZCkgeworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIFRocm90
dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZQorICAgICAgICBpZiAocmVhc29ucy5jb250YWluc0Fu
eSh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSwgVGhyb3R0bGluZ1JlYXNvbjo6Tm9u
SW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSkpCisgICAgICAgICAgICByZXR1cm4gSGFsZlNw
ZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsOworICAgICAgICByZXR1cm4gRnVsbFNwZWVk
QW5pbWF0aW9uSW50ZXJ2YWw7CisgICAgfQorCisgICAgYXV0byBmcmFtZXNQZXJTZWNvbmQgPSBm
cmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKCpub21pbmFsRnJhbWVzUGVyU2Vjb25kKTsK
KyAgICBhdXRvIGludGVydmFsID0gU2Vjb25kcygxLjAgLyBmcmFtZXNQZXJTZWNvbmQpOworCisg
ICAgLy8gRklYTUU6IGhhbmRsZSBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKICAgICBp
ZiAocmVhc29ucy5jb250YWluc0FueSh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSwg
VGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUgfSkpCi0gICAg
ICAgIHJldHVybiBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7CisgICAgICAg
IGludGVydmFsICo9IDI7CiAKLSAgICByZXR1cm4gRnVsbFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWw7
CisgICAgcmV0dXJuIGludGVydmFsOwogfQogCiBpbmxpbmUgRnJhbWVzUGVyU2Vjb25kIHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZChTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwpCkBAIC03
MCw4ICs5MSw3IEBAIGlubGluZSBGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKFNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbCkKICAgICBpZiAocHJlZmVycmVkRnJh
bWVJbnRlcnZhbCA9PSBIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpCiAgICAg
ICAgIHJldHVybiBIYWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vjb25kOwogCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFplcm9GcmFtZXNQZXJTZWNvbmQ7CisgICAg
cmV0dXJuIHN0ZDo6cm91bmQoMSAvIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwuc2Vjb25kcygpKTsK
IH0KIAogaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiYgcmVhc29ucykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420120</attachid>
            <date>2021-02-12 07:00:34 -0800</date>
            <delta_ts>2021-02-12 10:10:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221673-20210212160033.patch</filename>
            <type>text/plain</type>
            <size>21596</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLmZmMjFlYjU5ZDg4OWY0MGU5NzY2OGQ3YWUyNmI5MmZjZTlkYjA1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTIgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tz
IHNob3VsZCBydW4gYXQgYSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gt
cmF0ZSBkaXNwbGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgaW50ZXJu
YWwgcHJlZmVyZW5jZSB0byBmb3JjZSB0aGUgcmVmcmVzaCByYXRlIGZvciBwYWdlIHJlbmRlcmlu
ZyB1cGRhdGVzIHRvIDYwZnBzCisgICAgICAgIHJhdGhlciB0aGFuIHVzZSB0aGUgZGlzcGxheSdz
IHJlZnJlc2ggcmF0ZS4gVGhpcyBzZXR0aW5nIGRlZmF1bHRzIHRvIGZhbHNlLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIw
MjEtMDItMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBOb24tc3BlY2lhbCBVUkxzIHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxMTE2YWU0ZDk4ZGU1NjJhNzA5OGE1MjllZTg4NjMxMzk4NTFjYjMyLi4wMDEw
YzY0NmExYWUyYjQzMzBjNzI2ODk4Y2FmMDY2ZGZiYmU5ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDMgQEAKKzIwMjEtMDItMTIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tzIHNob3VsZCBydW4gYXQg
YSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gtcmF0ZSBkaXNwbGF5cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcCB0byBub3csIHBhZ2UgcmVuZGVyaW5nIHVwZGF0
ZXMsIHdoaWNoIGNhbiwgZm9yIGluc3RhbmNlLCBiZSB0cmlnZ2VyZWQgYnkgcmVnaXN0ZXJpbmcg
YSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQorICAgICAgICBjYWxsYmFjayBvciBoYXZpbmcgQ1NT
IEFuaW1hdGlvbnMsIENTUyBUcmFuc2l0aW9ucyBvciBXZWIgQW5pbWF0aW9ucyBydW5uaW5nIG5v
bi1hY2NlbGVyYXRlZCwgd291bGQgYmUgdHJpZ2dlcmVkCisgICAgICAgIGF0IHRoZSBjdXJyZW50
IGRpc3BsYXkncyByZWZyZXNoIHJhdGUgb24gbWFjT1MsIGFuZCA2MGZwcyBvbiBpT1MuCisKKyAg
ICAgICAgRm9yIGluc3RhbmNlLCB0aGlzIG1lYW50IHRoYXQgcGx1Z2dpbmcgaW4gYSAxNDRIeiBk
aXNwbGF5IG9uIGEgTWFjIHdvdWxkIGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBwYWdlIHJlbmRlcmlu
ZyBhdAorICAgICAgICAxNDRmcHMuIFdlIHRoaW5rIGl0J3MgYmV0dGVyLCBmb3IgV2ViIGNvbXBh
dGliaWxpdHkgcmVhc29ucywgdG8gdHJ5IHRvIHVzZSBhIHBhZ2UgcmVuZGVyaW5nIHVwZGF0ZSBj
YWRlbmNlIHRoYXQKKyAgICAgICAgaXMgYXMgY2xvc2UgdG8gNjBmcHMgYXMgcG9zc2libGUgd2hp
bGUgbWF0Y2hpbmcgYSBkaXNwbGF5IHVwZGF0ZS4gVGhpcyBtZWFucyBmaW5kaW5nIHRoZSB3aG9s
ZSBtdWx0aXBsZSBmb3Igd2hpY2gKKyAgICAgICAgdGhlIGludGVydmFsIGJldHdlZW4gZnJhbWVz
IHdvdWxkIGJlIGFzIGNsb3NlIHRvIHRoYXQgZm9yIDYwSHouCisKKyAgICAgICAgVXNpbmcgdGhl
IDE0NEh6IGNhc2UgYWdhaW4sIHRoaXMgbWVhbnMgd2Ugd291bGQgc2hvb3QgZm9yIDcyZnBzLCBz
aW5jZSB0aGUgcmVmcmVzaCBpbnRlcnZhbCBmb3IgNzJmcHMgaXMgbmVhcmVzdAorICAgICAgICB0
aGF0IGF0IDYwZnBzIHRoYW4gdGhhdCBhdCA0OGZwcyAoYW5vdGhlciBtdWx0aXBsZSBvZiAxNDQp
LgorCisgICAgICAgIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnRlcm5hbCBwcmVmZXJlbmNlIHRv
IGNvbnRyb2wgd2hldGhlciB0aGUgcmVmcmVzaCByYXRlIGZvciBwYWdlIHJlbmRlcmluZyB1cGRh
dGVzIGlzCisgICAgICAgIGZvcmNlZCB0byA2MGZwcywgd2hpY2ggZGVmYXVsdHMgdG8gZmFsc2Us
IHdlIHBhc3MgaW4gdGhlIHBhZ2UncyAibm9taW5hbCByZWZyZXNoIHJhdGUiIHRvIHByZWZlcnJl
ZEZyYW1lSW50ZXJ2YWwoKS4KKyAgICAgICAgSWYgdGhhdCByYXRlIGlzIDYwZnBzLCB3ZSB1c2Ug
dGhlIHNhbWUgcmF0ZSBhbmQgaW50ZXJ2YWxzIGFzIHdlIGFsd2F5cyBoYXZlLiBJZiB0aGF0IHJh
dGUgaXMgbGVzcyB0aGFuIDYwZnBzLCB3ZQorICAgICAgICB1c2UgdGhhdCByYXRlIGFzLWlzLgor
CisgICAgICAgIEZpbmFsbHksIG9uIG1hY09TIHdlIG5vdyBjYWxsIGludG8gRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkganVzdCBsaWtl
IHdlIGRvIG9uCisgICAgICAgIGlPUyBzaW5jZSBjaGFuZ2VzIHRvIFdlYktpdCBhbGxvdyB1cyB0
byBzZXQgdGhlIHByZWZlcnJlZCBmcmFtZXMgcGVyIHNlY29uZCBvbiB0aGUgRGlzcGxheUxpbmsu
CisKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cHJlZmVycmVkU2NyaXB0
ZWRBbmltYXRpb25JbnRlcnZhbCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByZWZlcnJlZFJlbmRlcmluZ1VwZGF0ZUludGVydmFsIGNv
bnN0KToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6d2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFt
ZVJhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3Bl
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkRnJhbWVJbnRlcnZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOgorCiAyMDIxLTAyLTA4ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBhdXRvICYmIDxyYXRpbz4g
dXNlIGNvbnRlbnQgYm94LXNpemluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNGZmY2VkOTUyYjRkNWFkMjk5MGUy
MDkxZjRmN2QxM2FhOTU1MjNmLi44ZmYzYmQ5NTQxMGQwN2ZjMzg4MzNkMzMzNGUxZWY0NzA4NDY2
OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFBhZ2UgdXBkYXRlcyBhbmQgckFGIGNh
bGxiYWNrcyBzaG91bGQgcnVuIGF0IGEgZnJlcXVlbmN5IGNsb3NlIHRvIDYwSHogb24gaGlnaCBy
ZWZyZXNoLXJhdGUgZGlzcGxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMTY3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzOTg2MDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXAgdG8gbm93
LCBvbiBtYWNPUywgdGhlIHByZWZlcnJlZCBmcmFtZXMgcGVyIHNlY29uZCBmb3IgcGFnZSB1cGRh
dGVzIHdvdWxkIHVzZSB0aGUgZGlzcGxheSBsaW5rIGlmIHNldCBhdCA2MGZwcywKKyAgICAgICAg
b3IgdXNlIGEgdGltZXIgaWYgc2V0IGF0IGFueSBvdGhlciB2YWx1ZS4gTWVhbndoaWxlLCBvbiBp
T1MsIHdlIHdvdWxkIHNldCB0aGlzIGZyYW1lIHJhdGUgb24gdGhlIGRpc3BsYXkgbGluayBzaW5j
ZQorICAgICAgICBhIENBRGlzcGxheUxpbmsgQVBJIGFsbG93cyB0byBzZXQgc3VjaCBhIGZyYW1l
IHJhdGUuIFRoZXJlIGlzIG5vIHNpbWlsYXIgQVBJIG9uIENWRGlzcGxheUxpbmssIHdoaWNoIHdl
IHVzZSBvbiBtYWNPUy4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHdlIG5vdyBzZW5kIHRo
ZSBkZXNpcmVkIGZyYW1lIHJhdGUgdXAgdG8gdGhlIERpc3BsYXlMaW5rIGluIHRoZSBVSVByb2Nl
c3MgYW5kIHVzZSBpdCBpbiBjb25qdW5jdGlvbgorICAgICAgICB3aXRoIHRoZSByZXR1cm4gdmFs
dWUgZm9yIERpc3BsYXlMaW5rOjpub21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgdG8gY29tcHV0ZSBh
IG51bWJlciBvZiBmcmFtZXMgdG8gc2tpcCBpbnN0ZWFkIG9mIGFsd2F5cworICAgICAgICBub3Rp
Znlpbmcgb2JzZXJ2ZXJzIGZvciB0aGlzIGRpc3BsYXkuIFdoaWxlIHRoZSBVSVByb2Nlc3Mgc3Rp
bGwgcmVjZWl2ZXMgbm90aWZpY2F0aW9ucyBmcm9tIENWRGlzcGxheUxpbmsgdXBkYXRlcyBhdAor
ICAgICAgICB0aGUgbm9taW5hbCByZWZyZXNoIHJhdGUsIHRoZSBXZWJQcm9jZXNzIHdpbGwgb25s
eSBiZSB3b2tlbiB1cCBhdCB0aGUgcHJlZmVycmVkIGZyYW1lIHJhdGUuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERpc3BsYXlMaW5rUHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNwbGF5
V2FzUmVmcmVzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnNldFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZCk6CisKIDIwMjEtMDItMDggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjcy
NDg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggMjdmNjVmN2ViMWZmNWZmZTQ3NzljNDFjZTE0
MDhiZmVkMmFmMjQyOC4uZGIzMjcyMjBkNmM5NzM2ZDZmZDkwNDM0MDI5MGU1ODE4OGI3ZjczNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
SW50ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBAIC0yNjgsNiArMjY4LDE4IEBAIEZhc3RlckNsaWNrc0Vu
YWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitGb3JjZVBhZ2VSZW5k
ZXJpbmdVcGRhdGVzQXQ2MEZQU0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJs
ZU5hbWU6ICJGb3JjZSBQYWdlIFJlbmRlcmluZyBVcGRhdGVzIGF0IDYwZnBzIgorICBodW1hblJl
YWRhYmxlRGVzY3JpcHRpb246ICJGb3JjZSB0aGUgcmF0ZSBmb3IgcGFnZSByZW5kZXJpbmcgdXBk
YXRlcyB0byA2MGZwcyByYXRoZXIgdGhhbiB1c2UgdGhlIGRpc3BsYXkncyByZWZyZXNoIHJhdGUi
CisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxz
ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAg
IGRlZmF1bHQ6IGZhbHNlCisKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlY29uY2lsZWQgd2l0
aCAnRnJhbWVGbGF0dGVuaW5nJyBpbiBXZWJQcmVmZXJlbmNlcy55YW1sIC4KIEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzYxMmJkZjgwOWNmOGQ4YTkyOTlm
MmYwOTc1NzRkMzViMjYzMDZlYS4uMDg2M2NjOTMwN2I1N2FkNGNhODU2Yjg0NjlhOTZlMTc5Zjcw
Mzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTc5LDcgKzc5LDEyIEBAIFNlY29uZHMgU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOjppbnRlcnZhbCgpIGNvbnN0CiAKIFNlY29uZHMgU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyOjpwcmVmZXJyZWRTY3JpcHRlZEFuaW1hdGlvbkludGVydmFsKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gcHJlZmVycmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25zKTsK
KyAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZQUzsKKyAgICBpZiAoYXV0
byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgeworICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCku
Zm9yY2VQYWdlUmVuZGVyaW5nVXBkYXRlc0F0NjBGUFNFbmFibGVkKCkpCisgICAgICAgICAgICBw
cmVmZXJyZWRGUFMgPSBwYWdlLT5kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpOworICAg
IH0KKyAgICByZXR1cm4gcHJlZmVycmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25z
LCBwcmVmZXJyZWRGUFMpOwogfQogCiBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyOjp0aHJvdHRsaW5nUmVhc29ucygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCBhYTIxMmYwYzc5MTZmYmYwNDcyNDUzNzcwYTRhNzFmNzRjNzk3ZDJiLi5h
Y2M4YWFlMGY4ZWFmNjVmZTM4YjE3YTEwNjc2OGQ4NThiMTllY2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE3NDIsNyArMTc0Miw5IEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRBbmltYXRp
b25zKCkKIAogU2Vjb25kcyBQYWdlOjpwcmVmZXJyZWRSZW5kZXJpbmdVcGRhdGVJbnRlcnZhbCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobV90aHJvdHRsaW5n
UmVhc29ucyk7CisgICAgaWYgKHNldHRpbmdzKCkuZm9yY2VQYWdlUmVuZGVyaW5nVXBkYXRlc0F0
NjBGUFNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVydmFsKG1f
dGhyb3R0bGluZ1JlYXNvbnMsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEZy
YW1lSW50ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29ucywgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1Bl
clNlY29uZCk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0SXNWaXN1YWxseUlkbGVJbnRlcm5hbChib29s
IGlzVmlzdWFsbHlJZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuY3BwCmluZGV4IDU1YTZhNmZkYTgwOTI2NmE5MDJiZDkyMjNkNDdlMzIyMzRh
Y2FlYWYuLmJkYzlhZDY3MzczYjRiN2JjNzJkNDE0NWZmNTM1ZjRjMWYzZjI0ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKQEAgLTUz
LDggKzUzLDggQEAgdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNldFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZChGcmFtZXNQZXJTZWNvbmQgcHJlZmUKIAogYm9vbCBSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKEZyYW1lc1BlclNlY29uZCBwcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQpCiB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gUHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kIGNhbiBvbmx5IGJlIGNoYW5nZWQgZm9yIGlPUyBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIC8vIFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCBjYW4gb25seSBiZSBjaGFuZ2VkIGZvciBEaXNwbGF5UmVmcmVzaE1vbml0
b3Igb24gbWFjT1MgYW5kIGlPUy4KICAgICAvLyBUaGUgY2FsbGVyIGhhcyB0byBmYWxsIGJhY2sg
dG8gdXNpbmcgdGhlIHRpbWVyLgogICAgIGlmIChwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgIT0g
RnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzgs
NyArMTM4LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbmkKIAogdm9pZCBSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCiB7Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpLndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsICp0aGlzKTsKKyAgICBhdXRvJiBt
YW5hZ2VyID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpOwor
ICAgIG1hbmFnZXIud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgKnRoaXMpOworICAg
IG1hbmFnZXIuc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCp0aGlzLCBtX3ByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCk7CiB9CiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNw
bGF5UmVmcmVzaEZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKaW5kZXggMTI4OTJlZGVjN2Y2Y2E2MWQzNTA0MGVh
NzQwMmI2OWY0NDc4ZDU2YS4uZmVjZTY5NzdjNTAyOTJmODI0ZTViZTk3NDNiNmZkNjlmNjdhMzMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9u
RnJhbWVSYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0
aW9uRnJhbWVSYXRlLmgKQEAgLTQ4LDE4ICs0OCwzOSBAQCBjb25zdGV4cHIgY29uc3QgU2Vjb25k
cyBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsIHsgMTBfcyB9OwogCiBjb25z
dGV4cHIgY29uc3QgRnJhbWVzUGVyU2Vjb25kIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCA9IDYw
OwogY29uc3RleHByIGNvbnN0IEZyYW1lc1BlclNlY29uZCBIYWxmU3BlZWRUaHJvdHRsaW5nRnJh
bWVzUGVyU2Vjb25kID0gMzA7Ci1jb25zdGV4cHIgY29uc3QgRnJhbWVzUGVyU2Vjb25kIFplcm9G
cmFtZXNQZXJTZWNvbmQgPSAwOwogCi1pbmxpbmUgU2Vjb25kcyBwcmVmZXJyZWRGcmFtZUludGVy
dmFsKGNvbnN0IE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiYgcmVhc29ucykKK2lubGluZSBG
cmFtZXNQZXJTZWNvbmQgZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZChGcmFtZXNQZXJT
ZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCkKK3sKKyAgICBpZiAobm9taW5hbEZyYW1lc1Bl
clNlY29uZCA8PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpCisgICAgICAgIHJldHVybiBub21p
bmFsRnJhbWVzUGVyU2Vjb25kOworCisgICAgZmxvYXQgZnVsbFNwZWVkUmF0aW8gPSBub21pbmFs
RnJhbWVzUGVyU2Vjb25kIC8gRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kOworICAgIEZyYW1lc1Bl
clNlY29uZCBmbG9vclNwZWVkID0gbm9taW5hbEZyYW1lc1BlclNlY29uZCAvIHN0ZDo6Zmxvb3Io
ZnVsbFNwZWVkUmF0aW8pOworICAgIEZyYW1lc1BlclNlY29uZCBjZWlsU3BlZWQgPSBub21pbmFs
RnJhbWVzUGVyU2Vjb25kIC8gc3RkOjpjZWlsKGZ1bGxTcGVlZFJhdGlvKTsKKworICAgIHJldHVy
biBmdWxsU3BlZWRSYXRpbyAtIHN0ZDo6Zmxvb3IoZnVsbFNwZWVkUmF0aW8pIDw9IDAuNSA/IGZs
b29yU3BlZWQgOiBjZWlsU3BlZWQ7Cit9CisKK2lubGluZSBTZWNvbmRzIHByZWZlcnJlZEZyYW1l
SW50ZXJ2YWwoY29uc3QgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+JiByZWFzb25zLCBPcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpCiB7Ci0gICAgLy8g
RklYTUU6IGhhbmRsZSBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKICAgICBpZiAocmVh
c29ucy5jb250YWlucyhUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQpKQogICAgICAg
ICByZXR1cm4gQWdncmVzc2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbDsKLSAgICAKKwor
ICAgIGlmICghbm9taW5hbEZyYW1lc1BlclNlY29uZCB8fCAqbm9taW5hbEZyYW1lc1BlclNlY29u
ZCA9PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpIHsKKyAgICAgICAgLy8gRklYTUU6IGhhbmRs
ZSBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKKyAgICAgICAgaWYgKHJlYXNvbnMuY29u
dGFpbnNBbnkoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUsIFRocm90dGxpbmdSZWFz
b246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0pKQorICAgICAgICAgICAgcmV0dXJu
IEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbDsKKyAgICAgICAgcmV0dXJuIEZ1
bGxTcGVlZEFuaW1hdGlvbkludGVydmFsOworICAgIH0KKworICAgIGF1dG8gZnJhbWVzUGVyU2Vj
b25kID0gZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCgqbm9taW5hbEZyYW1lc1BlclNl
Y29uZCk7CisgICAgYXV0byBpbnRlcnZhbCA9IFNlY29uZHMoMS4wIC8gZnJhbWVzUGVyU2Vjb25k
KTsKKworICAgIC8vIEZJWE1FOiBoYW5kbGUgVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxl
CiAgICAgaWYgKHJlYXNvbnMuY29udGFpbnNBbnkoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dl
ck1vZGUsIFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0p
KQotICAgICAgICByZXR1cm4gSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsOwor
ICAgICAgICBpbnRlcnZhbCAqPSAyOwogCi0gICAgcmV0dXJuIEZ1bGxTcGVlZEFuaW1hdGlvbklu
dGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbDsKIH0KIAogaW5saW5lIEZyYW1lc1BlclNlY29u
ZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoU2Vjb25kcyBwcmVmZXJyZWRGcmFtZUludGVydmFs
KQpAQCAtNzAsOCArOTEsNyBAQCBpbmxpbmUgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZChTZWNvbmRzIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwpCiAgICAgaWYgKHByZWZl
cnJlZEZyYW1lSW50ZXJ2YWwgPT0gSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFs
KQogICAgICAgICByZXR1cm4gSGFsZlNwZWVkVGhyb3R0bGluZ0ZyYW1lc1BlclNlY29uZDsKIAot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBaZXJvRnJhbWVzUGVyU2Vjb25k
OworICAgIHJldHVybiBzdGQ6OnJvdW5kKDEgLyBwcmVmZXJyZWRGcmFtZUludGVydmFsLnNlY29u
ZHMoKSk7CiB9CiAKIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4mIHJlYXNvbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRl
eCA2YWE4ZWFjZmNmMWQ3YjAwMjUxNTE4YTJhMGMzNGM3ZTJkMTNjZGUwLi40YTA2NWFjNDc0MTU0
NTk2NTkxMzE2ZGIwNWE5NGUzMjJiZmIzMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTgxMCw2ICs4MTAsMTYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcERpc3BsYXlMaW5rcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiAgICAgZm9yIChhdXRvJiBkaXNwbGF5TGluayA6IG1fZGlzcGxheUxpbmtz
KQogICAgICAgICBkaXNwbGF5TGluay0+cmVtb3ZlT2JzZXJ2ZXJzKGNvbm5lY3Rpb24pOwogfQor
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29u
ZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgZm9yIChhdXRvJiBkaXNwbGF5TGlu
ayA6IG1fZGlzcGxheUxpbmtzKSB7CisgICAgICAgIGlmIChkaXNwbGF5TGluay0+ZGlzcGxheUlE
KCkgPT0gZGlzcGxheUlEKSB7CisgICAgICAgICAgICBkaXNwbGF5TGluay0+c2V0UHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CiAjZW5kaWYKIAogLy8gRklYTUU6IERlcHJlY2F0
ZWQuIExlZnQgaGVyZSB1bnRpbCBhIGZpbmFsIGRlY2lzaW9uIGlzIG1hZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBlODlkNjU4MGRjZjI5ODgxYjI2NTgy
MmU4MDBmMmRiZDhiMDc4MjA0Li4zMTU1M2JjNjU2MzgyZTUxYjQ3M2ZkZmI1NzYxYjgxOTBjZGM0
YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIzNiw2
ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydERpc3BsYXlMaW5rKElQQzo6Q29ubmVj
dGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQp
OwogICAgIHZvaWQgc3RvcERpc3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5r
T2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwogICAgIHZvaWQgc3RvcERp
c3BsYXlMaW5rcyhJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHNldERpc3BsYXlMaW5rUHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3Jl
OjpGcmFtZXNQZXJTZWNvbmQpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdp
bihTdHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgbmFtZSwgSGFzaFNldDxTdHJpbmc+
JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDI5MzE1ODE0MzU3Y2NhNGMxYzZhY2U4
ZDQwYmFiMGM4ZTMyZmVmOGEuLmQ2Y2ZlNWNkOGMwMmJmMTM3NzNjNzdiMzE1ZmY4YjAxMWM1MDRi
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02NSw2
ICs2NSwxMCBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCisjaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
bjsKQEAgLTI5OSw2ICszMDMsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgdm9pZCBzdGFydERpc3Bs
YXlMaW5rKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQp
OwogICAgIHZvaWQgc3RvcERpc3BsYXlMaW5rKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpOworICAgIHZvaWQgc2V0RGlzcGxheUxpbmtQcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQsIFdlYkNvcmU6OkZyYW1l
c1BlclNlY29uZCk7CiAjZW5kaWYKIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSB3ZWIgcHJvY2Vz
cyBoYXMgY3Jhc2hlZCBvciB3ZSBrbm93IHRoYXQgaXQgd2lsbCB0ZXJtaW5hdGUgc29vbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxNjdlOTdjYWQzNmY4YmFhZjhkM2QzNzEyZGFkOTY3NGRmMDM0OTdlLi42NmNkNzdl
NDNjNzgwZDE0M2UwNWE3MWFjMjUyN2NiZjViZDlkNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC03NCw2ICs3NCw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAg
ICAgU3RhcnREaXNwbGF5TGluayhXZWJLaXQ6OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZl
cklELCB1aW50MzJfdCBkaXNwbGF5SUQpCiAgICAgU3RvcERpc3BsYXlMaW5rKFdlYktpdDo6RGlz
cGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIHVpbnQzMl90IGRpc3BsYXlJRCkKKyAgICBT
ZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh1aW50MzJfdCBkaXNwbGF5SUQs
IHVuc2lnbmVkIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rp
c3BsYXlMaW5rLmNwcAppbmRleCAwZDFmMzg3MWJiN2ZkMGNkMGZiZTI2ZTljZjg4MWJiNzgxZDVl
NjU2Li45MDJmNmUxY2JjZjRkMTYxNDQ0Mjk4ZDU2NjY0YzBlODhkODZhZGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKQEAgLTczLDYgKzczLDExIEBA
IE9wdGlvbmFsPHVuc2lnbmVkPiBEaXNwbGF5TGluazo6bm9taW5hbEZyYW1lc1BlclNlY29uZCgp
IGNvbnN0CiAgICAgcmV0dXJuIHJvdW5kKChkb3VibGUpcmVmcmVzaFBlcmlvZC50aW1lU2NhbGUg
LyAoZG91YmxlKXJlZnJlc2hQZXJpb2QudGltZVZhbHVlKTsKIH0KIAordm9pZCBEaXNwbGF5TGlu
azo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCBw
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgbV9wcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmQgPSBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7Cit9CisKIHZvaWQgRGlzcGxheUxpbms6OmFk
ZE9ic2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZl
cklEIG9ic2VydmVySUQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEz
Miw2ICsxMzcsMjIgQEAgdm9pZCBEaXNwbGF5TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdh
c1JlZnJlc2hlZCgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBp
ZiAoYXV0byBub21pbmFsRnJhbWVzUGVyU2Vjb25kID0gdGhpcy0+bm9taW5hbEZyYW1lc1BlclNl
Y29uZCgpKSB7CisgICAgICAgIGlmIChtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkgeworICAg
ICAgICAgICAgaWYgKCptX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCA9PSAqbm9taW5hbEZyYW1l
c1BlclNlY29uZCkKKyAgICAgICAgICAgICAgICBtX2ZyYW1lc1NpbmNlTGFzdE9ic2VydmVyTm90
aWZpY2F0aW9uID0gMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8g
bWF4TnVtYmVyT2ZGcmFtZXNCZXR3ZWVuT2JzZXJ2ZXJOb3RpZmljYXRpb24gPSAqbm9taW5hbEZy
YW1lc1BlclNlY29uZCAvICptX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQobWF4TnVtYmVyT2ZGcmFtZXNCZXR3ZWVuT2JzZXJ2ZXJOb3RpZmljYXRpb24g
PiAxKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZm1vZChtYXhOdW1iZXJPZkZyYW1lc0JldHdl
ZW5PYnNlcnZlck5vdGlmaWNhdGlvbiwgMS4wKSA9PSAwLjApOworICAgICAgICAgICAgICAgIEFT
U0VSVChtX2ZyYW1lc1NpbmNlTGFzdE9ic2VydmVyTm90aWZpY2F0aW9uIDwgbWF4TnVtYmVyT2ZG
cmFtZXNCZXR3ZWVuT2JzZXJ2ZXJOb3RpZmljYXRpb24pOworICAgICAgICAgICAgICAgIGlmICgr
K21fZnJhbWVzU2luY2VMYXN0T2JzZXJ2ZXJOb3RpZmljYXRpb24gIT0gbWF4TnVtYmVyT2ZGcmFt
ZXNCZXR3ZWVuT2JzZXJ2ZXJOb3RpZmljYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lc1NpbmNlTGFzdE9ic2VydmVyTm90aWZpY2F0aW9u
ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fb2JzZXJ2ZXJzTG9jayk7CiAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAoKyttX2ZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMgPj0gbWF4RmlyZUNv
dW50V2l0aG91dE9ic2VydmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9EaXNwbGF5TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlM
aW5rLmgKaW5kZXggYWE3ZTZlZWFiNzM1MzZkZDg3ZjljOGM0MzlhMGU0OTM4Mjc1OWFiMC4uMDYy
ZDAzNTdkMDJjNmE2NTE0MWVjMzAyMWYxZTgxMDMxYTExNzY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5oIgogI2luY2x1ZGUgPENvcmVWaWRlby9DVkRpc3BsYXlM
aW5rLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
SUQ7IH0KICAgICAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKFdlYkNvcmU6
OkZyYW1lc1BlclNlY29uZCk7CiAKICAgICAvLyBXaGVuIHJlc3BvbnNpdmVuZXNzIGlzIGNyaXRp
Y2FsLCB3ZSBzZW5kIHRoZSBJUEMgdG8gYSBiYWNrZ3JvdW5kIHF1ZXVlLiBPdGhlcndpc2UsIHdl
IHNlbmQgaXQgdG8gdGhlCiAgICAgLy8gbWFpbiB0aHJlYWQgdG8gYXZvaWQgdW5uZWNlc3Nhcnkg
dGhyZWFkIGhvcHBpbmcgYW5kIHNhdmUgcG93ZXIuCkBAIC02Nyw2ICs2OSw4IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAgICAgdW5zaWdu
ZWQgbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJzIHsgMCB9OwogICAgIHN0YXRpYyBib29sIHNo
b3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQ+IG1fcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOworICAgIHVuc2lnbmVkIG1f
ZnJhbWVzU2luY2VMYXN0T2JzZXJ2ZXJOb3RpZmljYXRpb24geyAwIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc1Byb3h5TWFjLm1tCmluZGV4IDUyZmQwY2UxOTE5ZTQ0MTM3MzFjNjU3NDEyYzA4OWRhMDY4
NmIwNjYuLjkzYWNmZjlmNmU5ZjI4OTlmZTY3YjI0ZWRmMzJlOTJmYTNlZGIwNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQpAQCAt
NzIsNiArNzIsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0b3BEaXNwbGF5TGluayhEaXNw
bGF5TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCwgV2ViQ29yZToKICAgICBBU1NFUlQoY29ubmVj
dGlvbigpKTsKICAgICBwcm9jZXNzUG9vbCgpLnN0b3BEaXNwbGF5TGluaygqY29ubmVjdGlvbigp
LCBvYnNlcnZlcklELCBkaXNwbGF5SUQpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0
RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlELCBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKQoreworICAgIHByb2Nlc3NQb29sKCkuc2V0RGlzcGxheUxpbmtQcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQoZGlzcGxheUlELCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOworfQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXggYjQ3NDk2
MDFhY2U3OTUwZTJhNWIwNGNmMjE0NjQ0MDU0OWYxMzNmOC4uZWU3MjVhMzlhMTdkOWZhODQ5NDQy
MWRlNGY5OTkyNDAxZWVjMTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC00OSw3ICs0OSw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKICAgICBi
b29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKLSAgICAKKyAgICB2b2lkIHNl
dFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpIG92ZXJy
aWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQ
bGF0Zm9ybURpc3BsYXlJRCk7CiAgICAgCkBAIC0xMDIsNiArMTAzLDExIEBAIHZvaWQgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKCkKICAgICBoYW5kbGVEaXNwbGF5
UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOwogfQogCit2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKFdlYkNvcmU6
OkZyYW1lc1BlclNlY29uZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpTZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZChkaXNwbGF5SUQoKSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKSwgMCk7Cit9CisKIFJlZlB0
cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERyYXdpbmdBcmVhOjpjcmVhdGVEaXNw
bGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIHJl
dHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmNyZWF0ZShkaXNwbGF5SUQpOwo=
</data>
<flag name="review"
          id="438529"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="438546"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420720</attachid>
            <date>2021-02-17 14:41:41 -0800</date>
            <delta_ts>2021-02-18 00:04:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221673-20210217234139.patch</filename>
            <type>text/plain</type>
            <size>22170</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyMmYwMDU5MjhhYmMxMjc1NjZiMzYy
N2E2ZmE0OGY5NWNiNTM0ZjUuLjE1MWY0NmM5ZGU1NzdjZDdhNDA1OWM2YjNmMmU0M2UwM2ZhYmRj
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTcgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFuZCByQUYgY2FsbGJhY2tz
IHNob3VsZCBydW4gYXQgYSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBvbiBoaWdoIHJlZnJlc2gt
cmF0ZSBkaXNwbGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxNjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5ODYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgaW50ZXJu
YWwgcHJlZmVyZW5jZSB0byBmb3JjZSB0aGUgcmVmcmVzaCByYXRlIGZvciBwYWdlIHJlbmRlcmlu
ZyB1cGRhdGVzIHRvIDYwZnBzCisgICAgICAgIHJhdGhlciB0aGFuIHVzZSB0aGUgZGlzcGxheSdz
IHJlZnJlc2ggcmF0ZS4gVGhpcyBzZXR0aW5nIGRlZmF1bHRzIHRvIGZhbHNlLgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIw
MjEtMDItMTcgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBEZW55IG1hY2gtbG9va3VwIHRvIHRoZSBmb250cyBzZXJ2aWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY3
ZjBlZDlkMDE5NTM2MTAyOTgzYjdhNjc3ODU2YjM4MDM0YzNkOC4uNzA1MDY2MTZlNzM3NTIwNGJm
MWFlZmQ4MzJjMTJjZmQ4NTY0ODEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIx
LTAyLTE3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFBh
Z2UgdXBkYXRlcyBhbmQgckFGIGNhbGxiYWNrcyBzaG91bGQgcnVuIGF0IGEgZnJlcXVlbmN5IGNs
b3NlIHRvIDYwSHogb24gaGlnaCByZWZyZXNoLXJhdGUgZGlzcGxheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY3MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzOTg2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXAgdG8gbm93LCBwYWdlIHJlbmRlcmluZyB1cGRhdGVzLCB3aGljaCBjYW4s
IGZvciBpbnN0YW5jZSwgYmUgdHJpZ2dlcmVkIGJ5IHJlZ2lzdGVyaW5nIGEgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCkKKyAgICAgICAgY2FsbGJhY2sgb3IgaGF2aW5nIENTUyBBbmltYXRpb25zLCBD
U1MgVHJhbnNpdGlvbnMgb3IgV2ViIEFuaW1hdGlvbnMgcnVubmluZyBub24tYWNjZWxlcmF0ZWQs
IHdvdWxkIGJlIHRyaWdnZXJlZAorICAgICAgICBhdCB0aGUgY3VycmVudCBkaXNwbGF5J3MgcmVm
cmVzaCByYXRlIG9uIG1hY09TLCBhbmQgNjBmcHMgb24gaU9TLgorCisgICAgICAgIEZvciBpbnN0
YW5jZSwgdGhpcyBtZWFudCB0aGF0IHBsdWdnaW5nIGluIGEgMTQ0SHogZGlzcGxheSBvbiBhIE1h
YyB3b3VsZCBhdHRlbXB0IHRvIHVwZGF0ZSB0aGUgcGFnZSByZW5kZXJpbmcgYXQKKyAgICAgICAg
MTQ0ZnBzLiBXZSB0aGluayBpdCdzIGJldHRlciwgZm9yIFdlYiBjb21wYXRpYmlsaXR5IHJlYXNv
bnMsIHRvIHRyeSB0byB1c2UgYSBwYWdlIHJlbmRlcmluZyB1cGRhdGUgY2FkZW5jZSB0aGF0Cisg
ICAgICAgIGlzIGFzIGNsb3NlIHRvIDYwZnBzIGFzIHBvc3NpYmxlIHdoaWxlIG1hdGNoaW5nIGEg
ZGlzcGxheSB1cGRhdGUuIFRoaXMgbWVhbnMgZmluZGluZyB0aGUgd2hvbGUgbXVsdGlwbGUgZm9y
IHdoaWNoCisgICAgICAgIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIGZyYW1lcyB3b3VsZCBiZSBhcyBj
bG9zZSB0byB0aGF0IGZvciA2MEh6LgorCisgICAgICAgIFVzaW5nIHRoZSAxNDRIeiBjYXNlIGFn
YWluLCB0aGlzIG1lYW5zIHdlIHdvdWxkIHNob290IGZvciA3MmZwcywgc2luY2UgdGhlIHJlZnJl
c2ggaW50ZXJ2YWwgZm9yIDcyZnBzIGlzIG5lYXJlc3QKKyAgICAgICAgdGhhdCBhdCA2MGZwcyB0
aGFuIHRoYXQgYXQgNDhmcHMgKGFub3RoZXIgbXVsdGlwbGUgb2YgMTQ0KS4KKworICAgICAgICBJ
biB0aGUgY2FzZSB3aGVyZSB0aGUgaW50ZXJuYWwgcHJlZmVyZW5jZSB0byBjb250cm9sIHdoZXRo
ZXIgdGhlIHJlZnJlc2ggcmF0ZSBmb3IgcGFnZSByZW5kZXJpbmcgdXBkYXRlcyBpcworICAgICAg
ICBmb3JjZWQgdG8gNjBmcHMsIHdoaWNoIGRlZmF1bHRzIHRvIGZhbHNlLCB3ZSBwYXNzIGluIHRo
ZSBwYWdlJ3MgIm5vbWluYWwgcmVmcmVzaCByYXRlIiB0byBwcmVmZXJyZWRGcmFtZUludGVydmFs
KCkuCisgICAgICAgIElmIHRoYXQgcmF0ZSBpcyA2MGZwcywgd2UgdXNlIHRoZSBzYW1lIHJhdGUg
YW5kIGludGVydmFscyBhcyB3ZSBhbHdheXMgaGF2ZS4gSWYgdGhhdCByYXRlIGlzIGxlc3MgdGhh
biA2MGZwcywgd2UKKyAgICAgICAgdXNlIHRoYXQgcmF0ZSBhcy1pcy4KKworICAgICAgICAqIGRv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpwcmVmZXJyZWRTY3JpcHRlZEFuaW1hdGlvbkludGVy
dmFsIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6cHJlZmVycmVkUmVuZGVyaW5nVXBkYXRlSW50ZXJ2YWwgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6ZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCk6CisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJyZWRGcmFtZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCk6CisKIDIwMjEtMDItMTcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ1NTIHByb3BlcnRpZXMgdGhhdCBkaXNhbGxvdyBuZWdhdGl2ZSB2
YWx1ZXMgc2hvdWxkIG5vdCBhbmltYXRlIHRvIG5lZ2F0aXZlIHZhbHVlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFt
bCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
LnlhbWwKaW5kZXggOGM4NzM0YmQwMzIzY2IyNGYwZjViZTNmYTJhNjQxMGI0ZTI3OWQ4Ny4uZGYw
ZmVlZTEwOWFmNjFkNTNkNGMzMTgxNGVkZDRhZDgyNjMyYTJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55
YW1sCkBAIC0yNjgsNiArMjY4LDE4IEBAIEZhc3RlckNsaWNrc0VuYWJsZWQ6CiAgICAgV2ViS2l0
OgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitGb3JjZVBhZ2VSZW5kZXJpbmdVcGRhdGVzQXQ2MEZQ
U0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJGb3JjZSBQYWdl
IFJlbmRlcmluZyBVcGRhdGVzIGF0IDYwZnBzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJGb3JjZSB0aGUgcmF0ZSBmb3IgdXBkYXRlcyB0byBzb2Z0d2FyZSBXZWIgQW5pbWF0aW9ucywg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgYW5kIGFueXRoaW5nIHRyaWdnZXJpbmcgdGhlIHBhZ2Ug
cmVuZGVyaW5nIHN0ZXBzIHRvIDYwIGZyYW1lcyBwZXIgc2Vjb25kIHJhdGhlciB0aGFuIHVzZSB0
aGUgZGlzcGxheSdzIHJlZnJlc2ggcmF0ZSIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExl
Z2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDog
ZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogIyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcmVjb25jaWxlZCB3aXRoICdGcmFtZUZsYXR0ZW5pbmcnIGluIFdlYlByZWZl
cmVuY2VzLnlhbWwgLgogRnJhbWVGbGF0dGVuaW5nRW5hYmxlZDoKICAgdHlwZTogYm9vbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApp
bmRleCAzNjEyYmRmODA5Y2Y4ZDhhOTI5OWYyZjA5NzU3NGQzNWIyNjMwNmVhLi4wODYzY2M5MzA3
YjU3YWQ0Y2E4NTZiODQ2OWE5NmUxNzlmNzAzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNzksNyArNzksMTIgQEAg
U2Vjb25kcyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmludGVydmFsKCkgY29uc3QKIAog
U2Vjb25kcyBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnByZWZlcnJlZFNjcmlwdGVkQW5p
bWF0aW9uSW50ZXJ2YWwoKSBjb25zdAogewotICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUludGVy
dmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMpOworICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4g
cHJlZmVycmVkRlBTOworICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7CisgICAg
ICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5mb3JjZVBhZ2VSZW5kZXJpbmdVcGRhdGVzQXQ2MEZQ
U0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHByZWZlcnJlZEZQUyA9IHBhZ2UtPmRpc3BsYXlOb21p
bmFsRnJhbWVzUGVyU2Vjb25kKCk7CisgICAgfQorICAgIHJldHVybiBwcmVmZXJyZWRGcmFtZUlu
dGVydmFsKG1fdGhyb3R0bGluZ1JlYXNvbnMsIHByZWZlcnJlZEZQUyk7CiB9CiAKIE9wdGlvblNl
dDxUaHJvdHRsaW5nUmVhc29uPiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnRocm90dGxp
bmdSZWFzb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDU3NDg0OWZhYzhmMDkzZTdi
NjA1OTc2ZmMyNzQxMTc5ODUwNmI4MGEuLjI0NTU3YTM1N2E1MmNiMjgxZTc0NjQ3YzFkZjk2NTcx
M2M0ZmQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTc0Myw3ICsxNzQzLDkgQEAgdm9pZCBQ
YWdlOjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnMoKQogCiBTZWNvbmRzIFBhZ2U6OnByZWZlcnJl
ZFJlbmRlcmluZ1VwZGF0ZUludGVydmFsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcHJlZmVycmVk
RnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25zKTsKKyAgICBpZiAoc2V0dGluZ3MoKS5m
b3JjZVBhZ2VSZW5kZXJpbmdVcGRhdGVzQXQ2MEZQU0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobV90aHJvdHRsaW5nUmVhc29ucywgV1RGOjpudWxsb3B0
KTsKKyAgICByZXR1cm4gcHJlZmVycmVkRnJhbWVJbnRlcnZhbChtX3Rocm90dGxpbmdSZWFzb25z
LCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRJ
c1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wgaXNWaXN1YWxseUlkbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCmluZGV4
IDEyODkyZWRlYzdmNmNhNjFkMzUwNDBlYTc0MDJiNjlmNDQ3OGQ1NmEuLjRjYzRhMjE2NWU2ZDU0
MWZlOTkxYWE0NDc2MjAyYjA3ODI5Y2RiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCkBAIC00NSwyMSArNDUsNDIg
QEAgY29uc3RleHByIGNvbnN0IFNlY29uZHMgRnVsbFNwZWVkQW5pbWF0aW9uSW50ZXJ2YWwgeyAx
NV9tcyB9OwogLy8gQWxsb3cgYSBsaXR0bGUgbW9yZSB0aGFuIDMwZnBzIHRvIG1ha2Ugc3VyZSB3
ZSBjYW4gYXQgbGVhc3QgaGl0IHRoYXQgZnJhbWUgcmF0ZS4KIGNvbnN0ZXhwciBjb25zdCBTZWNv
bmRzIEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCB7IDMwX21zIH07CiBjb25z
dGV4cHIgY29uc3QgU2Vjb25kcyBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFs
IHsgMTBfcyB9OworY29uc3RleHByIGNvbnN0IGludCBJbnRlcnZhbFRocm90dGxpbmdGYWN0b3Ig
eyAyIH07CiAKIGNvbnN0ZXhwciBjb25zdCBGcmFtZXNQZXJTZWNvbmQgRnVsbFNwZWVkRnJhbWVz
UGVyU2Vjb25kID0gNjA7CiBjb25zdGV4cHIgY29uc3QgRnJhbWVzUGVyU2Vjb25kIEhhbGZTcGVl
ZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQgPSAzMDsKLWNvbnN0ZXhwciBjb25zdCBGcmFtZXNQ
ZXJTZWNvbmQgWmVyb0ZyYW1lc1BlclNlY29uZCA9IDA7CiAKLWlubGluZSBTZWNvbmRzIHByZWZl
cnJlZEZyYW1lSW50ZXJ2YWwoY29uc3QgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+JiByZWFz
b25zKQoraW5saW5lIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNw
ZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQoreworICAgIGlmIChu
b21pbmFsRnJhbWVzUGVyU2Vjb25kIDw9IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkKKyAgICAg
ICAgcmV0dXJuIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7CisKKyAgICBmbG9hdCBmdWxsU3BlZWRS
YXRpbyA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQgLyBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQ7
CisgICAgRnJhbWVzUGVyU2Vjb25kIGZsb29yU3BlZWQgPSBub21pbmFsRnJhbWVzUGVyU2Vjb25k
IC8gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRpbyk7CisgICAgRnJhbWVzUGVyU2Vjb25kIGNlaWxT
cGVlZCA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQgLyBzdGQ6OmNlaWwoZnVsbFNwZWVkUmF0aW8p
OworCisgICAgcmV0dXJuIGZ1bGxTcGVlZFJhdGlvIC0gc3RkOjpmbG9vcihmdWxsU3BlZWRSYXRp
bykgPD0gMC41ID8gZmxvb3JTcGVlZCA6IGNlaWxTcGVlZDsKK30KKworaW5saW5lIFNlY29uZHMg
cHJlZmVycmVkRnJhbWVJbnRlcnZhbChjb25zdCBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4m
IHJlYXNvbnMsIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29u
ZCkKIHsKLSAgICAvLyBGSVhNRTogaGFuZGxlIFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRs
ZQogICAgIGlmIChyZWFzb25zLmNvbnRhaW5zKFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3
cG9ydCkpCiAgICAgICAgIHJldHVybiBBZ2dyZXNzaXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVy
dmFsOwotICAgIAotICAgIGlmIChyZWFzb25zLmNvbnRhaW5zQW55KHsgVGhyb3R0bGluZ1JlYXNv
bjo6TG93UG93ZXJNb2RlLCBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jvc3NPcmln
aW5GcmFtZSB9KSkKLSAgICAgICAgcmV0dXJuIEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25J
bnRlcnZhbDsKIAotICAgIHJldHVybiBGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbDsKKyAgICBp
ZiAoIW5vbWluYWxGcmFtZXNQZXJTZWNvbmQgfHwgKm5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPT0g
RnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSB7CisgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgVGhy
b3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlCisgICAgICAgIGlmIChyZWFzb25zLmNvbnRhaW5z
QW55KHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlLCBUaHJvdHRsaW5nUmVhc29uOjpO
b25JbnRlcmFjdGVkQ3Jvc3NPcmlnaW5GcmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBIYWxm
U3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWw7CisgICAgICAgIHJldHVybiBGdWxsU3Bl
ZWRBbmltYXRpb25JbnRlcnZhbDsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1lc1BlclNlY29uZCA9
IGZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3BlZWQoKm5vbWluYWxGcmFtZXNQZXJTZWNvbmQp
OworICAgIGF1dG8gaW50ZXJ2YWwgPSBTZWNvbmRzKDEuMCAvIGZyYW1lc1BlclNlY29uZCk7CisK
KyAgICBpZiAocmVhc29ucy5jb250YWluc0FueSh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2Vy
TW9kZSwgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3JpZ2luRnJhbWUsIFRo
cm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9KSkKKyAgICAgICAgaW50ZXJ2YWwgKj0gSW50
ZXJ2YWxUaHJvdHRsaW5nRmFjdG9yOworCisgICAgcmV0dXJuIGludGVydmFsOwogfQogCiBpbmxp
bmUgRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChTZWNvbmRzIHByZWZl
cnJlZEZyYW1lSW50ZXJ2YWwpCkBAIC03MCw4ICs5MSw3IEBAIGlubGluZSBGcmFtZXNQZXJTZWNv
bmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKFNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZh
bCkKICAgICBpZiAocHJlZmVycmVkRnJhbWVJbnRlcnZhbCA9PSBIYWxmU3BlZWRUaHJvdHRsaW5n
QW5pbWF0aW9uSW50ZXJ2YWwpCiAgICAgICAgIHJldHVybiBIYWxmU3BlZWRUaHJvdHRsaW5nRnJh
bWVzUGVyU2Vjb25kOwogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFpl
cm9GcmFtZXNQZXJTZWNvbmQ7CisgICAgcmV0dXJuIHN0ZDo6cm91bmQoMSAvIHByZWZlcnJlZEZy
YW1lSW50ZXJ2YWwuc2Vjb25kcygpKTsKIH0KIAogaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiYgcmVh
c29ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAxZmIzZjBkZGY4OWNlYTRlNWVjZDVjMDgzZTE2MzQyMmY2M2MzYmE1Li4yN2E3NTEyNzY1MWNj
MzVjNTBkNWJmNjZjZmQ0NzQxYWE1NzJjMzFiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTcgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFnZSB1cGRhdGVzIGFu
ZCByQUYgY2FsbGJhY2tzIHNob3VsZCBydW4gYXQgYSBmcmVxdWVuY3kgY2xvc2UgdG8gNjBIeiBv
biBoaWdoIHJlZnJlc2gtcmF0ZSBkaXNwbGF5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM5
ODYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQVBJIHRlc3RzIGZvciB0aGUgbWV0aG9kcyBpbiBBbmltYXRpb25GcmFtZVJhdGUuaC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BbmltYXRpb25G
cmFtZVJhdGUuY3BwOiBBZGRlZC4KKwogMjAyMS0wMi0xNyAgQWFrYXNoIEphaW4gIDxhYWthc2hf
amFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgY29tbWl0LXF1ZXVlIHNob3VsZCByZXRyeSB3aGVu
IGl0IGZhaWxzIHRvIGNvbW1pdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZDJmOWU2Mjc2
OTA2ZTVmNTQwYWY0OTEyODg1NjM2MzI2NWI1YzllLi5mODljOTVhZGJlOWYyNjgwZDhlYjcwY2Nm
YzM1ZWZhZjczZmEyMWExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTIxLDYgKzUyMSw3
IEBACiAJCTZCOUFCRTEyMjA4Njk1MkYwMEQ3NURFNiAvKiBIVFRQUGFyc2Vycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjlBQkUxMTIwODY5NTJG
MDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3BwICovOyB9OwogCQk2QkY0QTY4MzIzOUVENENEMDBF
MkY0NUIgLyogTG9nZ2VkSW5TdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkJGNEE2ODIyMzlFRDRDRDAwRTJGNDVCIC8qIExvZ2dlZEluU3Rh
dHVzLmNwcCAqLzsgfTsKIAkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hDb3VudGVk
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
MzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi87IH07CisJCTcx
MkU0QkMxMjVEREM1MkEwMDA3MjAxQyAvKiBBbmltYXRpb25GcmFtZVJhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEyRTRCQzAyNUREQzUyQTAw
MDcyMDFDIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgKi87IH07CiAJCTcxRTg4QzQxMjRCNTI5
OUMwMDY2NTE2MCAvKiBTaGFyZVNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUU4OEM0MDI0QjUyOTlDMDA2NjUxNjAgLyogU2hhcmVT
aGVldFRlc3RzLm1tICovOyB9OwogCQk3MUU4OEM0NTI0QjUzNEI3MDA2NjUxNjAgLyogaW1nLXdp
dGgtYmFzZTY0LXVybC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxRTg4QzQzMjRCNTMzRUMwMDY2NTE2MCAvKiBpbWctd2l0aC1iYXNl
NjQtdXJsLmh0bWwgKi87IH07CiAJCTcyNUMzRUYzMjIwNThBNUIwMDdDMzZGQyAvKiBBZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNUMzRUYyMjIwNTg0QkEwMDdDMzZGQyAvKiBBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sICovOyB9OwpAQCAtMjMxNSw2ICsyMzE2LDcg
QEAKIAkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdHJhYmxlRG9tYWluLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkI5QUJFMTEyMDg2OTUyRjAwRDc1REU2IC8qIEhUVFBQYXJzZXJzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBQYXJzZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkJGNEE2ODIyMzlFRDRDRDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzEyRTRCQzAyNUREQzUyQTAwMDcyMDFDIC8qIEFuaW1hdGlvbkZyYW1l
UmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbmltYXRpb25G
cmFtZVJhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUU4OEM0MDI0QjUy
OTlDMDA2NjUxNjAgLyogU2hhcmVTaGVldFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU2hhcmVTaGVldFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MUU4OEM0MzI0QjUzM0VDMDA2NjUxNjAgLyogaW1nLXdpdGgtYmFzZTY0LXVy
bC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltZy13aXRoLWJhc2U2NC11cmwu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNUMzRUYyMjIwNTg0QkEwMDdD
MzZGQyAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gQWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NDUsNiArMzU0Nyw3IEBACiAJCQkJQTFFQzExODUx
RjQyNTNEOTAwRDAxNDZFIC8qIGlvcyAqLywKIAkJCQlBQkY1MTA2MzJBMTlCOEFDN0VDNDBFMTcg
LyogQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCAqLywKIAkJCQk3QTkwOUE2RjFEODc3NDc1MDA3RTEw
RjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLywKKwkJCQk3MTJFNEJDMDI1RERDNTJBMDAwNzIw
MUMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmNwcCAqLywKIAkJCQk1NzE1MkI1RDIxQ0MyMDQ1MDAw
QzM3Q0EgLyogQXBkdVRlc3QuY3BwICovLAogCQkJCTYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLywKIAkJCQk5M0E3MjBFNTE4RjFBMEU4
MDBBODQ4RTEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8sCkBAIC01MTMyLDYgKzUxMzUsNyBA
QAogCQkJCUMxRjdCNzM5MjQ0OTA4M0YwMDEyNDU1NyAvKiBBR1hDb21waWxlclNlcnZpY2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2
YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNzFBRkUxRDQ5QzBC
RDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzEyRTRC
QzEyNUREQzUyQTAwMDcyMDFDIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1NzE1MkI1RTIxQ0MyMDQ1MDAwQzM3Q0EgLyogQXBkdVRlc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE3OThCODIyMjQzMUQ2NTAwMDc2NEJEIC8qIEFwcGxlUGF5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjNGNjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFu
aWZlc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ4ZTg4
YWIwNTZmNDdmYmY5MzFmNzIxNTc4NGUxNDQzMGEwNDhhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9uRnJh
bWVSYXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK1RFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBmcmFtZXNQZXJTZWNvbmROZWFy
ZXN0RnVsbFNwZWVkKQoreworICAgIEFTU0VSVF9FUShmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVs
bFNwZWVkKDI0MCksIEZyYW1lc1BlclNlY29uZCg2MCkpOworICAgIEFTU0VSVF9FUShmcmFtZXNQ
ZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKDE0NCksIEZyYW1lc1BlclNlY29uZCg3MikpOworICAg
IEFTU0VSVF9FUShmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKDEyMCksIEZyYW1lc1Bl
clNlY29uZCg2MCkpOworICAgIEFTU0VSVF9FUShmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNw
ZWVkKDkwKSwgRnJhbWVzUGVyU2Vjb25kKDkwKSk7CisgICAgQVNTRVJUX0VRKGZyYW1lc1BlclNl
Y29uZE5lYXJlc3RGdWxsU3BlZWQoNjApLCBGcmFtZXNQZXJTZWNvbmQoNjApKTsKKyAgICBBU1NF
UlRfRVEoZnJhbWVzUGVyU2Vjb25kTmVhcmVzdEZ1bGxTcGVlZCg0OCksIEZyYW1lc1BlclNlY29u
ZCg0OCkpOworICAgIEFTU0VSVF9FUShmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKDMw
KSwgRnJhbWVzUGVyU2Vjb25kKDMwKSk7Cit9CisKK1RFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBw
cmVmZXJyZWRGcmFtZUludGVydmFsV2l0aFVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29u
ZCkKK3sKKyAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOworICAg
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gdW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vj
b25kOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywg
dW5zcGVjaWZpZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgRnVsbFNwZWVkQW5pbWF0aW9uSW50
ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGlu
Z1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29u
ZCksIEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7CisgICAgQVNTRVJUX0VR
KHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVk
Q3Jvc3NPcmlnaW5GcmFtZSB9LCB1bnNwZWNpZmllZE5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBI
YWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworICAgIEFTU0VSVF9FUShwcmVm
ZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0s
IHVuc3BlY2lmaWVkTm9taW5hbEZyYW1lc1BlclNlY29uZCksIEFnZ3Jlc3NpdmVUaHJvdHRsaW5n
QW5pbWF0aW9uSW50ZXJ2YWwpOworfQorCitURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVy
cmVkRnJhbWVJbnRlcnZhbFdpdGhGdWxsU3BlZWROb21pbmFsRnJhbWVzUGVyU2Vjb25kKQorewor
ICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBub1Rocm90dGxpbmc7CisgICAgQVNTRVJU
X0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobm9UaHJvdHRsaW5nLCBGdWxsU3BlZWRGcmFtZXNQ
ZXJTZWNvbmQpLCBGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbCk7CisgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwg
RnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSwgSGFsZlNwZWVkVGhyb3R0bGluZ0FuaW1hdGlvbklu
dGVydmFsKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxp
bmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9zc09yaWdpbkZyYW1lIH0sIEZ1bGxTcGVlZEZyYW1l
c1BlclNlY29uZCksIEhhbGZTcGVlZFRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7CisgICAg
QVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRz
aWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVzc2l2ZVRocm90
dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7Cit9CisKK1RFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBw
cmVmZXJyZWRGcmFtZUludGVydmFsV2l0aDE0NEZQU05vbWluYWxGcmFtZXNQZXJTZWNvbmQpCit7
CisgICAgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKKyAgICBGcmFt
ZXNQZXJTZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCA9IDE0NDsKKyAgICBBU1NFUlRfRVEo
cHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQpLCBTZWNvbmRzKDEuMCAvIDcyKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50
ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1lc1Bl
clNlY29uZCksIFNlY29uZHMoMi4wIC8gNzIpKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJh
bWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFsRnJh
bWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA3MikpOworICAgIEFTU0VSVF9FUShwcmVmZXJy
ZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3NzT3Jp
Z2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gNzIpKTsK
KyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246
Ok91dHNpZGVWaWV3cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVzc2l2ZVRo
cm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7Cit9CisKK1RFU1QoQW5pbWF0aW9uRnJhbWVSYXRl
LCBwcmVmZXJyZWRGcmFtZUludGVydmFsV2l0aDEyMEZQU05vbWluYWxGcmFtZXNQZXJTZWNvbmQp
Cit7CisgICAgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKKyAgICBG
cmFtZXNQZXJTZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCA9IDEyMDsKKyAgICBBU1NFUlRf
RVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQZXJT
ZWNvbmQpLCBTZWNvbmRzKDEuMCAvIDYwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1l
SW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZyYW1l
c1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gNjApKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVk
RnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21pbmFs
RnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA2MCkpOworICAgIEFTU0VSVF9FUShwcmVm
ZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENyb3Nz
T3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gNjAp
KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFz
b246Ok91dHNpZGVWaWV3cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVzc2l2
ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7Cit9CisKK1RFU1QoQW5pbWF0aW9uRnJhbWVS
YXRlLCBwcmVmZXJyZWRGcmFtZUludGVydmFsV2l0aDkwRlBTTm9taW5hbEZyYW1lc1BlclNlY29u
ZCkKK3sKKyAgICBPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4gbm9UaHJvdHRsaW5nOworICAg
IEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyU2Vjb25kID0gOTA7CisgICAgQVNTRVJU
X0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwobm9UaHJvdHRsaW5nLCBub21pbmFsRnJhbWVzUGVy
U2Vjb25kKSwgU2Vjb25kcygxLjAgLyA5MCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFt
ZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIG5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDIuMCAvIDkwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJl
ZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUgfSwgbm9taW5h
bEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gOTApKTsKKyAgICBBU1NFUlRfRVEocHJl
ZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Ok5vbkludGVyYWN0ZWRDcm9z
c09yaWdpbkZyYW1lIH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDIuMCAvIDkw
KSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVh
c29uOjpPdXRzaWRlVmlld3BvcnQgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIEFnZ3Jlc3Np
dmVUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpOworfQorCitURVNUKEFuaW1hdGlvbkZyYW1l
UmF0ZSwgcHJlZmVycmVkRnJhbWVJbnRlcnZhbFdpdGg0OEZQU05vbWluYWxGcmFtZXNQZXJTZWNv
bmQpCit7CisgICAgT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+IG5vVGhyb3R0bGluZzsKKyAg
ICBGcmFtZXNQZXJTZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCA9IDQ4OworICAgIEFTU0VS
VF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKG5vVGhyb3R0bGluZywgbm9taW5hbEZyYW1lc1Bl
clNlY29uZCksIFNlY29uZHMoMS4wIC8gNDgpKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJh
bWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCBub21pbmFsRnJh
bWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA0OCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJy
ZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6VmlzdWFsbHlJZGxlIH0sIG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmQpLCBTZWNvbmRzKDIuMCAvIDQ4KSk7CisgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpOb25JbnRlcmFjdGVkQ3Jv
c3NPcmlnaW5GcmFtZSB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyA0
OCkpOworICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1Jl
YXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQpLCBBZ2dyZXNz
aXZlVGhyb3R0bGluZ0FuaW1hdGlvbkludGVydmFsKTsKK30KKworVEVTVChBbmltYXRpb25GcmFt
ZVJhdGUsIHByZWZlcnJlZEZyYW1lSW50ZXJ2YWxXaXRoMzBGUFNOb21pbmFsRnJhbWVzUGVyU2Vj
b25kKQoreworICAgIE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiBub1Rocm90dGxpbmc7Cisg
ICAgRnJhbWVzUGVyU2Vjb25kIG5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPSAzMDsKKyAgICBBU1NF
UlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbChub1Rocm90dGxpbmcsIG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQpLCBTZWNvbmRzKDEuMCAvIDMwKSk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZy
YW1lSW50ZXJ2YWwoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgbm9taW5hbEZy
YW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8gMzApKTsKKyAgICBBU1NFUlRfRVEocHJlZmVy
cmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZSB9LCBub21p
bmFsRnJhbWVzUGVyU2Vjb25kKSwgU2Vjb25kcygyLjAgLyAzMCkpOworICAgIEFTU0VSVF9FUShw
cmVmZXJyZWRGcmFtZUludGVydmFsKHsgVGhyb3R0bGluZ1JlYXNvbjo6Tm9uSW50ZXJhY3RlZENy
b3NzT3JpZ2luRnJhbWUgfSwgbm9taW5hbEZyYW1lc1BlclNlY29uZCksIFNlY29uZHMoMi4wIC8g
MzApKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVJbnRlcnZhbCh7IFRocm90dGxpbmdS
ZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBub21pbmFsRnJhbWVzUGVyU2Vjb25kKSwgQWdncmVz
c2l2ZVRocm90dGxpbmdBbmltYXRpb25JbnRlcnZhbCk7Cit9CisKK1RFU1QoQW5pbWF0aW9uRnJh
bWVSYXRlLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgQVNTRVJUX0VRKHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZChGdWxsU3BlZWRBbmltYXRpb25JbnRlcnZhbCksIEZ1bGxTcGVl
ZEZyYW1lc1BlclNlY29uZCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZChIYWxmU3BlZWRUaHJvdHRsaW5nQW5pbWF0aW9uSW50ZXJ2YWwpLCBIYWxmU3BlZWRUaHJvdHRs
aW5nRnJhbWVzUGVyU2Vjb25kKTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKFNlY29uZHMoMS4wIC8gNjApKSwgRnJhbWVzUGVyU2Vjb25kKDYwKSk7Cit9CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>