<?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>116296</bug_id>
          
          <creation_ts>2013-05-17 02:30:02 -0700</creation_ts>
          <short_desc>[CSS Regions] Compute correct region ranges for boxes</short_desc>
          <delta_ts>2013-08-13 00:43:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>116441</dependson>
    
    <dependson>117697</dependson>
    
    <dependson>117757</dependson>
          <blocked>116295</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Andrei Bucur">abucur</assigned_to>
          <cc>achicu</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>890252</commentid>
    <comment_count>0</comment_count>
      <attachid>202053</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-05-17 02:30:02 -0700</bug_when>
    <thetext>Created attachment 202053
A test case

The region ranges for boxes are currently compute incorrectly in some cases (e.g. the attached file). The layout process should be smart enough to select the correct region for a block by taking into account constraints such as:
- unsplittable boxes (they should always use the start region for layout - see the attached test case)
- overflow content - on a case by case basis the content needs to clamp to the containing block region range</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897253</commentid>
    <comment_count>1</comment_count>
      <attachid>203796</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-06-05 04:05:36 -0700</bug_when>
    <thetext>Created attachment 203796
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897264</commentid>
    <comment_count>2</comment_count>
      <attachid>203796</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-05 04:26:09 -0700</bug_when>
    <thetext>Comment on attachment 203796
WIP Patch

Attachment 203796 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/662542</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897446</commentid>
    <comment_count>3</comment_count>
      <attachid>203796</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-06-05 09:38:09 -0700</bug_when>
    <thetext>Comment on attachment 203796
WIP Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        - the range of a box is always included in the range of its containing block (even for floats); this should be temporary and

Temporary until when?

&gt; Source/WebCore/ChangeLog:21
&gt; +        Test: fast/regions/float-pushed-width-change-2.html

Will the final patch have more tests?

&gt; Source/WebCore/ChangeLog:47
&gt; +        (WebCore::RenderBox::clampToStartAndEndRegions):

This is the same function from RenderBlock but moved here i guess.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7744
&gt; +    ASSERT((startRegion &amp;&amp; endRegion) || (!startRegion &amp;&amp; !endRegion));

When do you have the (!startRegion &amp;&amp; !endRegion) situation, for multicol based regions?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:375
&gt; +RenderRegion* RenderFlowThread::regionAtBlockOffset(const RenderBlock* block, LayoutUnit offset, bool extendLastRegion, RegionAutoGenerationPolicy autoGenerationPolicy, bool clamp)

Assuming that the block is not null, i would add an ASSERT here.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:384
&gt; +        region = m_regionList.isEmpty() ? 0 : m_regionList.first();

Can you use here firstRegion() method on the RenderFlowThread?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:528
&gt; +RenderRegion* RenderFlowThread::mapFromFlowToRegion(const RenderBlock* block, TransformState&amp; transformState) const

What is the meaning of block parameter here? Did you add it to be able to call regionAtBlockOffset or was for another purpose? Could you pass this instead of block below when calling regionAtBlockOffset?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:684
&gt; +void RenderFlowThread::clearRenderBoxRegioInfo(const RenderBox* box, RenderRegion* startRegion, RenderRegion* endRegion)

Regio -&gt; Region</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900984</commentid>
    <comment_count>4</comment_count>
      <attachid>203796</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-06-17 04:30:28 -0700</bug_when>
    <thetext>Comment on attachment 203796
WIP Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        - the range of a box is always included in the range of its containing block (even for floats); this should be temporary and
&gt; 
&gt; Temporary until when?

Until we stabilize the regions overflow implementation. Having a child box in a region that&apos;s not in the range of its containing block brings more complexity to the code.

&gt;&gt; Source/WebCore/ChangeLog:21
&gt;&gt; +        Test: fast/regions/float-pushed-width-change-2.html
&gt; 
&gt; Will the final patch have more tests?

Yes. This is just WIP.

&gt;&gt; Source/WebCore/ChangeLog:47
&gt;&gt; +        (WebCore::RenderBox::clampToStartAndEndRegions):
&gt; 
&gt; This is the same function from RenderBlock but moved here i guess.

Yes, this functionality is not block specific.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7744
&gt;&gt; +    ASSERT((startRegion &amp;&amp; endRegion) || (!startRegion &amp;&amp; !endRegion));
&gt; 
&gt; When do you have the (!startRegion &amp;&amp; !endRegion) situation, for multicol based regions?

I initially added this before having the early return when there&apos;s no start or end region. It should have covered the case of an empty region chain. It will be removed in the final patch.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:375
&gt;&gt; +RenderRegion* RenderFlowThread::regionAtBlockOffset(const RenderBlock* block, LayoutUnit offset, bool extendLastRegion, RegionAutoGenerationPolicy autoGenerationPolicy, bool clamp)
&gt; 
&gt; Assuming that the block is not null, i would add an ASSERT here.

Will do. Actually, I think I&apos;ll remove the clamp parameter and if block == 0 then there&apos;s no clamping.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:384
&gt;&gt; +        region = m_regionList.isEmpty() ? 0 : m_regionList.first();
&gt; 
&gt; Can you use here firstRegion() method on the RenderFlowThread?

Will do.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:528
&gt;&gt; +RenderRegion* RenderFlowThread::mapFromFlowToRegion(const RenderBlock* block, TransformState&amp; transformState) const
&gt; 
&gt; What is the meaning of block parameter here? Did you add it to be able to call regionAtBlockOffset or was for another purpose? Could you pass this instead of block below when calling regionAtBlockOffset?

When you map a coordinate local to a box you want to stay inside the region range of that box. If I pass &quot;this&quot; then it&apos;s no longer possible.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:684
&gt;&gt; +void RenderFlowThread::clearRenderBoxRegioInfo(const RenderBox* box, RenderRegion* startRegion, RenderRegion* endRegion)
&gt; 
&gt; Regio -&gt; Region

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901362</commentid>
    <comment_count>5</comment_count>
      <attachid>204904</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-06-18 05:19:21 -0700</bug_when>
    <thetext>Created attachment 204904
WIP Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901391</commentid>
    <comment_count>6</comment_count>
      <attachid>204904</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-18 07:23:32 -0700</bug_when>
    <thetext>Comment on attachment 204904
WIP Patch v2

Attachment 204904 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/950320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901571</commentid>
    <comment_count>7</comment_count>
      <attachid>204904</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-06-18 16:09:07 -0700</bug_when>
    <thetext>Comment on attachment 204904
WIP Patch v2

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

&gt; Source/WebCore/rendering/RenderBox.cpp:124
&gt; +    

too many spaces

&gt; Source/WebCore/rendering/RenderBox.cpp:129
&gt; +    

here too

&gt; LayoutTests/platform/mac/TestExpectations:388
&gt; +fast/regions/shape-inside/shape-inside-on-regions-inline-content-overflow-bottom-positioned-multiple-shapes.html
&gt; LayoutTests/platform/mac/TestExpectations:389
&gt; +fast/regions/shape-inside/shape-inside-on-regions-inline-content-overflow-multiple-shapes.html

I landed the patch from bug #117757 in http://trac.webkit.org/changeset/151703, so you can remove these two skips. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902162</commentid>
    <comment_count>8</comment_count>
      <attachid>205095</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-06-20 08:42:55 -0700</bug_when>
    <thetext>Created attachment 205095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902182</commentid>
    <comment_count>9</comment_count>
      <attachid>205098</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-06-20 09:30:05 -0700</bug_when>
    <thetext>Created attachment 205098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902311</commentid>
    <comment_count>10</comment_count>
      <attachid>205098</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-20 14:04:08 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

Attachment 205098 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/895902</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906376</commentid>
    <comment_count>11</comment_count>
      <attachid>205098</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2013-07-05 05:40:06 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [CSS Regions] Compute correct region ranges for boxes

Looks good, i have some comments below.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7811
&gt; +    ASSERT(startRegion &amp;&amp; endRegion);

setRegionRangeForBox already asserts about startRegion and endRegion, do you still need this one here?

&gt; Source/WebCore/rendering/RenderBlock.cpp:7827
&gt; +    box-&gt;computeLogicalHeight(LayoutUnit::max() / 2, logicalTopForChild(box), estimatedValues);

Can you add a comment why are you using LayoutUnit::max() / 2? Looking more at regions code, i see that LayoutUnit::max()/ 2 is used in some places, maybe we can factor it in a meaningfull define/function.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7833
&gt; +    ASSERT(startRegion &amp;&amp; endRegion);

Same here, do you still need the assert?

&gt; Source/WebCore/rendering/RenderBox.cpp:147
&gt; +    if (!startRegion || !endRegion)

Should we use an assert instead? Are there any cases in which a box does not have a range with start/end region? If not, i would revisit call sites for getRegionRangeForBox and add asserts where needed.

&gt; Source/WebCore/rendering/RenderBox.cpp:152
&gt; +    // ASSERT(clampToStartAndEndRegions(region) == region);

Can you add a bug for this please?

&gt; Source/WebCore/rendering/RenderBox.cpp:154
&gt; +    // FIXME: Remove once boxes are painted inside their region range.

And for this?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:388
&gt; +    RenderRegion* region = 0;

I guess we can simplify this function by early return when the region list is empty.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:405
&gt; +        return region ? clampBox-&gt;clampToStartAndEndRegions(region) : 0;

In which cases region is null here?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:411
&gt; +    return region ? clampBox-&gt;clampToStartAndEndRegions(region) : 0;

In which cases is region null here?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:547
&gt; +    RenderRegion* renderRegion = const_cast&lt;RenderFlowThread*&gt;(this)-&gt;regionAtBlockOffset(block, isHorizontalWritingMode() ? center.y() : center.x(), true, DisallowRegionAutoGeneration);

I read you previous explanation about why you need block passed here. However, the only call site for mapFromFlowToRegion is from mapLocalToContainer with the first parameter this == block. Maybe i am missing something..

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:603
&gt; +        return true;

Can you explain this?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:692
&gt;      if (!hasRegions())

I guess this can be turned into an assert - the call site already tested it.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:711
&gt; +    if (!hasRegions())

Does it make sense to transform this into an assert? Looks like it is always called from places where you already tested that the flow has regions attached.

&gt; LayoutTests/fast/regions/float-pushed-width-change-2-expected.html:5
&gt; +    @font-face {

Are you using this?

&gt; LayoutTests/fast/regions/float-pushed-width-change-2.html:5
&gt; +   @font-face {

Are you using this declaration?

&gt; LayoutTests/platform/efl/TestExpectations:543
&gt; +# FIXME: The widows and orphans implementation interferes with the region range change relayout. 

Are you adding a bug for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906407</commentid>
    <comment_count>12</comment_count>
      <attachid>205098</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2013-07-05 08:12:11 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

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

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:504
&gt;      return region ? region-&gt;pageLogicalWidth() : contentLogicalWidth();

Should you be passing &quot;true&quot; for the extendLastRegion parameter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906424</commentid>
    <comment_count>13</comment_count>
      <attachid>205098</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2013-07-05 08:57:30 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:2889
&gt; +        r-&gt;layoutIfNeeded();

Why did you take the layoutIfNeeded call out of the if statement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906430</commentid>
    <comment_count>14</comment_count>
      <attachid>205098</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2013-07-05 09:14:41 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:7803
&gt; +    LayoutUnit offsetFromLogicalTopOfFirstRegion = box-&gt;offsetFromLogicalTopOfFirstPage();

You&apos;re using &quot;box&quot; without validating it.

&gt; Source/WebCore/rendering/RenderBlock.cpp:7815
&gt; +void RenderBlock::estimateRegionRangeForBoxChild(RenderBox* box) const

Shouldn&apos;t box be const?

&gt; Source/WebCore/rendering/RenderBlock.cpp:7837
&gt; +void RenderBlock::updateRegionRangeForBoxChild(RenderBox* box) const

Shouldn&apos;t box be const?

&gt; Source/WebCore/rendering/RenderBlock.cpp:7857
&gt; +        box-&gt;setNeedsLayout(true, MarkOnlyThis);

I believe it would be better to have this method return true if the region range has changed and set the box as needing layout after calling this method. Either that or changing this method&apos;s name to indicate it will mark the box as needing layout.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:695
&gt; +    ASSERT(startRegion &amp;&amp; endRegion);

Should box also be validated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906800</commentid>
    <comment_count>15</comment_count>
      <attachid>205098</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-07-08 08:35:20 -0700</bug_when>
    <thetext>Comment on attachment 205098
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:2889
&gt;&gt; +        r-&gt;layoutIfNeeded();
&gt; 
&gt; Why did you take the layoutIfNeeded call out of the if statement?

Initially I&apos;ve placed updateRegionRangeForBoxChild() before the last layout so I took it out of the if. I&apos;ll put it back in the final patch.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7803
&gt;&gt; +    LayoutUnit offsetFromLogicalTopOfFirstRegion = box-&gt;offsetFromLogicalTopOfFirstPage();
&gt; 
&gt; You&apos;re using &quot;box&quot; without validating it.

This function is called on the child boxes which can&apos;t be null. I don&apos;t see how a null reference can be passed to this function without being caught much earlier in the layout algorithm.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7811
&gt;&gt; +    ASSERT(startRegion &amp;&amp; endRegion);
&gt; 
&gt; setRegionRangeForBox already asserts about startRegion and endRegion, do you still need this one here?

No. I&apos;ll remove it.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7815
&gt;&gt; +void RenderBlock::estimateRegionRangeForBoxChild(RenderBox* box) const
&gt; 
&gt; Shouldn&apos;t box be const?

Very likely it should be. I&apos;ll try to make it const in the next version.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7827
&gt;&gt; +    box-&gt;computeLogicalHeight(LayoutUnit::max() / 2, logicalTopForChild(box), estimatedValues);
&gt; 
&gt; Can you add a comment why are you using LayoutUnit::max() / 2? Looking more at regions code, i see that LayoutUnit::max()/ 2 is used in some places, maybe we can factor it in a meaningfull define/function.

I&apos;ll add a paragraph about this in the ChangeLog.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7833
&gt;&gt; +    ASSERT(startRegion &amp;&amp; endRegion);
&gt; 
&gt; Same here, do you still need the assert?

No.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7837
&gt;&gt; +void RenderBlock::updateRegionRangeForBoxChild(RenderBox* box) const
&gt; 
&gt; Shouldn&apos;t box be const?

If I leave the setNeedsLayout call there, no.

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:7857
&gt;&gt; +        box-&gt;setNeedsLayout(true, MarkOnlyThis);
&gt; 
&gt; I believe it would be better to have this method return true if the region range has changed and set the box as needing layout after calling this method. Either that or changing this method&apos;s name to indicate it will mark the box as needing layout.

You are right this is a bit black-boxish, but considering you always need to make a layout whenever you call this function, I&apos;ve placed the code inside it to minimize duplication.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:147
&gt;&gt; +    if (!startRegion || !endRegion)
&gt; 
&gt; Should we use an assert instead? Are there any cases in which a box does not have a range with start/end region? If not, i would revisit call sites for getRegionRangeForBox and add asserts where needed.

Inline blocks don&apos;t have a range assigned to them. This is just a simplified fix for those cases.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:152
&gt;&gt; +    // ASSERT(clampToStartAndEndRegions(region) == region);
&gt; 
&gt; Can you add a bug for this please?

After the patch lands, yes.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:154
&gt;&gt; +    // FIXME: Remove once boxes are painted inside their region range.
&gt; 
&gt; And for this?

Same :).

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:388
&gt;&gt; +    RenderRegion* region = 0;
&gt; 
&gt; I guess we can simplify this function by early return when the region list is empty.

Will do.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:405
&gt;&gt; +        return region ? clampBox-&gt;clampToStartAndEndRegions(region) : 0;
&gt; 
&gt; In which cases region is null here?

I don&apos;t think it can be null here, you are right.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:411
&gt;&gt; +    return region ? clampBox-&gt;clampToStartAndEndRegions(region) : 0;
&gt; 
&gt; In which cases is region null here?

If extendLastRegion is false the region can be null.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:504
&gt;&gt;      return region ? region-&gt;pageLogicalWidth() : contentLogicalWidth();
&gt; 
&gt; Should you be passing &quot;true&quot; for the extendLastRegion parameter?

This is what the old code did.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:547
&gt;&gt; +    RenderRegion* renderRegion = const_cast&lt;RenderFlowThread*&gt;(this)-&gt;regionAtBlockOffset(block, isHorizontalWritingMode() ? center.y() : center.x(), true, DisallowRegionAutoGeneration);
&gt; 
&gt; I read you previous explanation about why you need block passed here. However, the only call site for mapFromFlowToRegion is from mapLocalToContainer with the first parameter this == block. Maybe i am missing something..

The mapLocalToContainer function was refactored a while back and made virtual. This code predates that change. I&apos;ll change the parameter.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:603
&gt;&gt; +        return true;
&gt; 
&gt; Can you explain this?

Yes, this is an ugly fix to force flow thread children to relayout and compute their ranges. The following code doesn&apos;t work when this == the render flow thread because it will always have updated region range info. I think I can use the m_pageLogicalSizeChanged flag again to have this return true only when necessary.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:692
&gt;&gt;      if (!hasRegions())
&gt; 
&gt; I guess this can be turned into an assert - the call site already tested it.

Will do.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:695
&gt;&gt; +    ASSERT(startRegion &amp;&amp; endRegion);
&gt; 
&gt; Should box also be validated?

As I previously said the code is very integrated and it should never happen to call this with a null box.

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:711
&gt;&gt; +    if (!hasRegions())
&gt; 
&gt; Does it make sense to transform this into an assert? Looks like it is always called from places where you already tested that the flow has regions attached.

Will do.

&gt;&gt; LayoutTests/fast/regions/float-pushed-width-change-2-expected.html:5
&gt;&gt; +    @font-face {
&gt; 
&gt; Are you using this?

No, I&apos;ll remove it.

&gt;&gt; LayoutTests/fast/regions/float-pushed-width-change-2.html:5
&gt;&gt; +   @font-face {
&gt; 
&gt; Are you using this declaration?

Same as above.

&gt;&gt; LayoutTests/platform/efl/TestExpectations:543
&gt;&gt; +# FIXME: The widows and orphans implementation interferes with the region range change relayout. 
&gt; 
&gt; Are you adding a bug for this?

When the patch lands, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907119</commentid>
    <comment_count>16</comment_count>
      <attachid>206324</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-07-09 08:24:57 -0700</bug_when>
    <thetext>Created attachment 206324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916276</commentid>
    <comment_count>17</comment_count>
      <attachid>208540</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-08-12 08:17:08 -0700</bug_when>
    <thetext>Created attachment 208540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916393</commentid>
    <comment_count>18</comment_count>
      <attachid>208540</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-08-12 14:03:52 -0700</bug_when>
    <thetext>Comment on attachment 208540
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916604</commentid>
    <comment_count>19</comment_count>
      <attachid>208540</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-13 00:43:26 -0700</bug_when>
    <thetext>Comment on attachment 208540
Patch

Clearing flags on attachment: 208540

Committed r153990: &lt;http://trac.webkit.org/changeset/153990&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916605</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-13 00:43:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>202053</attachid>
            <date>2013-05-17 02:30:02 -0700</date>
            <delta_ts>2013-05-17 02:30:02 -0700</delta_ts>
            <desc>A test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>1705</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgoJPGhlYWQ+CgkJPHN0eWxlPgoJCSNjb250YWluZXIgewoJ
CQl3aWR0aDogMTAwJTsKCQkJaGVpZ2h0OiA0MDBweDsKCQkJb3ZlcmZsb3c6IHZpc2libGU7CgkJ
CWJvcmRlcjogdGhpbiBzb2xpZCByZWQ7CgkJCS13ZWJraXQtZmxvdy1pbnRvOiBmbG93OwoJCQl4
cG9zaXRpb246IHJlbGF0aXZlOwoJCQlsZWZ0OiA1MHB4OwoJCQl0b3A6IC0yMHB4OwoJCX0KCgkJ
I2Zsb2F0IHsKCQkJeGZsb2F0OiBsZWZ0OwoJCQl3aWR0aDogMzAlOwoJCQloZWlnaHQ6IDgwMHB4
OwoJCQlib3JkZXI6IHRoaWNrIHNvbGlkIGdyZWVuOwoJCQlmb250LXNpemU6IDIwcHg7CgkJCW92
ZXJmbG93OiBzY3JvbGw7CgkJfQoKCQkucmVnaW9uIHsKCQkJd2lkdGg6IDYwMHB4OwoJCQloZWln
aHQ6IDMwMHB4OwoJCQktd2Via2l0LWZsb3ctZnJvbTogZmxvdzsKCQkJYm9yZGVyOiB0aGljayBz
b2xpZCBibHVlOwoJCQltYXJnaW46IDIwcHg7CgkJCW92ZXJmbG93OiB2aXNpYmxlOwoJCX0KCQk8
L3N0eWxlPgoJPC9oZWFkPgoJPGJvZHk+CgkJPGRpdiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KCQk8
ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHg7IiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KCQk8ZGl2IGNs
YXNzPSJyZWdpb24iPjwvZGl2PgoJCTxkaXYgaWQ9ImNvbnRhaW5lciI+CgkJCTxkaXYgaWQ9ImZs
b2F0Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBl
bGl0LiBQcmFlc2VudCBpbnRlcmR1bSwgc2FwaWVuIHZpdGFlIGZhdWNpYnVzIHN1c2NpcGl0LCBt
YXNzYSB1cm5hIHNhZ2l0dGlzIGxpYmVybywgYWMgaW1wZXJkaWV0IGVsaXQgbGFjdXMgYSBsaWd1
bGEuIE1hdXJpcyBhIG9yY2kgc2VtLiBOdWxsYW0gdWxsYW1jb3JwZXIgb3JuYXJlIHBvcnR0aXRv
ci4gTW9yYmkgbGFvcmVldCBwZWxsZW50ZXNxdWUgZGlhbSwgdml0YWUgaGVuZHJlcml0IHNlbSBm
cmluZ2lsbGEgaWQuIE1hZWNlbmFzIHJ1dHJ1bSBsYWNpbmlhIGxvYm9ydGlzLiBQcmFlc2VudCBl
bGl0IGxlY3R1cywgcG9ydHRpdG9yIHNlZCBzZW1wZXIgdmVsLCBmcmluZ2lsbGEgaWQgZG9sb3Iu
IFNlZCBsYWN1cyBuaXNsLCBydXRydW0gc2l0IGFtZXQgZXVpc21vZCBhLCB2dWxwdXRhdGUgcXVp
cyBlbGl0LiBGdXNjZSBjb21tb2RvIGR1aSBxdWlzIGxhY3VzIHZpdmVycmEgdmVsIGVnZXN0YXMg
dmVsaXQgdGVtcHVzLiBEb25lYyB1dCBzYXBpZW4gc2l0IGFtZXQgcHVydXMgbHVjdHVzIGZlcm1l
bnR1bS4gRG9uZWMgZWxlaWZlbmQgcHJldGl1bSBuZXF1ZSBxdWlzIGJpYmVuZHVtLiBWZXN0aWJ1
bHVtIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2Vz
IHBvc3VlcmUgY3ViaWxpYSBDdXJhZTsgTmFtIGNvbmd1ZSBkYXBpYnVzIG1pLCBpZCB1bHRyaWNp
ZXMgZXN0IHNhZ2l0dGlzIGV0LiBJbnRlZ2VyIHBvc3VlcmUsIGVyb3Mgdml0YWUgbGFvcmVldCBj
b25ndWUsIHRvcnRvciBwdXJ1cyBldWlzbW9kIG5pYmgsIGV1IHBvcnRhIHB1cnVzIGFyY3UgaWQg
dHVycGlzLiBEb25lYyB2aXRhZSB1bHRyaWNpZXMgbmliaC4gTnVsbGFtIGluIHVybmEgZG9sb3Is
IGF0IGZyaW5naWxsYSBsb3JlbS4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2NpbmcgZWxpdC48L2Rpdj4KCQk8L2Rpdj4KCTwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203796</attachid>
            <date>2013-06-05 04:05:36 -0700</date>
            <delta_ts>2013-06-18 05:19:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-116296-20130605140404.patch</filename>
            <type>text/plain</type>
            <size>52824</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0YWFhNGY1YWIxNTNi
ZjVkMzY1ZTJkYWRmYzI2YmVjYjg5OTc3NS4uMGRjYjc3NDhjYTQ1OTEwNzE1MTQ4MDYwZDA3ZjY2
MjAwZWIwNjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTA2LTA1ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcmVnaW9u
IHJhbmdlcyB0aGUgZm9sbG93aW5nIHdheToKKyAgICAgICAgLSB0aGUgcmFuZ2Ugb2YgYSBib3gg
aXMgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSByYW5nZSBvZiBpdHMgY29udGFpbmluZyBibG9jayAo
ZXZlbiBmb3IgZmxvYXRzKTsgdGhpcyBzaG91bGQgYmUgdGVtcG9yYXJ5IGFuZAorICAgICAgICBh
cHBsaWVkIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzCisgICAgICAgIC0gaWYgdGhlIHJhbmdlIG9m
IGEgYm94IGNoYW5nZXMgaXQgbmVlZHMgYSByZWxheW91dAorICAgICAgICAtIGFsbCB0aGUgYm94
ZXMgaGF2ZSBhIHJhbmdlIG5vdworICAgICAgICAtIHJlZ2lvbkF0QmxvY2tPZmZzZXQgbWFrZXMg
Y2xhbXBpbmcKKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGlsZCBib3ggc3RhcnRz
IGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1heGltYWwgaGVpZ2h0
IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRoZSBlc3RpbWF0aW9u
IHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBsZSwgaWYgYSBibG9j
ayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRoZSBmbG9hdAorICAg
ICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQgaXMgbmVlZGVkIGZv
ciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGNvbnRh
aW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJlIG9wdGltaXplZCBi
eSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4gdGhhdCBkb24ndCBo
YXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAgIGNvbnRhaW5pbmcg
YmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQt
d2lkdGgtY2hhbmdlLTIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQmVmb3Jl
QmxvY2tMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUV4Y2x1
c2lvbnNBZnRlckJsb2NrTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
YXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YXBwbHlBZnRlckJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWdlTG9naWNhbFRvcEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZWdpb25BdEJsb2NrT2Zmc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6
IENvbXB1dGVzIHRoZSByYW5nZSBvZiBhIGNoaWxkIGJveCB1c2luZyBpdHMgbG9naWNhbCBoZWln
aHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXN0aW1hdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKTogTWFrZXMgYW4gZXN0aW1hdGlvbiBvZiB0aGUgcmFuZ2Ugb2YgYSBjaGlsZCBi
b3ggYmVmb3JlIHRoZSBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBk
YXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6IFVwZGF0ZXMgdGhlIGZpbmFsIHJhbmdlIG9mIGEg
Y2hpbGQgYm94IGFuZCBtYXJrcyBpdCBmb3IgbGF5b3V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpsb2dpY2FsV2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
bG9naWNhbEhlaWdodEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b2dpY2FsVG9wRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNo
aWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OnZhbGlkYXRlUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsVG9w
Rm9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dp
Y2FsV2lkdGhGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25z
Rm9yQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5k
ZXJCb3hSZWdpb0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6c2V0
UmVnaW9uUmFuZ2VGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
YXBwbHlCcmVha0FmdGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayk6CisKIDIwMTMtMDYtMDMgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxNTExMDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAppbmRleCBkZTE0MjZhOTFkZGJlZDkxZDQ5N2U4NWRkOGZkZDdkNTA2ZTFlY2JmLi5lMmUy
ZmRjZjA5NmJjZTZiYTkwNTIxMWI2ZDM2MmY0ZTdjOTc2OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0NzAsMTMgKzE0NzAsMTAgQEAgc3RhdGljIGlu
bGluZSBib29sIGV4Y2x1c2lvbkluZm9SZXF1aXJlc1JlbGF5b3V0KGNvbnN0IFJlbmRlckJsb2Nr
KiBibG9jaykKICNlbmRpZgogfQogCi1ib29sIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25zQW5k
RXhjbHVzaW9uc0JlZm9yZUNoaWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQp
Citib29sIFJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQmVmb3JlQmxvY2tMYXlvdXQoKQog
ewogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSAgICBpZiAoIWZsb3dUaHJlYWQgJiYgIWV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbygpKQotI2Vsc2UKLSAgICBpZiAoIWZsb3dUaHJlYWQpCi0j
ZW5kaWYKKyAgICBpZiAoIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAmJiAhZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvKCkpCiAgICAgICAgIHJldHVybiBleGNsdXNpb25JbmZvUmVxdWlyZXNS
ZWxheW91dCh0aGlzKTsKIAogICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gbG9naWNhbEhlaWdo
dCgpOwpAQCAtMTQ4NywxOCArMTQ4NCwxMyBAQCBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdp
b25zQW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqCiAgICAg
c2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0OjptYXgoKSAvIDIpOwogICAgIHVwZGF0ZUxvZ2lj
YWxIZWlnaHQoKTsKIAotI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKICAgICBjb21wdXRlRXhj
bHVzaW9uU2hhcGVTaXplKCk7Ci0jZW5kaWYKLQotICAgIC8vIFNldCBvdXIgc3RhcnQgYW5kIGVu
ZCByZWdpb25zLiBObyByZWdpb25zIGFib3ZlIG9yIGJlbG93IHVzIHdpbGwgYmUgY29uc2lkZXJl
ZCBieSBvdXIgY2hpbGRyZW4uIFRoZXkgYXJlCi0gICAgLy8gZWZmZWN0aXZlbHkgY2xhbXBlZCB0
byBvdXIgcmVnaW9uIHJhbmdlLgotICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKGZsb3dU
aHJlYWQpOwogCiAgICAgc2V0TG9naWNhbEhlaWdodChvbGRIZWlnaHQpOwogICAgIHNldExvZ2lj
YWxUb3Aob2xkVG9wKTsKICAgICAKICAgICByZXR1cm4gZXhjbHVzaW9uSW5mb1JlcXVpcmVzUmVs
YXlvdXQodGhpcyk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKQEAg
LTE1MTIsNyArMTUwNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVFeGNsdXNpb25TaGFw
ZVNpemUoKQogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRF
eGNsdXNpb25zQWZ0ZXJDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkLCBi
b29sIGhlaWdodENoYW5nZWQpCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQWZ0
ZXJCbG9ja0xheW91dChib29sIGhlaWdodENoYW5nZWQpCiB7CiAjaWYgRU5BQkxFKENTU19FWENM
VVNJT05TKQogICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyogZXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvID0gdGhpcy0+ZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKFNoYXBlUHJlc2VudE9yUmVt
b3ZlZCk7CkBAIC0xNTI0LDEzICsxNTE2LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlUmVn
aW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqIGYKICAg
ICBpZiAoaGVpZ2h0Q2hhbmdlZCAmJiBzaGFwZUluc2lkZUluZm8pCiAgICAgICAgIHNoYXBlSW5z
aWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKICNlbmRpZgotICAgIGNvbXB1dGVSZWdpb25SYW5n
ZUZvckJsb2NrKGZsb3dUaHJlYWQpOwotfQotCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUmVn
aW9uUmFuZ2VGb3JCbG9jayhSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotewotICAgIGlm
IChmbG93VGhyZWFkKQotICAgICAgICBmbG93VGhyZWFkLT5zZXRSZWdpb25SYW5nZUZvckJveCh0
aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpOwogfQogCiBib29sIFJlbmRl
ckJsb2NrOjp1cGRhdGVMb2dpY2FsV2lkdGhBbmRDb2x1bW5XaWR0aCgpCkBAIC0xNjEyLDcgKzE1
OTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxX
aWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRy
ZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxk
TGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRhdGVFeGNsdXNpb25zQmVmb3JlQmxvY2tM
YXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICAvLyBXZSB1
c2UgZm91ciB2YWx1ZXMsIG1heFRvcFBvcywgbWF4VG9wTmVnLCBtYXhCb3R0b21Qb3MsIGFuZCBt
YXhCb3R0b21OZWcsIHRvIHRyYWNrCkBAIC0xNjgyLDcgKzE2NjcsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaAogCiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJl
biB8fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0FmdGVyQ2hp
bGRMYXlvdXQoZmxvd1RocmVhZCwgaGVpZ2h0Q2hhbmdlZCk7CisgICAgdXBkYXRlRXhjbHVzaW9u
c0FmdGVyQmxvY2tMYXlvdXQoaGVpZ2h0Q2hhbmdlZCk7CiAKICAgICAvLyBBZGQgb3ZlcmZsb3cg
ZnJvbSBjaGlsZHJlbiAodW5sZXNzIHdlJ3JlIG11bHRpLWNvbHVtbiwgc2luY2UgaW4gdGhhdCBj
YXNlIGFsbCBvdXIgY2hpbGQgb3ZlcmZsb3cgaXMgY2xpcHBlZCBhbnl3YXkpLgogICAgIGNvbXB1
dGVPdmVyZmxvdyhvbGRDbGllbnRBZnRlckVkZ2UpOwpAQCAtMjU5MSw2ICsyNTc2LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBNYXJnaW5J
bmZvJiBtYXJnaW5JbmZvLCBMYXkKICNlbmRpZgogICAgIC8vIEdvIGFoZWFkIGFuZCBwb3NpdGlv
biB0aGUgY2hpbGQgYXMgdGhvdWdoIGl0IGRpZG4ndCBjb2xsYXBzZSB3aXRoIHRoZSB0b3AuCiAg
ICAgc2V0TG9naWNhbFRvcEZvckNoaWxkKGNoaWxkLCBsb2dpY2FsVG9wRXN0aW1hdGUsIEFwcGx5
TGF5b3V0RGVsdGEpOworICAgIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZCk7
CiAKICAgICBSZW5kZXJCbG9jayogY2hpbGRSZW5kZXJCbG9jayA9IGNoaWxkLT5pc1JlbmRlckJs
b2NrKCkgPyB0b1JlbmRlckJsb2NrKGNoaWxkKSA6IDA7CiAgICAgYm9vbCBtYXJrRGVzY2VuZGFu
dHNXaXRoRmxvYXRzID0gZmFsc2U7CkBAIC0yNjQzLDYgKzI2MjksNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdp
bkluZm8sIExheQogICAgICAgICAgICAgYXRCZWZvcmVTaWRlT2ZCbG9jayAmJiBsb2dpY2FsVG9w
QmVmb3JlQ2xlYXIgPT0gbG9naWNhbFRvcEFmdGVyQ2xlYXIpOwogCiAgICAgc2V0TG9naWNhbFRv
cEZvckNoaWxkKGNoaWxkLCBsb2dpY2FsVG9wQWZ0ZXJDbGVhciwgQXBwbHlMYXlvdXREZWx0YSk7
CisgICAgdXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZCk7CiAKICAgICAvLyBOb3cg
d2UgaGF2ZSBhIGZpbmFsIHRvcCBwb3NpdGlvbi4gIFNlZSBpZiBpdCByZWFsbHkgZG9lcyBlbmQg
dXAgYmVpbmcgZGlmZmVyZW50IGZyb20gb3VyIGVzdGltYXRlLgogICAgIC8vIGNsZWFyRmxvYXRz
SWZOZWVkZWQgY2FuIGFsc28gbWFyayB0aGUgY2hpbGQgYXMgbmVlZGluZyBhIGxheW91dCBldmVu
IHRob3VnaCB3ZSBkaWRuJ3QgbW92ZS4gVGhpcyBoYXBwZW5zCkBAIC0yODI5LDYgKzI4MTYsOCBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
OjppdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudHMtPmVuZCgpOwogICAgIGZvciAo
VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZERlc2Nl
bmRhbnRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgciA9ICppdDsKKyAg
ICAgICAgCisgICAgICAgIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChyKTsKIAogICAg
ICAgICAvLyBBIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgd2l0aCBhbiBhYnNvbHV0ZSBwb3NpdGlv
bmVkIGFuY2VzdG9yIGhhcyBubyB3YXkgb2Yga25vd2luZyBpZiB0aGUgbGF0dGVyIGhhcyBjaGFu
Z2VkIHBvc2l0aW9uLiBTbwogICAgICAgICAvLyBpZiB0aGlzIGlzIGEgZml4ZWQgcG9zaXRpb24g
ZWxlbWVudCwgbWFyayBpdCBmb3IgbGF5b3V0IGlmIGl0IGhhcyBhbiBhYnNwb3MgYW5jZXN0b3Ig
YW5kIG5lZWRzIHRvIG1vdmUgd2l0aCB0aGF0IGFuY2VzdG9yLCBpLmUuIApAQCAtMjg2OSw3ICsy
ODU4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBib29sIGZpeGVkUG9zaXQKICAgICAgICAgICAgICAgICByLT51cGRh
dGVMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgIG9sZExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9w
Rm9yQ2hpbGQocik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgci0+bGF5b3V0SWZO
ZWVkZWQoKTsKIAogICAgICAgICAvLyBMYXkgb3V0IGFnYWluIGlmIG91ciBlc3RpbWF0ZSB3YXMg
d3JvbmcuCkBAIC00MTgxLDYgKzQxNzAsOCBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5l
d0Zsb2F0cygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZW5kZXJCb3gqIGNo
aWxkQm94ID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCk7CisgICAgICAgIGVzdGltYXRlUmVn
aW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZEJveCk7CisKICAgICAgICAgTGF5b3V0VW5pdCBjaGls
ZExvZ2ljYWxMZWZ0TWFyZ2luID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
bWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZEJveCkgOiBtYXJnaW5FbmRGb3JDaGlsZChjaGlsZEJv
eCk7CiAKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZWN0ID0gY2hpbGRCb3gtPmZyYW1lUmVjdCgp
OwpAQCAtNDIyOSw4ICs0MjIwLDEwIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3Rmxv
YXRzKCkKICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2spCiAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkQmxvY2stPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFya09u
bHlUaGlzKTsKLSAgICAgICAgICAgICAgICBjaGlsZEJveC0+bGF5b3V0SWZOZWVkZWQoKTsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChj
aGlsZEJveCk7CisgICAgICAgICAgICBjaGlsZEJveC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHNldExvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxv
YXRMb2dpY2FsTG9jYXRpb24ueSgpKTsKQEAgLTczNTAsNyArNzM0Myw3IEBAIGJvb2wgUmVuZGVy
QmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5
UnVsZSBwYWdlQm91CiAKICAgICAvLyBTZWUgaWYgd2UncmUgaW4gdGhlIGxhc3QgcmVnaW9uLgog
ICAgIExheW91dFVuaXQgcGFnZU9mZnNldCA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKSArIGxvZ2ljYWxPZmZzZXQ7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBmbG93VGhy
ZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHBhZ2VPZmZzZXQsIHRoaXMpOworICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBwYWdl
T2Zmc2V0LCB0aGlzKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChyZWdpb24tPmlzTGFzdFJlZ2lvbigpKQpAQCAtNzQwNSw3ICs3Mzk4LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayhSZW5kZXJCb3gqIGNoaWxkLCBM
YXlvdXRVbml0IGxvZ2ljYWxPZmYKICAgICAgICAgICAgIHZpZXcoKS0+bGF5b3V0U3RhdGUoKS0+
YWRkRm9yY2VkQ29sdW1uQnJlYWsoY2hpbGQsIGxvZ2ljYWxPZmZzZXQpOwogICAgICAgICBpZiAo
Y2hlY2tSZWdpb25CcmVha3MpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0QnJlYWtB
ZGp1c3RtZW50ID0gMDsKLSAgICAgICAgICAgIGlmIChmbG93VGhyZWFkLT5hZGRGb3JjZWRSZWdp
b25CcmVhayhvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0
LCBjaGlsZCwgdHJ1ZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAo
Zmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9mZnNldCwgY2hpbGQsIHRydWUsICZvZmZzZXRCcmVh
a0FkanVzdG1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgb2Zm
c2V0QnJlYWtBZGp1c3RtZW50OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXh0UGFnZUxv
Z2ljYWxUb3AobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSk7CkBAIC03NDMyLDcg
Kzc0MjUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphcHBseUFmdGVyQnJlYWsoUmVuZGVy
Qm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2ZmcwogICAgICAgICAgICAgdmlldygpLT5s
YXlvdXRTdGF0ZSgpLT5hZGRGb3JjZWRDb2x1bW5CcmVhayhjaGlsZCwgbG9naWNhbE9mZnNldCk7
CiAgICAgICAgIGlmIChjaGVja1JlZ2lvbkJyZWFrcykgewogICAgICAgICAgICAgTGF5b3V0VW5p
dCBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwOwotICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQt
PmFkZEZvcmNlZFJlZ2lvbkJyZWFrKG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAr
IGxvZ2ljYWxPZmZzZXQgKyBtYXJnaW5PZmZzZXQsIGNoaWxkLCBmYWxzZSwgJm9mZnNldEJyZWFr
QWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9u
QnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9m
ZnNldCArIG1hcmdpbk9mZnNldCwgY2hpbGQsIGZhbHNlLCAmb2Zmc2V0QnJlYWtBZGp1c3RtZW50
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldCArIG1hcmdpbk9mZnNldCAr
IG9mZnNldEJyZWFrQWRqdXN0bWVudDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV4dFBh
Z2VMb2dpY2FsVG9wKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpOwpAQCAtNzQ1
NCw3ICs3NDQ3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6cGFnZUxvZ2ljYWxUb3BGb3JP
ZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgcmV0dXJuIGN1bXVsYXRpdmVPZmZzZXQgLSByb3VuZFRvSW50KGN1bXVsYXRpdmVPZmZz
ZXQgLSBmaXJzdFBhZ2VMb2dpY2FsVG9wKSAlIHJvdW5kVG9JbnQocGFnZUxvZ2ljYWxIZWlnaHQp
OwogICAgIH0KLSAgICByZXR1cm4gZmxvd1RocmVhZC0+cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQo
Y3VtdWxhdGl2ZU9mZnNldCk7CisgICAgcmV0dXJuIGZsb3dUaHJlYWQtPnBhZ2VMb2dpY2FsVG9w
Rm9yT2Zmc2V0KHRoaXMsIGN1bXVsYXRpdmVPZmZzZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjpwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkgY29u
c3QKQEAgLTc0NjMsNyArNzQ1Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OnBhZ2VMb2dp
Y2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KSBjb25zdAogICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAg
aWYgKCFmbG93VGhyZWFkKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+bGF5b3V0U3RhdGUo
KS0+bV9wYWdlTG9naWNhbEhlaWdodDsKLSAgICByZXR1cm4gZmxvd1RocmVhZC0+cGFnZUxvZ2lj
YWxIZWlnaHRGb3JPZmZzZXQob2Zmc2V0ICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpKTsKKyAgICByZXR1cm4gZmxvd1RocmVhZC0+cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQo
dGhpcywgb2Zmc2V0ICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKIH0KIAog
TGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZz
ZXQoTGF5b3V0VW5pdCBvZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnZUJvdW5kYXJ5UnVsZSkg
Y29uc3QKQEAgLTc0ODMsNyArNzQ3Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OnBhZ2VS
ZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0LCBQCiAgICAg
ICAgIHJldHVybiByZW1haW5pbmdIZWlnaHQ7CiAgICAgfQogICAgIAotICAgIHJldHVybiBmbG93
VGhyZWFkLT5wYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChvZmZzZXQsIHBhZ2VC
b3VuZGFyeVJ1bGUpOworICAgIHJldHVybiBmbG93VGhyZWFkLT5wYWdlUmVtYWluaW5nTG9naWNh
bEhlaWdodEZvck9mZnNldCh0aGlzLCBvZmZzZXQsIHBhZ2VCb3VuZGFyeVJ1bGUpOwogfQogCiBM
YXlvdXRVbml0IFJlbmRlckJsb2NrOjphZGp1c3RGb3JVbnNwbGl0dGFibGVDaGlsZChSZW5kZXJC
b3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIGJvb2wgaW5jbHVkZU1hcmdpbnMp
CkBAIC03Njk5LDcgKzc2OTIsNyBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckJsb2NrOjpyZWdpb25B
dEJsb2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tPZmZzZXQpIGNvbnN0CiAgICAgaWYgKCFmbG93
VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldChvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBibG9ja09mZnNldCwgdHJ1ZSk7CisgICAg
cmV0dXJuIGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgYmxvY2tPZmZzZXQsIHRydWUpOwogfQogCiB2b2lkIFJl
bmRlckJsb2NrOjp1cGRhdGVTdGF0aWNJbmxpbmVQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQsIExheW91dFVuaXQgbG9naWNhbFRvcCkKQEAgLTc3MjcsMjggKzc3MjAsNzQgQEAgYm9v
bCBSZW5kZXJCbG9jazo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhSZW5kZXJGbG93VGhy
ZWFkKiBmbG93VGhyZWFkKSBjb24KICAgICByZXR1cm4gZmxvd1RocmVhZC0+bG9naWNhbFdpZHRo
Q2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKHRoaXMpOwogfQogCi1SZW5kZXJSZWdpb24qIFJlbmRl
ckJsb2NrOjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBj
b25zdAordm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29u
c3QgUmVuZGVyQm94KiBib3gpIGNvbnN0CiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJlYWQp
CisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChpc1JlbmRlclZpZXcoKSB8fCAocmVnaW9u
ICYmIGZsb3dUaHJlYWQpKTsKLSAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCi0gICAgICAgIHJldHVy
biByZWdpb247Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGNsYW1wIHRvIHRoZSBibG9jaywgc2luY2Ug
d2Ugd2FudCBhbnkgbGluZXMgb3IgYmxvY2tzIHRoYXQgb3ZlcmZsb3cgb3V0IG9mIHRoZQotICAg
IC8vIGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBibG9jayB0byBzaXplIGFz
IHRob3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUgZmlyc3QgYW5kCi0gICAgLy8gbGFzdCByZWdp
b25zIGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVyd2lzZSB0aGUgbGluZXMgYXJlIGdvaW5nIHRv
IHNpemUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25zCi0gICAgLy8gdGhleSBvdmVyZmxvdyBpbnRv
LCB3aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRoaXMgYmxvY2sgZG9lc24ndCBleGlzdCBpbiB8
cmVnaW9ufCBhdCBhbGwuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKLSAgICBSZW5k
ZXJSZWdpb24qIGVuZFJlZ2lvbjsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsK
KyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CiAgICAgZmxvd1RocmVhZC0+Z2V0UmVn
aW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0gICAgCi0gICAg
aWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50
KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCi0gICAg
ICAgIHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9n
aWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JG
bG93VGhyZWFkQ29udGVudCgpKQotICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwotICAgIAotICAg
IHJldHVybiByZWdpb247CisKKyAgICBpZiAoIXN0YXJ0UmVnaW9uIHx8ICFlbmRSZWdpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UmVnaW9uID0gYm94LT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCk7CisgICAg
aWYgKGJveC0+aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpCisgICAgICAgIHN0YXJ0UmVn
aW9uID0gZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24pOworICAgIGVsc2UgeworICAgICAgICBz
dGFydFJlZ2lvbiA9IGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UmVnaW9uLCB0cnVlKTsKKyAgICAgICAgZW5kUmVnaW9uID0g
Zmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RSZWdpb24gKyBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoYm94KSwgdHJ1ZSk7CisgICAg
fQorCisgICAgQVNTRVJUKChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pIHx8ICghc3RhcnRSZWdp
b24gJiYgIWVuZFJlZ2lvbikpOworCisgICAgZmxvd1RocmVhZC0+c2V0UmVnaW9uUmFuZ2VGb3JC
b3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKK30KKwordm9pZCBSZW5kZXJCbG9jazo6
ZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKFJlbmRlckJveCogYm94KSBjb25zdAorewor
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCk7CisgICAgaWYgKCFmbG93VGhyZWFkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
Ym94LT5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkgeworICAgICAgICBjb21wdXRlUmVn
aW9uUmFuZ2VGb3JCb3hDaGlsZChib3gpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGVzdGltYXRlZFZhbHVlczsKKyAgICBib3gtPmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQ6Om1heCgpIC8gMiwgbG9naWNhbFRvcEZvckNo
aWxkKGJveCksIGVzdGltYXRlZFZhbHVlcyk7CisKKyAgICBMYXlvdXRVbml0IG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiA9IGJveC0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdp
b25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiwg
dHJ1ZSk7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25B
dEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGVz
dGltYXRlZFZhbHVlcy5tX2V4dGVudCwgdHJ1ZSk7CisKKyAgICBpZiAoIXN0YXJ0UmVnaW9uIHx8
ICFlbmRSZWdpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGZsb3dUaHJlYWQtPnNldFJlZ2lv
blJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Cit9CisKK3ZvaWQgUmVu
ZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoUmVuZGVyQm94KiBib3gpIGNv
bnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJlYWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiogZW5k
UmVnaW9uID0gMDsKKyAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hp
bGQoYm94KTsKKworICAgIFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24gPSAwOworICAgIFJl
bmRlclJlZ2lvbiogbmV3RW5kUmVnaW9uID0gMDsKKyAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25S
YW5nZUZvckJveChib3gsIG5ld1N0YXJ0UmVnaW9uLCBuZXdFbmRSZWdpb24pOworCisgICAgaWYg
KG5ld1N0YXJ0UmVnaW9uICE9IHN0YXJ0UmVnaW9uIHx8IG5ld0VuZFJlZ2lvbiAhPSBlbmRSZWdp
b24pCisgICAgICAgIGJveC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OmNvbGxhcHNlZE1hcmdpbkJlZm9yZUZvckNoaWxkKGNvbnN0IFJlbmRlckJv
eCogY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IDlmY2VkYjE5YjE1OTg0OTFmMjY3MzAyMTQwMmFiNWNkMDk0MmJjMzQuLjA2Yjk4YjNhOGExNmZk
MDdhYjllZjg5ZDRlNDlmY2E4MDYwOTZjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCkBAIC0zNDUsOSArMzQ1LDkgQEAgcHVibGljOgogCiAgICAgLy8gQWNjZXNzb3Jz
IGZvciBsb2dpY2FsIHdpZHRoL2hlaWdodCBhbmQgbWFyZ2lucyBpbiB0aGUgY29udGFpbmluZyBi
bG9jaydzIGJsb2NrLWZsb3cgZGlyZWN0aW9uLgogICAgIGVudW0gQXBwbHlMYXlvdXREZWx0YU1v
ZGUgeyBBcHBseUxheW91dERlbHRhLCBEb05vdEFwcGx5TGF5b3V0RGVsdGEgfTsKLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5o
ZWlnaHQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGls
ZC0+aGVpZ2h0KCkgOiBjaGlsZC0+d2lkdGgoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbFRv
cEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBjaGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQorICAgIExheW91dFVuaXQg
bG9naWNhbFdpZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QgeyByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT53aWR0aCgpIDogY2hpbGQtPmhl
aWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGNoaWxkLT5oZWlnaHQoKSA6IGNoaWxkLT53aWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55KCkgOiBjaGlsZC0+eCgpOyB9CiAgICAg
dm9pZCBzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQg
bG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RBcHBseUxheW91dERlbHRh
KTsKICAgICB2b2lkIHNldExvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RBcHBseUxheW91
dERlbHRhKTsKICAgICBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZUZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gY2hpbGQtPm1hcmdpbkJlZm9y
ZShzdHlsZSgpKTsgfQpAQCAtNTc1LDkgKzU3NSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBib29sIHVwZGF0ZVJlZ2lvbnNBbmRFeGNsdXNpb25zQmVmb3JlQ2hpbGRMYXlv
dXQoUmVuZGVyRmxvd1RocmVhZCopOwotICAgIHZvaWQgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lv
bnNBZnRlckNoaWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqLCBib29sIGhlaWdodENoYW5nZWQg
PSBmYWxzZSk7Ci0gICAgdm9pZCBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhSZW5kZXJGbG93
VGhyZWFkKik7CisgICAgYm9vbCB1cGRhdGVFeGNsdXNpb25zQmVmb3JlQmxvY2tMYXlvdXQoKTsK
KyAgICB2b2lkIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0KGJvb2wgaGVpZ2h0Q2hh
bmdlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNvbXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNv
bnN0IFJlbmRlckJveCopIGNvbnN0OworCisgICAgdm9pZCBlc3RpbWF0ZVJlZ2lvblJhbmdlRm9y
Qm94Q2hpbGQoUmVuZGVyQm94KikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKFJlbmRlckJveCopIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVCbG9ja0NoaWxk
RGlydHlCaXRzQmVmb3JlTGF5b3V0KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgUmVuZGVyQm94Kik7
CiAKQEAgLTExNDIsNyArMTE0NSw2IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0OwogICAg
IFJlbmRlclJlZ2lvbiogcmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0KSBjb25zdDsKLSAg
ICBSZW5kZXJSZWdpb24qIGNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKikg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgRmxvYXRpbmdPYmplY3RIYXNoRnVuY3Rp
b25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKaW5kZXggZTE4NzE4YTgyODc0ZjUyODI1YTk0YWFmZmE3MGZkNDljMDgwY2E0Ny4u
MDI5YmM4Nzc1Y2UxZTExNDA5ZTg4MTZiMWZkZjM0OWMxMzA0NzU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTIwODIs
NiArMjA4Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAgICAgIFZlY3RvcjxSZW5k
ZXJCb3gqPiByZXBsYWNlZENoaWxkcmVuOwogICAgICAgICBmb3IgKElubGluZVdhbGtlciB3YWxr
ZXIodGhpcyk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvID0gd2Fsa2VyLmN1cnJlbnQoKTsKKwogICAgICAgICAgICAgaWYg
KCFoYXNJbmxpbmVDaGlsZCAmJiBvLT5pc0lubGluZSgpKQogICAgICAgICAgICAgICAgIGhhc0lu
bGluZUNoaWxkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBkN2Q4YzcyOTcxNmRkZjYzYjI1YTcyODZhOWQ0MWZiNzMzYjVhZjRiLi5hN2IyY2NmNjE1
NGY4MTkyOWU4MzYwNjhjZjQ2ZDE0NTI3ZTljMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTA5LDEwICsxMDksNDcgQEAgUmVuZGVyQm94Ojp+UmVuZGVyQm94
KCkKIHsKIH0KIAorUmVuZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKworICAgIEFTU0VS
VChpc1JlbmRlclZpZXcoKSB8fCAocmVnaW9uICYmIGZsb3dUaHJlYWQpKTsKKyAgICBpZiAoaXNS
ZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVybiByZWdpb247CisKKyAgICAvLyBXZSBuZWVkIHRv
IGNsYW1wIHRvIHRoZSBibG9jaywgc2luY2Ugd2Ugd2FudCBhbnkgbGluZXMgb3IgYmxvY2tzIHRo
YXQgb3ZlcmZsb3cgb3V0IG9mIHRoZQorICAgIC8vIGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90
dG9tIG9mIHRoZSBibG9jayB0byBzaXplIGFzIHRob3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUg
Zmlyc3QgYW5kCisgICAgLy8gbGFzdCByZWdpb25zIGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVy
d2lzZSB0aGUgbGluZXMgYXJlIGdvaW5nIHRvIHNpemUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25z
CisgICAgLy8gdGhleSBvdmVyZmxvdyBpbnRvLCB3aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRo
aXMgYmxvY2sgZG9lc24ndCBleGlzdCBpbiB8cmVnaW9ufCBhdCBhbGwuCisgICAgUmVuZGVyUmVn
aW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwor
ICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBl
bmRSZWdpb24pOworICAgIAorICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpIDwgc3RhcnRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQorICAgICAgICByZXR1cm4gc3RhcnRSZWdpb247CisgICAgaWYgKGVu
ZFJlZ2lvbiAmJiByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpID4gZW5k
UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJu
IGVuZFJlZ2lvbjsKKyAgICAKKyAgICByZXR1cm4gcmVnaW9uOworfQorCiBMYXlvdXRSZWN0IFJl
bmRlckJveDo6Ym9yZGVyQm94UmVjdEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5k
ZXJCb3hSZWdpb25JbmZvRmxhZ3MgY2FjaGVGbGFnKSBjb25zdAogewogICAgIGlmICghcmVnaW9u
KQogICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworCisgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZs
b3dUaHJlYWQpCisgICAgICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7CisKKyAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7
CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24s
IGVuZFJlZ2lvbik7CisKKyAgICBpZiAoIXN0YXJ0UmVnaW9uIHx8ICFlbmRSZWdpb24pCisgICAg
ICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7CisKKyAgICByZWdpb24gPSBjbGFtcFRvU3RhcnRB
bmRFbmRSZWdpb25zKHJlZ2lvbik7CiAgICAgCiAgICAgLy8gQ29tcHV0ZSB0aGUgbG9naWNhbCB3
aWR0aCBhbmQgcGxhY2VtZW50IGluIHRoaXMgcmVnaW9uLgogICAgIFJlbmRlckJveFJlZ2lvbklu
Zm8qIGJveEluZm8gPSByZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lvbiwgY2FjaGVGbGFnKTsKQEAg
LTE3NjEsNyArMTc5OCw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluCiAgICAgbW9kZSAmPSB+
QXBwbHlDb250YWluZXJGbGlwOwogICAgIGlmIChvLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgewog
ICAgICAgICAvLyBUcmFuc2Zvcm0gZnJvbSByZW5kZXIgZmxvdyBjb29yZGluYXRlcyBpbnRvIHJl
Z2lvbiBjb29yZGluYXRlcy4KLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRl
ckZsb3dUaHJlYWQobyktPm1hcEZyb21GbG93VG9SZWdpb24odHJhbnNmb3JtU3RhdGUpOworICAg
ICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHRvUmVuZGVyRmxvd1RocmVhZChvKS0+bWFwRnJv
bUZsb3dUb1JlZ2lvbih0b1JlbmRlckZsb3dUaHJlYWQobyksIHRyYW5zZm9ybVN0YXRlKTsKICAg
ICAgICAgaWYgKHJlZ2lvbikKICAgICAgICAgICAgIHJlZ2lvbi0+bWFwTG9jYWxUb0NvbnRhaW5l
cihyZWdpb24tPmNvbnRhaW5lckZvclJlcGFpbnQoKSwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdh
c0ZpeGVkKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CmluZGV4IGE0OGI5MTk1N2IzOGMzOWU3ZWM5Zjk4N2ZiOTZjNGJmNjU1ZjBhNzYuLjY4MmJiMjdj
NTBkMjAzZjIxMjRmNjFiNzVkOTk3Y2ZjMDY1OTRlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKQEAgLTM2MSw2ICszNjEsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFJlbmRl
ckJveFJlZ2lvbkluZm9GbGFncyB7IENhY2hlUmVuZGVyQm94UmVnaW9uSW5mbywgRG9Ob3RDYWNo
ZVJlbmRlckJveFJlZ2lvbkluZm8gfTsKICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3RJblJl
Z2lvbihSZW5kZXJSZWdpb24qLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgPSBDYWNoZVJlbmRl
ckJveFJlZ2lvbkluZm8pIGNvbnN0OworICAgIFJlbmRlclJlZ2lvbiogY2xhbXBUb1N0YXJ0QW5k
RW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVuZGVyQm94
UmVnaW9uSW5mbygpOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RQYWdlKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDJiMmVhZmQ0
YzkxZDY0MjAzNTUzMGU3NmQzOTMwMjBlYjExYzUxZDYuLjI1NTgyYTU0NjIzMWIyNTM1YzFhOWZm
NDljOTkxMjY2MTYwODFhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAg
dm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChsb2dpY2FsV2lkdGhDaGFu
Z2VkSW5SZWdpb25zKGZsb3dUaHJlYWQpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1
ZTsKLSAgICBpZiAodXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNCZWZvcmVDaGlsZExheW91dChm
bG93VGhyZWFkKSkKKyAgICBpZiAodXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0KCkp
CiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgTGF5b3V0U2l6ZSBwcmV2
aW91c1NpemUgPSBzaXplKCk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCkKIAogICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwg
aXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5
b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0KCk7
CiAKICAgICBpZiAoIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBoZWlnaHQo
KSA9PSAwKSB7CiAgICAgICAgIC8vIFdlIGFyZSBhIGJsb2NrIHdpdGggbm8gYm9yZGVyIGFuZCBw
YWRkaW5nIGFuZCBhIGNvbXB1dGVkIGhlaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggN2M2NDgxMGZhZWUzZmEwZTE5ODUyYjJmMmJh
NjYzMmZjMjM3NWI3OS4uMmEzZTY2MDcyNGQxYTI2MDMyMzQzZDFkNmRmM2VmY2E3ZTA0NTJkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBA
IC0zNDIsNyArMzQyLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxX
aWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRy
ZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxk
TGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRhdGVFeGNsdXNpb25zQmVmb3JlQmxvY2tM
YXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICBtX251bWJl
ck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA9IC0xOwpAQCAtMzY4LDcgKzM2OCw3IEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCkKIAogICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRy
ZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNo
aWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5
b3V0KCk7CiAKICAgICByZXBhaW50Q2hpbGRyZW5EdXJpbmdMYXlvdXRJZk1vdmVkKG9sZENoaWxk
UmVjdHMpOwogICAgIC8vIEZJWE1FOiBjc3MzL2ZsZXhib3gvcmVwYWludC1ydGwtY29sdW1uLmh0
bWwgc2VlbXMgdG8gcmVwYWludCBtb3JlIG92ZXJmbG93IHRoYW4gaXQgbmVlZHMgdG8uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggMTQ2N2Zj
NjgwMDcwYjAwODliODQ0ZmVjMTYzYzIxYjU2NGRkNDEzNy4uMzc3MmI4NGRhZGU4ZGM2YmY5MDU1
OTgxMjE1OTc1M2FjNWM3ZjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcApAQCAtMTg1LDYgKzE4NSw4IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6dmFsaWRhdGVSZWdpb25zKCkKIAogICAgICAgICAgICAgICAgIHByZXZpb3VzUmVnaW9uTG9n
aWNhbFdpZHRoID0gcmVnaW9uTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBtX3JlZ2lvbkxpc3QuZmlyc3QoKSwgbV9y
ZWdpb25MaXN0Lmxhc3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM3MCwzMyArMzcyLDQ2
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25z
dCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCwKICAgICB9CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVu
ZGVyRmxvd1RocmVhZDo6cmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0IG9mZnNldCwgYm9v
bCBleHRlbmRMYXN0UmVnaW9uLCBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSBhdXRvR2VuZXJh
dGlvblBvbGljeSkKK1JlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uQXRCbG9j
a09mZnNldChjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIExheW91dFVuaXQgb2Zmc2V0LCBib29s
IGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0
aW9uUG9saWN5LCBib29sIGNsYW1wKQogewogICAgIEFTU0VSVCghbV9yZWdpb25zSW52YWxpZGF0
ZWQpOwogCiAgICAgaWYgKGF1dG9HZW5lcmF0aW9uUG9saWN5ID09IEFsbG93UmVnaW9uQXV0b0dl
bmVyYXRpb24pCiAgICAgICAgIGF1dG9HZW5lcmF0ZVJlZ2lvbnNUb0Jsb2NrT2Zmc2V0KG9mZnNl
dCk7CiAKLSAgICBpZiAob2Zmc2V0IDw9IDApCi0gICAgICAgIHJldHVybiBtX3JlZ2lvbkxpc3Qu
aXNFbXB0eSgpID8gMCA6IG1fcmVnaW9uTGlzdC5maXJzdCgpOworICAgIFJlbmRlclJlZ2lvbiog
cmVnaW9uID0gMDsKKyAgICBpZiAob2Zmc2V0IDw9IDApIHsKKyAgICAgICAgcmVnaW9uID0gbV9y
ZWdpb25MaXN0LmlzRW1wdHkoKSA/IDAgOiBtX3JlZ2lvbkxpc3QuZmlyc3QoKTsKKyAgICAgICAg
aWYgKCFjbGFtcCkKKyAgICAgICAgICAgIHJldHVybiByZWdpb247CisgICAgICAgIHJldHVybiBy
ZWdpb24gPyBibG9jay0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pIDogMDsKKyAg
ICB9CiAKICAgICBSZWdpb25TZWFyY2hBZGFwdGVyIGFkYXB0ZXIob2Zmc2V0KTsKICAgICBtX3Jl
Z2lvbkludGVydmFsVHJlZS5hbGxPdmVybGFwc1dpdGhBZGFwdGVyPFJlZ2lvblNlYXJjaEFkYXB0
ZXI+KGFkYXB0ZXIpOwogCiAgICAgLy8gSWYgbm8gcmVnaW9uIHdhcyBmb3VuZCwgdGhlIG9mZnNl
dCBpcyBpbiB0aGUgZmxvdyB0aHJlYWQgb3ZlcmZsb3cuCiAgICAgLy8gVGhlIGxhc3QgcmVnaW9u
IHdpbGwgY29udGFpbiB0aGUgb2Zmc2V0IGlmIGV4dGVuZExhc3RSZWdpb24gaXMgc2V0IG9yIGlm
IHRoZSBsYXN0IHJlZ2lvbiBpcyBhIHNldC4KLSAgICBpZiAoIWFkYXB0ZXIucmVzdWx0KCkgJiYg
IW1fcmVnaW9uTGlzdC5pc0VtcHR5KCkgJiYgKGV4dGVuZExhc3RSZWdpb24gfHwgbV9yZWdpb25M
aXN0Lmxhc3QoKS0+aXNSZW5kZXJSZWdpb25TZXQoKSkpCi0gICAgICAgIHJldHVybiBtX3JlZ2lv
bkxpc3QubGFzdCgpOworICAgIGlmICghYWRhcHRlci5yZXN1bHQoKSAmJiAhbV9yZWdpb25MaXN0
LmlzRW1wdHkoKSAmJiAoZXh0ZW5kTGFzdFJlZ2lvbiB8fCBtX3JlZ2lvbkxpc3QubGFzdCgpLT5p
c1JlbmRlclJlZ2lvblNldCgpKSkgeworICAgICAgICByZWdpb24gPSBtX3JlZ2lvbkxpc3QubGFz
dCgpOworICAgICAgICBpZiAoIWNsYW1wKQorICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAg
ICAgICAgcmV0dXJuIHJlZ2lvbiA/IGJsb2NrLT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKHJl
Z2lvbikgOiAwOworICAgIH0KIAotICAgIHJldHVybiBhZGFwdGVyLnJlc3VsdCgpOworICAgIHJl
Z2lvbiA9IGFkYXB0ZXIucmVzdWx0KCk7CisgICAgaWYgKCFjbGFtcCkKKyAgICAgICAgcmV0dXJu
IHJlZ2lvbjsKKyAgICByZXR1cm4gcmVnaW9uID8gYmxvY2stPmNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMocmVnaW9uKSA6IDA7CiB9CiAgICAgCiBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFk
OjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCYgYm94TW9kZWxPYmplY3QsIGNvbnN0IExheW91dFBvaW50JiBzdGFydFBvaW50
KQogewogICAgIExheW91dFBvaW50IHJlZmVyZW5jZVBvaW50ID0gc3RhcnRQb2ludDsKICAgICAK
KyAgICBjb25zdCBSZW5kZXJCbG9jayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmpl
Y3QuY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgYWRh
cHRlZCBmb3IgZGlmZmVyZW50IHdyaXRpbmcgbW9kZXMgaW5zaWRlIHRoZSBmbG93IHRocmVhZC4K
LSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChyZWZl
cmVuY2VQb2ludC55KCkpOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSByZWdpb25B
dEJsb2NrT2Zmc2V0KG9iakNvbnRhaW5pbmdCbG9jaywgcmVmZXJlbmNlUG9pbnQueSgpKTsKICAg
ICBpZiAoc3RhcnRSZWdpb24pIHsKICAgICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIG9m
ZnNldCBjb29yZGluYXRlcyBvZiB0aGUgcmVnaW9uLgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogY3Vyck9iamVjdCA9IHN0YXJ0UmVnaW9uOwpAQCAtNDE2LDcgKzQzMSw2IEBAIExheW91
dFBvaW50IFJlbmRlckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0
UGFyZW50KGNvbnN0IFJlbmRlCiAgICAgICAgIC8vIGFuZCBpZiBzbywgZHJvcCB0aGUgb2JqZWN0
J3MgdG9wIHBvc2l0aW9uICh3aGljaCB3YXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gaXRzIGNvbnRh
aW5pbmcgYmxvY2sKICAgICAgICAgLy8gYW5kIGlzIG5vIGxvbmdlciB2YWxpZCkgYW5kIHJlY29t
cHV0ZSBpdCB1c2luZyB0aGUgcmVnaW9uIGluIHdoaWNoIGl0IGZsb3dzIGFzIHJlZmVyZW5jZS4K
ICAgICAgICAgYm9vbCB3YXNDb21wdXRlZFJlbGF0aXZlVG9PdGhlclJlZ2lvbiA9IGZhbHNlOwot
ICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxP
YmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgIHdoaWxlIChvYmpDb250YWluaW5nQmxv
Y2sgJiYgIW9iakNvbnRhaW5pbmdCbG9jay0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBvYmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgcmVn
aW9uLgogICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBwYXJlbnRTdGFydFJlZ2lvbiA9IDA7CkBA
IC00NzIsMzAgKzQ4NiwzMCBAQCBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3Rl
ZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZQogICAgIHJldHVybiBy
ZWZlcmVuY2VQb2ludDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9n
aWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKK0xheW91dFVuaXQgUmVuZGVyRmxv
d1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2Nr
LCBMYXlvdXRVbml0IG9mZnNldCkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lv
bkF0QmxvY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lv
bkF0QmxvY2tPZmZzZXQoYmxvY2ssIG9mZnNldCwgZmFsc2UsIEFsbG93UmVnaW9uQXV0b0dlbmVy
YXRpb24sIGZhbHNlKTsKICAgICByZXR1cm4gcmVnaW9uID8gcmVnaW9uLT5wYWdlTG9naWNhbFRv
cEZvck9mZnNldChvZmZzZXQpIDogTGF5b3V0VW5pdCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
ckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsV2lkdGhGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQp
CitMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsV2lkdGhGb3JPZmZzZXQo
Y29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0IG9mZnNldCkKIHsKLSAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0LCB0cnVlKTsKKyAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoYmxvY2ssIG9mZnNl
dCwgdHJ1ZSwgQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbiwgZmFsc2UpOwogICAgIHJldHVybiBy
ZWdpb24gPyByZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgoKSA6IGNvbnRlbnRMb2dpY2FsV2lkdGgo
KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbEhlaWdodEZv
ck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKK0xheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6
cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlv
dXRVbml0IG9mZnNldCkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0Qmxv
Y2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0Qmxv
Y2tPZmZzZXQoYmxvY2ssIG9mZnNldCwgZmFsc2UsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24s
IGZhbHNlKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1
cm4gcmVnaW9uLT5wYWdlTG9naWNhbEhlaWdodCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZs
b3dUaHJlYWQ6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQg
b2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpCitMYXlvdXRVbml0IFJl
bmRlckZsb3dUaHJlYWQ6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGNvbnN0
IFJlbmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUg
cGFnZUJvdW5kYXJ5UnVsZSkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0
QmxvY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0
QmxvY2tPZmZzZXQoYmxvY2ssIG9mZnNldCwgZmFsc2UsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRp
b24sIGZhbHNlKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTUx
MSw3ICs1MjUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VSZW1haW5pbmdM
b2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2ZmcwogICAgIHJldHVybiByZW1haW5p
bmdIZWlnaHQ7CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZs
b3dUb1JlZ2lvbihUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CitSZW5kZXJS
ZWdpb24qIFJlbmRlckZsb3dUaHJlYWQ6Om1hcEZyb21GbG93VG9SZWdpb24oY29uc3QgUmVuZGVy
QmxvY2sqIGJsb2NrLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjQs
NyArNTM4LDcgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjptYXBGcm9tRmxvd1Rv
UmVnaW9uKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGEKICAgICAvLyBOb3RlOiBVc2luZyB0
aGUgY2VudGVyIGluIG9yZGVyIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KIAogICAgIExheW91
dFBvaW50IGNlbnRlciA9IGJveFJlY3QuY2VudGVyKCk7Ci0gICAgUmVuZGVyUmVnaW9uKiByZW5k
ZXJSZWdpb24gPSBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJlYWQqPih0aGlzKS0+cmVnaW9uQXRC
bG9ja09mZnNldChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2VudGVyLnkoKSA6IGNlbnRl
ci54KCksIHRydWUsIERpc2FsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOworICAgIFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uID0gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4odGhpcykt
PnJlZ2lvbkF0QmxvY2tPZmZzZXQoYmxvY2ssIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBj
ZW50ZXIueSgpIDogY2VudGVyLngoKSwgdHJ1ZSwgRGlzYWxsb3dSZWdpb25BdXRvR2VuZXJhdGlv
bik7CiAgICAgaWYgKCFyZW5kZXJSZWdpb24pCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01Nzgs
MjEgKzU5MiwxOCBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJ
blJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayogYgogICAgIFJlbmRlclJlZ2lvbiog
ZW5kUmVnaW9uOwogICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2NrLCBzdGFydFJlZ2lvbiwg
ZW5kUmVnaW9uKTsKIAotICAgIC8vIFdoZW4gdGhlIHJlZ2lvbiBjaGFpbiBpcyBpbnZhbGlkYXRl
ZCB0aGUgYm94IGluZm9ybWF0aW9uIGlzIGRpc2NhcmRlZCBzbyB3ZSBtdXN0IGFzc3VtZSB0aGUg
d2lkdGggaGFzIGNoYW5nZWQuCi0gICAgaWYgKG1fcGFnZUxvZ2ljYWxTaXplQ2hhbmdlZCAmJiAh
c3RhcnRSZWdpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8gTm90IG5lY2Vzc2Fy
eSBmb3IgdGhlIGZsb3cgdGhyZWFkLCBzaW5jZSB3ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSBjb3Jy
ZWN0IGluZm8gZm9yIGl0LgogICAgIGlmIChibG9jayA9PSB0aGlzKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pOyBpdGVyICE9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gKml0ZXI7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJl
Z2lvbi0+aXNSZW5kZXJSZWdpb25TZXQoKSk7CiAKKyAgICAgICAgLy8gV2UgaGF2ZSBubyBpbmZv
cm1hdGlvbiBjb21wdXRlZCBmb3IgdGhpcyByZWdpb24gc28gd2UgbmVlZCB0byBkbyBpdC4KICAg
ICAgICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IG9sZEluZm8gPSByZWdpb24tPnRha2VS
ZW5kZXJCb3hSZWdpb25JbmZvKGJsb2NrKTsKICAgICAgICAgaWYgKCFvbGRJbmZvKQotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBMYXlv
dXRVbml0IG9sZExvZ2ljYWxXaWR0aCA9IG9sZEluZm8tPmxvZ2ljYWxXaWR0aCgpOwogICAgICAg
ICBSZW5kZXJCb3hSZWdpb25JbmZvKiBuZXdJbmZvID0gYmxvY2stPnJlbmRlckJveFJlZ2lvbklu
Zm8ocmVnaW9uKTsKQEAgLTY3MCwxNCArNjgxLDMxIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6
Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyRmxvd1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JCb3go
Y29uc3QgUmVuZGVyQm94KiBib3gsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSkKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJCb3hSZWdpb0luZm8o
Y29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24sIFJlbmRlclJl
Z2lvbiogZW5kUmVnaW9uKQogewogICAgIGlmICghaGFzUmVnaW9ucygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBGSVhNRTogTm90IHJpZ2h0IGZvciBkaWZmZXJpbmcgd3JpdGluZy1tb2Rl
cy4KLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCB0cnVlKTsKLSAgICBSZW5kZXJSZWdpb24q
IGVuZFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSArIGJveC0+bG9naWNhbEhlaWdodCgpLCB0cnVlKTsKKyAgICBBU1NFUlQoc3RhcnRS
ZWdpb24gJiYgZW5kUmVnaW9uKTsKKworICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0
b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAhPSBtX3JlZ2lv
bkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICpp
dGVyOworICAgICAgICBpZiAocmVnaW9uLT5yZW5kZXJCb3hSZWdpb25JbmZvKGJveCkpCisgICAg
ICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94KTsKKworICAgICAg
ICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoYm94KTsKK30KKwordm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVu
ZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24pCit7CisgICAg
aWYgKCFoYXNSZWdpb25zKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzdGFydFJl
Z2lvbiAmJiBlbmRSZWdpb24pOwogICAgIFJlbmRlclJlZ2lvblJhbmdlTWFwOjppdGVyYXRvciBp
dCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChib3gpOwogICAgIGlmIChpdCA9PSBtX3JlZ2lvblJh
bmdlTWFwLmVuZCgpKSB7CiAgICAgICAgIG1fcmVnaW9uUmFuZ2VNYXAuc2V0KGJveCwgUmVuZGVy
UmVnaW9uUmFuZ2Uoc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpOwpAQCAtNjkwLDIxICs3MTgsOCBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRl
ckJveCogYm94LCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChyYW5nZS5zdGFydFJlZ2lvbigpID09
IHN0YXJ0UmVnaW9uICYmIHJhbmdlLmVuZFJlZ2lvbigpID09IGVuZFJlZ2lvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gRGVsZXRlIGFueSBpbmZvIHRoYXQgd2UgZmluZCBiZWZvcmUgb3Vy
IG5ldyBzdGFydFJlZ2lvbiBhbmQgYWZ0ZXIgb3VyIG5ldyBlbmRSZWdpb24uCi0gICAgZm9yIChS
ZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0
ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBzdGFydFJlZ2lvbikgewot
ICAgICAgICAgICAgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKGVuZFJlZ2lvbik7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVuZGVy
Qm94UmVnaW9uSW5mbyhib3gpOwotCi0gICAgICAgIGlmIChyZWdpb24gPT0gcmFuZ2UuZW5kUmVn
aW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjbGVhclJlbmRlck9iamVj
dEN1c3RvbVN0eWxlKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9uKCks
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IGJlIHNt
YXJ0ZXIgYWJvdXQgdGhpcyAoZS5nLiBwdXQgYSBmbGFnIG9uIHRoZSBib3ggdG8gaW52YWxpZGF0
ZSB0aGUgaW5mbykuCisgICAgY2xlYXJSZW5kZXJCb3hSZWdpb0luZm8oYm94LCByYW5nZS5zdGFy
dFJlZ2lvbigpLCByYW5nZS5lbmRSZWdpb24oKSk7CiAgICAgcmFuZ2Uuc2V0UmFuZ2Uoc3RhcnRS
ZWdpb24sIGVuZFJlZ2lvbik7CiB9CiAKQEAgLTcyNiw3ICs3NDEsNyBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OmFwcGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCBjbGllbnRIZWlnaHQp
CiB7CiAgICAgLy8gU2ltdWxhdGUgYSByZWdpb24gYnJlYWsgYXQgaGVpZ2h0LiBJZiBpdCBwb2lu
dHMgaW5zaWRlIGFuIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9uLAogICAgIC8vIHRoZW4gaXQg
bWF5IGRldGVybWluZSB0aGUgcmVnaW9uIG92ZXJyaWRlIGxvZ2ljYWwgY29udGVudCBoZWlnaHQu
Ci0gICAgYWRkRm9yY2VkUmVnaW9uQnJlYWsoY2xpZW50SGVpZ2h0LCB0aGlzLCBmYWxzZSk7Cisg
ICAgYWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywgY2xpZW50SGVpZ2h0LCB0aGlzLCBmYWxzZSk7
CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZU92ZXJmbG93U3RhdGVGb3JSZWdp
b25zKExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlKQpAQCAtOTI1LDcgKzk0MCw3IEBAIHZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdChj
b25zdCBSZW5kZXJSZWdpb24qIGxhCiAvLyBFdmVuIGlmIHdlIHJlcXVpcmUgdGhlIGJyZWFrIHRv
IG9jY3VyIGF0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLCBiZWNhdXNlIHJlZ2lvbnMgbWF5IGhh
dmUgbWluL21heC1oZWlnaHQgdmFsdWVzLAogLy8gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgYnJl
YWsgd2lsbCBvY2N1ciBhdCBhIGRpZmZlcmVudCBvZmZzZXQgdGhhbiB0aGUgb3JpZ2luYWwgb25l
IHJlcXVpcmVkLgogLy8gb2Zmc2V0QnJlYWtBZGp1c3RtZW50IG1lYXN1cmVzIHRoZSBkaWZmZXJl
bnQgYmV0d2VlbiB0aGUgcmVxdWVzdGVkIGJyZWFrIG9mZnNldCBhbmQgdGhlIGN1cnJlbnQgYnJl
YWsgb2Zmc2V0LgotYm9vbCBSZW5kZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhM
YXlvdXRVbml0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hp
bGQsIGJvb2wgaXNCZWZvcmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCkKK2Jv
b2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxv
Y2sqIGJsb2NrLCBMYXlvdXRVbml0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLCBSZW5kZXJPYmpl
Y3QqIGJyZWFrQ2hpbGQsIGJvb2wgaXNCZWZvcmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRq
dXN0bWVudCkKIHsKICAgICAvLyBXZSB0YWtlIGJyZWFrcyBpbnRvIGFjY291bnQgZm9yIGhlaWdo
dCBjb21wdXRhdGlvbiBmb3IgYXV0byBsb2dpY2FsIGhlaWdodCByZWdpb25zCiAgICAgLy8gb25s
eSBpbiB0aGUgbGF5b3V0IHBoYXNlIGluIHdoaWNoIHdlIGxheSBvdXQgdGhlIGZsb3dzIHRocmVh
ZHMgdW5jb25zdHJhaW5lZApAQCAtOTUyLDcgKzk2Nyw3IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVh
ZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVh
ZCwKIAogICAgIC8vIFNpbXVsYXRlIGEgcmVnaW9uIGJyZWFrIGF0IG9mZnNldEJyZWFrSW5GbG93
VGhyZWFkLiBJZiBpdCBwb2ludHMgaW5zaWRlIGFuIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9u
LAogICAgIC8vIHRoZW4gaXQgZGV0ZXJtaW5lcyB0aGUgcmVnaW9uIG92ZXJyaWRlIGxvZ2ljYWwg
Y29udGVudCBoZWlnaHQuCi0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2Nr
T2Zmc2V0KG9mZnNldEJyZWFrSW5GbG93VGhyZWFkKTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
biA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoYmxvY2ssIG9mZnNldEJyZWFrSW5GbG93VGhyZWFkKTsK
ICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAwYzIyZjQ1NTUzY2I2OGEyMDNk
MTUzOGY0ZjFmNjE2MTY1YmFiZjgyLi5jODE3MTgyNzdhZGM2NzNjZjJjYTBjZWMxZjhjNjU1MDA1
M2JmOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgK
QEAgLTk4LDIxICs5OCwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0
ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QmLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbFRv
cEZvck9mZnNldChMYXlvdXRVbml0KTsKLSAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsV2lkdGhG
b3JPZmZzZXQoTGF5b3V0VW5pdCk7Ci0gICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodEZv
ck9mZnNldChMYXlvdXRVbml0KTsKLSAgICBMYXlvdXRVbml0IHBhZ2VSZW1haW5pbmdMb2dpY2Fs
SGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBJbmNsdWRlUGFn
ZUJvdW5kYXJ5KTsKKyAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsVG9wRm9yT2Zmc2V0KGNvbnN0
IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCk7CisgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbFdp
ZHRoRm9yT2Zmc2V0KGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCk7CisgICAgTGF5b3V0
VW5pdCBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChjb25zdCBSZW5kZXJCbG9jayosIExheW91
dFVuaXQpOworICAgIExheW91dFVuaXQgcGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZz
ZXQoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0LCBQYWdlQm91bmRhcnlSdWxlID0gSW5j
bHVkZVBhZ2VCb3VuZGFyeSk7CiAgICAgCiAgICAgZW51bSBSZWdpb25BdXRvR2VuZXJhdGlvblBv
bGljeSB7CiAgICAgICAgIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24sCiAgICAgICAgIERpc2Fs
bG93UmVnaW9uQXV0b0dlbmVyYXRpb24sCiAgICAgfTsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
bkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uID0gZmFsc2Us
IFJlZ2lvbkF1dG9HZW5lcmF0aW9uUG9saWN5ID0gQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7
CisKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoY29uc3QgUmVuZGVyQmxv
Y2sqLCBMYXlvdXRVbml0LCBib29sIGV4dGVuZExhc3RSZWdpb24gPSBmYWxzZSwgUmVnaW9uQXV0
b0dlbmVyYXRpb25Qb2xpY3kgPSBBbGxvd1JlZ2lvbkF1dG9HZW5lcmF0aW9uLCBib29sID0gZmFs
c2UpOwogCiAgICAgYm9vbCByZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aDsgfQogICAgIGJvb2wgcmVn
aW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uc0hh
dmVVbmlmb3JtTG9naWNhbEhlaWdodDsgfQogCi0gICAgUmVuZGVyUmVnaW9uKiBtYXBGcm9tRmxv
d1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CisgICAgUmVuZGVyUmVnaW9uKiBtYXBG
cm9tRmxvd1RvUmVnaW9uKGNvbnN0IFJlbmRlckJsb2NrKiwgVHJhbnNmb3JtU3RhdGUmKSBjb25z
dDsKIAogICAgIHZvaWQgcmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhSZW5kZXJCb3gqKTsKICAg
ICBib29sIGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJC
bG9jayopOwpAQCAtMTI0LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJSZWdpb24qIGZp
cnN0UmVnaW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVnaW9uKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIExheW91
dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CisgICAgdm9pZCBzZXRSZWdp
b25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdp
b24qKTsKICAgICB2b2lkIGdldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJl
bmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0
OwogCiAgICAgdm9pZCBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9i
amVjdCosCkBAIC0xNDAsNyArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrQXV0b0xv
Z2ljYWxIZWlnaHRSZWdpb25zRm9yTGF5b3V0KCk7CiAKLSAgICBib29sIGFkZEZvcmNlZFJlZ2lv
bkJyZWFrKExheW91dFVuaXQsIFJlbmRlck9iamVjdCogYnJlYWtDaGlsZCwgYm9vbCBpc0JlZm9y
ZSwgTGF5b3V0VW5pdCogb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0gMCk7CisgICAgYm9vbCBhZGRG
b3JjZWRSZWdpb25CcmVhayhjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQsIFJlbmRlck9i
amVjdCogYnJlYWtDaGlsZCwgYm9vbCBpc0JlZm9yZSwgTGF5b3V0VW5pdCogb2Zmc2V0QnJlYWtB
ZGp1c3RtZW50ID0gMCk7CiAgICAgdm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVu
aXQpOwogCiAgICAgYm9vbCBwYWdlTG9naWNhbFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlTG9naWNhbFNpemVDaGFuZ2VkOyB9CkBAIC0xNjUsNiArMTY2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcHVzaEZsb3dUaHJlYWRMYXlvdXRTdGF0ZShjb25zdCBSZW5kZXJPYmplY3QqKTsK
ICAgICB2b2lkIHBvcEZsb3dUaHJlYWRMYXlvdXRTdGF0ZSgpOwogICAgIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UmVnaW9uKGNvbnN0IFJlbmRlckJsb2NrKikgY29uc3Q7
CisgICAgdm9pZCBjbGVhclJlbmRlckJveFJlZ2lvSW5mbyhjb25zdCBSZW5kZXJCb3gqLCBSZW5k
ZXJSZWdpb24qLCBSZW5kZXJSZWdpb24qKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAppbmRleCBiYjRmMjljMmFiOThiMjRlMzNlNjYzNTdhM2JiMDJhNjEzMmM4
NzI3Li42MWU4YmRjMGI2ZjY5Y2NjOTdjODNkNDBmMzE2MDU2NDJiOTE0NDNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQp
CiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5n
QmxvY2soKTsKICAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFk
KSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVJlZ2lv
bnNBbmRFeGNsdXNpb25zQmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCkpCisgICAgaWYgKHVw
ZGF0ZUV4Y2x1c2lvbnNCZWZvcmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91dENoaWxk
cmVuID0gdHJ1ZTsKIAogICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0gc2l6ZSgpOwpAQCAt
MTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVs
YXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdpb25zQW5kRXhjbHVz
aW9uc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCk7CisgICAgdXBkYXRlRXhjbHVzaW9uc0Fm
dGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIGNvbXB1dGVPdmVyZmxvdyhvbGRDbGllbnRBZnRlckVk
Z2UpOwogICAgIHN0YXRlUHVzaGVyLnBvcCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZlMDg4ZTU0MjJlOTg5MzE2ODJm
NjZhZTZlYzc4MDg4YzA0ZDE1NTQuLmJkZjVmOWU0MjI0MTAyNTMyOWMwYzZjYmM1MWY1MzU3MDc5
YjI3YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNi0wNSAgQW5kcmVpIEJ1Y3VyICA8
YWJ1Y3VyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIFJlZ2lvbnNdIENvbXB1dGUgY29ycmVj
dCByZWdpb24gcmFuZ2VzIGZvciBib3hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2Mjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBmbG9hdCB0ZXN0IGZvciB0aGUgY2FzZSBvZiBh
IGNsYW1wZWQgcmFuZ2UgZm9yIHRoZSBmbG9hdC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9m
bG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTItZXhwZWN0ZWQuaHRtbDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQu
aHRtbC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0y
Lmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQt
d2lkdGgtY2hhbmdlLmh0bWwuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13
aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvYXQt
cHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zOiBUZW1wb3JhcmlseSBkaXNhYmxlIDIgdGVzdHMuIFJlbW92ZSB3aGVuIGxhbmRp
bmcgZmluYWwgcGF0Y2guCisKIDIwMTMtMDYtMDMgIEdhYm9yIEFicmFoYW0gIDxhYnJobUBpbmYu
dS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBbV0syXSBVbnJldmlld2VkIGdhcmRlbmluZy4g
VW5za2lwcGluZyBwYXNzaW5nIHRlc3RzIGFuZCBnZW5lcmF0ZSBuZXcgdGVzdCBleHBlY3RhdGlv
bnMgd2hlcmUgbmVlZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFjYjVkYWYzMzYyYWE2ZTU0YjcyZGVjNDJmZTA1NDhmMTZhYjI3MGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNo
YW5nZS0yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFkb2N0eXBlIGh0bWw+CisK
KyA8c3R5bGU+CisKKyAgICBAZm9udC1mYWNlIHsKKyAgICAgICAgZm9udC1mYW1pbHk6IHdlYmtp
dC1haGVtOworICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7CisgICAgICAgIHNyYzogdXJsKC4u
Ly4uL3Jlc291cmNlcy9BaGVtLnR0Zik7CisgICAgfQorICAgCisgICAgI2Zsb2F0MSB7CisgICAg
ICAgIGZsb2F0OiBsZWZ0OworICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgd2lk
dGg6IDE1MHB4OworICAgICAgICBoZWlnaHQ6IDEwMnB4OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOmdyZWVuOworICAgICAgICB6LWluZGV4Oi0xOworICAgIH0KKyAgICAKKyAgICAjZmxvYXQy
IHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOjIwMHB4OworICAgICAgICBo
ZWlnaHQ6MzBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2UKKyAgICB9CisKKyAg
ICAjcmVnaW9uMSwgI3JlZ2lvbjIsICNyZWdpb24zIHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7CisgICAgfQorIAorICAgICNyZWdpb24xIHsKKyAgICAgICAgd2lkdGg6IDE3MHB4
OworICAgICAgICBoZWlnaHQ6IDgwcHg7CisgICAgICAgIHBhZGRpbmc6IDVweDsKKyAgICB9Cisg
ICAgCisgICAgI3JlZ2lvbjIgeworICAgICAgICB3aWR0aDogMzkwcHg7CisgICAgICAgIGhlaWdo
dDogODlweDsKKyAgICAgICAgcGFkZGluZy10b3A6MXB4OworICAgICAgICBwYWRkaW5nLWxlZnQ6
NXB4OworICAgICAgICBwYWRkaW5nLXJpZ2h0OjVweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lv
bjMgeworICAgICAgICB3aWR0aDogMzg1cHg7CisgICAgICAgIGhlaWdodDogODBweDsKKyAgICAg
ICAgcGFkZGluZy1sZWZ0OjVweDsKKyAgICAgICAgcGFkZGluZy1yaWdodDoxMHB4OworICAgICAg
ICBwYWRkaW5nLWJvdHRvbToxMHB4OworICAgIH0KKyAgICAKKyAgICBwLmZsb3cxIHsKKyAgICAg
ICAgY2xlYXI6Ym90aDsKKyAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OworICAgIH0KKworICAg
IHAuZmxvdzIgeworICAgICAgICBtYXJnaW4tdG9wOiAwcHg7CisgICAgfQorICAgIAorPC9zdHls
ZT4KKworPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBmbG9hdCBzaG91bGQgYmUg
YXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVmdC4gSXQgc2hvdWxk
IHNwaWxsIGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIG9uIHRo
ZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorCis8ZGl2IGlkPSJyZWdpb24x
Ij4KKyAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48L3A+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlZ2lv
bjIiPgorICAgIDxpbWcgaWQ9ImZsb2F0MiI+CisgICAgPHAgY2xhc3M9ImZsb3cxIj5UaGlzIGxp
bmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorPC9kaXY+Cis8ZGl2
IGlkPSJyZWdpb24zIj4KKzxwIGNsYXNzPSJmbG93MiI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxk
IG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3Qg
Z2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBu
b3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlYTRkN2ZkNDYyNTlmNGZkNWRmNzJhYTMxOTYwNTE5NmFmNDAzZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRo
LWNoYW5nZS0yLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKyA8c3R5
bGU+CisKKyAgIEBmb250LWZhY2UgeworICAgICAgICBmb250LWZhbWlseTogd2Via2l0LWFoZW07
CisgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICAgICAgc3JjOiB1cmwoLi4vLi4vcmVz
b3VyY2VzL0FoZW0udHRmKTsKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIC13ZWJr
aXQtZmxvdy1pbnRvOiBmbG93MTsKKyAgICAgICAgcGFkZGluZzogNXB4OworICAgIH0KKyAgCisg
ICAgI2Zsb2F0MSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICB3aWR0aDogMTUwcHg7
CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW4K
KyAgICB9CisgICAgCisgICAgI2Zsb2F0MiB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAg
ICB3aWR0aDoyMDBweDsKKyAgICAgICAgaGVpZ2h0OjMwcHg7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6b3JhbmdlCisgICAgfQorCisgICAgI3JlZ2lvbjEsICNyZWdpb24yLCAjcmVnaW9uMyB7
CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzE7CisgICAgfQorCisgICAgI3JlZ2lvbjEgeworICAgICAgICB3aWR0aDogMTgw
cHg7CisgICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lvbjIgewor
ICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAg
CisgICAgI3JlZ2lvbjMgeworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDog
OTBweDsKKyAgICB9CisKKyAgICAjZmxvYXRjb250YWluZXIgeworICAgICAgICBoZWlnaHQ6IDg0
cHg7CisgICAgfQorPC9zdHlsZT4KKworPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVl
biBmbG9hdCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0
aGUgbGVmdC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxv
YXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgor
Cis8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgorICAgICAgICA8
ZGl2IGlkPSJzZWNvbmQtYm94Ij4KKyAgICAgICAgICAgIDxwIGlkPSJmbG9hdGNvbnRhaW5lciI+
PGltZyBpZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPgorICAgICAgICAgICAgPHA+VGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBv
ZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAgPHA+
VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMg
bGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAg
ICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVn
aW9uLjwvcD4KKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2
PgorCis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiPjwvZGl2
PgorPC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4
cGVjdGVkLmh0bWwKaW5kZXggMWMwMDlhNmUxM2E0MDNmY2MxMTc0MWZiMzM2NWViMWY4YzY2Mzhm
Ny4uYzUzZWZkMzA0YjczNGJjZDFlZGNlMWIzYzI3MjQ5MTc1NGM0MzE2OSAxMDA3NTUKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRo
LWNoYW5nZS1leHBlY3RlZC5odG1sCkBAIC0xOCw3ICsxOCw5IEBACiAgICAgfQogICAgIAogICAg
ICNmbG9hdDIgewotICAgICAgICBmbG9hdDpyaWdodDsKKyAgICAgICAgbWFyZ2luLXRvcDogMzBw
eDsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IC0zMHB4OworICAgICAgICBmbG9hdDpsZWZ0OwogICAg
ICAgICB3aWR0aDoyMDBweDsKICAgICAgICAgaGVpZ2h0OjMwcHg7CiAgICAgICAgIGJhY2tncm91
bmQtY29sb3I6b3JhbmdlCkBAIC02MiwxNCArNjQsMTQgQEAKIDwvc3R5bGU+CiAKIDxwPkluIHRo
ZSBleGFtcGxlIGJlbG93LCB0aGUgZ3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0b3Agb2Yg
dGhlIGZpcnN0IHJlZ2lvbiBhbmQgb24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBpbnRvIHJl
Z2lvbiB0d28uCi1UaGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYXQgdGhl
IHRvcCBvZiByZWdpb24gdHdvLjwvcD4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIHJpZ2h0
IGFsaWduZWQgdW5kZXIgdGhlIGdyZWVuIGZsb2F0IGJlY2F1c2UgdGhlaXIgY29udGFpbmluZyBi
bG9jayBpcyBmbG93biBvbmx5IGluIHRoZSBmaXJzdCByZWdpb248L3A+CiAKIDxkaXYgaWQ9InJl
Z2lvbjEiPgogICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjwvcD4KIDwvZGl2PgogPGRpdiBpZD0i
cmVnaW9uMiI+CiAgICAgPGltZyBpZD0iZmxvYXQyIj4KLSAgICA8cCBjbGFzcz0iZmxvdzEiPlRo
aXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxp
bmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CisgICAgPHAg
Y2xhc3M9ImZsb3cxIj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhl
IHJlZ2lvbi48L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9InJlZ2lvbjMiPgogPHAgY2xhc3M9ImZsb3cy
Ij5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhp
cyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFu
Z2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hh
bmdlLmh0bWwKaW5kZXggMWU4NzFiNmFjMWUxZWNkZjkzNzA3NzI3YWQyYmJhOGE1ZjQzYjc0OS4u
MzI1NDBkMzBiOGMxY2EwNWYyZmYwNmJlMDQ5Yjc4Zjc0NmFkYzkyYyAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1s
CkBAIC00OSwxMyArNDksMTMgQEAKIDwvc3R5bGU+CiAKIDxwPkluIHRoZSBleGFtcGxlIGJlbG93
LCB0aGUgZ3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0b3Agb2YgdGhlIGZpcnN0IHJlZ2lv
biBhbmQgb24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBpbnRvIHJlZ2lvbiB0d28uCi1UaGUg
b3JhbmdlIGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYXQgdGhlIHRvcCBvZiByZWdpb24g
dHdvLjwvcD4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIHJpZ2h0IGFsaWduZWQgdW5kZXIg
dGhlIGdyZWVuIGZsb2F0IGJlY2F1c2UgdGhlaXIgY29udGFpbmluZyBibG9jayBpcyBmbG93biBv
bmx5IGluIHRoZSBmaXJzdCByZWdpb248L3A+CiAKIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgIDxk
aXYgaWQ9ImZpcnN0LWJveCI+CiAgICAgICAgIDxkaXYgaWQ9InNlY29uZC1ib3giPgotICAgICAg
ICAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPgotICAgICAgICAgICAg
PHA+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRo
aXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAg
ICAgICAgICAgIDxwPjxpbWcgaWQ9ImZsb2F0MSI+PGltZyBpZD0iZmxvYXQyIj48cC8+CisgICAg
ICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJl
Z2lvbi48L3A+CiAJICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhl
IHJlZ2lvbi48L3A+CiAgICAgICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90
IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTFlNmFiYzQ5YjFlZWQwZDU4MzIyM2M2
NTNhOTBmOWRiYmY5MjI5NS4uYzk4NDFlYmE1YzNkYmZmODY2YTcwOGYxMGMzNGQxZTU0N2I4MWEz
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4Myw2
ICszODMsMTAgQEAgd2Via2l0Lm9yZy9iLzYxNDg3IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY3Jv
c3Mtc2l0ZS5odG1sIFsgRmFpbHVyZSBdCiAjIFN0eWxlZCBzY29wZSBlbGVtZW50IGlzIG5vdCB5
ZXQgZW5hYmxlZC4KIHdlYmtpdC5vcmcvYi80OTE0MiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIAor
IyBGSVhNRTogUmVtb3ZlIGluIHRoZSBmaW5hbCBwYXRjaDoKK2Zhc3QvcmVnaW9ucy9yZWdpb25z
LXdpZG93cy1hbmQtb3JwaGFucy5odG1sCitmYXN0L3JlZ2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1vbi1yZWdpb25zLWlubGluZS1jb250ZW50LW92ZXJmbG93LW11bHRpcGxlLXNoYXBl
cy5odG1sCisKICMgQ1NTIFJlZ2lvbnMgdGVzdHMgZm9yIHJlZ2lvbiBzdHlsaW5nIGFuZCBzY29w
ZWQgc3R5bGVzCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtY29u
dGFpbmVyLXN0eWxlLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVy
cmlkZS1yZWdpb24tc3R5bGluZy1tdWx0aXBsZS1yZWdpb25zLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204904</attachid>
            <date>2013-06-18 05:19:21 -0700</date>
            <delta_ts>2013-06-20 08:42:47 -0700</delta_ts>
            <desc>WIP Patch v2</desc>
            <filename>bug-116296-20130618151733.patch</filename>
            <type>text/plain</type>
            <size>54560</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYxNDc3NjMyNGNjY2Rk
Mzg4OTIxNGZmMjk5ZjViYjNjYTljY2U5MC4uMjQwODVhNjBmM2RhMTc1YTJjZGQxN2NkMmJlY2M2
MmVlMzcyNmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTA2LTA1ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgcmVnaW9u
IHJhbmdlcyB0aGUgZm9sbG93aW5nIHdheToKKyAgICAgICAgLSB0aGUgcmFuZ2Ugb2YgYSBib3gg
aXMgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSByYW5nZSBvZiBpdHMgY29udGFpbmluZyBibG9jayAo
ZXZlbiBmb3IgZmxvYXRzKTsgdGhpcyBzaG91bGQgYmUgdGVtcG9yYXJ5IGFuZAorICAgICAgICBh
cHBsaWVkIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzCisgICAgICAgIC0gaWYgdGhlIHJhbmdlIG9m
IGEgYm94IGNoYW5nZXMgaXQgbmVlZHMgYSByZWxheW91dAorICAgICAgICAtIGFsbCB0aGUgYm94
ZXMgaGF2ZSBhIHJhbmdlIG5vdworICAgICAgICAtIHJlZ2lvbkF0QmxvY2tPZmZzZXQgbWFrZXMg
Y2xhbXBpbmcKKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGlsZCBib3ggc3RhcnRz
IGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1heGltYWwgaGVpZ2h0
IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRoZSBlc3RpbWF0aW9u
IHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBsZSwgaWYgYSBibG9j
ayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRoZSBmbG9hdAorICAg
ICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQgaXMgbmVlZGVkIGZv
ciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGNvbnRh
aW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJlIG9wdGltaXplZCBi
eSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4gdGhhdCBkb24ndCBo
YXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAgIGNvbnRhaW5pbmcg
YmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQt
d2lkdGgtY2hhbmdlLTIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQmVmb3Jl
QmxvY2tMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUV4Y2x1
c2lvbnNBZnRlckJsb2NrTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
YXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YXBwbHlBZnRlckJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWdlTG9naWNhbFRvcEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZWdpb25BdEJsb2NrT2Zmc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6
IENvbXB1dGVzIHRoZSByYW5nZSBvZiBhIGNoaWxkIGJveCB1c2luZyBpdHMgbG9naWNhbCBoZWln
aHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZXN0aW1hdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKTogTWFrZXMgYW4gZXN0aW1hdGlvbiBvZiB0aGUgcmFuZ2Ugb2YgYSBjaGlsZCBi
b3ggYmVmb3JlIHRoZSBsYXlvdXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBk
YXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6IFVwZGF0ZXMgdGhlIGZpbmFsIHJhbmdlIG9mIGEg
Y2hpbGQgYm94IGFuZCBtYXJrcyBpdCBmb3IgbGF5b3V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpsb2dpY2FsV2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
bG9naWNhbEhlaWdodEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b2dpY2FsVG9wRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNo
aWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OnZhbGlkYXRlUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsVG9w
Rm9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dp
Y2FsV2lkdGhGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25z
Rm9yQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5k
ZXJCb3hSZWdpb0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6c2V0
UmVnaW9uUmFuZ2VGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
YXBwbHlCcmVha0FmdGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayk6CisKIDIwMTMtMDYtMTQgIEdyemVn
b3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ29u
dGV4dCBtZW51IGdyYW1tYXIgY2hlY2tpbmcgaXRlbXMgYXJlIGF2YWlsYWJsZSB3aGVuIEdSQU1N
QVJfQ0hFQ0tJTkcgbWFjcm8gaXMgb2ZmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA1YWEyOTAyM2YwOGI0Zjg3OTk4YjdkN2JlMzljZGY4ZDhlYjY2YzM3Li5h
ZjBhYTI4ZTkxZWQ5Mzk5ODYwNmJlNDlkZjgxYmUyYzdmZDEzY2ExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0ODEsMTMgKzE0ODEsMTAgQEAgc3RhdGlj
IGlubGluZSBib29sIHNoYXBlSW5mb1JlcXVpcmVzUmVsYXlvdXQoY29uc3QgUmVuZGVyQmxvY2sq
IGJsb2NrKQogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRF
eGNsdXNpb25zQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkK
K2Jvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZUV4Y2x1c2lvbnNCZWZvcmVCbG9ja0xheW91dCgpCiB7
CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgaWYgKCFmbG93VGhyZWFkICYmICFzaGFwZUlu
c2lkZUluZm8oKSkKLSNlbHNlCi0gICAgaWYgKCFmbG93VGhyZWFkKQotI2VuZGlmCisgICAgaWYg
KCFmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQogICAg
ICAgICByZXR1cm4gc2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dCh0aGlzKTsKIAogICAgIExheW91
dFVuaXQgb2xkSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOwpAQCAtMTQ5OCwxOCArMTQ5NSwxMyBA
QCBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxk
TGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqCiAgICAgc2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0
OjptYXgoKSAvIDIpOwogICAgIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKIAotI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQogICAgIGNvbXB1dGVTaGFwZVNpemUoKTsKLSNlbmRpZgotCi0gICAgLy8gU2V0
IG91ciBzdGFydCBhbmQgZW5kIHJlZ2lvbnMuIE5vIHJlZ2lvbnMgYWJvdmUgb3IgYmVsb3cgdXMg
d2lsbCBiZSBjb25zaWRlcmVkIGJ5IG91ciBjaGlsZHJlbi4gVGhleSBhcmUKLSAgICAvLyBlZmZl
Y3RpdmVseSBjbGFtcGVkIHRvIG91ciByZWdpb24gcmFuZ2UuCi0gICAgY29tcHV0ZVJlZ2lvblJh
bmdlRm9yQmxvY2soZmxvd1RocmVhZCk7CiAKICAgICBzZXRMb2dpY2FsSGVpZ2h0KG9sZEhlaWdo
dCk7CiAgICAgc2V0TG9naWNhbFRvcChvbGRUb3ApOwogICAgIAogICAgIHJldHVybiBzaGFwZUlu
Zm9SZXF1aXJlc1JlbGF5b3V0KHRoaXMpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NI
QVBFUykKQEAgLTE1MjMsNyArMTUxNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTaGFw
ZVNpemUoKQogfQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRF
eGNsdXNpb25zQWZ0ZXJDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkLCBi
b29sIGhlaWdodENoYW5nZWQpCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQWZ0
ZXJCbG9ja0xheW91dChib29sIGhlaWdodENoYW5nZWQpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCiAgICAgLy8gQSBwcmV2aW91cyBzaWJsaW5nIGhhcyBjaGFuZ2VkIGRpbWVuc2lvbiwgc28g
d2UgbmVlZCB0byByZWxheW91dCB0aGUgc2hhcGUgd2l0aCB0aGUgY29udGVudApAQCAtMTUzMSwx
MyArMTUyMyw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRFeGNsdXNpb25z
QWZ0ZXJDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiBmCiAgICAgaWYgKGhlaWdodENoYW5n
ZWQgJiYgc2hhcGVJbnNpZGVJbmZvKQogICAgICAgICBzaGFwZUluc2lkZUluZm8tPmRpcnR5U2hh
cGVTaXplKCk7CiAjZW5kaWYKLSAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhmbG93VGhy
ZWFkKTsKLX0KLQotdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2so
UmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKLXsKLSAgICBpZiAoZmxvd1RocmVhZCkKLSAg
ICAgICAgZmxvd1RocmVhZC0+c2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlTG9n
aWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgoKQpAQCAtMTYxOSw3ICsxNjA0LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2gKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKGZsb3dUaHJlYWQpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBp
ZiAodXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNCZWZvcmVDaGlsZExheW91dChmbG93VGhyZWFk
KSkKKyAgICBpZiAodXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAg
IHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgLy8gV2UgdXNlIGZvdXIgdmFsdWVzLCBt
YXhUb3BQb3MsIG1heFRvcE5lZywgbWF4Qm90dG9tUG9zLCBhbmQgbWF4Qm90dG9tTmVnLCB0byB0
cmFjawpAQCAtMTY4OSw3ICsxNjc0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKIAogICAg
IGxheW91dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwog
Ci0gICAgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJl
YWQsIGhlaWdodENoYW5nZWQpOworICAgIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0
KGhlaWdodENoYW5nZWQpOwogCiAgICAgLy8gQWRkIG92ZXJmbG93IGZyb20gY2hpbGRyZW4gKHVu
bGVzcyB3ZSdyZSBtdWx0aS1jb2x1bW4sIHNpbmNlIGluIHRoYXQgY2FzZSBhbGwgb3VyIGNoaWxk
IG92ZXJmbG93IGlzIGNsaXBwZWQgYW55d2F5KS4KICAgICBjb21wdXRlT3ZlcmZsb3cob2xkQ2xp
ZW50QWZ0ZXJFZGdlKTsKQEAgLTI2MTEsNiArMjU5Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6Omxh
eW91dEJsb2NrQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbywg
TGF5CiAjZW5kaWYKICAgICAvLyBHbyBhaGVhZCBhbmQgcG9zaXRpb24gdGhlIGNoaWxkIGFzIHRo
b3VnaCBpdCBkaWRuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgdG9wLgogICAgIHNldExvZ2ljYWxUb3BG
b3JDaGlsZChjaGlsZCwgbG9naWNhbFRvcEVzdGltYXRlLCBBcHBseUxheW91dERlbHRhKTsKKyAg
ICBlc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY2hpbGQpOwogCiAgICAgUmVuZGVyQmxv
Y2sqIGNoaWxkUmVuZGVyQmxvY2sgPSBjaGlsZC0+aXNSZW5kZXJCbG9jaygpID8gdG9SZW5kZXJC
bG9jayhjaGlsZCkgOiAwOwogICAgIGJvb2wgbWFya0Rlc2NlbmRhbnRzV2l0aEZsb2F0cyA9IGZh
bHNlOwpAQCAtMjY2Myw2ICsyNjQ5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tD
aGlsZChSZW5kZXJCb3gqIGNoaWxkLCBNYXJnaW5JbmZvJiBtYXJnaW5JbmZvLCBMYXkKICAgICAg
ICAgICAgIGF0QmVmb3JlU2lkZU9mQmxvY2sgJiYgbG9naWNhbFRvcEJlZm9yZUNsZWFyID09IGxv
Z2ljYWxUb3BBZnRlckNsZWFyKTsKIAogICAgIHNldExvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZCwg
bG9naWNhbFRvcEFmdGVyQ2xlYXIsIEFwcGx5TGF5b3V0RGVsdGEpOworICAgIHVwZGF0ZVJlZ2lv
blJhbmdlRm9yQm94Q2hpbGQoY2hpbGQpOwogCiAgICAgLy8gTm93IHdlIGhhdmUgYSBmaW5hbCB0
b3AgcG9zaXRpb24uICBTZWUgaWYgaXQgcmVhbGx5IGRvZXMgZW5kIHVwIGJlaW5nIGRpZmZlcmVu
dCBmcm9tIG91ciBlc3RpbWF0ZS4KICAgICAvLyBjbGVhckZsb2F0c0lmTmVlZGVkIGNhbiBhbHNv
IG1hcmsgdGhlIGNoaWxkIGFzIG5lZWRpbmcgYSBsYXlvdXQgZXZlbiB0aG91Z2ggd2UgZGlkbid0
IG1vdmUuIFRoaXMgaGFwcGVucwpAQCAtMjg0OSw2ICsyODM2LDggQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxheW91dENoaWxkcmVuLCBib29sIGZp
eGVkUG9zaXQKICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0g
cG9zaXRpb25lZERlc2NlbmRhbnRzLT5lbmQoKTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0OjppdGVyYXRvciBpdCA9IHBvc2l0aW9uZWREZXNjZW5kYW50cy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIHIgPSAqaXQ7CisgICAgICAgIAorICAgICAgICBl
c3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQocik7CiAKICAgICAgICAgLy8gQSBmaXhlZCBw
b3NpdGlvbiBlbGVtZW50IHdpdGggYW4gYWJzb2x1dGUgcG9zaXRpb25lZCBhbmNlc3RvciBoYXMg
bm8gd2F5IG9mIGtub3dpbmcgaWYgdGhlIGxhdHRlciBoYXMgY2hhbmdlZCBwb3NpdGlvbi4gU28K
ICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQsIG1hcmsgaXQg
Zm9yIGxheW91dCBpZiBpdCBoYXMgYW4gYWJzcG9zIGFuY2VzdG9yIGFuZCBuZWVkcyB0byBtb3Zl
IHdpdGggdGhhdCBhbmNlc3RvciwgaS5lLiAKQEAgLTI4ODksMTQgKzI4NzgsMTYgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdHMoYm9vbCByZWxheW91dENoaWxkcmVu
LCBib29sIGZpeGVkUG9zaXQKICAgICAgICAgICAgICAgICByLT51cGRhdGVMb2dpY2FsV2lkdGgo
KTsKICAgICAgICAgICAgIG9sZExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yQ2hpbGQocik7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKIAorICAg
ICAgICB1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpOworCiAgICAgICAgIC8vIExheSBv
dXQgYWdhaW4gaWYgb3VyIGVzdGltYXRlIHdhcyB3cm9uZy4KLSAgICAgICAgaWYgKG5lZWRzQmxv
Y2tEaXJlY3Rpb25Mb2NhdGlvblNldEJlZm9yZUxheW91dCAmJiBsb2dpY2FsVG9wRm9yQ2hpbGQo
cikgIT0gb2xkTG9naWNhbFRvcCkgeworICAgICAgICBpZiAobmVlZHNCbG9ja0RpcmVjdGlvbkxv
Y2F0aW9uU2V0QmVmb3JlTGF5b3V0ICYmIGxvZ2ljYWxUb3BGb3JDaGlsZChyKSAhPSBvbGRMb2dp
Y2FsVG9wKQogICAgICAgICAgICAgci0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25s
eVRoaXMpOwotICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAgICAgfQorCisg
ICAgICAgIHItPmxheW91dElmTmVlZGVkKCk7CiAgICAgfQogICAgIAogICAgIGlmIChoYXNDb2x1
bW5zKCkpCkBAIC00MjAxLDYgKzQxOTIsOCBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5l
d0Zsb2F0cygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZW5kZXJCb3gqIGNo
aWxkQm94ID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCk7CisgICAgICAgIGVzdGltYXRlUmVn
aW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZEJveCk7CisKICAgICAgICAgTGF5b3V0VW5pdCBjaGls
ZExvZ2ljYWxMZWZ0TWFyZ2luID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
bWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZEJveCkgOiBtYXJnaW5FbmRGb3JDaGlsZChjaGlsZEJv
eCk7CiAKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZWN0ID0gY2hpbGRCb3gtPmZyYW1lUmVjdCgp
OwpAQCAtNDI0OSw4ICs0MjQyLDEwIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3Rmxv
YXRzKCkKICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQmxvY2spCiAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkQmxvY2stPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSwgTWFya09u
bHlUaGlzKTsKLSAgICAgICAgICAgICAgICBjaGlsZEJveC0+bGF5b3V0SWZOZWVkZWQoKTsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChj
aGlsZEJveCk7CisgICAgICAgICAgICBjaGlsZEJveC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHNldExvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxv
YXRMb2dpY2FsTG9jYXRpb24ueSgpKTsKQEAgLTczNjksNyArNzM2NCw3IEBAIGJvb2wgUmVuZGVy
QmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5
UnVsZSBwYWdlQm91CiAKICAgICAvLyBTZWUgaWYgd2UncmUgaW4gdGhlIGxhc3QgcmVnaW9uLgog
ICAgIExheW91dFVuaXQgcGFnZU9mZnNldCA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKSArIGxvZ2ljYWxPZmZzZXQ7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBmbG93VGhy
ZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHBhZ2VPZmZzZXQsIHRoaXMpOworICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBwYWdl
T2Zmc2V0LCB0aGlzKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChyZWdpb24tPmlzTGFzdFJlZ2lvbigpKQpAQCAtNzQyNCw3ICs3NDE5LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayhSZW5kZXJCb3gqIGNoaWxkLCBM
YXlvdXRVbml0IGxvZ2ljYWxPZmYKICAgICAgICAgICAgIHZpZXcoKS0+bGF5b3V0U3RhdGUoKS0+
YWRkRm9yY2VkQ29sdW1uQnJlYWsoY2hpbGQsIGxvZ2ljYWxPZmZzZXQpOwogICAgICAgICBpZiAo
Y2hlY2tSZWdpb25CcmVha3MpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0QnJlYWtB
ZGp1c3RtZW50ID0gMDsKLSAgICAgICAgICAgIGlmIChmbG93VGhyZWFkLT5hZGRGb3JjZWRSZWdp
b25CcmVhayhvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0
LCBjaGlsZCwgdHJ1ZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAo
Zmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9mZnNldCwgY2hpbGQsIHRydWUsICZvZmZzZXRCcmVh
a0FkanVzdG1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgb2Zm
c2V0QnJlYWtBZGp1c3RtZW50OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXh0UGFnZUxv
Z2ljYWxUb3AobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSk7CkBAIC03NDUxLDcg
Kzc0NDYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphcHBseUFmdGVyQnJlYWsoUmVuZGVy
Qm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2ZmcwogICAgICAgICAgICAgdmlldygpLT5s
YXlvdXRTdGF0ZSgpLT5hZGRGb3JjZWRDb2x1bW5CcmVhayhjaGlsZCwgbG9naWNhbE9mZnNldCk7
CiAgICAgICAgIGlmIChjaGVja1JlZ2lvbkJyZWFrcykgewogICAgICAgICAgICAgTGF5b3V0VW5p
dCBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwOwotICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQt
PmFkZEZvcmNlZFJlZ2lvbkJyZWFrKG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAr
IGxvZ2ljYWxPZmZzZXQgKyBtYXJnaW5PZmZzZXQsIGNoaWxkLCBmYWxzZSwgJm9mZnNldEJyZWFr
QWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9u
QnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9m
ZnNldCArIG1hcmdpbk9mZnNldCwgY2hpbGQsIGZhbHNlLCAmb2Zmc2V0QnJlYWtBZGp1c3RtZW50
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldCArIG1hcmdpbk9mZnNldCAr
IG9mZnNldEJyZWFrQWRqdXN0bWVudDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV4dFBh
Z2VMb2dpY2FsVG9wKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpOwpAQCAtNzU1
MCwxMyArNzU0NSwxMyBAQCBib29sIFJlbmRlckJsb2NrOjpwdXNoVG9OZXh0UGFnZVdpdGhNaW5p
bXVtTG9naWNhbEhlaWdodChMYXlvdXRVbml0JiBhZGp1c3RtZW50LAogdm9pZCBSZW5kZXJCbG9j
azo6c2V0UGFnZUJyZWFrKExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRh
Z2UpCiB7CiAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIGZsb3dUaHJlYWQtPnNldFBhZ2VCcmVhayhvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIHNwYWNlU2hvcnRhZ2UpOwor
ICAgICAgICBmbG93VGhyZWFkLT5zZXRQYWdlQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpICsgb2Zmc2V0LCBzcGFjZVNob3J0YWdlKTsKIH0KIAogdm9pZCBSZW5k
ZXJCbG9jazo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91
dFVuaXQgbWluSGVpZ2h0KQogewogICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBmbG93VGhyZWFkLT51cGRh
dGVNaW5pbXVtUGFnZUhlaWdodChvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBv
ZmZzZXQsIG1pbkhlaWdodCk7CisgICAgICAgIGZsb3dUaHJlYWQtPnVwZGF0ZU1pbmltdW1QYWdl
SGVpZ2h0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIG9mZnNldCwg
bWluSGVpZ2h0KTsKICAgICBlbHNlIGlmIChDb2x1bW5JbmZvKiBjb2xJbmZvID0gdmlldygpLT5s
YXlvdXRTdGF0ZSgpLT5tX2NvbHVtbkluZm8pCiAgICAgICAgIGNvbEluZm8tPnVwZGF0ZU1pbmlt
dW1Db2x1bW5IZWlnaHQobWluSGVpZ2h0KTsKIH0KQEAgLTc3NjIsNyArNzc1Nyw3IEBAIFJlbmRl
clJlZ2lvbiogUmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBibG9j
a09mZnNldCkgY29uc3QKICAgICBpZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1Zh
bGlkUmVnaW9uSW5mbygpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmbG93VGhy
ZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2Uo
KSArIGJsb2NrT2Zmc2V0LCB0cnVlKTsKKyAgICByZXR1cm4gZmxvd1RocmVhZC0+cmVnaW9uQXRC
bG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBibG9j
a09mZnNldCwgdHJ1ZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVN0YXRpY0lubGlu
ZVBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
KQpAQCAtNzc5MCwyOCArNzc4NSw3NCBAQCBib29sIFJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhD
aGFuZ2VkSW5SZWdpb25zKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIGNvbgogICAgIHJl
dHVybiBmbG93VGhyZWFkLT5sb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2sodGhp
cyk7CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OmNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit2b2lkIFJlbmRlckJsb2NrOjpjb21w
dXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gqIGJveCkgY29uc3QKIHsK
ICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKGlzUmVuZGVyVmlldygpIHx8IChyZWdpb24gJiYgZmxvd1RocmVhZCkpOwotICAgIGlmIChp
c1JlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIHJlZ2lvbjsKLQotICAgIC8vIFdlIG5lZWQg
dG8gY2xhbXAgdG8gdGhlIGJsb2NrLCBzaW5jZSB3ZSB3YW50IGFueSBsaW5lcyBvciBibG9ja3Mg
dGhhdCBvdmVyZmxvdyBvdXQgb2YgdGhlCi0gICAgLy8gbG9naWNhbCB0b3Agb3IgbG9naWNhbCBi
b3R0b20gb2YgdGhlIGJsb2NrIHRvIHNpemUgYXMgdGhvdWdoIHRoZSBib3JkZXIgYm94IGluIHRo
ZSBmaXJzdCBhbmQKLSAgICAvLyBsYXN0IHJlZ2lvbnMgZXh0ZW5kZWQgaW5maW5pdGVseS4gT3Ro
ZXJ3aXNlIHRoZSBsaW5lcyBhcmUgZ29pbmcgdG8gc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIHJlZ2lv
bnMKLSAgICAvLyB0aGV5IG92ZXJmbG93IGludG8sIHdoaWNoIG1ha2VzIG5vIHNlbnNlIHdoZW4g
dGhpcyBibG9jayBkb2Vzbid0IGV4aXN0IGluIHxyZWdpb258IGF0IGFsbC4KLSAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOworICAgIFJl
bmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9u
ID0gMDsKICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKTsKLSAgICAKLSAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5s
b2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9w
Rm9yRmxvd1RocmVhZENvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXJ0UmVnaW9uOwotICAg
IGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSA+IGVuZFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCi0gICAgICAg
IHJldHVybiBlbmRSZWdpb247Ci0gICAgCi0gICAgcmV0dXJuIHJlZ2lvbjsKKworICAgIGlmICgh
c3RhcnRSZWdpb24gfHwgIWVuZFJlZ2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0
VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICBpZiAoYm94LT5pc1Vuc3BsaXR0YWJsZUZvclBh
Z2luYXRpb24oKSkKKyAgICAgICAgc3RhcnRSZWdpb24gPSBlbmRSZWdpb24gPSBmbG93VGhyZWFk
LT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJl
Z2lvbiwgdHJ1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVh
ZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RS
ZWdpb24sIHRydWUpOworICAgICAgICBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJs
b2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGxvZ2lj
YWxIZWlnaHRGb3JDaGlsZChib3gpLCB0cnVlKTsKKyAgICB9CisKKyAgICBBU1NFUlQoc3RhcnRS
ZWdpb24gJiYgZW5kUmVnaW9uKTsKKworICAgIGZsb3dUaHJlYWQtPnNldFJlZ2lvblJhbmdlRm9y
Qm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6
OmVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChSZW5kZXJCb3gqIGJveCkgY29uc3QKK3sK
KyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGJveC0+aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgY29tcHV0ZVJl
Z2lvblJhbmdlRm9yQm94Q2hpbGQoYm94KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBlc3RpbWF0ZWRWYWx1ZXM7CisgICAgYm94LT5j
b21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0OjptYXgoKSAvIDIsIGxvZ2ljYWxUb3BGb3JD
aGlsZChib3gpLCBlc3RpbWF0ZWRWYWx1ZXMpOworCisgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+cmVn
aW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24s
IHRydWUpOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9u
QXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gKyBl
c3RpbWF0ZWRWYWx1ZXMubV9leHRlbnQsIHRydWUpOworCisgICAgaWYgKCFzdGFydFJlZ2lvbiB8
fCAhZW5kUmVnaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG93VGhyZWFkLT5zZXRSZWdp
b25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworfQorCit2b2lkIFJl
bmRlckJsb2NrOjp1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKFJlbmRlckJveCogYm94KSBj
b25zdAoreworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFmbG93VGhyZWFkKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVu
ZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBz
dGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKworICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJveENo
aWxkKGJveCk7CisKKyAgICBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0gMDsKKyAgICBS
ZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9u
UmFuZ2VGb3JCb3goYm94LCBuZXdTdGFydFJlZ2lvbiwgbmV3RW5kUmVnaW9uKTsKKworICAgIGlm
IChuZXdTdGFydFJlZ2lvbiAhPSBzdGFydFJlZ2lvbiB8fCBuZXdFbmRSZWdpb24gIT0gZW5kUmVn
aW9uKQorICAgICAgICBib3gtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlckJsb2NrOjpjb2xsYXBzZWRNYXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gqIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRl
eCBjZTFhMDUzNjFkNWQxZDExYzZmNWVlZTU3NWY2OTViM2I2OWQ2ZjA2Li41ODI5NDc5MDM1MTQx
YTZiNDNhMTIzNzg1NzcxOWFmODU2OGRmNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaApAQCAtMzQ1LDkgKzM0NSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIEFjY2Vzc29y
cyBmb3IgbG9naWNhbCB3aWR0aC9oZWlnaHQgYW5kIG1hcmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcg
YmxvY2sncyBibG9jay1mbG93IGRpcmVjdGlvbi4KICAgICBlbnVtIEFwcGx5TGF5b3V0RGVsdGFN
b2RlIHsgQXBwbHlMYXlvdXREZWx0YSwgRG9Ob3RBcHBseUxheW91dERlbHRhIH07Ci0gICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGhGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+
aGVpZ2h0KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hp
bGQtPmhlaWdodCgpIDogY2hpbGQtPndpZHRoKCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxU
b3BGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6IGNoaWxkLT54KCk7IH0KKyAgICBMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5o
ZWlnaHQoKTsgfQorICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+d2lkdGgoKTsgfQorICAgIExheW91dFVuaXQgbG9n
aWNhbFRvcEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQogICAg
IHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0
YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxheW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlv
dXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGNoaWxkLT5tYXJnaW5CZWZv
cmUoc3R5bGUoKSk7IH0KQEAgLTU3Niw5ICs1NzYsMTIgQEAgcHJvdGVjdGVkOgogICAgIH0KICNl
bmRpZgogCi0gICAgYm9vbCB1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxkTGF5
b3V0KFJlbmRlckZsb3dUaHJlYWQqKTsKLSAgICB2b2lkIHVwZGF0ZVJlZ2lvbnNBbmRFeGNsdXNp
b25zQWZ0ZXJDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiwgYm9vbCBoZWlnaHRDaGFuZ2Vk
ID0gZmFsc2UpOwotICAgIHZvaWQgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2soUmVuZGVyRmxv
d1RocmVhZCopOworICAgIGJvb2wgdXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0KCk7
CisgICAgdm9pZCB1cGRhdGVFeGNsdXNpb25zQWZ0ZXJCbG9ja0xheW91dChib29sIGhlaWdodENo
YW5nZWQgPSBmYWxzZSk7CisgICAgdm9pZCBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChj
b25zdCBSZW5kZXJCb3gqKSBjb25zdDsKKworICAgIHZvaWQgZXN0aW1hdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKFJlbmRlckJveCopIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUmVnaW9uUmFuZ2VG
b3JCb3hDaGlsZChSZW5kZXJCb3gqKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQmxvY2tDaGls
ZERpcnR5Qml0c0JlZm9yZUxheW91dChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFJlbmRlckJveCop
OwogCkBAIC0xMTUyLDcgKzExNTUsNiBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdDsKICAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCkgY29uc3Q7Ci0g
ICAgUmVuZGVyUmVnaW9uKiBjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiop
IGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0
aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCmluZGV4IGM5NTRmNGQ4YWMxZWZkZjM0NDAzNmQ3N2UzMjM5NzBjYjZiYzI3Yzgu
LmU0N2YyYmQxMjY4NDFiMTMyYjAwMGUyZDQ1NGQ5NjI5ZjUxOWMyYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0yMTMx
LDYgKzIxMzEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbgogICAgICAgICBWZWN0b3I8UmVu
ZGVyQm94Kj4gcmVwbGFjZWRDaGlsZHJlbjsKICAgICAgICAgZm9yIChJbmxpbmVXYWxrZXIgd2Fs
a2VyKHRoaXMpOyAhd2Fsa2VyLmF0RW5kKCk7IHdhbGtlci5hZHZhbmNlKCkpIHsKICAgICAgICAg
ICAgIFJlbmRlck9iamVjdCogbyA9IHdhbGtlci5jdXJyZW50KCk7CisKICAgICAgICAgICAgIGlm
ICghaGFzSW5saW5lQ2hpbGQgJiYgby0+aXNJbmxpbmUoKSkKICAgICAgICAgICAgICAgICBoYXNJ
bmxpbmVDaGlsZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggNTBhY2RkNDZhNzk1NGIwODNiYjAxZWUwMjhkNTBmZTVhZmNlZWVhNS4uMWJjZDA3MjQy
MDU2MmU1MmEyZGZmZjE3ZWJmYzJiODU2ZWFlMDUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTEwNiwxMCArMTA2LDQ3IEBAIFJlbmRlckJveDo6flJlbmRlckJv
eCgpCiB7CiB9CiAKK1JlbmRlclJlZ2lvbiogUmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRFbmRS
ZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAoreworICAgIFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CisKKyAgICBBU1NF
UlQoaXNSZW5kZXJWaWV3KCkgfHwgKHJlZ2lvbiAmJiBmbG93VGhyZWFkKSk7CisgICAgaWYgKGlz
UmVuZGVyVmlldygpKQorICAgICAgICByZXR1cm4gcmVnaW9uOworCisgICAgLy8gV2UgbmVlZCB0
byBjbGFtcCB0byB0aGUgYmxvY2ssIHNpbmNlIHdlIHdhbnQgYW55IGxpbmVzIG9yIGJsb2NrcyB0
aGF0IG92ZXJmbG93IG91dCBvZiB0aGUKKyAgICAvLyBsb2dpY2FsIHRvcCBvciBsb2dpY2FsIGJv
dHRvbSBvZiB0aGUgYmxvY2sgdG8gc2l6ZSBhcyB0aG91Z2ggdGhlIGJvcmRlciBib3ggaW4gdGhl
IGZpcnN0IGFuZAorICAgIC8vIGxhc3QgcmVnaW9ucyBleHRlbmRlZCBpbmZpbml0ZWx5LiBPdGhl
cndpc2UgdGhlIGxpbmVzIGFyZSBnb2luZyB0byBzaXplIGFjY29yZGluZyB0byB0aGUgcmVnaW9u
cworICAgIC8vIHRoZXkgb3ZlcmZsb3cgaW50bywgd2hpY2ggbWFrZXMgbm8gc2Vuc2Ugd2hlbiB0
aGlzIGJsb2NrIGRvZXNuJ3QgZXhpc3QgaW4gfHJlZ2lvbnwgYXQgYWxsLgorICAgIFJlbmRlclJl
Z2lvbiogc3RhcnRSZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsK
KyAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwg
ZW5kUmVnaW9uKTsKKyAgICAKKyAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2Fs
VG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxv
d1RocmVhZENvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXJ0UmVnaW9uOworICAgIGlmIChl
bmRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVu
ZFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgICAgIHJldHVy
biBlbmRSZWdpb247CisgICAgCisgICAgcmV0dXJuIHJlZ2lvbjsKK30KKwogTGF5b3V0UmVjdCBS
ZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgUmVu
ZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKIHsKICAgICBpZiAoIXJlZ2lv
bikKICAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKKworICAgIFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFm
bG93VGhyZWFkKQorICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworCisgICAgUmVuZGVy
UmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAw
OworICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pOworCisgICAgaWYgKCFzdGFydFJlZ2lvbiB8fCAhZW5kUmVnaW9uKQorICAg
ICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworCisgICAgcmVnaW9uID0gY2xhbXBUb1N0YXJ0
QW5kRW5kUmVnaW9ucyhyZWdpb24pOwogICAgIAogICAgIC8vIENvbXB1dGUgdGhlIGxvZ2ljYWwg
d2lkdGggYW5kIHBsYWNlbWVudCBpbiB0aGlzIHJlZ2lvbi4KICAgICBSZW5kZXJCb3hSZWdpb25J
bmZvKiBib3hJbmZvID0gcmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24sIGNhY2hlRmxhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNTc5MTFhZDMyOGYzNzk5Y2Q2Yzlh
YzM1Zjk2MTI1MTk3M2QwMGIzMC4uMWZlYmZlN2I2YWRhOGI4N2Y2ZTdjZjcwODI0YmI5NWI2ODcy
MWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMzYwLDYgKzM2MCw3
IEBAIHB1YmxpYzoKIAogICAgIGVudW0gUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzIHsgQ2FjaGVS
ZW5kZXJCb3hSZWdpb25JbmZvLCBEb05vdENhY2hlUmVuZGVyQm94UmVnaW9uSW5mbyB9OwogICAg
IExheW91dFJlY3QgYm9yZGVyQm94UmVjdEluUmVnaW9uKFJlbmRlclJlZ2lvbiosIFJlbmRlckJv
eFJlZ2lvbkluZm9GbGFncyA9IENhY2hlUmVuZGVyQm94UmVnaW9uSW5mbykgY29uc3Q7CisgICAg
UmVuZGVyUmVnaW9uKiBjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiopIGNv
bnN0OwogICAgIHZvaWQgY2xlYXJSZW5kZXJCb3hSZWdpb25JbmZvKCk7CiAgICAgdmlydHVhbCBM
YXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHAKaW5kZXggMmJkYmE5YjhjYzJiM2UzN2Q5ZjkyNmRlODE4ZTRjYjkwYzRi
YjU4ZC4uMDdhMWMzZTk5NTMzOWQ0YmZmYjIyMjRhN2ZmNzUzZTRkMmI1ZGVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAg
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2Nr
KCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAg
ICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5k
RXhjbHVzaW9uc0JlZm9yZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRhdGVF
eGNsdXNpb25zQmVmb3JlQmxvY2tMYXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9
IHRydWU7CiAKICAgICBMYXlvdXRTaXplIHByZXZpb3VzU2l6ZSA9IHNpemUoKTsKQEAgLTM0Nyw3
ICszNDcsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgbGF5b3V0UG9zaXRpb25l
ZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdp
b25zQW5kRXhjbHVzaW9uc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCk7CisgICAgdXBkYXRl
RXhjbHVzaW9uc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIGlmICghaXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIGhlaWdodCgpID09IDApIHsKICAgICAgICAgLy8gV2UgYXJl
IGEgYmxvY2sgd2l0aCBubyBib3JkZXIgYW5kIHBhZGRpbmcgYW5kIGEgY29tcHV0ZWQgaGVpZ2h0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRl
eCA3YzY0ODEwZmFlZTNmYTBlMTk4NTJiMmYyYmE2NjMyZmMyMzc1Yjc5Li4yYTNlNjYwNzI0ZDFh
MjYwMzIzNDNkMWQ2ZGYzZWZjYTdlMDQ1MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQpCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWlu
aW5nQmxvY2soKTsKICAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhy
ZWFkKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVJl
Z2lvbnNBbmRFeGNsdXNpb25zQmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCkpCisgICAgaWYg
KHVwZGF0ZUV4Y2x1c2lvbnNCZWZvcmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91dENo
aWxkcmVuID0gdHJ1ZTsKIAogICAgIG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5l
ID0gLTE7CkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgbGF5b3V0UG9z
aXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRh
dGVSZWdpb25zQW5kRXhjbHVzaW9uc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCk7CisgICAg
dXBkYXRlRXhjbHVzaW9uc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIHJlcGFpbnRDaGlsZHJl
bkR1cmluZ0xheW91dElmTW92ZWQob2xkQ2hpbGRSZWN0cyk7CiAgICAgLy8gRklYTUU6IGNzczMv
ZmxleGJveC9yZXBhaW50LXJ0bC1jb2x1bW4uaHRtbCBzZWVtcyB0byByZXBhaW50IG1vcmUgb3Zl
cmZsb3cgdGhhbiBpdCBuZWVkcyB0by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcAppbmRleCA3MDIwOGY2NmU2NWE0Y2E1YThkZGI0MTQyOGJiODZkMWU4
ZmNmNWJiLi5mYzQyMGYwNzdhMjllZjQ3Y2RiZDMxMGUwZjEwMTYxMmE1NzA3YjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xODUsNiAr
MTg1LDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp2YWxpZGF0ZVJlZ2lvbnMoKQogCiAgICAg
ICAgICAgICAgICAgcHJldmlvdXNSZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb25Mb2dpY2FsV2lk
dGg7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFJlZ2lvblJhbmdlRm9yQm94KHRo
aXMsIG1fcmVnaW9uTGlzdC5maXJzdCgpLCBtX3JlZ2lvbkxpc3QubGFzdCgpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzc2LDMzICszNzgsNDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpy
ZXBhaW50UmVjdGFuZ2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LAog
ICAgIH0KIH0KIAotUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2Nr
T2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1
dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQorUmVuZGVyUmVnaW9uKiBS
ZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCogY2xh
bXBCb3gsIExheW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1
dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQogewogICAgIEFTU0VSVCgh
bV9yZWdpb25zSW52YWxpZGF0ZWQpOwogCiAgICAgaWYgKGF1dG9HZW5lcmF0aW9uUG9saWN5ID09
IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pCiAgICAgICAgIGF1dG9HZW5lcmF0ZVJlZ2lvbnNU
b0Jsb2NrT2Zmc2V0KG9mZnNldCk7CiAKLSAgICBpZiAob2Zmc2V0IDw9IDApCi0gICAgICAgIHJl
dHVybiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpID8gMCA6IG1fcmVnaW9uTGlzdC5maXJzdCgpOwor
ICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gMDsKKyAgICBpZiAob2Zmc2V0IDw9IDApIHsKKyAg
ICAgICAgcmVnaW9uID0gbV9yZWdpb25MaXN0LmlzRW1wdHkoKSA/IDAgOiBtX3JlZ2lvbkxpc3Qu
Zmlyc3QoKTsKKyAgICAgICAgaWYgKCFjbGFtcEJveCkKKyAgICAgICAgICAgIHJldHVybiByZWdp
b247CisgICAgICAgIHJldHVybiByZWdpb24gPyBjbGFtcEJveC0+Y2xhbXBUb1N0YXJ0QW5kRW5k
UmVnaW9ucyhyZWdpb24pIDogMDsKKyAgICB9CiAKICAgICBSZWdpb25TZWFyY2hBZGFwdGVyIGFk
YXB0ZXIob2Zmc2V0KTsKICAgICBtX3JlZ2lvbkludGVydmFsVHJlZS5hbGxPdmVybGFwc1dpdGhB
ZGFwdGVyPFJlZ2lvblNlYXJjaEFkYXB0ZXI+KGFkYXB0ZXIpOwogCiAgICAgLy8gSWYgbm8gcmVn
aW9uIHdhcyBmb3VuZCwgdGhlIG9mZnNldCBpcyBpbiB0aGUgZmxvdyB0aHJlYWQgb3ZlcmZsb3cu
CiAgICAgLy8gVGhlIGxhc3QgcmVnaW9uIHdpbGwgY29udGFpbiB0aGUgb2Zmc2V0IGlmIGV4dGVu
ZExhc3RSZWdpb24gaXMgc2V0IG9yIGlmIHRoZSBsYXN0IHJlZ2lvbiBpcyBhIHNldC4KLSAgICBp
ZiAoIWFkYXB0ZXIucmVzdWx0KCkgJiYgIW1fcmVnaW9uTGlzdC5pc0VtcHR5KCkgJiYgKGV4dGVu
ZExhc3RSZWdpb24gfHwgbV9yZWdpb25MaXN0Lmxhc3QoKS0+aXNSZW5kZXJSZWdpb25TZXQoKSkp
Ci0gICAgICAgIHJldHVybiBtX3JlZ2lvbkxpc3QubGFzdCgpOworICAgIGlmICghYWRhcHRlci5y
ZXN1bHQoKSAmJiAhbV9yZWdpb25MaXN0LmlzRW1wdHkoKSAmJiAoZXh0ZW5kTGFzdFJlZ2lvbiB8
fCBtX3JlZ2lvbkxpc3QubGFzdCgpLT5pc1JlbmRlclJlZ2lvblNldCgpKSkgeworICAgICAgICBy
ZWdpb24gPSBtX3JlZ2lvbkxpc3QubGFzdCgpOworICAgICAgICBpZiAoIWNsYW1wQm94KQorICAg
ICAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAgICAgICAgcmV0dXJuIHJlZ2lvbiA/IGNsYW1wQm94
LT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbikgOiAwOworICAgIH0KIAotICAgIHJl
dHVybiBhZGFwdGVyLnJlc3VsdCgpOworICAgIHJlZ2lvbiA9IGFkYXB0ZXIucmVzdWx0KCk7Cisg
ICAgaWYgKCFjbGFtcEJveCkKKyAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAgICByZXR1cm4gcmVn
aW9uID8gY2xhbXBCb3gtPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKSA6IDA7CiB9
CiAgICAgCiBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVs
YXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94TW9kZWxP
YmplY3QsIGNvbnN0IExheW91dFBvaW50JiBzdGFydFBvaW50KQogewogICAgIExheW91dFBvaW50
IHJlZmVyZW5jZVBvaW50ID0gc3RhcnRQb2ludDsKICAgICAKKyAgICBjb25zdCBSZW5kZXJCbG9j
ayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7
CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgYWRhcHRlZCBmb3IgZGlmZmVyZW50IHdy
aXRpbmcgbW9kZXMgaW5zaWRlIHRoZSBmbG93IHRocmVhZC4KLSAgICBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChyZWZlcmVuY2VQb2ludC55KCkpOworICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9iakNvbnRh
aW5pbmdCbG9jaywgcmVmZXJlbmNlUG9pbnQueSgpKTsKICAgICBpZiAoc3RhcnRSZWdpb24pIHsK
ICAgICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIG9mZnNldCBjb29yZGluYXRlcyBvZiB0
aGUgcmVnaW9uLgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3Vyck9iamVjdCA9IHN0
YXJ0UmVnaW9uOwpAQCAtNDIyLDcgKzQzNyw2IEBAIExheW91dFBvaW50IFJlbmRlckZsb3dUaHJl
YWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IFJlbmRlCiAg
ICAgICAgIC8vIGFuZCBpZiBzbywgZHJvcCB0aGUgb2JqZWN0J3MgdG9wIHBvc2l0aW9uICh3aGlj
aCB3YXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5pbmcgYmxvY2sKICAgICAgICAg
Ly8gYW5kIGlzIG5vIGxvbmdlciB2YWxpZCkgYW5kIHJlY29tcHV0ZSBpdCB1c2luZyB0aGUgcmVn
aW9uIGluIHdoaWNoIGl0IGZsb3dzIGFzIHJlZmVyZW5jZS4KICAgICAgICAgYm9vbCB3YXNDb21w
dXRlZFJlbGF0aXZlVG9PdGhlclJlZ2lvbiA9IGZhbHNlOwotICAgICAgICBjb25zdCBSZW5kZXJC
bG9jayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2Nr
KCk7CiAgICAgICAgIHdoaWxlIChvYmpDb250YWluaW5nQmxvY2sgJiYgIW9iakNvbnRhaW5pbmdC
bG9jay0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgdGhpcyBvYmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgcmVnaW9uLgogICAgICAgICAgICAgUmVu
ZGVyUmVnaW9uKiBwYXJlbnRTdGFydFJlZ2lvbiA9IDA7CkBAIC00ODAsMTkgKzQ5NCwxOSBAQCBM
YXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09m
ZnNldFBhcmVudChjb25zdCBSZW5kZQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBh
Z2VMb2dpY2FsVG9wRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxv
d1JlZ2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICByZXR1cm4gcmVnaW9uID8gcmVnaW9uLT5wYWdl
TG9naWNhbFRvcEZvck9mZnNldChvZmZzZXQpIDogTGF5b3V0VW5pdCgpOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsV2lkdGhGb3JPZmZzZXQoTGF5b3V0VW5p
dCBvZmZzZXQpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zm
c2V0KG9mZnNldCwgdHJ1ZSk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJs
b2NrT2Zmc2V0KDAsIG9mZnNldCwgdHJ1ZSwgQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAg
ICAgcmV0dXJuIHJlZ2lvbiA/IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpIDogY29udGVudExv
Z2ljYWxXaWR0aCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dp
Y2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxvd1Jl
Z2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTUwMSw3ICs1MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VM
b2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogCiBMYXlvdXRVbml0IFJl
bmRlckZsb3dUaHJlYWQ6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91
dFVuaXQgb2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpCiB7Ci0gICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7CisgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KDAsIG9mZnNldCwgZmFs
c2UsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAg
ICByZXR1cm4gMDsKIApAQCAtNTE3LDcgKzUzMSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxvd1Ro
cmVhZDo6cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZz
CiAgICAgcmV0dXJuIHJlbWFpbmluZ0hlaWdodDsKIH0KIAotUmVuZGVyUmVnaW9uKiBSZW5kZXJG
bG93VGhyZWFkOjptYXBGcm9tRmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSkgY29uc3QKK1JlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dU
b1JlZ2lvbihjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIWhhc1ZhbGlkUmVnaW9uSW5mbygpKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTUzMCw3ICs1NDQsNyBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dU
aHJlYWQ6Om1hcEZyb21GbG93VG9SZWdpb24oVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YQog
ICAgIC8vIE5vdGU6IFVzaW5nIHRoZSBjZW50ZXIgaW4gb3JkZXIgdG8gYXZvaWQgcm91bmRpbmcg
ZXJyb3JzLgogCiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gYm94UmVjdC5jZW50ZXIoKTsKLSAg
ICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9IGNvbnN0X2Nhc3Q8UmVuZGVyRmxvd1RocmVh
ZCo+KHRoaXMpLT5yZWdpb25BdEJsb2NrT2Zmc2V0KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBjZW50ZXIueSgpIDogY2VudGVyLngoKSwgdHJ1ZSwgRGlzYWxsb3dSZWdpb25BdXRvR2VuZXJh
dGlvbik7CisgICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSBjb25zdF9jYXN0PFJlbmRl
ckZsb3dUaHJlYWQqPih0aGlzKS0+cmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgpLCB0cnVlLCBEaXNhbGxv
d1JlZ2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlbmRlclJlZ2lvbikKICAgICAgICAg
cmV0dXJuIDA7CiAKQEAgLTU4NCwyMSArNTk4LDE4IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6
bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBi
CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247CiAgICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3go
YmxvY2ssIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogCi0gICAgLy8gV2hlbiB0aGUgcmVnaW9u
IGNoYWluIGlzIGludmFsaWRhdGVkIHRoZSBib3ggaW5mb3JtYXRpb24gaXMgZGlzY2FyZGVkIHNv
IHdlIG11c3QgYXNzdW1lIHRoZSB3aWR0aCBoYXMgY2hhbmdlZC4KLSAgICBpZiAobV9wYWdlTG9n
aWNhbFNpemVDaGFuZ2VkICYmICFzdGFydFJlZ2lvbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
ICAgICAvLyBOb3QgbmVjZXNzYXJ5IGZvciB0aGUgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIGFscmVh
ZHkgY29tcHV0ZWQgdGhlIGNvcnJlY3QgaW5mbyBmb3IgaXQuCiAgICAgaWYgKGJsb2NrID09IHRo
aXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBm
b3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChz
dGFydFJlZ2lvbik7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKICAgICAgICAgQVNTRVJUKCFyZWdpb24t
Pm5lZWRzTGF5b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKIAorICAgICAg
ICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZvciB0aGlzIHJlZ2lvbiBzbyB3
ZSBuZWVkIHRvIGRvIGl0LgogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xk
SW5mbyA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwogICAgICAgICBp
ZiAoIW9sZEluZm8pCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFdpZHRoID0gb2xkSW5mby0+bG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIG5ld0luZm8gPSBibG9j
ay0+cmVuZGVyQm94UmVnaW9uSW5mbyhyZWdpb24pOwpAQCAtNjc2LDE0ICs2ODcsMzEgQEAgdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0LAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpz
ZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgTGF5b3V0VW5pdCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKQordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVh
clJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uKQogewogICAgIGlmICghaGFzUmVn
aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogTm90IHJpZ2h0IGZvciBk
aWZmZXJpbmcgd3JpdGluZy1tb2Rlcy4KLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0g
cmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCB0cnVl
KTsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSArIGJveC0+bG9naWNhbEhlaWdodCgpLCB0cnVl
KTsKKyAgICBBU1NFUlQoc3RhcnRSZWdpb24gJiYgZW5kUmVnaW9uKTsKKworICAgIGZvciAoUmVu
ZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVn
aW9uKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAocmVnaW9uLT5yZW5kZXJCb3hS
ZWdpb25JbmZvKGJveCkpCisgICAgICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lv
bkluZm8oYm94KTsKKworICAgICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoYm94
KTsKK30KKwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25z
dCBSZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9u
KiBlbmRSZWdpb24pCit7CisgICAgaWYgKCFoYXNSZWdpb25zKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEFTU0VSVChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pOwogICAgIFJlbmRlclJlZ2lv
blJhbmdlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChib3gpOwogICAg
IGlmIChpdCA9PSBtX3JlZ2lvblJhbmdlTWFwLmVuZCgpKSB7CiAgICAgICAgIG1fcmVnaW9uUmFu
Z2VNYXAuc2V0KGJveCwgUmVuZGVyUmVnaW9uUmFuZ2Uoc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikp
OwpAQCAtNjk2LDIxICs3MjQsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJh
bmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChy
YW5nZS5zdGFydFJlZ2lvbigpID09IHN0YXJ0UmVnaW9uICYmIHJhbmdlLmVuZFJlZ2lvbigpID09
IGVuZFJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRGVsZXRlIGFueSBpbmZvIHRo
YXQgd2UgZmluZCBiZWZvcmUgb3VyIG5ldyBzdGFydFJlZ2lvbiBhbmQgYWZ0ZXIgb3VyIG5ldyBl
bmRSZWdpb24uCi0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9y
ZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsK
LSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKHJlZ2lv
biA9PSBzdGFydFJlZ2lvbikgewotICAgICAgICAgICAgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5k
KGVuZFJlZ2lvbik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJlZ2lvbi0+cmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhib3gpOwotCi0gICAgICAgIGlmIChy
ZWdpb24gPT0gcmFuZ2UuZW5kUmVnaW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24o
KSwgcmFuZ2UuZW5kUmVnaW9uKCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIC8vIEZJ
WE1FOiBFdmVudHVhbGx5IGJlIHNtYXJ0ZXIgYWJvdXQgdGhpcyAoZS5nLiBwdXQgYSBmbGFnIG9u
IHRoZSBib3ggdG8gaW52YWxpZGF0ZSB0aGUgaW5mbykuCisgICAgY2xlYXJSZW5kZXJCb3hSZWdp
b25JbmZvKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9uKCkpOwogICAg
IHJhbmdlLnNldFJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogfQogCkBAIC03MzIsNyAr
NzQ3LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphcHBseUJyZWFrQWZ0ZXJDb250ZW50KExh
eW91dFVuaXQgY2xpZW50SGVpZ2h0KQogewogICAgIC8vIFNpbXVsYXRlIGEgcmVnaW9uIGJyZWFr
IGF0IGhlaWdodC4gSWYgaXQgcG9pbnRzIGluc2lkZSBhbiBhdXRvIGxvZ2ljYWwgaGVpZ2h0IHJl
Z2lvbiwKICAgICAvLyB0aGVuIGl0IG1heSBkZXRlcm1pbmUgdGhlIHJlZ2lvbiBvdmVycmlkZSBs
b2dpY2FsIGNvbnRlbnQgaGVpZ2h0LgotICAgIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNsaWVudEhl
aWdodCwgdGhpcywgZmFsc2UpOworICAgIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKHRoaXMsIGNsaWVu
dEhlaWdodCwgdGhpcywgZmFsc2UpOwogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1
dGVPdmVyZmxvd1N0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSkK
QEAgLTkzMSw3ICs5NDYsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZVJlZ2lvbnNG
bG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgUmVuZGVyUmVnaW9uKiBsYQogLy8gRXZlbiBpZiB3
ZSByZXF1aXJlIHRoZSBicmVhayB0byBvY2N1ciBhdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwg
YmVjYXVzZSByZWdpb25zIG1heSBoYXZlIG1pbi9tYXgtaGVpZ2h0IHZhbHVlcywKIC8vIGl0IGlz
IHBvc3NpYmxlIHRoYXQgdGhlIGJyZWFrIHdpbGwgb2NjdXIgYXQgYSBkaWZmZXJlbnQgb2Zmc2V0
IHRoYW4gdGhlIG9yaWdpbmFsIG9uZSByZXF1aXJlZC4KIC8vIG9mZnNldEJyZWFrQWRqdXN0bWVu
dCBtZWFzdXJlcyB0aGUgZGlmZmVyZW50IGJldHdlZW4gdGhlIHJlcXVlc3RlZCBicmVhayBvZmZz
ZXQgYW5kIHRoZSBjdXJyZW50IGJyZWFrIG9mZnNldC4KLWJvb2wgUmVuZGVyRmxvd1RocmVhZDo6
YWRkRm9yY2VkUmVnaW9uQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwg
UmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZz
ZXRCcmVha0FkanVzdG1lbnQpCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lv
bkJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXRCcmVha0lu
Rmxvd1RocmVhZCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlv
dXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1lbnQpCiB7CiAgICAgLy8gV2UgdGFrZSBicmVha3Mg
aW50byBhY2NvdW50IGZvciBoZWlnaHQgY29tcHV0YXRpb24gZm9yIGF1dG8gbG9naWNhbCBoZWln
aHQgcmVnaW9ucwogICAgIC8vIG9ubHkgaW4gdGhlIGxheW91dCBwaGFzZSBpbiB3aGljaCB3ZSBs
YXkgb3V0IHRoZSBmbG93cyB0aHJlYWRzIHVuY29uc3RyYWluZWQKQEAgLTk1OCw3ICs5NzMsNyBA
QCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKExheW91dFVuaXQg
b2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQsCiAKICAgICAvLyBTaW11bGF0ZSBhIHJlZ2lvbiBicmVh
ayBhdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZC4gSWYgaXQgcG9pbnRzIGluc2lkZSBhbiBhdXRv
IGxvZ2ljYWwgaGVpZ2h0IHJlZ2lvbiwKICAgICAvLyB0aGVuIGl0IGRldGVybWluZXMgdGhlIHJl
Z2lvbiBvdmVycmlkZSBsb2dpY2FsIGNvbnRlbnQgaGVpZ2h0LgotICAgIFJlbmRlclJlZ2lvbiog
cmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7Cisg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBvZmZz
ZXRCcmVha0luRmxvd1RocmVhZCk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTE1OSw3ICsxMTc0LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjptYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnQKICAg
ICBpZiAodGhpcyA9PSByZXBhaW50Q29udGFpbmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoUmVuZGVyUmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxvd1RvUmVnaW9uKHRyYW5zZm9ybVN0
YXRlKSkKKyAgICBpZiAoUmVuZGVyUmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxvd1RvUmVnaW9u
KHRoaXMsIHRyYW5zZm9ybVN0YXRlKSkKICAgICAgICAgLy8gRklYTUU6IFRoZSBjYXN0IGJlbG93
IGlzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBzb2x1dGlvbiwgd2UgbWF5IG5lZWQgdG8gZmluZCBh
IGJldHRlciB3YXkuCiAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlck9iamVjdCo+KHJl
Z2lvbiktPm1hcExvY2FsVG9Db250YWluZXIocmVnaW9uLT5jb250YWluZXJGb3JSZXBhaW50KCks
IHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAxM2JkNzI2OGUzODA5ZTc4N2VlNzU1MDc1
Yzk3MWExMTVjODk1ZmYyLi40ODIzMjJiMTU2YzExNThmODI4NGZjOTUyYzI3ZTc5M2JjYWQ3NDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTEw
MywxOSArMTAzLDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
Rm9yT2Zmc2V0KExheW91dFVuaXQpOwogICAgIExheW91dFVuaXQgcGFnZVJlbWFpbmluZ0xvZ2lj
YWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCwgUGFnZUJvdW5kYXJ5UnVsZSA9IEluY2x1ZGVQ
YWdlQm91bmRhcnkpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBhZ2VCcmVhayhMYXlvdXRVbml0
IC8qb2Zmc2V0Ki8sIExheW91dFVuaXQgLypzcGFjZVNob3J0YWdlKi8pIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChMYXlvdXRVbml0IC8qb2Zmc2V0Ki8sIExh
eW91dFVuaXQgLyptaW5IZWlnaHQqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VCcmVh
ayhjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgLypvZmZzZXQqLywgTGF5b3V0VW5pdCAv
KnNwYWNlU2hvcnRhZ2UqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU1pbmltdW1QYWdl
SGVpZ2h0KGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRV
bml0IC8qbWluSGVpZ2h0Ki8pIHsgfQogCiAgICAgZW51bSBSZWdpb25BdXRvR2VuZXJhdGlvblBv
bGljeSB7CiAgICAgICAgIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24sCiAgICAgICAgIERpc2Fs
bG93UmVnaW9uQXV0b0dlbmVyYXRpb24sCiAgICAgfTsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
bkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uID0gZmFsc2Us
IFJlZ2lvbkF1dG9HZW5lcmF0aW9uUG9saWN5ID0gQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7
CisKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoY29uc3QgUmVuZGVyQm94
KiwgTGF5b3V0VW5pdCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uID0gZmFsc2UsIFJlZ2lvbkF1dG9H
ZW5lcmF0aW9uUG9saWN5ID0gQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAKICAgICBib29s
IHJlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9u
c0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoOyB9CiAgICAgYm9vbCByZWdpb25zSGF2ZVVuaWZvcm1M
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2Fs
SGVpZ2h0OyB9CiAKLSAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24oVHJhbnNm
b3JtU3RhdGUmKSBjb25zdDsKKyAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24o
Y29uc3QgUmVuZGVyQmxvY2sqLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCopOwogICAgIGJvb2wgbG9naWNhbFdp
ZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7CkBAIC0xMjcs
NyArMTI4LDcgQEAgcHVibGljOgogICAgIFJlbmRlclJlZ2lvbiogZmlyc3RSZWdpb24oKSBjb25z
dDsKICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWdpb24oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94KGNv
bnN0IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiosIFJlbmRlclJlZ2lvbiopOwogICAgIHZvaWQg
Z2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiYgc3Rh
cnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikgY29uc3Q7CiAKICAgICB2b2lkIGNs
ZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0KiwKQEAgLTE0Myw3
ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtBdXRvTG9naWNhbEhlaWdodFJlZ2lv
bnNGb3JMYXlvdXQoKTsKIAotICAgIGJvb2wgYWRkRm9yY2VkUmVnaW9uQnJlYWsoTGF5b3V0VW5p
dCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBv
ZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKTsKKyAgICBib29sIGFkZEZvcmNlZFJlZ2lvbkJyZWFr
KGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxk
LCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKTsK
ICAgICB2b2lkIGFwcGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCk7CiAKICAgICBib29s
IHBhZ2VMb2dpY2FsU2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsU2l6
ZUNoYW5nZWQ7IH0KQEAgLTE2OCw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoRmxv
d1RocmVhZExheW91dFN0YXRlKGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcG9wRmxv
d1RocmVhZExheW91dFN0YXRlKCk7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RSZWdpb24oY29uc3QgUmVuZGVyQmxvY2sqKSBjb25zdDsKKyAgICB2b2lkIGNsZWFy
UmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5k
ZXJSZWdpb24qKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApp
bmRleCA2OGNlZTU2YjNiOGE4N2E4ZjZjMDU4OWE4NzNmNWIwYmU4NWJlNzJiLi40NmE3YTNmNzkw
ZDUwYmMyNDk4ZmQzZmRjMTZjNmY5ZjRiZGVhMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBp
ZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFkKSkKICAgICAgICAgcmVs
YXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVJlZ2lvbnNBbmRFeGNsdXNpb25z
QmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCkpCisgICAgaWYgKHVwZGF0ZUV4Y2x1c2lvbnNC
ZWZvcmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKIAog
ICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0gc2l6ZSgpOwpAQCAtMTcxLDcgKzE3MSw3IEBA
IHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0KQogCiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8
fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0FmdGVyQ2hpbGRM
YXlvdXQoZmxvd1RocmVhZCk7CisgICAgdXBkYXRlRXhjbHVzaW9uc0FmdGVyQmxvY2tMYXlvdXQo
KTsKIAogICAgIGNvbXB1dGVPdmVyZmxvdyhvbGRDbGllbnRBZnRlckVkZ2UpOwogICAgIHN0YXRl
UHVzaGVyLnBvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAppbmRleCBkZmEwMTdkY2QwMmU0Mzk3ZWZhNDM3
YWZkYTU2YWNiNTg1ZTk1YWMyLi5hODhhZTYwMjFkMmRiNTM2MGJjZjIzZjI4YmNhOTFhNTFiMzgw
YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkLmNwcApAQCAtMTA0LDE1ICsxMDQsMTUgQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmF1dG9HZW5lcmF0ZVJlZ2lvbnNUb0Jsb2NrT2Zmc2V0KExh
eW91dFVuaXQgLyoKICAgICB2YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KIAotdm9pZCBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQ6OnNldFBhZ2VCcmVhayhMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0
VW5pdCBzcGFjZVNob3J0YWdlKQordm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnNl
dFBhZ2VCcmVhayhjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIExheW91dFVuaXQgb2Zmc2V0LCBM
YXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpCiB7Ci0gICAgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0
KiBtdWx0aWNvbFNldCA9IHRvUmVuZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9ja09mZnNl
dChvZmZzZXQpKSkKKyAgICBpZiAoUmVuZGVyTXVsdGlDb2x1bW5TZXQqIG11bHRpY29sU2V0ID0g
dG9SZW5kZXJNdWx0aUNvbHVtblNldChyZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBvZmZzZXQp
KSkKICAgICAgICAgbXVsdGljb2xTZXQtPnJlY29yZFNwYWNlU2hvcnRhZ2Uoc3BhY2VTaG9ydGFn
ZSk7CiB9CiAKLXZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjp1cGRhdGVNaW5pbXVt
UGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpCit2b2lk
IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoY29u
c3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5I
ZWlnaHQpCiB7Ci0gICAgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBtdWx0aWNvbFNldCA9IHRv
UmVuZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpKSkKKyAgICBp
ZiAoUmVuZGVyTXVsdGlDb2x1bW5TZXQqIG11bHRpY29sU2V0ID0gdG9SZW5kZXJNdWx0aUNvbHVt
blNldChyZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBvZmZzZXQpKSkKICAgICAgICAgbXVsdGlj
b2xTZXQtPnVwZGF0ZU1pbmltdW1Db2x1bW5IZWlnaHQobWluSGVpZ2h0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZC5oCmluZGV4IGRmYTkyODBmNGY0NGFmODhjNWM3NWZjNWRhOGViNDc2NWJjN2I1OGYuLjcxYTJh
YmI1YTNkNzY3MGUwMDViOGRkMzIwMTE2M2UxZDgyMzA1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTQ0
LDggKzQ0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2lj
YWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBhdXRvR2VuZXJhdGVSZWdpb25zVG9CbG9ja09mZnNldChMYXlvdXRVbml0KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgaW5pdGlhbExvZ2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXQsIExh
eW91dFVuaXQgc3BhY2VTaG9ydGFnZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZU1pbmltdW1QYWdlSGVpZ2h0KExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IG1pbkhlaWdo
dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VCcmVhayhjb25zdCBSZW5kZXJC
bG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5k
ZXJCbG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IG1pbkhlaWdodCkgT1ZFUlJJ
REU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjY4MTY3NjVlY2ZhOGVj
ZGM1NGJlNzAzOGNhYWFlMjhiYzVjMDljMi4uYWJhM2I4YzdmZjhiNTk4YjAxNzVhMmMzZTczZjNh
ODIyMjQyYjBkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA2LTA1ICBBbmRyZWkgQnVj
dXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29tcHV0ZSBj
b3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IGZsb2F0IHRlc3QgZm9yIHRoZSBjYXNl
IG9mIGEgY2xhbXBlZCByYW5nZSBmb3IgdGhlIGZsb2F0LgorCisgICAgICAgICogZmFzdC9yZWdp
b25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBl
Y3RlZC5odG1sLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hh
bmdlLTIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1
c2hlZC13aWR0aC1jaGFuZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVz
aGVkLXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9m
bG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6IFRlbXBvcmFyaWx5IGRpc2FibGUgMiB0ZXN0cy4gUmVtb3ZlIHdoZW4g
bGFuZGluZyBmaW5hbCBwYXRjaC4KKwogMjAxMy0wNi0xNyAgWm9sdGFuIEFydmFpICA8emFydmFp
QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBS
ZWJhc2VsaW5pbmcgcmVwYWludCB0ZXN0cywgc2VlIGJ1ZyAxMTUzNzIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0yLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNo
YW5nZS0yLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNiNWRhZjMzNjJhYTZlNTRiNzJkZWM0
MmZlMDU0OGYxNmFiMjcwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDc3IEBACis8IWRvY3R5cGUgaHRtbD4KKworIDxzdHlsZT4KKworICAgIEBmb250LWZhY2Ugewor
ICAgICAgICBmb250LWZhbWlseTogd2Via2l0LWFoZW07CisgICAgICAgIGZvbnQtc3R5bGU6IG5v
cm1hbDsKKyAgICAgICAgc3JjOiB1cmwoLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmKTsKKyAgICB9
CisgICAKKyAgICAjZmxvYXQxIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIHBvc2l0
aW9uOmFic29sdXRlOworICAgICAgICB3aWR0aDogMTUwcHg7CisgICAgICAgIGhlaWdodDogMTAy
cHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47CisgICAgICAgIHotaW5kZXg6LTE7
CisgICAgfQorICAgIAorICAgICNmbG9hdDIgeworICAgICAgICBmbG9hdDpyaWdodDsKKyAgICAg
ICAgd2lkdGg6MjAwcHg7CisgICAgICAgIGhlaWdodDozMHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOm9yYW5nZQorICAgIH0KKworICAgICNyZWdpb24xLCAjcmVnaW9uMiwgI3JlZ2lvbjMg
eworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgCisgICAgI3JlZ2lv
bjEgeworICAgICAgICB3aWR0aDogMTcwcHg7CisgICAgICAgIGhlaWdodDogODBweDsKKyAgICAg
ICAgcGFkZGluZzogNXB4OworICAgIH0KKyAgICAKKyAgICAjcmVnaW9uMiB7CisgICAgICAgIHdp
ZHRoOiAzOTBweDsKKyAgICAgICAgaGVpZ2h0OiA4OXB4OworICAgICAgICBwYWRkaW5nLXRvcDox
cHg7CisgICAgICAgIHBhZGRpbmctbGVmdDo1cHg7CisgICAgICAgIHBhZGRpbmctcmlnaHQ6NXB4
OworICAgIH0KKyAgICAKKyAgICAjcmVnaW9uMyB7CisgICAgICAgIHdpZHRoOiAzODVweDsKKyAg
ICAgICAgaGVpZ2h0OiA4MHB4OworICAgICAgICBwYWRkaW5nLWxlZnQ6NXB4OworICAgICAgICBw
YWRkaW5nLXJpZ2h0OjEwcHg7CisgICAgICAgIHBhZGRpbmctYm90dG9tOjEwcHg7CisgICAgfQor
ICAgIAorICAgIHAuZmxvdzEgeworICAgICAgICBjbGVhcjpib3RoOworICAgICAgICBtYXJnaW4t
Ym90dG9tOiAwcHg7CisgICAgfQorCisgICAgcC5mbG93MiB7CisgICAgICAgIG1hcmdpbi10b3A6
IDBweDsKKyAgICB9CisgICAgCis8L3N0eWxlPgorCis8cD5JbiB0aGUgZXhhbXBsZSBiZWxvdywg
dGhlIGdyZWVuIGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdCByZWdpb24g
YW5kIG9uIHRoZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24gdHdvLgorVGhlIG9y
YW5nZSBmbG9hdCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2YgcmVnaW9uIHR3
by48L3A+CisKKzxkaXYgaWQ9InJlZ2lvbjEiPgorICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjwv
cD4KKzwvZGl2PgorPGRpdiBpZD0icmVnaW9uMiI+CisgICAgPGltZyBpZD0iZmxvYXQyIj4KKyAg
ICA8cCBjbGFzcz0iZmxvdzEiPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhl
IHJlZ2lvbi48L3A+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjMiPgorPHAgY2xhc3M9ImZsb3cy
Ij5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhp
cyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorPHA+
VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgor
PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVk
LXdpZHRoLWNoYW5nZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVz
aGVkLXdpZHRoLWNoYW5nZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVhNGQ3ZmQ0NjI1OWY0ZmQ1ZGY3
MmFhMzE5NjA1MTk2YWY0MDNkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTIuaHRtbApAQCAtMCwwICsxLDc0IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKworIDxzdHlsZT4KKworICAgQGZvbnQtZmFjZSB7CisgICAgICAg
IGZvbnQtZmFtaWx5OiB3ZWJraXQtYWhlbTsKKyAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwor
ICAgICAgICBzcmM6IHVybCguLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYpOworICAgIH0KKworICAg
ICNjb250ZW50IHsKKyAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGZsb3cxOworICAgICAgICBw
YWRkaW5nOiA1cHg7CisgICAgfQorICAKKyAgICAjZmxvYXQxIHsKKyAgICAgICAgZmxvYXQ6IGxl
ZnQ7CisgICAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbgorICAgIH0KKyAgICAKKyAgICAjZmxvYXQyIHsKKyAg
ICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOjIwMHB4OworICAgICAgICBoZWlnaHQ6
MzBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2UKKyAgICB9CisKKyAgICAjcmVn
aW9uMSwgI3JlZ2lvbjIsICNyZWdpb24zIHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsKKyAgICB9CisKKyAgICAjcmVn
aW9uMSB7CisgICAgICAgIHdpZHRoOiAxODBweDsKKyAgICAgICAgaGVpZ2h0OiA5MHB4OworICAg
IH0KKyAgICAKKyAgICAjcmVnaW9uMiB7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAg
aGVpZ2h0OiA5MHB4OworICAgIH0KKyAgICAKKyAgICAjcmVnaW9uMyB7CisgICAgICAgIHdpZHRo
OiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA5MHB4OworICAgIH0KKworICAgICNmbG9hdGNvbnRh
aW5lciB7CisgICAgICAgIGhlaWdodDogODRweDsKKyAgICB9Cis8L3N0eWxlPgorCis8cD5JbiB0
aGUgZXhhbXBsZSBiZWxvdywgdGhlIGdyZWVuIGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9m
IHRoZSBmaXJzdCByZWdpb24gYW5kIG9uIHRoZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byBy
ZWdpb24gdHdvLgorVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRo
ZSB0b3Agb2YgcmVnaW9uIHR3by48L3A+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorICAgIDxkaXYg
aWQ9ImZpcnN0LWJveCI+CisgICAgICAgIDxkaXYgaWQ9InNlY29uZC1ib3giPgorICAgICAgICAg
ICAgPHAgaWQ9ImZsb2F0Y29udGFpbmVyIj48aW1nIGlkPSJmbG9hdDEiPjxpbWcgaWQ9ImZsb2F0
MiI+CisgICAgICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQg
b2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRo
ZSByZWdpb24uPC9wPgorICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdl
dCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0
IG9mIHRoZSByZWdpb24uPC9wPgorICAgICAgICAgICAgPHA+VGhpcyBsaW5lIG9mIHRleHQgc2hv
dWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgICAgICAgICAgCisgICAgICAg
IDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAg
PGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0icmVnaW9uMyI+PC9kaXY+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVk
LXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbAppbmRleCAxYzAwOWE2ZTEzYTQw
M2ZjYzExNzQxZmIzMzY1ZWIxZjhjNjYzOGY3Li5jNTNlZmQzMDRiNzM0YmNkMWVkY2UxYjNjMjcy
NDkxNzU0YzQzMTY5IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQt
cHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVjdGVkLmh0bWwKQEAgLTE4LDcg
KzE4LDkgQEAKICAgICB9CiAgICAgCiAgICAgI2Zsb2F0MiB7Ci0gICAgICAgIGZsb2F0OnJpZ2h0
OworICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OworICAgICAgICBtYXJnaW4tbGVmdDogLTMwcHg7
CisgICAgICAgIGZsb2F0OmxlZnQ7CiAgICAgICAgIHdpZHRoOjIwMHB4OwogICAgICAgICBoZWln
aHQ6MzBweDsKICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2UKQEAgLTYyLDE0ICs2NCwx
NCBAQAogPC9zdHlsZT4KIAogPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBmbG9h
dCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVm
dC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4KLVRoZSBvcmFuZ2UgZmxvYXQgc2hv
dWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorVGhlIG9y
YW5nZSBmbG9hdCBzaG91bGQgYmUgcmlnaHQgYWxpZ25lZCB1bmRlciB0aGUgZ3JlZW4gZmxvYXQg
YmVjYXVzZSB0aGVpciBjb250YWluaW5nIGJsb2NrIGlzIGZsb3duIG9ubHkgaW4gdGhlIGZpcnN0
IHJlZ2lvbjwvcD4KIAogPGRpdiBpZD0icmVnaW9uMSI+CiAgICAgIDxwPjxpbWcgaWQ9ImZsb2F0
MSI+PC9wPgogPC9kaXY+CiA8ZGl2IGlkPSJyZWdpb24yIj4KICAgICA8aW1nIGlkPSJmbG9hdDIi
PgotICAgIDxwIGNsYXNzPSJmbG93MSI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLjwvcD4KKyAgICA8cCBjbGFzcz0iZmxvdzEiPlRoaXMgbGluZSBvZiB0ZXh0
IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KIDwvZGl2PgogPGRpdiBpZD0i
cmVnaW9uMyI+CiA8cCBjbGFzcz0iZmxvdzIiPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3Qg
Z2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBv
dXQgb2YgdGhlIHJlZ2lvbi48L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbAppbmRleCAxZTg3MWI2YWMxZTFlY2Rm
OTM3MDc3MjdhZDJiYmE4YTVmNDNiNzQ5Li4zMjU0MGQzMGI4YzFjYTA1ZjJmZjA2YmUwNDliNzhm
NzQ2YWRjOTJjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVz
aGVkLXdpZHRoLWNoYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwKQEAgLTQ5LDEzICs0OSwxMyBAQAogPC9zdHlsZT4K
IAogPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBmbG9hdCBzaG91bGQgYmUgYXQg
dGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVmdC4gSXQgc2hvdWxkIHNw
aWxsIGludG8gcmVnaW9uIHR3by4KLVRoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIG9uIHRoZSBy
aWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorVGhlIG9yYW5nZSBmbG9hdCBzaG91
bGQgYmUgcmlnaHQgYWxpZ25lZCB1bmRlciB0aGUgZ3JlZW4gZmxvYXQgYmVjYXVzZSB0aGVpciBj
b250YWluaW5nIGJsb2NrIGlzIGZsb3duIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lvbjwvcD4KIAog
PGRpdiBpZD0iY29udGVudCI+CiAgICAgPGRpdiBpZD0iZmlyc3QtYm94Ij4KICAgICAgICAgPGRp
diBpZD0ic2Vjb25kLWJveCI+Ci0gICAgICAgICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjxpbWcg
aWQ9ImZsb2F0MiI+Ci0gICAgICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90
IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgICAgICAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48
aW1nIGlkPSJmbG9hdDIiPjxwLz4KKyAgICAgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNo
b3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KIAkgICAgPHA+VGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0
IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KICAgICAgICAgICAgIDxwPlRo
aXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KICAg
ICAgICAgICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA5MWU2YWJjNDliMWVlZDBkNTgzMjIzYzY1M2E5MGY5ZGJiZjkyMjk1Li5mOGM4Mzk2Y2FkNjIw
M2QwYzM4MjA5MzkwNWRmNDVkNTRmODEwZjRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgzLDYgKzM4MywxMSBAQCB3ZWJraXQub3JnL2IvNjE0ODcg
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1jcm9zcy1zaXRlLmh0bWwgWyBGYWlsdXJlIF0KICMgU3R5
bGVkIHNjb3BlIGVsZW1lbnQgaXMgbm90IHlldCBlbmFibGVkLgogd2Via2l0Lm9yZy9iLzQ5MTQy
IGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogCisjIEZJWE1FOiBSZW1vdmUgaW4gdGhlIGZpbmFsIHBh
dGNoOgorZmFzdC9yZWdpb25zL3JlZ2lvbnMtd2lkb3dzLWFuZC1vcnBoYW5zLmh0bWwKK2Zhc3Qv
cmVnaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW9uLXJlZ2lvbnMtaW5saW5lLWNvbnRl
bnQtb3ZlcmZsb3ctYm90dG9tLXBvc2l0aW9uZWQtbXVsdGlwbGUtc2hhcGVzLmh0bWwKK2Zhc3Qv
cmVnaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLW9uLXJlZ2lvbnMtaW5saW5lLWNvbnRl
bnQtb3ZlcmZsb3ctbXVsdGlwbGUtc2hhcGVzLmh0bWwKKwogIyBDU1MgUmVnaW9ucyB0ZXN0cyBm
b3IgcmVnaW9uIHN0eWxpbmcgYW5kIHNjb3BlZCBzdHlsZXMKIGZhc3QvcmVnaW9ucy9zdHlsZS1z
Y29wZWQtaW4tZmxvdy1vdmVycmlkZS1jb250YWluZXItc3R5bGUuaHRtbAogZmFzdC9yZWdpb25z
L3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLW11bHRpcGxlLXJl
Z2lvbnMuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205095</attachid>
            <date>2013-06-20 08:42:55 -0700</date>
            <delta_ts>2013-06-20 09:29:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116296-20130620184104.patch</filename>
            <type>text/plain</type>
            <size>69570</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1MzllMjI0YjBhMzEw
ZDY1YjYzMWFiZTgyMjEwZTlkNGEzODBlZC4uMDE1YzQ0ZmIwY2MyMGJlZWMzNWZlOWNmY2Q5OTgz
NDU2NjI1OWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEzLTA2LTIwICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggZXh0ZW5kcyB0aGUgcmVnaW9u
IHJhbmdlcyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6CisgICAg
ICAgIC0gdGhlIHJhbmdlIG9mIGEgYm94IGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgcmFuZ2Ug
b2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sgKGV2ZW4gZm9yIGZsb2F0cyk7IHRoaXMgd2lsbCBzaW1w
bGlmeSBob3cgb3ZlcmZsb3cKKyAgICAgICAgaXMgcHJvcGFnYXRlZCB0byB0aGUgcmVnaW9ucyBh
bmQgaXQgc2hvdWxkIGxhdGVyIGNoYW5nZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcy4KKyAgICAg
ICAgLSBpZiB0aGUgcmFuZ2Ugb2YgYSBib3ggaXMgbm90IGNvcnJlY3RseSBlc3RpbWF0ZWQgYmVm
b3JlIHRoZSBsYXlvdXQgaXQgd2lsbCBiZSBtYXJrZWQgZm9yIHJlbGF5b3V0OyB0aGlzIGlzIG5l
Y2Vzc2FyeSB0byBjb3JyZWN0bHkKKyAgICAgICAgcG9zaXRpb24gYm94ZXMgdGhhdCBvdmVyZmxv
dyBuYXR1cmFsbHksIGxpa2UgZmxvYXRzLgorICAgICAgICAtIGFsbCB0aGUgYm94ZXMgaGF2ZSBh
IHJhbmdlIG5vdywgbm90IG9ubHkgdGhlIGJsb2Nrcy4KKyAgICAgICAgLSByZWdpb25BdEJsb2Nr
T2Zmc2V0IGNhbiBjbGFtcCB0byBhIGJveC4KKyAgICAgICAgLSBhbiB1bnNwbGl0dGFibGUgYm94
IGhhcyBhIHJlZ2lvbiByYW5nZSBvZiBhIHNpbmdsZSByZWdpb24sIHRoZSBvbmUgd2hlcmUgdGhl
IGJveCB0b3AgZmFsbHMgaW50by4KKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGls
ZCBib3ggc3RhcnRzIGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1h
eGltYWwgaGVpZ2h0IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRo
ZSBlc3RpbWF0aW9uIHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBs
ZSwgaWYgYSBibG9jayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRo
ZSBmbG9hdAorICAgICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQg
aXMgbmVlZGVkIGZvciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUg
dG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJl
IG9wdGltaXplZCBieSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4g
dGhhdCBkb24ndCBoYXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAg
IGNvbnRhaW5pbmcgYmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMv
Ym90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRh
YmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQWZ0ZXJC
bG9ja0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YXBwbHlBZnRlckJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpzZXRQYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0
ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZWdp
b25BdEJsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRl
UmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
ZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2Fs
V2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbEhl
aWdodEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsVG9w
Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojps
YXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6dmFsaWRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0QmxvY2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxX
aWR0aEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdl
TG9naWNhbEhlaWdodEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpwYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbG93VGhyZWFkOjptYXBGcm9tRmxvd1RvUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJv
eFJlZ2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6c2V0UmVn
aW9uUmFuZ2VGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YXBw
bHlCcmVha0FmdGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZDo6c2V0UGFnZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaDoKKwogMjAx
My0wNi0xOSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBWaWJyYXRpb24gY2FuIGJlIGNhbmNlbGVkIGV2ZW4gaWYgcGFnZSB2aXNpYmlsaXR5IHN0YXR1
cyBpcyBoaWRkZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDQzOTYyZjZjNzY5YjgxMTQyNTcwNmU0N2I2NGJkZmYxMTkzZmQ2M2EuLmJkMmUzNGUzY2Y5YzQ2
ODE2Mzk3NGUwY2E1NjYzZjlhYjAxMzBmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMTQ4MSwxMyArMTQ4MSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dChjb25zdCBSZW5kZXJCbG9jayogYmxvY2spCiAjZW5k
aWYKIH0KIAotYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNCZWZv
cmVDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQorYm9vbCBSZW5kZXJC
bG9jazo6dXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0KCkKIHsKICNpZiBFTkFCTEUo
Q1NTX1NIQVBFUykKLSAgICBpZiAoIWZsb3dUaHJlYWQgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQot
I2Vsc2UKLSAgICBpZiAoIWZsb3dUaHJlYWQpCi0jZW5kaWYKKyAgICBpZiAoIWZsb3dUaHJlYWRD
b250YWluaW5nQmxvY2soKSAmJiAhc2hhcGVJbnNpZGVJbmZvKCkpCiAgICAgICAgIHJldHVybiBz
aGFwZUluZm9SZXF1aXJlc1JlbGF5b3V0KHRoaXMpOwogCiAgICAgTGF5b3V0VW5pdCBvbGRIZWln
aHQgPSBsb2dpY2FsSGVpZ2h0KCk7CkBAIC0xNDk4LDE4ICsxNDk1LDEzIEBAIGJvb2wgUmVuZGVy
QmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRFeGNsdXNpb25zQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVy
Rmxvd1RocmVhZCoKICAgICBzZXRMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQ6Om1heCgpIC8gMik7
CiAgICAgdXBkYXRlTG9naWNhbEhlaWdodCgpOwogCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCiAg
ICAgY29tcHV0ZVNoYXBlU2l6ZSgpOwotI2VuZGlmCi0KLSAgICAvLyBTZXQgb3VyIHN0YXJ0IGFu
ZCBlbmQgcmVnaW9ucy4gTm8gcmVnaW9ucyBhYm92ZSBvciBiZWxvdyB1cyB3aWxsIGJlIGNvbnNp
ZGVyZWQgYnkgb3VyIGNoaWxkcmVuLiBUaGV5IGFyZQotICAgIC8vIGVmZmVjdGl2ZWx5IGNsYW1w
ZWQgdG8gb3VyIHJlZ2lvbiByYW5nZS4KLSAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhm
bG93VGhyZWFkKTsKIAogICAgIHNldExvZ2ljYWxIZWlnaHQob2xkSGVpZ2h0KTsKICAgICBzZXRM
b2dpY2FsVG9wKG9sZFRvcCk7CiAgICAgCiAgICAgcmV0dXJuIHNoYXBlSW5mb1JlcXVpcmVzUmVs
YXlvdXQodGhpcyk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQpAQCAtMTUy
MywyMyArMTUxNSwxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlU2hhcGVTaXplKCkKIH0K
ICNlbmRpZgogCi12b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0Fm
dGVyQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCwgYm9vbCBoZWlnaHRD
aGFuZ2VkKQordm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlRXhjbHVzaW9uc0FmdGVyQmxvY2tMYXlv
dXQoYm9vbCBoZWlnaHRDaGFuZ2VkKQogewogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIC8v
IEEgcHJldmlvdXMgc2libGluZyBoYXMgY2hhbmdlZCBkaW1lbnNpb24sIHNvIHdlIG5lZWQgdG8g
cmVsYXlvdXQgdGhlIHNoYXBlIHdpdGggdGhlIGNvbnRlbnQKICAgICBTaGFwZUluc2lkZUluZm8q
IHNoYXBlSW5zaWRlSW5mbyA9IGxheW91dFNoYXBlSW5zaWRlSW5mbygpOwogICAgIGlmIChoZWln
aHRDaGFuZ2VkICYmIHNoYXBlSW5zaWRlSW5mbykKICAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5k
aXJ0eVNoYXBlU2l6ZSgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0Q2hhbmdlZCk7
CiAjZW5kaWYKLSAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhmbG93VGhyZWFkKTsKLX0K
LQotdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2soUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCkKLXsKLSAgICBpZiAoZmxvd1RocmVhZCkKLSAgICAgICAgZmxv
d1RocmVhZC0+c2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSgpKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlTG9naWNhbFdpZHRo
QW5kQ29sdW1uV2lkdGgoKQpAQCAtMTYyMSw3ICsxNjA0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2gKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRh
aW5pbmdCbG9jaygpOwogICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKGZsb3dU
aHJlYWQpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAodXBkYXRl
UmVnaW9uc0FuZEV4Y2x1c2lvbnNCZWZvcmVDaGlsZExheW91dChmbG93VGhyZWFkKSkKKyAgICBp
ZiAodXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAgIHJlbGF5b3V0
Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgLy8gV2UgdXNlIGZvdXIgdmFsdWVzLCBtYXhUb3BQb3Ms
IG1heFRvcE5lZywgbWF4Qm90dG9tUG9zLCBhbmQgbWF4Qm90dG9tTmVnLCB0byB0cmFjawpAQCAt
MTY5MSw3ICsxNjc0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKIAogICAgIGxheW91dFBv
c2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBk
YXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQsIGhlaWdo
dENoYW5nZWQpOworICAgIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0KGhlaWdodENo
YW5nZWQpOwogCiAgICAgLy8gQWRkIG92ZXJmbG93IGZyb20gY2hpbGRyZW4gKHVubGVzcyB3ZSdy
ZSBtdWx0aS1jb2x1bW4sIHNpbmNlIGluIHRoYXQgY2FzZSBhbGwgb3VyIGNoaWxkIG92ZXJmbG93
IGlzIGNsaXBwZWQgYW55d2F5KS4KICAgICBjb21wdXRlT3ZlcmZsb3cob2xkQ2xpZW50QWZ0ZXJF
ZGdlKTsKQEAgLTI2MTMsNiArMjU5Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2Nr
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbywgTGF5CiAjZW5k
aWYKICAgICAvLyBHbyBhaGVhZCBhbmQgcG9zaXRpb24gdGhlIGNoaWxkIGFzIHRob3VnaCBpdCBk
aWRuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgdG9wLgogICAgIHNldExvZ2ljYWxUb3BGb3JDaGlsZChj
aGlsZCwgbG9naWNhbFRvcEVzdGltYXRlLCBBcHBseUxheW91dERlbHRhKTsKKyAgICBlc3RpbWF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY2hpbGQpOwogCiAgICAgUmVuZGVyQmxvY2sqIGNoaWxk
UmVuZGVyQmxvY2sgPSBjaGlsZC0+aXNSZW5kZXJCbG9jaygpID8gdG9SZW5kZXJCbG9jayhjaGls
ZCkgOiAwOwogICAgIGJvb2wgbWFya0Rlc2NlbmRhbnRzV2l0aEZsb2F0cyA9IGZhbHNlOwpAQCAt
MjY4OSw2ICsyNjczLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZChSZW5k
ZXJCb3gqIGNoaWxkLCBNYXJnaW5JbmZvJiBtYXJnaW5JbmZvLCBMYXkKICAgICAgICAgY2hpbGQt
PmxheW91dElmTmVlZGVkKCk7CiAgICAgfQogCisgICAgdXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hD
aGlsZChjaGlsZCk7CisKICAgICAvLyBXZSBhcmUgbm8gbG9uZ2VyIGF0IHRoZSB0b3Agb2YgdGhl
IGJsb2NrIGlmIHdlIGVuY291bnRlciBhIG5vbi1lbXB0eSBjaGlsZC4gIAogICAgIC8vIFRoaXMg
aGFzIHRvIGJlIGRvbmUgYWZ0ZXIgY2hlY2tpbmcgZm9yIGNsZWFyLCBzbyB0aGF0IG1hcmdpbnMg
Y2FuIGJlIHJlc2V0IGlmIGEgY2xlYXIgb2NjdXJyZWQuCiAgICAgaWYgKG1hcmdpbkluZm8uYXRC
ZWZvcmVTaWRlT2ZCbG9jaygpICYmICFjaGlsZC0+aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKCkpCkBA
IC0yODUxLDYgKzI4MzcsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2Jq
ZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAgIFRyYWNrZWRS
ZW5kZXJlckxpc3RIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudHMt
PmVuZCgpOwogICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGl0
ID0gcG9zaXRpb25lZERlc2NlbmRhbnRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgciA9ICppdDsKKyAgICAgICAgCisgICAgICAgIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JC
b3hDaGlsZChyKTsKIAogICAgICAgICAvLyBBIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgd2l0aCBh
biBhYnNvbHV0ZSBwb3NpdGlvbmVkIGFuY2VzdG9yIGhhcyBubyB3YXkgb2Yga25vd2luZyBpZiB0
aGUgbGF0dGVyIGhhcyBjaGFuZ2VkIHBvc2l0aW9uLiBTbwogICAgICAgICAvLyBpZiB0aGlzIGlz
IGEgZml4ZWQgcG9zaXRpb24gZWxlbWVudCwgbWFyayBpdCBmb3IgbGF5b3V0IGlmIGl0IGhhcyBh
biBhYnNwb3MgYW5jZXN0b3IgYW5kIG5lZWRzIHRvIG1vdmUgd2l0aCB0aGF0IGFuY2VzdG9yLCBp
LmUuIApAQCAtMjg5MSwxNCArMjg3OSwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAg
ICAgICAgICAgICAgIHItPnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgb2xkTG9n
aWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JDaGlsZChyKTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICByLT5sYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIExheSBvdXQgYWdhaW4g
aWYgb3VyIGVzdGltYXRlIHdhcyB3cm9uZy4KLSAgICAgICAgaWYgKG5lZWRzQmxvY2tEaXJlY3Rp
b25Mb2NhdGlvblNldEJlZm9yZUxheW91dCAmJiBsb2dpY2FsVG9wRm9yQ2hpbGQocikgIT0gb2xk
TG9naWNhbFRvcCkgeworICAgICAgICBpZiAobmVlZHNCbG9ja0RpcmVjdGlvbkxvY2F0aW9uU2V0
QmVmb3JlTGF5b3V0ICYmIGxvZ2ljYWxUb3BGb3JDaGlsZChyKSAhPSBvbGRMb2dpY2FsVG9wKQog
ICAgICAgICAgICAgci0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwot
ICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKLSAgICAgICAgfQorCisgICAgICAgIHIt
PmxheW91dElmTmVlZGVkKCk7CisKKyAgICAgICAgdXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGls
ZChyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGhhc0NvbHVtbnMoKSkKQEAgLTQyMDMsNiArNDE5
Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIFJlbmRlckJveCogY2hpbGRCb3ggPSBmbG9hdGluZ09iamVj
dC0+cmVuZGVyZXIoKTsKKwogICAgICAgICBMYXlvdXRVbml0IGNoaWxkTG9naWNhbExlZnRNYXJn
aW4gPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtYXJnaW5TdGFydEZvckNo
aWxkKGNoaWxkQm94KSA6IG1hcmdpbkVuZEZvckNoaWxkKGNoaWxkQm94KTsKIAogICAgICAgICBM
YXlvdXRSZWN0IG9sZFJlY3QgPSBjaGlsZEJveC0+ZnJhbWVSZWN0KCk7CkBAIC00MjE5LDYgKzQy
MTAsOCBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cygpCiAgICAgICAgIHNl
dExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoY2hpbGRCb3gsIGZsb2F0TG9naWNhbExvY2F0aW9uLngoKSAr
IGNoaWxkTG9naWNhbExlZnRNYXJnaW4pOwogICAgICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQo
Y2hpbGRCb3gsIGZsb2F0TG9naWNhbExvY2F0aW9uLnkoKSArIG1hcmdpbkJlZm9yZUZvckNoaWxk
KGNoaWxkQm94KSk7CiAKKyAgICAgICAgZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNo
aWxkQm94KTsKKwogICAgICAgICBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUgPSB2aWV3KCktPmxh
eW91dFN0YXRlKCk7CiAgICAgICAgIGJvb2wgaXNQYWdpbmF0ZWQgPSBsYXlvdXRTdGF0ZS0+aXNQ
YWdpbmF0ZWQoKTsKICAgICAgICAgaWYgKGlzUGFnaW5hdGVkICYmICFjaGlsZEJveC0+bmVlZHNM
YXlvdXQoKSkKQEAgLTQyNTMsNiArNDI0Niw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9u
TmV3RmxvYXRzKCkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRCbG9jay0+c2V0Q2hpbGROZWVk
c0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgICAgIGNoaWxkQm94LT5s
YXlvdXRJZk5lZWRlZCgpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1cGRhdGVSZWdp
b25SYW5nZUZvckJveENoaWxkKGNoaWxkQm94KTsKICAgICAgICAgfQogCiAgICAgICAgIHNldExv
Z2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxvYXRMb2dpY2FsTG9jYXRpb24ueSgp
KTsKQEAgLTQ0MzMsOSArNDQyOCw2IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxS
aWdodE9mZnNldEZvckNvbnRlbnQoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CiAKIExheW91
dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5kZW50LCBM
YXlvdXRVbml0KiBoZWlnaHRSZW1haW5pbmcsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2hh
cGVPdXRzaWRlRmxvYXRPZmZzZXRNb2RlIG9mZnNldE1vZGUpIGNvbnN0CiB7Ci0jaWYgIUVOQUJM
RShDU1NfRVhDTFVTSU9OUykKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0TW9kZSk7Ci0jZW5kaWYK
ICAgICBMYXlvdXRVbml0IGxlZnQgPSBmaXhlZE9mZnNldDsKICAgICBpZiAobV9mbG9hdGluZ09i
amVjdHMgJiYgbV9mbG9hdGluZ09iamVjdHMtPmhhc0xlZnRPYmplY3RzKCkpIHsKICAgICAgICAg
aWYgKGhlaWdodFJlbWFpbmluZykKQEAgLTQ0OTMsOSArNDQ4NSw2IEBAIExheW91dFVuaXQgUmVu
ZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IExheW91dFVuCiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBib29s
IGFwcGx5VGV4dEluZGVudCwgTGF5b3V0VW5pdCogaGVpZ2h0UmVtYWluaW5nLCBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIFNoYXBlT3V0c2lkZUZsb2F0T2Zmc2V0TW9kZSBvZmZzZXRNb2RlKSBj
b25zdAogewotI2lmICFFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0gICAgVU5VU0VEX1BBUkFNKG9m
ZnNldE1vZGUpOwotI2VuZGlmCiAgICAgTGF5b3V0VW5pdCByaWdodCA9IGZpeGVkT2Zmc2V0Owog
ICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cyAmJiBtX2Zsb2F0aW5nT2JqZWN0cy0+aGFzUmlnaHRP
YmplY3RzKCkpIHsKICAgICAgICAgaWYgKGhlaWdodFJlbWFpbmluZykKQEAgLTczNzcsNyArNzM2
Niw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9m
ZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91CiAKICAgICAvLyBTZWUgaWYgd2UncmUgaW4g
dGhlIGxhc3QgcmVnaW9uLgogICAgIExheW91dFVuaXQgcGFnZU9mZnNldCA9IG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxPZmZzZXQ7Ci0gICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHBhZ2VPZmZzZXQsIHRo
aXMpOworICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9j
a09mZnNldCh0aGlzLCBwYWdlT2Zmc2V0LCB0aGlzKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChyZWdpb24tPmlzTGFzdFJlZ2lvbigpKQpAQCAtNzQz
Miw3ICs3NDIxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayhS
ZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxPZmYKICAgICAgICAgICAgIHZpZXco
KS0+bGF5b3V0U3RhdGUoKS0+YWRkRm9yY2VkQ29sdW1uQnJlYWsoY2hpbGQsIGxvZ2ljYWxPZmZz
ZXQpOwogICAgICAgICBpZiAoY2hlY2tSZWdpb25CcmVha3MpIHsKICAgICAgICAgICAgIExheW91
dFVuaXQgb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0gMDsKLSAgICAgICAgICAgIGlmIChmbG93VGhy
ZWFkLT5hZGRGb3JjZWRSZWdpb25CcmVhayhvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KCkgKyBsb2dpY2FsT2Zmc2V0LCBjaGlsZCwgdHJ1ZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkp
CisgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9mZnNldCwgY2hpbGQs
IHRydWUsICZvZmZzZXRCcmVha0FkanVzdG1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBs
b2dpY2FsT2Zmc2V0ICsgb2Zmc2V0QnJlYWtBZGp1c3RtZW50OwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBuZXh0UGFnZUxvZ2ljYWxUb3AobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3Vu
ZGFyeSk7CkBAIC03NDU5LDcgKzc0NDgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphcHBs
eUFmdGVyQnJlYWsoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2ZmcwogICAg
ICAgICAgICAgdmlldygpLT5sYXlvdXRTdGF0ZSgpLT5hZGRGb3JjZWRDb2x1bW5CcmVhayhjaGls
ZCwgbG9naWNhbE9mZnNldCk7CiAgICAgICAgIGlmIChjaGVja1JlZ2lvbkJyZWFrcykgewogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwOwotICAgICAgICAg
ICAgaWYgKGZsb3dUaHJlYWQtPmFkZEZvcmNlZFJlZ2lvbkJyZWFrKG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxPZmZzZXQgKyBtYXJnaW5PZmZzZXQsIGNoaWxkLCBm
YWxzZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAoZmxvd1RocmVh
ZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpICsgbG9naWNhbE9mZnNldCArIG1hcmdpbk9mZnNldCwgY2hpbGQsIGZhbHNlLCAmb2Zm
c2V0QnJlYWtBZGp1c3RtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNl
dCArIG1hcmdpbk9mZnNldCArIG9mZnNldEJyZWFrQWRqdXN0bWVudDsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbmV4dFBhZ2VMb2dpY2FsVG9wKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdl
Qm91bmRhcnkpOwpAQCAtNzU1OCwxMyArNzU0NywxMyBAQCBib29sIFJlbmRlckJsb2NrOjpwdXNo
VG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhlaWdodChMYXlvdXRVbml0JiBhZGp1c3RtZW50
LAogdm9pZCBSZW5kZXJCbG9jazo6c2V0UGFnZUJyZWFrKExheW91dFVuaXQgb2Zmc2V0LCBMYXlv
dXRVbml0IHNwYWNlU2hvcnRhZ2UpCiB7CiAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIGZsb3dUaHJlYWQt
PnNldFBhZ2VCcmVhayhvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQs
IHNwYWNlU2hvcnRhZ2UpOworICAgICAgICBmbG93VGhyZWFkLT5zZXRQYWdlQnJlYWsodGhpcywg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgb2Zmc2V0LCBzcGFjZVNob3J0YWdl
KTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0
VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KQogewogICAgIGlmIChSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQotICAgICAg
ICBmbG93VGhyZWFkLT51cGRhdGVNaW5pbXVtUGFnZUhlaWdodChvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIG1pbkhlaWdodCk7CisgICAgICAgIGZsb3dUaHJlYWQt
PnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSArIG9mZnNldCwgbWluSGVpZ2h0KTsKICAgICBlbHNlIGlmIChDb2x1bW5JbmZvKiBj
b2xJbmZvID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpLT5tX2NvbHVtbkluZm8pCiAgICAgICAgIGNv
bEluZm8tPnVwZGF0ZU1pbmltdW1Db2x1bW5IZWlnaHQobWluSGVpZ2h0KTsKIH0KQEAgLTc3NzAs
NyArNzc1OSw3IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZz
ZXQoTGF5b3V0VW5pdCBibG9ja09mZnNldCkgY29uc3QKICAgICBpZiAoIWZsb3dUaHJlYWQgfHwg
IWZsb3dUaHJlYWQtPmhhc1ZhbGlkUmVnaW9uSW5mbygpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGJsb2NrT2Zmc2V0LCB0cnVlKTsKKyAgICByZXR1cm4gZmxv
d1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RQYWdlKCkgKyBibG9ja09mZnNldCwgdHJ1ZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6
OnVwZGF0ZVN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wKQpAQCAtNzc5OCwyOCArNzc4Nyw3MSBAQCBib29sIFJlbmRlckJs
b2NrOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQpIGNvbgogICAgIHJldHVybiBmbG93VGhyZWFkLT5sb2dpY2FsV2lkdGhDaGFuZ2VkSW5S
ZWdpb25zRm9yQmxvY2sodGhpcyk7CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OmNs
YW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit2b2lk
IFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJC
b3gqIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1Ro
cmVhZC0+aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaXNSZW5k
ZXJWaWV3KCkgfHwgKHJlZ2lvbiAmJiBmbG93VGhyZWFkKSk7Ci0gICAgaWYgKGlzUmVuZGVyVmll
dygpKQotICAgICAgICByZXR1cm4gcmVnaW9uOwotCi0gICAgLy8gV2UgbmVlZCB0byBjbGFtcCB0
byB0aGUgYmxvY2ssIHNpbmNlIHdlIHdhbnQgYW55IGxpbmVzIG9yIGJsb2NrcyB0aGF0IG92ZXJm
bG93IG91dCBvZiB0aGUKLSAgICAvLyBsb2dpY2FsIHRvcCBvciBsb2dpY2FsIGJvdHRvbSBvZiB0
aGUgYmxvY2sgdG8gc2l6ZSBhcyB0aG91Z2ggdGhlIGJvcmRlciBib3ggaW4gdGhlIGZpcnN0IGFu
ZAotICAgIC8vIGxhc3QgcmVnaW9ucyBleHRlbmRlZCBpbmZpbml0ZWx5LiBPdGhlcndpc2UgdGhl
IGxpbmVzIGFyZSBnb2luZyB0byBzaXplIGFjY29yZGluZyB0byB0aGUgcmVnaW9ucwotICAgIC8v
IHRoZXkgb3ZlcmZsb3cgaW50bywgd2hpY2ggbWFrZXMgbm8gc2Vuc2Ugd2hlbiB0aGlzIGJsb2Nr
IGRvZXNuJ3QgZXhpc3QgaW4gfHJlZ2lvbnwgYXQgYWxsLgogICAgIFJlbmRlclJlZ2lvbiogc3Rh
cnRSZWdpb247CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247Ci0gICAgZmxvd1RocmVhZC0+
Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0gICAg
Ci0gICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRD
b250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkp
Ci0gICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQotICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwotICAg
IAotICAgIHJldHVybiByZWdpb247CisgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsK
KyAgICBpZiAoYm94LT5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkKKyAgICAgICAgc3Rh
cnRSZWdpb24gPSBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRo
aXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiwgdHJ1ZSk7CisgICAgZWxzZSB7
CisgICAgICAgIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0
aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24sIHRydWUpOworICAgICAgICBl
bmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChib3gpLCB0
cnVlKTsKKyAgICB9CisKKyAgICBBU1NFUlQoc3RhcnRSZWdpb24gJiYgZW5kUmVnaW9uKTsKKyAg
ICBmbG93VGhyZWFkLT5zZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRS
ZWdpb24pOworfQorCit2b2lkIFJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94
Q2hpbGQoUmVuZGVyQm94KiBib3gpIGNvbnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJl
YWQgfHwgIWZsb3dUaHJlYWQtPmhhc1JlZ2lvbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGJveC0+aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgY29tcHV0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoYm94KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBlc3RpbWF0ZWRWYWx1ZXM7CisgICAgYm94
LT5jb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0OjptYXgoKSAvIDIsIGxvZ2ljYWxUb3BG
b3JDaGlsZChib3gpLCBlc3RpbWF0ZWRWYWx1ZXMpOworCisgICAgTGF5b3V0VW5pdCBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZG
aXJzdFBhZ2UoKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+
cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdp
b24sIHRydWUpOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVn
aW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24g
KyBlc3RpbWF0ZWRWYWx1ZXMubV9leHRlbnQsIHRydWUpOworCisgICAgQVNTRVJUKHN0YXJ0UmVn
aW9uICYmIGVuZFJlZ2lvbik7CisgICAgZmxvd1RocmVhZC0+c2V0UmVnaW9uUmFuZ2VGb3JCb3go
Ym94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKK30KKwordm9pZCBSZW5kZXJCbG9jazo6dXBk
YXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChSZW5kZXJCb3gqIGJveCkgY29uc3QKK3sKKyAgICBS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygp
OworICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzUmVnaW9ucygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKKyAgICBS
ZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFu
Z2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKworICAgIGNvbXB1dGVSZWdp
b25SYW5nZUZvckJveENoaWxkKGJveCk7CisKKyAgICBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVn
aW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1Ro
cmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBuZXdTdGFydFJlZ2lvbiwgbmV3RW5kUmVn
aW9uKTsKKworICAgIC8vIFRoZSByZWdpb24gcmFuZ2Ugb2YgdGhlIGJveCBoYXMgY2hhbmdlZC4g
U29tZSBib3hlcyAoZS5nIGZsb2F0cykgbWF5IGhhdmUgYmVlbiBwb3NpdGlvbmVkIGFzc3VtaW5n
CisgICAgLy8gYSBkaWZmZXJlbnQgcmFuZ2UuCisgICAgLy8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJv
dXQgdGhpcy4gV2UgZG9uJ3QgbmVlZCB0byByZWxheW91dCBhbGwgdGhlIHRpbWUuCisgICAgaWYg
KG5ld1N0YXJ0UmVnaW9uICE9IHN0YXJ0UmVnaW9uIHx8IG5ld0VuZFJlZ2lvbiAhPSBlbmRSZWdp
b24pCisgICAgICAgIGJveC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKKwor
ICAgIGJveC0+bGF5b3V0SWZOZWVkZWQoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
Y29sbGFwc2VkTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggYjFmNTdhOGE3ZjVl
YjNkOWMwNzAyZDA5MzFmMTEyNDFkMDU3ZGZjOC4uZTU3OWQxODU3ZDNjZjQ4NTNhMmY4ZGM4MjI5
Y2JjY2Y2YWYyMmVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAg
LTM0NSw5ICszNDUsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIGxvZ2ljYWwg
d2lkdGgvaGVpZ2h0IGFuZCBtYXJnaW5zIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2st
ZmxvdyBkaXJlY3Rpb24uCiAgICAgZW51bSBBcHBseUxheW91dERlbHRhTW9kZSB7IEFwcGx5TGF5
b3V0RGVsdGEsIERvTm90QXBwbHlMYXlvdXREZWx0YSB9OwotICAgIExheW91dFVuaXQgbG9naWNh
bFdpZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT53aWR0aCgpIDogY2hpbGQtPmhlaWdodCgpOyB9Ci0g
ICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGls
ZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5oZWlnaHQoKSA6
IGNoaWxkLT53aWR0aCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGNoaWxkLT55KCkgOiBjaGlsZC0+eCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhG
b3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+aGVpZ2h0KCk7IH0KKyAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxk
KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmhlaWdo
dCgpIDogY2hpbGQtPndpZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6IGNoaWxkLT54KCk7IH0KICAgICB2b2lkIHNldExvZ2lj
YWxMZWZ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwg
QXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEpOwogICAgIHZvaWQg
c2V0TG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgbG9naWNh
bFRvcCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEpOwogICAg
IExheW91dFVuaXQgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGNoaWxkKSBjb25zdCB7IHJldHVybiBjaGlsZC0+bWFyZ2luQmVmb3JlKHN0eWxlKCkpOyB9
CkBAIC01NzYsOSArNTc2LDEyIEBAIHByb3RlY3RlZDoKICAgICB9CiAjZW5kaWYKIAotICAgIGJv
b2wgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNCZWZvcmVDaGlsZExheW91dChSZW5kZXJGbG93
VGhyZWFkKik7Ci0gICAgdm9pZCB1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0FmdGVyQ2hpbGRM
YXlvdXQoUmVuZGVyRmxvd1RocmVhZCosIGJvb2wgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKLSAg
ICB2b2lkIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKFJlbmRlckZsb3dUaHJlYWQqKTsKKyAg
ICBib29sIHVwZGF0ZUV4Y2x1c2lvbnNCZWZvcmVCbG9ja0xheW91dCgpOworICAgIHZvaWQgdXBk
YXRlRXhjbHVzaW9uc0FmdGVyQmxvY2tMYXlvdXQoYm9vbCBoZWlnaHRDaGFuZ2VkID0gZmFsc2Up
OworICAgIHZvaWQgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94
KikgY29uc3Q7CisKKyAgICB2b2lkIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChSZW5k
ZXJCb3gqKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoUmVu
ZGVyQm94KikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUJsb2NrQ2hpbGREaXJ0eUJpdHNCZWZv
cmVMYXlvdXQoYm9vbCByZWxheW91dENoaWxkcmVuLCBSZW5kZXJCb3gqKTsKIApAQCAtMTE1Miw3
ICsxMTU1LDYgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3Q7CiAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQpIGNvbnN0OwotICAgIFJlbmRlclJlZ2lv
biogY2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogcHJv
dGVjdGVkOgogICAgIHN0cnVjdCBGbG9hdGluZ09iamVjdEhhc2hGdW5jdGlvbnMgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRl
eCBlYzU4M2RlZmFlNDE1YzA1NDg2ZDQzMTQyMmVhM2EzZmE2OGZiMDYwLi4wN2Y4MDNmZDgwZWZi
NTNlNDJmZmJjYzVjZTViMjRmYWQwMGE0YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMjEzOCw2ICsyMTM4LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0JiByZXBhaW4KICAgICAgICAgVmVjdG9yPFJlbmRlckJveCo+IHJlcGxh
Y2VkQ2hpbGRyZW47CiAgICAgICAgIGZvciAoSW5saW5lV2Fsa2VyIHdhbGtlcih0aGlzKTsgIXdh
bGtlci5hdEVuZCgpOyB3YWxrZXIuYWR2YW5jZSgpKSB7CiAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIG8gPSB3YWxrZXIuY3VycmVudCgpOworCiAgICAgICAgICAgICBpZiAoIWhhc0lubGluZUNo
aWxkICYmIG8tPmlzSW5saW5lKCkpCiAgICAgICAgICAgICAgICAgaGFzSW5saW5lQ2hpbGQgPSB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGE0NGQ5YmEy
MzZmYmY3MTE1YzUyOTVlNTNmNWEyMGZjY2Y3ZGNmMmMuLjI5NTA5NzQyYzg3Y2FkZTIwNmYwMWQ4
YmJiNGUyZWU0MGI4OTdlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CkBAIC0xMDYsMTEgKzEwNiw1NCBAQCBSZW5kZXJCb3g6On5SZW5kZXJCb3goKQogewogfQogCitS
ZW5kZXJSZWdpb24qIFJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJS
ZWdpb24qIHJlZ2lvbikgY29uc3QKK3sKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworCisgICAgQVNTRVJUKGlzUmVuZGVyVmll
dygpIHx8IChyZWdpb24gJiYgZmxvd1RocmVhZCkpOworICAgIGlmIChpc1JlbmRlclZpZXcoKSkK
KyAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKworICAgIC8vIFdlIG5lZWQgdG8gY2xhbXAgdG8gdGhl
IGJsb2NrLCBzaW5jZSB3ZSB3YW50IGFueSBsaW5lcyBvciBibG9ja3MgdGhhdCBvdmVyZmxvdyBv
dXQgb2YgdGhlCisgICAgLy8gbG9naWNhbCB0b3Agb3IgbG9naWNhbCBib3R0b20gb2YgdGhlIGJs
b2NrIHRvIHNpemUgYXMgdGhvdWdoIHRoZSBib3JkZXIgYm94IGluIHRoZSBmaXJzdCBhbmQKKyAg
ICAvLyBsYXN0IHJlZ2lvbnMgZXh0ZW5kZWQgaW5maW5pdGVseS4gT3RoZXJ3aXNlIHRoZSBsaW5l
cyBhcmUgZ29pbmcgdG8gc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIHJlZ2lvbnMKKyAgICAvLyB0aGV5
IG92ZXJmbG93IGludG8sIHdoaWNoIG1ha2VzIG5vIHNlbnNlIHdoZW4gdGhpcyBibG9jayBkb2Vz
bid0IGV4aXN0IGluIHxyZWdpb258IGF0IGFsbC4KKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVh
ZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisK
KyAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENv
bnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkK
KyAgICAgICAgcmV0dXJuIHN0YXJ0UmVnaW9uOworICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9u
LT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJlZ2lvbi0+bG9naWNhbFRv
cEZvckZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgICAgIHJldHVybiBlbmRSZWdpb247CisKKyAg
ICByZXR1cm4gcmVnaW9uOworfQorCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6Ym9yZGVyQm94UmVj
dEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3Mg
Y2FjaGVGbGFnKSBjb25zdAogewogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gYm9y
ZGVyQm94UmVjdCgpOwotICAgIAorCisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9
IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJlYWQpCisgICAg
ICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7CisKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVh
ZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisK
KyAgICAvLyBGSVhNRTogSW4gYSBwZXJmZWN0IHdvcmxkIHRoaXMgY29uZGl0aW9uIHNob3VsZCBu
ZXZlciBoYXBwZW4uCisgICAgaWYgKCFzdGFydFJlZ2lvbiB8fCAhZW5kUmVnaW9uKQorICAgICAg
ICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworCisgICAgLy8gRklYTUU6IE9uY2Ugb3ZlcmZsb3cg
aXMgaW1wbGVtZW50ZWQgdGhpcyBhc3NlcnRpb24gbmVlZHMgdG8gYmUgZW5hYmxlZC4gUmlnaHQg
bm93IHRoZSBvdmVyZmxvdyBjb250ZW50IGlzIHBhaW50ZWQKKyAgICAvLyBpbiByZWdpb25zIG91
dHNpZGUgdGhlIGJveCByYW5nZSBzbyB0aGUgYXNzZXJ0IGlzIGRpc2FibGVkLgorICAgIC8vIEFT
U0VSVChjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbikgPT0gcmVnaW9uKTsKKworICAg
IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBib3hlcyBhcmUgcGFpbnRlZCBpbnNpZGUgdGhlaXIgcmVn
aW9uIHJhbmdlLgorICAgIHJlZ2lvbiA9IGNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9u
KTsKKwogICAgIC8vIENvbXB1dGUgdGhlIGxvZ2ljYWwgd2lkdGggYW5kIHBsYWNlbWVudCBpbiB0
aGlzIHJlZ2lvbi4KICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBib3hJbmZvID0gcmVuZGVyQm94
UmVnaW9uSW5mbyhyZWdpb24sIGNhY2hlRmxhZyk7CiAgICAgaWYgKCFib3hJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU3OTExYWQzMjhmMzc5OWNkNmM5YWMzNWY5
NjEyNTE5NzNkMDBiMzAuLjFmZWJmZTdiNmFkYThiODdmNmU3Y2Y3MDgyNGJiOTViNjg3MjFlMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTM2MCw2ICszNjAsNyBAQCBw
dWJsaWM6CiAKICAgICBlbnVtIFJlbmRlckJveFJlZ2lvbkluZm9GbGFncyB7IENhY2hlUmVuZGVy
Qm94UmVnaW9uSW5mbywgRG9Ob3RDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8gfTsKICAgICBMYXlv
dXRSZWN0IGJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5kZXJSZWdpb24qLCBSZW5kZXJCb3hSZWdp
b25JbmZvRmxhZ3MgPSBDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8pIGNvbnN0OworICAgIFJlbmRl
clJlZ2lvbiogY2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5mbygpOwogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3Q7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guY3BwCmluZGV4IDJiZGJhOWI4Y2MyYjNlMzdkOWY5MjZkZTgxOGU0Y2I5MGM0YmI1OGQu
LjA3YTFjM2U5OTUzMzlkNGJmZmIyMjI0YTdmZjc1M2U0ZDJiNWRlZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwog
ICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKGZsb3dUaHJlYWQpKQogICAgICAg
ICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAodXBkYXRlUmVnaW9uc0FuZEV4Y2x1
c2lvbnNCZWZvcmVDaGlsZExheW91dChmbG93VGhyZWFkKSkKKyAgICBpZiAodXBkYXRlRXhjbHVz
aW9uc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVl
OwogCiAgICAgTGF5b3V0U2l6ZSBwcmV2aW91c1NpemUgPSBzaXplKCk7CkBAIC0zNDcsNyArMzQ3
LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIGxheW91dFBvc2l0aW9uZWRPYmpl
Y3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVnaW9uc0Fu
ZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0ZUV4Y2x1
c2lvbnNBZnRlckJsb2NrTGF5b3V0KCk7CiAKICAgICBpZiAoIWlzRmxvYXRpbmdPck91dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBoZWlnaHQoKSA9PSAwKSB7CiAgICAgICAgIC8vIFdlIGFyZSBhIGJs
b2NrIHdpdGggbm8gYm9yZGVyIGFuZCBwYWRkaW5nIGFuZCBhIGNvbXB1dGVkIGhlaWdodApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggN2M2
NDgxMGZhZWUzZmEwZTE5ODUyYjJmMmJhNjYzMmZjMjM3NWI3OS4uMmEzZTY2MDcyNGQxYTI2MDMy
MzQzZDFkNmRmM2VmY2E3ZTA0NTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQog
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkp
CiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25z
QW5kRXhjbHVzaW9uc0JlZm9yZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRh
dGVFeGNsdXNpb25zQmVmb3JlQmxvY2tMYXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJl
biA9IHRydWU7CiAKICAgICBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA9IC0x
OwpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIGxheW91dFBvc2l0aW9u
ZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVn
aW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0
ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0KCk7CiAKICAgICByZXBhaW50Q2hpbGRyZW5EdXJp
bmdMYXlvdXRJZk1vdmVkKG9sZENoaWxkUmVjdHMpOwogICAgIC8vIEZJWE1FOiBjc3MzL2ZsZXhi
b3gvcmVwYWludC1ydGwtY29sdW1uLmh0bWwgc2VlbXMgdG8gcmVwYWludCBtb3JlIG92ZXJmbG93
IHRoYW4gaXQgbmVlZHMgdG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKaW5kZXggNzAyMDhmNjZlNjVhNGNhNWE4ZGRiNDE0MjhiYjg2ZDFlOGZjZjVi
Yi4uZmM0MjBmMDc3YTI5ZWY0N2NkYmQzMTBlMGYxMDE2MTJhNTcwN2I2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMTg1LDYgKzE4NSw4
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6dmFsaWRhdGVSZWdpb25zKCkKIAogICAgICAgICAg
ICAgICAgIHByZXZpb3VzUmVnaW9uTG9naWNhbFdpZHRoID0gcmVnaW9uTG9naWNhbFdpZHRoOwog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBt
X3JlZ2lvbkxpc3QuZmlyc3QoKSwgbV9yZWdpb25MaXN0Lmxhc3QoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTM3NiwzMyArMzc4LDQ2IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVwYWlu
dFJlY3RhbmdsZUluUmVnaW9ucyhjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCwKICAgICB9
CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uQXRCbG9ja09mZnNl
dChMYXlvdXRVbml0IG9mZnNldCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uLCBSZWdpb25BdXRvR2Vu
ZXJhdGlvblBvbGljeSBhdXRvR2VuZXJhdGlvblBvbGljeSkKK1JlbmRlclJlZ2lvbiogUmVuZGVy
Rmxvd1RocmVhZDo6cmVnaW9uQXRCbG9ja09mZnNldChjb25zdCBSZW5kZXJCb3gqIGNsYW1wQm94
LCBMYXlvdXRVbml0IG9mZnNldCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uLCBSZWdpb25BdXRvR2Vu
ZXJhdGlvblBvbGljeSBhdXRvR2VuZXJhdGlvblBvbGljeSkKIHsKICAgICBBU1NFUlQoIW1fcmVn
aW9uc0ludmFsaWRhdGVkKTsKIAogICAgIGlmIChhdXRvR2VuZXJhdGlvblBvbGljeSA9PSBBbGxv
d1JlZ2lvbkF1dG9HZW5lcmF0aW9uKQogICAgICAgICBhdXRvR2VuZXJhdGVSZWdpb25zVG9CbG9j
a09mZnNldChvZmZzZXQpOwogCi0gICAgaWYgKG9mZnNldCA8PSAwKQotICAgICAgICByZXR1cm4g
bV9yZWdpb25MaXN0LmlzRW1wdHkoKSA/IDAgOiBtX3JlZ2lvbkxpc3QuZmlyc3QoKTsKKyAgICBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9IDA7CisgICAgaWYgKG9mZnNldCA8PSAwKSB7CisgICAgICAg
IHJlZ2lvbiA9IG1fcmVnaW9uTGlzdC5pc0VtcHR5KCkgPyAwIDogbV9yZWdpb25MaXN0LmZpcnN0
KCk7CisgICAgICAgIGlmICghY2xhbXBCb3gpCisgICAgICAgICAgICByZXR1cm4gcmVnaW9uOwor
ICAgICAgICByZXR1cm4gcmVnaW9uID8gY2xhbXBCb3gtPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lv
bnMocmVnaW9uKSA6IDA7CisgICAgfQogCiAgICAgUmVnaW9uU2VhcmNoQWRhcHRlciBhZGFwdGVy
KG9mZnNldCk7CiAgICAgbV9yZWdpb25JbnRlcnZhbFRyZWUuYWxsT3ZlcmxhcHNXaXRoQWRhcHRl
cjxSZWdpb25TZWFyY2hBZGFwdGVyPihhZGFwdGVyKTsKIAogICAgIC8vIElmIG5vIHJlZ2lvbiB3
YXMgZm91bmQsIHRoZSBvZmZzZXQgaXMgaW4gdGhlIGZsb3cgdGhyZWFkIG92ZXJmbG93LgogICAg
IC8vIFRoZSBsYXN0IHJlZ2lvbiB3aWxsIGNvbnRhaW4gdGhlIG9mZnNldCBpZiBleHRlbmRMYXN0
UmVnaW9uIGlzIHNldCBvciBpZiB0aGUgbGFzdCByZWdpb24gaXMgYSBzZXQuCi0gICAgaWYgKCFh
ZGFwdGVyLnJlc3VsdCgpICYmICFtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIChleHRlbmRMYXN0
UmVnaW9uIHx8IG1fcmVnaW9uTGlzdC5sYXN0KCktPmlzUmVuZGVyUmVnaW9uU2V0KCkpKQotICAg
ICAgICByZXR1cm4gbV9yZWdpb25MaXN0Lmxhc3QoKTsKKyAgICBpZiAoIWFkYXB0ZXIucmVzdWx0
KCkgJiYgIW1fcmVnaW9uTGlzdC5pc0VtcHR5KCkgJiYgKGV4dGVuZExhc3RSZWdpb24gfHwgbV9y
ZWdpb25MaXN0Lmxhc3QoKS0+aXNSZW5kZXJSZWdpb25TZXQoKSkpIHsKKyAgICAgICAgcmVnaW9u
ID0gbV9yZWdpb25MaXN0Lmxhc3QoKTsKKyAgICAgICAgaWYgKCFjbGFtcEJveCkKKyAgICAgICAg
ICAgIHJldHVybiByZWdpb247CisgICAgICAgIHJldHVybiByZWdpb24gPyBjbGFtcEJveC0+Y2xh
bXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pIDogMDsKKyAgICB9CiAKLSAgICByZXR1cm4g
YWRhcHRlci5yZXN1bHQoKTsKKyAgICByZWdpb24gPSBhZGFwdGVyLnJlc3VsdCgpOworICAgIGlm
ICghY2xhbXBCb3gpCisgICAgICAgIHJldHVybiByZWdpb247CisgICAgcmV0dXJuIHJlZ2lvbiA/
IGNsYW1wQm94LT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbikgOiAwOwogfQogICAg
IAogTGF5b3V0UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZl
VG9PZmZzZXRQYXJlbnQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIGJveE1vZGVsT2JqZWN0
LCBjb25zdCBMYXlvdXRQb2ludCYgc3RhcnRQb2ludCkKIHsKICAgICBMYXlvdXRQb2ludCByZWZl
cmVuY2VQb2ludCA9IHN0YXJ0UG9pbnQ7CiAgICAgCisgICAgY29uc3QgUmVuZGVyQmxvY2sqIG9i
akNvbnRhaW5pbmdCbG9jayA9IGJveE1vZGVsT2JqZWN0LmNvbnRhaW5pbmdCbG9jaygpOwogICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGFkYXB0ZWQgZm9yIGRpZmZlcmVudCB3cml0aW5n
IG1vZGVzIGluc2lkZSB0aGUgZmxvdyB0aHJlYWQuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQocmVmZXJlbmNlUG9pbnQueSgpKTsKKyAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvYmpDb250YWluaW5n
QmxvY2ssIHJlZmVyZW5jZVBvaW50LnkoKSk7CiAgICAgaWYgKHN0YXJ0UmVnaW9uKSB7CiAgICAg
ICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSBvZmZzZXQgY29vcmRpbmF0ZXMgb2YgdGhlIHJl
Z2lvbi4KICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGN1cnJPYmplY3QgPSBzdGFydFJl
Z2lvbjsKQEAgLTQyMiw3ICs0MzcsNiBAQCBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjph
ZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZQogICAgICAg
ICAvLyBhbmQgaWYgc28sIGRyb3AgdGhlIG9iamVjdCdzIHRvcCBwb3NpdGlvbiAod2hpY2ggd2Fz
IGNvbXB1dGVkIHJlbGF0aXZlIHRvIGl0cyBjb250YWluaW5nIGJsb2NrCiAgICAgICAgIC8vIGFu
ZCBpcyBubyBsb25nZXIgdmFsaWQpIGFuZCByZWNvbXB1dGUgaXQgdXNpbmcgdGhlIHJlZ2lvbiBp
biB3aGljaCBpdCBmbG93cyBhcyByZWZlcmVuY2UuCiAgICAgICAgIGJvb2wgd2FzQ29tcHV0ZWRS
ZWxhdGl2ZVRvT3RoZXJSZWdpb24gPSBmYWxzZTsKLSAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sq
IG9iakNvbnRhaW5pbmdCbG9jayA9IGJveE1vZGVsT2JqZWN0LmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgICAgICB3aGlsZSAob2JqQ29udGFpbmluZ0Jsb2NrICYmICFvYmpDb250YWluaW5nQmxvY2st
PmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRo
aXMgb2JqZWN0IGlzIGluIGEgZGlmZmVyZW50IHJlZ2lvbi4KICAgICAgICAgICAgIFJlbmRlclJl
Z2lvbiogcGFyZW50U3RhcnRSZWdpb24gPSAwOwpAQCAtNDgwLDE5ICs0OTQsMTkgQEAgTGF5b3V0
UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQ
YXJlbnQoY29uc3QgUmVuZGUKIAogTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9n
aWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKIHsKLSAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoMCwgb2Zmc2V0LCBmYWxzZSwgQWxsb3dSZWdp
b25BdXRvR2VuZXJhdGlvbik7CiAgICAgcmV0dXJuIHJlZ2lvbiA/IHJlZ2lvbi0+cGFnZUxvZ2lj
YWxUb3BGb3JPZmZzZXQob2Zmc2V0KSA6IExheW91dFVuaXQoKTsKIH0KIAogTGF5b3V0VW5pdCBS
ZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbFdpZHRoRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zm
c2V0KQogewotICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChv
ZmZzZXQsIHRydWUpOworICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09m
ZnNldCgwLCBvZmZzZXQsIHRydWUsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogICAgIHJl
dHVybiByZWdpb24gPyByZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgoKSA6IGNvbnRlbnRMb2dpY2Fs
V2lkdGgoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbEhl
aWdodEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoMCwgb2Zmc2V0LCBmYWxzZSwgQWxsb3dSZWdpb25B
dXRvR2VuZXJhdGlvbik7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC01MDEsNyArNTE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNh
bEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKIAogTGF5b3V0VW5pdCBSZW5kZXJG
bG93VGhyZWFkOjpwYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0
IG9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91bmRhcnlSdWxlKQogewotICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBB
bGxvd1JlZ2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTUxNyw3ICs1MzEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6
OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2ZmcwogICAg
IHJldHVybiByZW1haW5pbmdIZWlnaHQ7CiB9CiAKLVJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1Ro
cmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUp
IGNvbnN0CitSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJlYWQ6Om1hcEZyb21GbG93VG9SZWdp
b24oY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3Rh
dGUpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC01MzAsNyArNTQ0LDcgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFk
OjptYXBGcm9tRmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGEKICAgICAv
LyBOb3RlOiBVc2luZyB0aGUgY2VudGVyIGluIG9yZGVyIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9y
cy4KIAogICAgIExheW91dFBvaW50IGNlbnRlciA9IGJveFJlY3QuY2VudGVyKCk7Ci0gICAgUmVu
ZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJlYWQqPih0
aGlzKS0+cmVnaW9uQXRCbG9ja09mZnNldChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2Vu
dGVyLnkoKSA6IGNlbnRlci54KCksIHRydWUsIERpc2FsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24p
OworICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gY29uc3RfY2FzdDxSZW5kZXJGbG93
VGhyZWFkKj4odGhpcyktPnJlZ2lvbkF0QmxvY2tPZmZzZXQoYmxvY2ssIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBjZW50ZXIueSgpIDogY2VudGVyLngoKSwgdHJ1ZSwgRGlzYWxsb3dSZWdp
b25BdXRvR2VuZXJhdGlvbik7CiAgICAgaWYgKCFyZW5kZXJSZWdpb24pCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC01ODQsMjEgKzU5OCwxOCBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmxvZ2lj
YWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayogYgogICAg
IFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwogICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2Nr
LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAotICAgIC8vIFdoZW4gdGhlIHJlZ2lvbiBjaGFp
biBpcyBpbnZhbGlkYXRlZCB0aGUgYm94IGluZm9ybWF0aW9uIGlzIGRpc2NhcmRlZCBzbyB3ZSBt
dXN0IGFzc3VtZSB0aGUgd2lkdGggaGFzIGNoYW5nZWQuCi0gICAgaWYgKG1fcGFnZUxvZ2ljYWxT
aXplQ2hhbmdlZCAmJiAhc3RhcnRSZWdpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gTm90IG5lY2Vzc2FyeSBmb3IgdGhlIGZsb3cgdGhyZWFkLCBzaW5jZSB3ZSBhbHJlYWR5IGNv
bXB1dGVkIHRoZSBjb3JyZWN0IGluZm8gZm9yIGl0LgogICAgIGlmIChibG9jayA9PSB0aGlzKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChS
ZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRS
ZWdpb24pOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVk
c0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQoKSk7CiAKKyAgICAgICAgLy8g
V2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBmb3IgdGhpcyByZWdpb24gc28gd2UgbmVl
ZCB0byBkbyBpdC4KICAgICAgICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IG9sZEluZm8g
PSByZWdpb24tPnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGJsb2NrKTsKICAgICAgICAgaWYgKCFv
bGRJbmZvKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBMYXlvdXRVbml0IG9sZExvZ2ljYWxXaWR0aCA9IG9sZEluZm8tPmxvZ2ljYWxX
aWR0aCgpOwogICAgICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBuZXdJbmZvID0gYmxvY2stPnJl
bmRlckJveFJlZ2lvbkluZm8ocmVnaW9uKTsKQEAgLTY3NiwxNCArNjg3LDMxIEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJP
YmplY3QqIG9iamVjdCwKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyRmxvd1RocmVhZDo6c2V0UmVn
aW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5k
ZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qIHN0YXJ0
UmVnaW9uLCBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbikKIHsKICAgICBpZiAoIWhhc1JlZ2lvbnMo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IE5vdCByaWdodCBmb3IgZGlmZmVy
aW5nIHdyaXRpbmctbW9kZXMuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IHJlZ2lv
bkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgdHJ1ZSk7Ci0g
ICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKyBib3gtPmxvZ2ljYWxIZWlnaHQoKSwgdHJ1ZSk7Cisg
ICAgQVNTRVJUKHN0YXJ0UmVnaW9uICYmIGVuZFJlZ2lvbik7CisKKyAgICBmb3IgKFJlbmRlclJl
Z2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbik7
IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgaWYgKHJlZ2lvbi0+cmVuZGVyQm94UmVnaW9u
SW5mbyhib3gpKQorICAgICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZv
KGJveCk7CisKKyAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGJveCk7Cit9
CisKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVu
ZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiogZW5k
UmVnaW9uKQoreworICAgIGlmICghaGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBBU1NFUlQoc3RhcnRSZWdpb24gJiYgZW5kUmVnaW9uKTsKICAgICBSZW5kZXJSZWdpb25SYW5n
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lvblJhbmdlTWFwLmZpbmQoYm94KTsKICAgICBpZiAo
aXQgPT0gbV9yZWdpb25SYW5nZU1hcC5lbmQoKSkgewogICAgICAgICBtX3JlZ2lvblJhbmdlTWFw
LnNldChib3gsIFJlbmRlclJlZ2lvblJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKTsKQEAg
LTY5NiwyMSArNzI0LDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZv
ckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgTGF5b3V0VW5pdCBvZmYKICAgICBpZiAocmFuZ2Uu
c3RhcnRSZWdpb24oKSA9PSBzdGFydFJlZ2lvbiAmJiByYW5nZS5lbmRSZWdpb24oKSA9PSBlbmRS
ZWdpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIERlbGV0ZSBhbnkgaW5mbyB0aGF0IHdl
IGZpbmQgYmVmb3JlIG91ciBuZXcgc3RhcnRSZWdpb24gYW5kIGFmdGVyIG91ciBuZXcgZW5kUmVn
aW9uLgotICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9u
TGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7Ci0gICAg
ICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmIChyZWdpb24gPT0g
c3RhcnRSZWdpb24pIHsKLSAgICAgICAgICAgIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChlbmRS
ZWdpb24pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZWdp
b24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94KTsKLQotICAgICAgICBpZiAocmVnaW9u
ID09IHJhbmdlLmVuZFJlZ2lvbigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShib3gsIHJhbmdlLnN0YXJ0UmVnaW9uKCksIHJh
bmdlLmVuZFJlZ2lvbigpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICAvLyBGSVhNRTog
RXZlbnR1YWxseSBiZSBzbWFydGVyIGFib3V0IHRoaXMgKGUuZy4gcHV0IGEgZmxhZyBvbiB0aGUg
Ym94IHRvIGludmFsaWRhdGUgdGhlIGluZm8pLgorICAgIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5m
byhib3gsIHJhbmdlLnN0YXJ0UmVnaW9uKCksIHJhbmdlLmVuZFJlZ2lvbigpKTsKICAgICByYW5n
ZS5zZXRSYW5nZShzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIH0KIApAQCAtNzMyLDcgKzc0Nyw3
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YXBwbHlCcmVha0FmdGVyQ29udGVudChMYXlvdXRV
bml0IGNsaWVudEhlaWdodCkKIHsKICAgICAvLyBTaW11bGF0ZSBhIHJlZ2lvbiBicmVhayBhdCBo
ZWlnaHQuIElmIGl0IHBvaW50cyBpbnNpZGUgYW4gYXV0byBsb2dpY2FsIGhlaWdodCByZWdpb24s
CiAgICAgLy8gdGhlbiBpdCBtYXkgZGV0ZXJtaW5lIHRoZSByZWdpb24gb3ZlcnJpZGUgbG9naWNh
bCBjb250ZW50IGhlaWdodC4KLSAgICBhZGRGb3JjZWRSZWdpb25CcmVhayhjbGllbnRIZWlnaHQs
IHRoaXMsIGZhbHNlKTsKKyAgICBhZGRGb3JjZWRSZWdpb25CcmVhayh0aGlzLCBjbGllbnRIZWln
aHQsIHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlT3Zl
cmZsb3dTdGF0ZUZvclJlZ2lvbnMoTGF5b3V0VW5pdCBvbGRDbGllbnRBZnRlckVkZ2UpCkBAIC05
MzEsNyArOTQ2LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVSZWdpb25zRmxvd1Ro
cmVhZFBvcnRpb25SZWN0KGNvbnN0IFJlbmRlclJlZ2lvbiogbGEKIC8vIEV2ZW4gaWYgd2UgcmVx
dWlyZSB0aGUgYnJlYWsgdG8gb2NjdXIgYXQgb2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQsIGJlY2F1
c2UgcmVnaW9ucyBtYXkgaGF2ZSBtaW4vbWF4LWhlaWdodCB2YWx1ZXMsCiAvLyBpdCBpcyBwb3Nz
aWJsZSB0aGF0IHRoZSBicmVhayB3aWxsIG9jY3VyIGF0IGEgZGlmZmVyZW50IG9mZnNldCB0aGFu
IHRoZSBvcmlnaW5hbCBvbmUgcmVxdWlyZWQuCiAvLyBvZmZzZXRCcmVha0FkanVzdG1lbnQgbWVh
c3VyZXMgdGhlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSByZXF1ZXN0ZWQgYnJlYWsgb2Zmc2V0IGFu
ZCB0aGUgY3VycmVudCBicmVhayBvZmZzZXQuCi1ib29sIFJlbmRlckZsb3dUaHJlYWQ6OmFkZEZv
cmNlZFJlZ2lvbkJyZWFrKExheW91dFVuaXQgb2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQsIFJlbmRl
ck9iamVjdCogYnJlYWtDaGlsZCwgYm9vbCBpc0JlZm9yZSwgTGF5b3V0VW5pdCogb2Zmc2V0QnJl
YWtBZGp1c3RtZW50KQorYm9vbCBSZW5kZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVh
ayhjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIExheW91dFVuaXQgb2Zmc2V0QnJlYWtJbkZsb3dU
aHJlYWQsIFJlbmRlck9iamVjdCogYnJlYWtDaGlsZCwgYm9vbCBpc0JlZm9yZSwgTGF5b3V0VW5p
dCogb2Zmc2V0QnJlYWtBZGp1c3RtZW50KQogewogICAgIC8vIFdlIHRha2UgYnJlYWtzIGludG8g
YWNjb3VudCBmb3IgaGVpZ2h0IGNvbXB1dGF0aW9uIGZvciBhdXRvIGxvZ2ljYWwgaGVpZ2h0IHJl
Z2lvbnMKICAgICAvLyBvbmx5IGluIHRoZSBsYXlvdXQgcGhhc2UgaW4gd2hpY2ggd2UgbGF5IG91
dCB0aGUgZmxvd3MgdGhyZWFkcyB1bmNvbnN0cmFpbmVkCkBAIC05NTgsNyArOTczLDcgQEAgYm9v
bCBSZW5kZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhMYXlvdXRVbml0IG9mZnNl
dEJyZWFrSW5GbG93VGhyZWFkLAogCiAgICAgLy8gU2ltdWxhdGUgYSByZWdpb24gYnJlYWsgYXQg
b2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQuIElmIGl0IHBvaW50cyBpbnNpZGUgYW4gYXV0byBsb2dp
Y2FsIGhlaWdodCByZWdpb24sCiAgICAgLy8gdGhlbiBpdCBkZXRlcm1pbmVzIHRoZSByZWdpb24g
b3ZlcnJpZGUgbG9naWNhbCBjb250ZW50IGhlaWdodC4KLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
biA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQpOworICAgIFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgb2Zmc2V0QnJl
YWtJbkZsb3dUaHJlYWQpOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTExNTksNyArMTE3NCw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50CiAgICAgaWYg
KHRoaXMgPT0gcmVwYWludENvbnRhaW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gbWFwRnJvbUZsb3dUb1JlZ2lvbih0cmFuc2Zvcm1TdGF0ZSkp
CisgICAgaWYgKFJlbmRlclJlZ2lvbiogcmVnaW9uID0gbWFwRnJvbUZsb3dUb1JlZ2lvbih0aGlz
LCB0cmFuc2Zvcm1TdGF0ZSkpCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgY2FzdCBiZWxvdyBpcyBw
cm9iYWJseSBub3QgdGhlIGJlc3Qgc29sdXRpb24sIHdlIG1heSBuZWVkIHRvIGZpbmQgYSBiZXR0
ZXIgd2F5LgogICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJPYmplY3QqPihyZWdpb24p
LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlZ2lvbi0+Y29udGFpbmVyRm9yUmVwYWludCgpLCB0cmFu
c2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggMTNiZDcyNjhlMzgwOWU3ODdlZTc1NTA3NWM5NzFh
MTE1Yzg5NWZmMi4uNDgyMzIyYjE1NmMxMTU4ZjgyODRmYzk1MmMyN2U3OTNiY2FkNzQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMDMsMTkg
KzEwMywyMCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodEZvck9m
ZnNldChMYXlvdXRVbml0KTsKICAgICBMYXlvdXRVbml0IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVp
Z2h0Rm9yT2Zmc2V0KExheW91dFVuaXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBJbmNsdWRlUGFnZUJv
dW5kYXJ5KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCAvKm9m
ZnNldCovLCBMYXlvdXRVbml0IC8qc3BhY2VTaG9ydGFnZSovKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRV
bml0IC8qbWluSGVpZ2h0Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoY29u
c3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IC8qb2Zmc2V0Ki8sIExheW91dFVuaXQgLypzcGFj
ZVNob3J0YWdlKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdo
dChjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgLypvZmZzZXQqLywgTGF5b3V0VW5pdCAv
Km1pbkhlaWdodCovKSB7IH0KIAogICAgIGVudW0gUmVnaW9uQXV0b0dlbmVyYXRpb25Qb2xpY3kg
ewogICAgICAgICBBbGxvd1JlZ2lvbkF1dG9HZW5lcmF0aW9uLAogICAgICAgICBEaXNhbGxvd1Jl
Z2lvbkF1dG9HZW5lcmF0aW9uLAogICAgIH07Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb25BdEJs
b2NrT2Zmc2V0KExheW91dFVuaXQsIGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlLCBSZWdp
b25BdXRvR2VuZXJhdGlvblBvbGljeSA9IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOworCisg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCosIExh
eW91dFVuaXQsIGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlLCBSZWdpb25BdXRvR2VuZXJh
dGlvblBvbGljeSA9IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogCiAgICAgYm9vbCByZWdp
b25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbnNIYXZl
VW5pZm9ybUxvZ2ljYWxXaWR0aDsgfQogICAgIGJvb2wgcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNh
bEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdo
dDsgfQogCi0gICAgUmVuZGVyUmVnaW9uKiBtYXBGcm9tRmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0
YXRlJikgY29uc3Q7CisgICAgUmVuZGVyUmVnaW9uKiBtYXBGcm9tRmxvd1RvUmVnaW9uKGNvbnN0
IFJlbmRlckJsb2NrKiwgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3Zl
UmVuZGVyQm94UmVnaW9uSW5mbyhSZW5kZXJCb3gqKTsKICAgICBib29sIGxvZ2ljYWxXaWR0aENo
YW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwpAQCAtMTI3LDcgKzEy
OCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uKCkgY29uc3Q7CiAg
ICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVnaW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFJlZ2lv
blJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSk7CisgICAgdm9pZCBzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBS
ZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdpb24qKTsKICAgICB2b2lkIGdldFJl
Z2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVn
aW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhclJl
bmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCosCkBAIC0xNDMsNyArMTQ0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrQXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zRm9y
TGF5b3V0KCk7CiAKLSAgICBib29sIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKExheW91dFVuaXQsIFJl
bmRlck9iamVjdCogYnJlYWtDaGlsZCwgYm9vbCBpc0JlZm9yZSwgTGF5b3V0VW5pdCogb2Zmc2V0
QnJlYWtBZGp1c3RtZW50ID0gMCk7CisgICAgYm9vbCBhZGRGb3JjZWRSZWdpb25CcmVhayhjb25z
dCBSZW5kZXJCbG9jayosIExheW91dFVuaXQsIFJlbmRlck9iamVjdCogYnJlYWtDaGlsZCwgYm9v
bCBpc0JlZm9yZSwgTGF5b3V0VW5pdCogb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0gMCk7CiAgICAg
dm9pZCBhcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQpOwogCiAgICAgYm9vbCBwYWdl
TG9naWNhbFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTG9naWNhbFNpemVDaGFu
Z2VkOyB9CkBAIC0xNjgsNiArMTY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaEZsb3dUaHJl
YWRMYXlvdXRTdGF0ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIHBvcEZsb3dUaHJl
YWRMYXlvdXRTdGF0ZSgpOwogICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UmVnaW9uKGNvbnN0IFJlbmRlckJsb2NrKikgY29uc3Q7CisgICAgdm9pZCBjbGVhclJlbmRl
ckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiwgUmVuZGVyUmVn
aW9uKik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXgg
NjhjZWU1NmIzYjhhODdhOGY2YzA1ODlhODczZjViMGJlODViZTcyYi4uNDZhN2EzZjc5MGQ1MGJj
MjQ5OGZkM2ZkYzE2YzZmOWY0YmRlYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0Qmxv
Y2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxv
Z2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0
Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kRXhjbHVzaW9uc0JlZm9y
ZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRhdGVFeGNsdXNpb25zQmVmb3Jl
QmxvY2tMYXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICBM
YXlvdXRTaXplIHByZXZpb3VzU2l6ZSA9IHNpemUoKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lk
IFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCkKIAogICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNS
b290KCkpOwogCi0gICAgdXBkYXRlUmVnaW9uc0FuZEV4Y2x1c2lvbnNBZnRlckNoaWxkTGF5b3V0
KGZsb3dUaHJlYWQpOworICAgIHVwZGF0ZUV4Y2x1c2lvbnNBZnRlckJsb2NrTGF5b3V0KCk7CiAK
ICAgICBjb21wdXRlT3ZlcmZsb3cob2xkQ2xpZW50QWZ0ZXJFZGdlKTsKICAgICBzdGF0ZVB1c2hl
ci5wb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKaW5kZXggZGZhMDE3ZGNkMDJlNDM5N2VmYTQzN2FmZGE1
NmFjYjU4NWU5NWFjMi4uYTg4YWU2MDIxZDJkYjUzNjBiY2YyM2YyOGJjYTkxYTUxYjM4MGIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZC5jcHAKQEAgLTEwNCwxNSArMTA0LDE1IEBAIHZvaWQgUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkOjphdXRvR2VuZXJhdGVSZWdpb25zVG9CbG9ja09mZnNldChMYXlvdXRV
bml0IC8qCiAgICAgdmFsaWRhdGVSZWdpb25zKCk7CiB9CiAKLXZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkOjpzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQg
c3BhY2VTaG9ydGFnZSkKK3ZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpzZXRQYWdl
QnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0
VW5pdCBzcGFjZVNob3J0YWdlKQogewotICAgIGlmIChSZW5kZXJNdWx0aUNvbHVtblNldCogbXVs
dGljb2xTZXQgPSB0b1JlbmRlck11bHRpQ29sdW1uU2V0KHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zm
c2V0KSkpCisgICAgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBtdWx0aWNvbFNldCA9IHRvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgb2Zmc2V0KSkpCiAg
ICAgICAgIG11bHRpY29sU2V0LT5yZWNvcmRTcGFjZVNob3J0YWdlKHNwYWNlU2hvcnRhZ2UpOwog
fQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6dXBkYXRlTWluaW11bVBhZ2VI
ZWlnaHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KQordm9pZCBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KGNvbnN0IFJl
bmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0
KQogewotICAgIGlmIChSZW5kZXJNdWx0aUNvbHVtblNldCogbXVsdGljb2xTZXQgPSB0b1JlbmRl
ck11bHRpQ29sdW1uU2V0KHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0KSkpCisgICAgaWYgKFJl
bmRlck11bHRpQ29sdW1uU2V0KiBtdWx0aWNvbFNldCA9IHRvUmVuZGVyTXVsdGlDb2x1bW5TZXQo
cmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgb2Zmc2V0KSkpCiAgICAgICAgIG11bHRpY29sU2V0
LT51cGRhdGVNaW5pbXVtQ29sdW1uSGVpZ2h0KG1pbkhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApp
bmRleCBkZmE5MjgwZjRmNDRhZjg4YzVjNzVmYzVkYThlYjQ3NjViYzdiNThmLi43MWEyYWJiNWEz
ZDc2NzBlMDA1YjhkZDMyMDExNjNlMWQ4MjMwNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCkBAIC00NCw4ICs0
NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXV0
b0dlbmVyYXRlUmVnaW9uc1RvQmxvY2tPZmZzZXQoTGF5b3V0VW5pdCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBMYXlvdXRVbml0IGluaXRpYWxMb2dpY2FsV2lkdGgoKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUJyZWFrKExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRV
bml0IHNwYWNlU2hvcnRhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNaW5p
bXVtUGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sq
LCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoY29uc3QgUmVuZGVyQmxv
Y2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpIE9WRVJSSURFOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiZTA0YjExY2ZkZmE1MmYyZjhl
OWVkYjVlM2MyZTVhMGU3NmMyMTAuLmM5ODUyYzQ1Nzg3ZmJjNWY5ZTM5NzNmZTI1ODMxYzUxNDAy
YjZjYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wNi0yMCAgQW5kcmVpIEJ1Y3VyICA8
YWJ1Y3VyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIFJlZ2lvbnNdIENvbXB1dGUgY29ycmVj
dCByZWdpb24gcmFuZ2VzIGZvciBib3hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2Mjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBjaGFuZ2VzIGluIGhvdyByZWdpb24gcmFu
Z2VzIGFyZSBjb21wdXRlZCBhbmQgYXBwbGllZC4KKyAgICAgICAgVGVtcG9yYXJpbHkgZGlzYWJs
ZSB0aGUgd2lkb3dzIGFuZCBvcnBoYW5zIHRlc3QgdW50aWwgd2UgZmlndXJlIG91dCBhIHdheSB0
byBoYW5kbGUgdGhlIHN0YWxlCisgICAgICAgIHdpZG93cyBSb290SW5saW5lQm94IHBvaW50ZXIu
CisKKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvYm90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1y
ZWdpb24tYWJzb2x1dGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdp
b25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVnaW9uLWFic29sdXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTIt
ZXhwZWN0ZWQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0
LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbC4KKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0yLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwuCisgICAgICAg
ICogZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbDoK
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sOgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11bnNwbGl0dGFibGUt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3Njcm9sbGFibGUt
cGFyYWdyYXBoLXVuc3BsaXR0YWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTA2LTE5ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29u
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFZpYnJhdGlvbiBjYW4gYmUgY2FuY2VsZWQgZXZlbiBp
ZiBwYWdlIHZpc2liaWxpdHkgc3RhdHVzIGlzIGhpZGRlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVnaW9uLWFic29s
dXRlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvYm90dG9tLW92ZXJm
bG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MzlkNjk4ZTQ5ZGZkNTYwYzU5YTc2ZjcwM2Q1ZDIyZWI3ZDc0ZDI2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmly
c3QtcmVnaW9uLWFic29sdXRlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgYm9keSB7IGZvbnQ6IDE2cHgvMS4yNSBtb25vc3BhY2U7IH0KKworICAgICAgICAgICAgI2Zp
cnN0LWJveC0xIHsKKyAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgYmx1ZTsK
KyAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAg
ICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6MjA0cHg7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAjZmlyc3QtYm94LTIgeworICAgICAgICAgICAgICAgIGJvcmRl
ci1ib3R0b206IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAx
cHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBi
bHVlOworICAgICAgICAgICAgICAgIGhlaWdodDo5NnB4OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3JlZ2lvbjEgewor
ICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4OworICAgICAgICAgICAgICAgIHBhZGRp
bmctdG9wOiA1cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4OworICAgICAg
ICAgICAgICAgIHdpZHRoOiA0MDJweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwNXB4Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDI5MHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4OworICAgICAg
ICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1y
aWdodDogNXB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICNwMSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAg
ICAgICAgICAgIHdpZHRoOiA0MCU7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgICAgICAgICAgICAgIHRvcDogMTUwcHg7CisgICAgICAgICAgICAgICAgbGVmdDogMTBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93OiBzY3JvbGw7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8cD5JbiB0aGUgdGVzdCBjYXNlIGJlbG93LCB0aGUgcGFy
YWdyYXBoIHdpdGggYSBzY3JvbGwgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluc2lkZSB0aGUg
Ymx1ZSBkaXYsIGJldHdlZW4gdHdvIHJlZ2lvbnMuIFRoZSBwYXJhZ3JhcGggc2hvdWxkIGFwcGVh
ciBhcyBhIG1vbm9saXRoaWNhbCBzaW5nbGUgYm94LCBzaXplZCByZWxhdGl2ZWx5IHRvIHRoZSBi
bHVlIGRpdiBmcmFnbWVudCBpbnNpZGUgdGhlIGZpcnN0IHJlZ2lvbi48L3A+CisgICAgICAgIDxk
aXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJmaXJzdC1ib3gtMSI+CisgICAgICAgICAgICAgICAgICAgIDxw
IGlkPSJwMSI+VGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBU
aGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUgc2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVz
IHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFs
bCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LjwvcD4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMiI+CisgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iZmlyc3QtYm94LTIiPjwvZGl2PgorICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1h
YnNvbHV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1v
dXQtb2YtZmlyc3QtcmVnaW9uLWFic29sdXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmExMWQ0MTA1N2Vh
ZTllNTZjNzEyY2U3MzQzZDdmZWYyMmI3OTE2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNv
bHV0ZS5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeyBmb250OiAxNnB4LzEu
MjUgbW9ub3NwYWNlOyB9CisKKyAgICAgICAgICAgICNjb250ZW50IHsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7CisgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjZmlyc3QtYm94IHsKKyAgICAgICAgICAg
ICAgICBib3JkZXI6IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGhlaWdodDozMDBw
eDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICNyZWdpb24xLCAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAgLXdlYmtp
dC1mbG93LWZyb206IGZsb3cxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcmVnaW9u
MSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQxMnB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMjEwcHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24yIHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3AxIHsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDA7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQwJTsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAxNTBweDsKKyAgICAgICAgICAg
ICAgICBsZWZ0OiAxMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTIwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPkluIHRoZSB0ZXN0IGNhc2Ug
YmVsb3csIHRoZSBwYXJhZ3JhcGggd2l0aCBhIHNjcm9sbCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9u
ZWQgaW5zaWRlIHRoZSBibHVlIGRpdiwgYmV0d2VlbiB0d28gcmVnaW9ucy4gVGhlIHBhcmFncmFw
aCBzaG91bGQgYXBwZWFyIGFzIGEgbW9ub2xpdGhpY2FsIHNpbmdsZSBib3gsIHNpemVkIHJlbGF0
aXZlbHkgdG8gdGhlIGJsdWUgZGl2IGZyYWdtZW50IGluc2lkZSB0aGUgZmlyc3QgcmVnaW9uLjwv
cD4KKyAgICAgICAgPGRpdiBpZD0iY29udGVudCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJmaXJz
dC1ib3giPgorICAgICAgICAgICAgICAgIDxwIGlkPSJwMSI+VGhlc2UgbGluZXMgc2hvdWxkIGFs
bCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUg
c2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxl
IGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LjwvcD4K
KyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKworICAgICAgICA8ZGl2IGlkPSJj
b250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJyZWdpb24yIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1
c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFjYjVkYWYzMzYyYWE2ZTU0YjcyZGVjNDJmZTA1NDhmMTZhYjI3MGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0y
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFkb2N0eXBlIGh0bWw+CisKKyA8c3R5
bGU+CisKKyAgICBAZm9udC1mYWNlIHsKKyAgICAgICAgZm9udC1mYW1pbHk6IHdlYmtpdC1haGVt
OworICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7CisgICAgICAgIHNyYzogdXJsKC4uLy4uL3Jl
c291cmNlcy9BaGVtLnR0Zik7CisgICAgfQorICAgCisgICAgI2Zsb2F0MSB7CisgICAgICAgIGZs
b2F0OiBsZWZ0OworICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDE1
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMnB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOmdy
ZWVuOworICAgICAgICB6LWluZGV4Oi0xOworICAgIH0KKyAgICAKKyAgICAjZmxvYXQyIHsKKyAg
ICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOjIwMHB4OworICAgICAgICBoZWlnaHQ6
MzBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpvcmFuZ2UKKyAgICB9CisKKyAgICAjcmVn
aW9uMSwgI3JlZ2lvbjIsICNyZWdpb24zIHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgfQorIAorICAgICNyZWdpb24xIHsKKyAgICAgICAgd2lkdGg6IDE3MHB4OworICAg
ICAgICBoZWlnaHQ6IDgwcHg7CisgICAgICAgIHBhZGRpbmc6IDVweDsKKyAgICB9CisgICAgCisg
ICAgI3JlZ2lvbjIgeworICAgICAgICB3aWR0aDogMzkwcHg7CisgICAgICAgIGhlaWdodDogODlw
eDsKKyAgICAgICAgcGFkZGluZy10b3A6MXB4OworICAgICAgICBwYWRkaW5nLWxlZnQ6NXB4Owor
ICAgICAgICBwYWRkaW5nLXJpZ2h0OjVweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lvbjMgewor
ICAgICAgICB3aWR0aDogMzg1cHg7CisgICAgICAgIGhlaWdodDogODBweDsKKyAgICAgICAgcGFk
ZGluZy1sZWZ0OjVweDsKKyAgICAgICAgcGFkZGluZy1yaWdodDoxMHB4OworICAgICAgICBwYWRk
aW5nLWJvdHRvbToxMHB4OworICAgIH0KKyAgICAKKyAgICBwLmZsb3cxIHsKKyAgICAgICAgY2xl
YXI6Ym90aDsKKyAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OworICAgIH0KKworICAgIHAuZmxv
dzIgeworICAgICAgICBtYXJnaW4tdG9wOiAwcHg7CisgICAgfQorICAgIAorPC9zdHlsZT4KKwor
PHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBmbG9hdCBzaG91bGQgYmUgYXQgdGhl
IHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVmdC4gSXQgc2hvdWxkIHNwaWxs
IGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIG9uIHRoZSByaWdo
dCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorCis8ZGl2IGlkPSJyZWdpb24xIj4KKyAg
ICAgPHA+PGltZyBpZD0iZmxvYXQxIj48L3A+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjIiPgor
ICAgIDxpbWcgaWQ9ImZsb2F0MiI+CisgICAgPHAgY2xhc3M9ImZsb3cxIj5UaGlzIGxpbmUgb2Yg
dGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQg
c2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorPC9kaXY+Cis8ZGl2IGlkPSJy
ZWdpb24zIj4KKzxwIGNsYXNzPSJmbG93MiI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBn
ZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91
dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0
IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlYTRkN2ZkNDYyNTlmNGZkNWRmNzJhYTMxOTYwNTE5NmFmNDAzZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5n
ZS0yLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFkb2N0eXBlIGh0bWw+CisKKyA8c3R5bGU+CisK
KyAgIEBmb250LWZhY2UgeworICAgICAgICBmb250LWZhbWlseTogd2Via2l0LWFoZW07CisgICAg
ICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICAgICAgc3JjOiB1cmwoLi4vLi4vcmVzb3VyY2Vz
L0FoZW0udHRmKTsKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIC13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MTsKKyAgICAgICAgcGFkZGluZzogNXB4OworICAgIH0KKyAgCisgICAgI2Zs
b2F0MSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICB3aWR0aDogMTUwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW4KKyAgICB9
CisgICAgCisgICAgI2Zsb2F0MiB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0
aDoyMDBweDsKKyAgICAgICAgaGVpZ2h0OjMwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6
b3JhbmdlCisgICAgfQorCisgICAgI3JlZ2lvbjEsICNyZWdpb24yLCAjcmVnaW9uMyB7CisgICAg
ICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICAtd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzE7CisgICAgfQorCisgICAgI3JlZ2lvbjEgeworICAgICAgICB3aWR0aDogMTgwcHg7Cisg
ICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lvbjIgeworICAgICAg
ICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAgCisgICAg
I3JlZ2lvbjMgeworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogOTBweDsK
KyAgICB9CisKKyAgICAjZmxvYXRjb250YWluZXIgeworICAgICAgICBoZWlnaHQ6IDg0cHg7Cisg
ICAgfQorPC9zdHlsZT4KKworPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBmbG9h
dCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVm
dC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hv
dWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorCis8ZGl2
IGlkPSJjb250ZW50Ij4KKyAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgorICAgICAgICA8ZGl2IGlk
PSJzZWNvbmQtYm94Ij4KKyAgICAgICAgICAgIDxwIGlkPSJmbG9hdGNvbnRhaW5lciI+PGltZyBp
ZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPgorICAgICAgICAgICAgPHA+VGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0
IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAgPHA+VGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBv
ZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAgICAg
IDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwv
cD4KKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgorICAgIDxk
aXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiPjwvZGl2PgorPC9k
aXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVjdGVk
Lmh0bWwKaW5kZXggMWMwMDlhNmUxM2E0MDNmY2MxMTc0MWZiMzM2NWViMWY4YzY2MzhmNy4uYzUz
ZWZkMzA0YjczNGJjZDFlZGNlMWIzYzI3MjQ5MTc1NGM0MzE2OSAxMDA3NTUKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5n
ZS1leHBlY3RlZC5odG1sCkBAIC0xOCw3ICsxOCw5IEBACiAgICAgfQogICAgIAogICAgICNmbG9h
dDIgewotICAgICAgICBmbG9hdDpyaWdodDsKKyAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKKyAg
ICAgICAgbWFyZ2luLWxlZnQ6IC0zMHB4OworICAgICAgICBmbG9hdDpsZWZ0OwogICAgICAgICB3
aWR0aDoyMDBweDsKICAgICAgICAgaGVpZ2h0OjMwcHg7CiAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6b3JhbmdlCkBAIC02MiwxNCArNjQsMTQgQEAKIDwvc3R5bGU+CiAKIDxwPkluIHRoZSBleGFt
cGxlIGJlbG93LCB0aGUgZ3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0b3Agb2YgdGhlIGZp
cnN0IHJlZ2lvbiBhbmQgb24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBpbnRvIHJlZ2lvbiB0
d28uCi1UaGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYXQgdGhlIHRvcCBv
ZiByZWdpb24gdHdvLjwvcD4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIHJpZ2h0IGFsaWdu
ZWQgdW5kZXIgdGhlIGdyZWVuIGZsb2F0IGJlY2F1c2UgdGhlaXIgY29udGFpbmluZyBibG9jayBp
cyBmbG93biBvbmx5IGluIHRoZSBmaXJzdCByZWdpb248L3A+CiAKIDxkaXYgaWQ9InJlZ2lvbjEi
PgogICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjwvcD4KIDwvZGl2PgogPGRpdiBpZD0icmVnaW9u
MiI+CiAgICAgPGltZyBpZD0iZmxvYXQyIj4KLSAgICA8cCBjbGFzcz0iZmxvdzEiPlRoaXMgbGlu
ZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2Yg
dGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CisgICAgPHAgY2xhc3M9
ImZsb3cxIj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lv
bi48L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9InJlZ2lvbjMiPgogPHAgY2xhc3M9ImZsb3cyIj5UaGlz
IGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5l
IG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0
bWwKaW5kZXggMWU4NzFiNmFjMWUxZWNkZjkzNzA3NzI3YWQyYmJhOGE1ZjQzYjc0OS4uMzI1NDBk
MzBiOGMxY2EwNWYyZmYwNmJlMDQ5Yjc4Zjc0NmFkYzkyYyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sCkBAIC00
OSwxMyArNDksMTMgQEAKIDwvc3R5bGU+CiAKIDxwPkluIHRoZSBleGFtcGxlIGJlbG93LCB0aGUg
Z3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0b3Agb2YgdGhlIGZpcnN0IHJlZ2lvbiBhbmQg
b24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBpbnRvIHJlZ2lvbiB0d28uCi1UaGUgb3Jhbmdl
IGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYXQgdGhlIHRvcCBvZiByZWdpb24gdHdvLjwv
cD4KK1RoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIHJpZ2h0IGFsaWduZWQgdW5kZXIgdGhlIGdy
ZWVuIGZsb2F0IGJlY2F1c2UgdGhlaXIgY29udGFpbmluZyBibG9jayBpcyBmbG93biBvbmx5IGlu
IHRoZSBmaXJzdCByZWdpb248L3A+CiAKIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgIDxkaXYgaWQ9
ImZpcnN0LWJveCI+CiAgICAgICAgIDxkaXYgaWQ9InNlY29uZC1ib3giPgotICAgICAgICAgICAg
PHA+PGltZyBpZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPgotICAgICAgICAgICAgPHA+VGhp
cyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGlu
ZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAg
ICAgIDxwPjxpbWcgaWQ9ImZsb2F0MSI+PGltZyBpZD0iZmxvYXQyIj48cC8+CisgICAgICAgICAg
ICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48
L3A+CiAJICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUg
cmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lv
bi48L3A+CiAgICAgICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBv
dXQgb2YgdGhlIHJlZ2lvbi48L3A+CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11bnNwbGl0dGFibGUtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11
bnNwbGl0dGFibGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2M2ZGUzYTBjN2Y0ZWY3OTcy
NDYyNGUzYjlhZTBmNzczZmY2NGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3Njcm9sbGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0YWJsZS1leHBlY3RlZC5odG1s
CkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgi
PgorICAgICAgICA8c3R5bGU+CisKKyAgICAgICAgI2NvbnRlbnQgeworICAgICAgICAgICAgd2lk
dGg6IDE4MHB4OworICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgICAgICAgIGJvcmRl
cjogdGhpY2sgc29saWQgZ3JlZW47CisgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CisgICAg
ICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgPC9oZWFkPgorPGJvZHk+CisJPHA+VGhlIHNjcm9sbGFibGUgZWxlbWVudCBiZWxvdyBzaG91
bGQgbG9vayBsaWtlIGl0J3Mgbm90IGZyYWdtZW50ZWQuIFRoZSBncmVlbiBib3JkZXIgc2hvdWxk
IGJlIGNvbnRpbm91cy4gVGhlIGNvbnRlbnQgc2hvdWxkIGZpdCB0aGUgc2Nyb2xsYWJsZSBhcmVh
LjwvcD4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50
Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0
LiBQcmFlc2VudCBpbnRlcmR1bSwgc2FwaWVuIHZpdGFlIGZhdWNpYnVzIHN1c2NpcGl0LCBtYXNz
YSB1cm5hIHNhZ2l0dGlzIGxpYmVybywgYWMgaW1wZXJkaWV0IGVsaXQgbGFjdXMgYSBsaWd1bGEu
IE1hdXJpcyBhIG9yY2kgc2VtLiBOdWxsYW0gdWxsYW1jb3JwZXIgb3JuYXJlIHBvcnR0aXRvci4g
TW9yYmkgbGFvcmVldCBwZWxsZW50ZXNxdWUgZGlhbSwgdml0YWUgaGVuZHJlcml0IHNlbSBmcmlu
Z2lsbGEgaWQuIE1hZWNlbmFzIHJ1dHJ1bSBsYWNpbmlhIGxvYm9ydGlzLiBQcmFlc2VudCBlbGl0
IGxlY3R1cywgcG9ydHRpdG9yIHNlZCBzZW1wZXIgdmVsLCBmcmluZ2lsbGEgaWQgZG9sb3IuIFNl
ZCBsYWN1cyBuaXNsLCBydXRydW0gc2l0IGFtZXQgZXVpc21vZCBhLCB2dWxwdXRhdGUgcXVpcyBl
bGl0LiBGdXNjZSBjb21tb2RvIGR1aSBxdWlzIGxhY3VzIHZpdmVycmEgdmVsIGVnZXN0YXMgdmVs
aXQgdGVtcHVzLiBEb25lYyB1dCBzYXBpZW4gc2l0IGFtZXQgcHVydXMgbHVjdHVzIGZlcm1lbnR1
bS4gRG9uZWMgZWxlaWZlbmQgcHJldGl1bSBuZXF1ZSBxdWlzIGJpYmVuZHVtLiBWZXN0aWJ1bHVt
IGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2VzIHBv
c3VlcmUgY3ViaWxpYSBDdXJhZTsgTmFtIGNvbmd1ZSBkYXBpYnVzIG1pLCBpZCB1bHRyaWNpZXMg
ZXN0IHNhZ2l0dGlzIGV0LiBJbnRlZ2VyIHBvc3VlcmUsIGVyb3Mgdml0YWUgbGFvcmVldCBjb25n
dWUsIHRvcnRvciBwdXJ1cyBldWlzbW9kIG5pYmgsIGV1IHBvcnRhIHB1cnVzIGFyY3UgaWQgdHVy
cGlzLiBEb25lYyB2aXRhZSB1bHRyaWNpZXMgbmliaC4gTnVsbGFtIGluIHVybmEgZG9sb3IsIGF0
IGZyaW5naWxsYSBsb3JlbS4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVy
IGFkaXBpc2NpbmcgZWxpdC48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11
bnNwbGl0dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBh
cmFncmFwaC11bnNwbGl0dGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGRhMzRkNGNkYzZjNmM0ZWFj
YmEyYmI2MWM4MjhkYzk0YzU5NGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3Njcm9sbGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0YWJsZS5odG1sCkBAIC0wLDAg
KzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICNjb250YWluZXIgeworICAgICAgICAgICAgd2lkdGg6IDEwMCU7
CisgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2li
bGU7CisgICAgICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICAgICAgfQorCisg
ICAgICAgICNjb250ZW50IHsKKyAgICAgICAgICAgIHdpZHRoOiAzMCU7CisgICAgICAgICAgICBo
ZWlnaHQ6IDQwMHB4OworICAgICAgICAgICAgYm9yZGVyOiB0aGljayBzb2xpZCBncmVlbjsKKyAg
ICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDsKKyAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7
CisgICAgICAgIH0KKworICAgICAgICAucmVnaW9uIHsKKyAgICAgICAgICAgIHdpZHRoOiA2MDBw
eDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAtd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzsKKyAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGhlIHNjcm9sbGFi
bGUgZWxlbWVudCBiZWxvdyBzaG91bGQgbG9vayBsaWtlIGl0J3Mgbm90IGZyYWdtZW50ZWQuIFRo
ZSBncmVlbiBib3JkZXIgc2hvdWxkIGJlIGNvbnRpbm91cy4gVGhlIGNvbnRlbnQgc2hvdWxkIGZp
dCB0aGUgc2Nyb2xsYWJsZSBhcmVhLjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb24iPjwvZGl2
PgorICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MDBweDsiIGNsYXNzPSJyZWdpb24iPjwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgICAgICAgPGRpdiBpZD0iY29udGVudCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gUHJhZXNlbnQgaW50ZXJkdW0sIHNhcGllbiB2aXRh
ZSBmYXVjaWJ1cyBzdXNjaXBpdCwgbWFzc2EgdXJuYSBzYWdpdHRpcyBsaWJlcm8sIGFjIGltcGVy
ZGlldCBlbGl0IGxhY3VzIGEgbGlndWxhLiBNYXVyaXMgYSBvcmNpIHNlbS4gTnVsbGFtIHVsbGFt
Y29ycGVyIG9ybmFyZSBwb3J0dGl0b3IuIE1vcmJpIGxhb3JlZXQgcGVsbGVudGVzcXVlIGRpYW0s
IHZpdGFlIGhlbmRyZXJpdCBzZW0gZnJpbmdpbGxhIGlkLiBNYWVjZW5hcyBydXRydW0gbGFjaW5p
YSBsb2JvcnRpcy4gUHJhZXNlbnQgZWxpdCBsZWN0dXMsIHBvcnR0aXRvciBzZWQgc2VtcGVyIHZl
bCwgZnJpbmdpbGxhIGlkIGRvbG9yLiBTZWQgbGFjdXMgbmlzbCwgcnV0cnVtIHNpdCBhbWV0IGV1
aXNtb2QgYSwgdnVscHV0YXRlIHF1aXMgZWxpdC4gRnVzY2UgY29tbW9kbyBkdWkgcXVpcyBsYWN1
cyB2aXZlcnJhIHZlbCBlZ2VzdGFzIHZlbGl0IHRlbXB1cy4gRG9uZWMgdXQgc2FwaWVuIHNpdCBh
bWV0IHB1cnVzIGx1Y3R1cyBmZXJtZW50dW0uIERvbmVjIGVsZWlmZW5kIHByZXRpdW0gbmVxdWUg
cXVpcyBiaWJlbmR1bS4gVmVzdGlidWx1bSBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cyBv
cmNpIGx1Y3R1cyBldCB1bHRyaWNlcyBwb3N1ZXJlIGN1YmlsaWEgQ3VyYWU7IE5hbSBjb25ndWUg
ZGFwaWJ1cyBtaSwgaWQgdWx0cmljaWVzIGVzdCBzYWdpdHRpcyBldC4gSW50ZWdlciBwb3N1ZXJl
LCBlcm9zIHZpdGFlIGxhb3JlZXQgY29uZ3VlLCB0b3J0b3IgcHVydXMgZXVpc21vZCBuaWJoLCBl
dSBwb3J0YSBwdXJ1cyBhcmN1IGlkIHR1cnBpcy4gRG9uZWMgdml0YWUgdWx0cmljaWVzIG5pYmgu
IE51bGxhbSBpbiB1cm5hIGRvbG9yLCBhdCBmcmluZ2lsbGEgbG9yZW0uIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9kaXY+CisgICAgPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDNjMDJkZWM3ZTIwN2M3Zjc2N2I1ZjUxYzM3YTM0MjZjMjMyMzliNzQuLmQz
YWRkODliM2NhYjRlNzIzZjc2ZTUxZDEwOGZkMzEwYWQwOWRlMDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC01NDAsNiArNTQwLDkgQEAgd2Via2l0Lm9y
Zy9iLzgyMzQwIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdp
b24tc3R5bGluZy1tdWwKIHdlYmtpdC5vcmcvYi84MjM0MCBmYXN0L3JlZ2lvbnMvc3R5bGUtc2Nv
cGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9uLXN0eWxpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzgyMzQwIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxv
dy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKKyMgRklYTUU6IFRoZSB3aWRvd3MgYW5kIG9y
cGhhbnMgaW1wbGVtZW50YXRpb24gaW50ZXJmZXJlcyB3aXRoIHRoZSByZWdpb24gcmFuZ2UgY2hh
bmdlIHJlbGF5b3V0LiAKK2Zhc3QvcmVnaW9ucy9yZWdpb25zLXdpZG93cy1hbmQtb3JwaGFucy5o
dG1sCisKICMgVGhpcyBwb3J0IGRvZXMgbm90IGVuYWJsZSBISURERU5fUEFHRV9ET01fVElNRVJf
VEhST1RUTElORwogZmFzdC9kb20vdGltZXItdGhyb3R0bGluZy1oaWRkZW4tcGFnZS5odG1sIFsg
V29udEZpeCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggODliOTA5YjBhMDgwMTJkZWNkMTJkYWNhNjVkNmY2YjAyNDdhYTg2MS4uOTAzMzczYjJmZWVh
OTQyZGRhNjg5NzA2YjRhOTMyMjAzMmE4NTE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzMjMsNiArMTMyMyw5IEBAIHdlYmtpdC5vcmcvYi8xMTAw
OTAgZmFzdC9ldmVudHMvY2xpZW50WFktaW4tem9vbS1hbmQtc2Nyb2xsLmh0bWwgWyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzEwNjEyNSBmYXN0L3JlZ2lvbnMvc2VhbWxlc3MtaWZyYW1lLWZs
b3dlZC1pbnRvLXJlZ2lvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCisjIEZJWE1FOiBU
aGUgd2lkb3dzIGFuZCBvcnBoYW5zIGltcGxlbWVudGF0aW9uIGludGVyZmVyZXMgd2l0aCB0aGUg
cmVnaW9uIHJhbmdlIGNoYW5nZSByZWxheW91dC4gCitmYXN0L3JlZ2lvbnMvcmVnaW9ucy13aWRv
d3MtYW5kLW9ycGhhbnMuaHRtbAorCiB3ZWJraXQub3JnL2IvMTEwMzIwIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctZG9tLWV2ZW50LWRpc3BhdGNoaW5nLWRpc3RyaWJ1dGVkLXRleHQtbm9kZS5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTEwMzIwIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
ZG9tLWV2ZW50LWRpc3BhdGNoaW5nLXRleHQtbm9kZS1pbi1zaGFkb3ctcm9vdC5odG1sIFsgRmFp
bHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZTJjNzlhNzBhMWJhZjZlZTFlMzEyYTg0NzI5ZmNjZWEwYWYwMzk5Ni4uYjFmOTA4OGRkNzUyOTQx
YjhmZDc0Y2Y5ZTdmYzNmYzAyZGY4ZjY5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM4Myw2ICszODMsOSBAQCB3ZWJraXQub3JnL2IvNjE0ODcgaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1jcm9zcy1zaXRlLmh0bWwgWyBGYWlsdXJlIF0KICMgU3R5bGVk
IHNjb3BlIGVsZW1lbnQgaXMgbm90IHlldCBlbmFibGVkLgogd2Via2l0Lm9yZy9iLzQ5MTQyIGZh
c3QvY3NzL3N0eWxlLXNjb3BlZAogCisjIEZJWE1FOiBUaGUgd2lkb3dzIGFuZCBvcnBoYW5zIGlt
cGxlbWVudGF0aW9uIGludGVyZmVyZXMgd2l0aCB0aGUgcmVnaW9uIHJhbmdlIGNoYW5nZSByZWxh
eW91dC4gCitmYXN0L3JlZ2lvbnMvcmVnaW9ucy13aWRvd3MtYW5kLW9ycGhhbnMuaHRtbAorCiAj
IENTUyBSZWdpb25zIHRlc3RzIGZvciByZWdpb24gc3R5bGluZyBhbmQgc2NvcGVkIHN0eWxlcwog
ZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLWNvbnRhaW5lci1zdHls
ZS5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9u
LXN0eWxpbmctbXVsdGlwbGUtcmVnaW9ucy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBlMDc0NzRhYTMyYjVkMDZkYWUwOTM4NDIxMDc2N2U4YTQ4OTk5
OTZkLi42MDJiZjNiNjk4ZGE2M2ZiMTQ3ZmJkZTUzOWQxY2VkNWEwZjM4NDA3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NCw2ICsxNzQsOSBAQCBmYXN0
L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9uLXN0eWxpbmctbXVs
dGlwbGUtcmVnaW9ucy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3Zl
cnJpZGUtcmVnaW9uLXN0eWxpbmcuaHRtbAogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1m
bG93Lmh0bWwKIAorIyBGSVhNRTogVGhlIHdpZG93cyBhbmQgb3JwaGFucyBpbXBsZW1lbnRhdGlv
biBpbnRlcmZlcmVzIHdpdGggdGhlIHJlZ2lvbiByYW5nZSBjaGFuZ2UgcmVsYXlvdXQuIAorZmFz
dC9yZWdpb25zL3JlZ2lvbnMtd2lkb3dzLWFuZC1vcnBoYW5zLmh0bWwKKwogIyBMQVlFUl9UUkVF
X0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgb3B0aW9uIHRvIGxheWVyVHJlZUFzVGV4dCBpcyBvbmx5
IGFwcGxpY2FibGUgdG8gTWFjLgogY29tcG9zaXRpbmcvdmlzaWJsZS1yZWN0IFsgU2tpcCBdCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDg5YzJiNjll
ZDQyZmNmNmM5Zjk2OTI0OGYzZjRkNzg4YmY0MDIwOS4uZTNhNDNmZTE4NDNiNmIxMmE2YzZkYjVm
NjRlYjU5Y2IzODdmNzVjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE1NTEsNiArMTU1MSw5IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4t
Zmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy1tdWx0aXBsZS1yZWdpb25zLmh0bWwKIGZhc3Qv
cmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1s
CiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCisjIEZJWE1FOiBUaGUg
d2lkb3dzIGFuZCBvcnBoYW5zIGltcGxlbWVudGF0aW9uIGludGVyZmVyZXMgd2l0aCB0aGUgcmVn
aW9uIHJhbmdlIGNoYW5nZSByZWxheW91dC4gCitmYXN0L3JlZ2lvbnMvcmVnaW9ucy13aWRvd3Mt
YW5kLW9ycGhhbnMuaHRtbAorCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGVk
aXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205098</attachid>
            <date>2013-06-20 09:30:05 -0700</date>
            <delta_ts>2013-07-09 08:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116296-20130620192814.patch</filename>
            <type>text/plain</type>
            <size>68410</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNkYmU2MDc4YjEyMTA1
YmUzNjY0Yjc4ODI1MzljY2Y1M2UwNDk4OC4uMjg1ZjgwZjJiMmM4YTYwNGJjMGYzNDExODMwZmZm
ZTMwNDhlNGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEzLTA2LTIwICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggZXh0ZW5kcyB0aGUgcmVnaW9u
IHJhbmdlcyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6CisgICAg
ICAgIC0gdGhlIHJhbmdlIG9mIGEgYm94IGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgcmFuZ2Ug
b2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sgKGV2ZW4gZm9yIGZsb2F0cyk7IHRoaXMgd2lsbCBzaW1w
bGlmeSBob3cgb3ZlcmZsb3cKKyAgICAgICAgaXMgcHJvcGFnYXRlZCB0byB0aGUgcmVnaW9ucyBh
bmQgaXQgc2hvdWxkIGxhdGVyIGNoYW5nZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcy4KKyAgICAg
ICAgLSBpZiB0aGUgcmFuZ2Ugb2YgYSBib3ggaXMgbm90IGNvcnJlY3RseSBlc3RpbWF0ZWQgYmVm
b3JlIHRoZSBsYXlvdXQgaXQgd2lsbCBiZSBtYXJrZWQgZm9yIHJlbGF5b3V0OyB0aGlzIGlzIG5l
Y2Vzc2FyeSB0byBjb3JyZWN0bHkKKyAgICAgICAgcG9zaXRpb24gYm94ZXMgdGhhdCBvdmVyZmxv
dyBuYXR1cmFsbHksIGxpa2UgZmxvYXRzLgorICAgICAgICAtIGFsbCB0aGUgYm94ZXMgaGF2ZSBh
IHJhbmdlIG5vdywgbm90IG9ubHkgdGhlIGJsb2Nrcy4KKyAgICAgICAgLSByZWdpb25BdEJsb2Nr
T2Zmc2V0IGNhbiBjbGFtcCB0byBhIGJveC4KKyAgICAgICAgLSBhbiB1bnNwbGl0dGFibGUgYm94
IGhhcyBhIHJlZ2lvbiByYW5nZSBvZiBhIHNpbmdsZSByZWdpb24sIHRoZSBvbmUgd2hlcmUgdGhl
IGJveCB0b3AgZmFsbHMgaW50by4KKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGls
ZCBib3ggc3RhcnRzIGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1h
eGltYWwgaGVpZ2h0IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRo
ZSBlc3RpbWF0aW9uIHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBs
ZSwgaWYgYSBibG9jayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRo
ZSBmbG9hdAorICAgICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQg
aXMgbmVlZGVkIGZvciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUg
dG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJl
IG9wdGltaXplZCBieSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4g
dGhhdCBkb24ndCBoYXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAg
IGNvbnRhaW5pbmcgYmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMv
Ym90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRh
YmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlRXhjbHVzaW9uc0JlZm9yZUJsb2NrTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVFeGNsdXNpb25zQWZ0ZXJC
bG9ja0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoYXNOZXh0UGFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YXBwbHlBZnRlckJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpzZXRQYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0
ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZWdp
b25BdEJsb2NrT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRl
UmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
ZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2Fs
V2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbEhl
aWdodEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsVG9w
Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojps
YXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6dmFsaWRhdGVSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0QmxvY2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxX
aWR0aEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdl
TG9naWNhbEhlaWdodEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpwYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbG93VGhyZWFkOjptYXBGcm9tRmxvd1RvUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJv
eFJlZ2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6c2V0UmVn
aW9uUmFuZ2VGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YXBw
bHlCcmVha0FmdGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uRmxvd1RocmVhZDo6c2V0UGFnZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaDoKKwogMjAx
My0wNi0yMCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVXNlIGNvbnNvbGUudGltZVN0YW1wIGluc3RlYWQgb2YgY29uc29sZS5t
YXJrVGltZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IDlkNmEwZDkzZjUwNWZhYjBjY2YwMDFjNWM2YTliMDU5YjAxYTllZDAuLmM1MDNhYmYwMjNlNTMy
MjFmNjdiNWQ0MTQyYmY5NTg3MDViNzgzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMTQ4MSwxMyArMTQ4MSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dChjb25zdCBSZW5kZXJCbG9jayogYmxvY2spCiAjZW5k
aWYKIH0KIAotYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uc0FuZFNoYXBlc0JlZm9yZUNo
aWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCitib29sIFJlbmRlckJsb2Nr
Ojp1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCi0gICAgaWYgKCFmbG93VGhyZWFkICYmICFzaGFwZUluc2lkZUluZm8oKSkKLSNlbHNlCi0g
ICAgaWYgKCFmbG93VGhyZWFkKQotI2VuZGlmCisgICAgaWYgKCFmbG93VGhyZWFkQ29udGFpbmlu
Z0Jsb2NrKCkgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQogICAgICAgICByZXR1cm4gc2hhcGVJbmZv
UmVxdWlyZXNSZWxheW91dCh0aGlzKTsKIAogICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gbG9n
aWNhbEhlaWdodCgpOwpAQCAtMTQ5OCwxOCArMTQ5NSwxMyBAQCBib29sIFJlbmRlckJsb2NrOjp1
cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCog
ZmxvdwogICAgIHNldExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdDo6bWF4KCkgLyAyKTsKICAgICB1
cGRhdGVMb2dpY2FsSGVpZ2h0KCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBjb21w
dXRlU2hhcGVTaXplKCk7Ci0jZW5kaWYKLQotICAgIC8vIFNldCBvdXIgc3RhcnQgYW5kIGVuZCBy
ZWdpb25zLiBObyByZWdpb25zIGFib3ZlIG9yIGJlbG93IHVzIHdpbGwgYmUgY29uc2lkZXJlZCBi
eSBvdXIgY2hpbGRyZW4uIFRoZXkgYXJlCi0gICAgLy8gZWZmZWN0aXZlbHkgY2xhbXBlZCB0byBv
dXIgcmVnaW9uIHJhbmdlLgotICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKGZsb3dUaHJl
YWQpOwogCiAgICAgc2V0TG9naWNhbEhlaWdodChvbGRIZWlnaHQpOwogICAgIHNldExvZ2ljYWxU
b3Aob2xkVG9wKTsKICAgICAKICAgICByZXR1cm4gc2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dCh0
aGlzKTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCkBAIC0xNTIzLDIzICsx
NTE1LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTaGFwZVNpemUoKQogfQogI2VuZGlm
CiAKLXZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNBZnRlckNoaWxkTGF5
b3V0KFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIGJvb2wgaGVpZ2h0Q2hhbmdlZCkKK3Zv
aWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoYm9vbCBoZWlnaHRD
aGFuZ2VkKQogewogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIC8vIEEgcHJldmlvdXMgc2li
bGluZyBoYXMgY2hhbmdlZCBkaW1lbnNpb24sIHNvIHdlIG5lZWQgdG8gcmVsYXlvdXQgdGhlIHNo
YXBlIHdpdGggdGhlIGNvbnRlbnQKICAgICBTaGFwZUluc2lkZUluZm8qIHNoYXBlSW5zaWRlSW5m
byA9IGxheW91dFNoYXBlSW5zaWRlSW5mbygpOwogICAgIGlmIChoZWlnaHRDaGFuZ2VkICYmIHNo
YXBlSW5zaWRlSW5mbykKICAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0Q2hhbmdlZCk7CiAjZW5kaWYKLSAgICBj
b21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhmbG93VGhyZWFkKTsKLX0KLQotdm9pZCBSZW5kZXJC
bG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2soUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCkKLXsKLSAgICBpZiAoZmxvd1RocmVhZCkKLSAgICAgICAgZmxvd1RocmVhZC0+c2V0UmVn
aW9uUmFuZ2VGb3JCb3godGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpKTsK
IH0KIAogYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgo
KQpAQCAtMTYyMSw3ICsxNjA0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKICAgICBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwog
ICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKGZsb3dUaHJlYWQpKQogICAgICAg
ICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAodXBkYXRlUmVnaW9uc0FuZFNoYXBl
c0JlZm9yZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQorICAgIGlmICh1cGRhdGVTaGFwZXNCZWZv
cmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKIAogICAg
IC8vIFdlIHVzZSBmb3VyIHZhbHVlcywgbWF4VG9wUG9zLCBtYXhUb3BOZWcsIG1heEJvdHRvbVBv
cywgYW5kIG1heEJvdHRvbU5lZywgdG8gdHJhY2sKQEAgLTE2OTEsNyArMTY3NCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbEhlaWdoCiAKICAgICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91
dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsKIAotICAgIHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNBZnRl
ckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQsIGhlaWdodENoYW5nZWQpOworICAgIHVwZGF0ZVNoYXBl
c0FmdGVyQmxvY2tMYXlvdXQoaGVpZ2h0Q2hhbmdlZCk7CiAKICAgICAvLyBBZGQgb3ZlcmZsb3cg
ZnJvbSBjaGlsZHJlbiAodW5sZXNzIHdlJ3JlIG11bHRpLWNvbHVtbiwgc2luY2UgaW4gdGhhdCBj
YXNlIGFsbCBvdXIgY2hpbGQgb3ZlcmZsb3cgaXMgY2xpcHBlZCBhbnl3YXkpLgogICAgIGNvbXB1
dGVPdmVyZmxvdyhvbGRDbGllbnRBZnRlckVkZ2UpOwpAQCAtMjYxMyw2ICsyNTk2LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2tDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBNYXJnaW5J
bmZvJiBtYXJnaW5JbmZvLCBMYXkKICNlbmRpZgogICAgIC8vIEdvIGFoZWFkIGFuZCBwb3NpdGlv
biB0aGUgY2hpbGQgYXMgdGhvdWdoIGl0IGRpZG4ndCBjb2xsYXBzZSB3aXRoIHRoZSB0b3AuCiAg
ICAgc2V0TG9naWNhbFRvcEZvckNoaWxkKGNoaWxkLCBsb2dpY2FsVG9wRXN0aW1hdGUsIEFwcGx5
TGF5b3V0RGVsdGEpOworICAgIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZCk7
CiAKICAgICBSZW5kZXJCbG9jayogY2hpbGRSZW5kZXJCbG9jayA9IGNoaWxkLT5pc1JlbmRlckJs
b2NrKCkgPyB0b1JlbmRlckJsb2NrKGNoaWxkKSA6IDA7CiAgICAgYm9vbCBtYXJrRGVzY2VuZGFu
dHNXaXRoRmxvYXRzID0gZmFsc2U7CkBAIC0yNjg5LDYgKzI2NzMsOCBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdp
bkluZm8sIExheQogICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICB9CiAKKyAg
ICB1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNoaWxkKTsKKwogICAgIC8vIFdlIGFyZSBu
byBsb25nZXIgYXQgdGhlIHRvcCBvZiB0aGUgYmxvY2sgaWYgd2UgZW5jb3VudGVyIGEgbm9uLWVt
cHR5IGNoaWxkLiAgCiAgICAgLy8gVGhpcyBoYXMgdG8gYmUgZG9uZSBhZnRlciBjaGVja2luZyBm
b3IgY2xlYXIsIHNvIHRoYXQgbWFyZ2lucyBjYW4gYmUgcmVzZXQgaWYgYSBjbGVhciBvY2N1cnJl
ZC4KICAgICBpZiAobWFyZ2luSW5mby5hdEJlZm9yZVNpZGVPZkJsb2NrKCkgJiYgIWNoaWxkLT5p
c1NlbGZDb2xsYXBzaW5nQmxvY2soKSkKQEAgLTI4NTEsNiArMjgzNyw4IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgYm9v
bCBmaXhlZFBvc2l0CiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVu
ZCA9IHBvc2l0aW9uZWREZXNjZW5kYW50cy0+ZW5kKCk7CiAgICAgZm9yIChUcmFja2VkUmVuZGVy
ZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudHMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICByID0gKml0OworICAgICAgICAKKyAgICAg
ICAgZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpOwogCiAgICAgICAgIC8vIEEgZml4
ZWQgcG9zaXRpb24gZWxlbWVudCB3aXRoIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgYW5jZXN0b3Ig
aGFzIG5vIHdheSBvZiBrbm93aW5nIGlmIHRoZSBsYXR0ZXIgaGFzIGNoYW5nZWQgcG9zaXRpb24u
IFNvCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50LCBtYXJr
IGl0IGZvciBsYXlvdXQgaWYgaXQgaGFzIGFuIGFic3BvcyBhbmNlc3RvciBhbmQgbmVlZHMgdG8g
bW92ZSB3aXRoIHRoYXQgYW5jZXN0b3IsIGkuZS4gCkBAIC0yODkxLDE0ICsyODc5LDE2IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgYm9vbCBmaXhlZFBvc2l0CiAgICAgICAgICAgICAgICAgci0+dXBkYXRlTG9naWNhbFdp
ZHRoKCk7CiAgICAgICAgICAgICBvbGRMb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckNoaWxkKHIp
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHItPmxheW91dElmTmVlZGVkKCk7CiAK
ICAgICAgICAgLy8gTGF5IG91dCBhZ2FpbiBpZiBvdXIgZXN0aW1hdGUgd2FzIHdyb25nLgotICAg
ICAgICBpZiAobmVlZHNCbG9ja0RpcmVjdGlvbkxvY2F0aW9uU2V0QmVmb3JlTGF5b3V0ICYmIGxv
Z2ljYWxUb3BGb3JDaGlsZChyKSAhPSBvbGRMb2dpY2FsVG9wKSB7CisgICAgICAgIGlmIChuZWVk
c0Jsb2NrRGlyZWN0aW9uTG9jYXRpb25TZXRCZWZvcmVMYXlvdXQgJiYgbG9naWNhbFRvcEZvckNo
aWxkKHIpICE9IG9sZExvZ2ljYWxUb3ApCiAgICAgICAgICAgICByLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7Ci0gICAgICAgICAgICByLT5sYXlvdXRJZk5lZWRlZCgp
OwotICAgICAgICB9CisKKyAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKKworICAgICAgICB1
cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpOwogICAgIH0KICAgICAKICAgICBpZiAoaGFz
Q29sdW1ucygpKQpAQCAtNDIwMyw2ICs0MTkzLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRp
b25OZXdGbG9hdHMoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgUmVuZGVyQm94
KiBjaGlsZEJveCA9IGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpOworCiAgICAgICAgIExheW91
dFVuaXQgY2hpbGRMb2dpY2FsTGVmdE1hcmdpbiA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSA/IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGRCb3gpIDogbWFyZ2luRW5kRm9yQ2hp
bGQoY2hpbGRCb3gpOwogCiAgICAgICAgIExheW91dFJlY3Qgb2xkUmVjdCA9IGNoaWxkQm94LT5m
cmFtZVJlY3QoKTsKQEAgLTQyMTksNiArNDIxMCw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0
aW9uTmV3RmxvYXRzKCkKICAgICAgICAgc2V0TG9naWNhbExlZnRGb3JDaGlsZChjaGlsZEJveCwg
ZmxvYXRMb2dpY2FsTG9jYXRpb24ueCgpICsgY2hpbGRMb2dpY2FsTGVmdE1hcmdpbik7CiAgICAg
ICAgIHNldExvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZEJveCwgZmxvYXRMb2dpY2FsTG9jYXRpb24u
eSgpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGRCb3gpKTsKIAorICAgICAgICBlc3RpbWF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY2hpbGRCb3gpOworCiAgICAgICAgIExheW91dFN0YXRl
KiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3RhdGUoKTsKICAgICAgICAgYm9vbCBpc1Bh
Z2luYXRlZCA9IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpOwogICAgICAgICBpZiAoaXNQYWdp
bmF0ZWQgJiYgIWNoaWxkQm94LT5uZWVkc0xheW91dCgpKQpAQCAtNDI1Myw2ICs0MjQ2LDggQEAg
Ym9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZEJsb2NrLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7CiAg
ICAgICAgICAgICAgICAgY2hpbGRCb3gtPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHVwZGF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY2hpbGRCb3gpOwog
ICAgICAgICB9CiAKICAgICAgICAgc2V0TG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0
LCBmbG9hdExvZ2ljYWxMb2NhdGlvbi55KCkpOwpAQCAtNzM3Niw3ICs3MzcxLDcgQEAgYm9vbCBS
ZW5kZXJCbG9jazo6aGFzTmV4dFBhZ2UoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91
bmRhcnlSdWxlIHBhZ2VCb3UKIAogICAgIC8vIFNlZSBpZiB3ZSdyZSBpbiB0aGUgbGFzdCByZWdp
b24uCiAgICAgTGF5b3V0VW5pdCBwYWdlT2Zmc2V0ID0gb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSgpICsgbG9naWNhbE9mZnNldDsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IGZs
b3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQocGFnZU9mZnNldCwgdGhpcyk7CisgICAgUmVu
ZGVyUmVnaW9uKiByZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMs
IHBhZ2VPZmZzZXQsIHRoaXMpOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCkBAIC03NDMxLDcgKzc0MjYsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphcHBseUJlZm9yZUJyZWFrKFJlbmRlckJveCogY2hp
bGQsIExheW91dFVuaXQgbG9naWNhbE9mZgogICAgICAgICAgICAgdmlldygpLT5sYXlvdXRTdGF0
ZSgpLT5hZGRGb3JjZWRDb2x1bW5CcmVhayhjaGlsZCwgbG9naWNhbE9mZnNldCk7CiAgICAgICAg
IGlmIChjaGVja1JlZ2lvbkJyZWFrcykgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRC
cmVha0FkanVzdG1lbnQgPSAwOwotICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQtPmFkZEZvcmNl
ZFJlZ2lvbkJyZWFrKG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxP
ZmZzZXQsIGNoaWxkLCB0cnVlLCAmb2Zmc2V0QnJlYWtBZGp1c3RtZW50KSkKKyAgICAgICAgICAg
IGlmIChmbG93VGhyZWFkLT5hZGRGb3JjZWRSZWdpb25CcmVhayh0aGlzLCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0LCBjaGlsZCwgdHJ1ZSwgJm9mZnNl
dEJyZWFrQWRqdXN0bWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxPZmZzZXQg
KyBvZmZzZXRCcmVha0FkanVzdG1lbnQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5leHRQ
YWdlTG9naWNhbFRvcChsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KTsKQEAgLTc0
NTgsNyArNzQ1Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFwcGx5QWZ0ZXJCcmVhayhS
ZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzCiAgICAgICAgICAgICB2aWV3
KCktPmxheW91dFN0YXRlKCktPmFkZEZvcmNlZENvbHVtbkJyZWFrKGNoaWxkLCBsb2dpY2FsT2Zm
c2V0KTsKICAgICAgICAgaWYgKGNoZWNrUmVnaW9uQnJlYWtzKSB7CiAgICAgICAgICAgICBMYXlv
dXRVbml0IG9mZnNldEJyZWFrQWRqdXN0bWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAoZmxvd1Ro
cmVhZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpICsgbG9naWNhbE9mZnNldCArIG1hcmdpbk9mZnNldCwgY2hpbGQsIGZhbHNlLCAmb2Zmc2V0
QnJlYWtBZGp1c3RtZW50KSkKKyAgICAgICAgICAgIGlmIChmbG93VGhyZWFkLT5hZGRGb3JjZWRS
ZWdpb25CcmVhayh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dp
Y2FsT2Zmc2V0ICsgbWFyZ2luT2Zmc2V0LCBjaGlsZCwgZmFsc2UsICZvZmZzZXRCcmVha0FkanVz
dG1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgbWFyZ2luT2Zm
c2V0ICsgb2Zmc2V0QnJlYWtBZGp1c3RtZW50OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
ZXh0UGFnZUxvZ2ljYWxUb3AobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSk7CkBA
IC03NTU3LDEzICs3NTUyLDEzIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnB1c2hUb05leHRQYWdlV2l0
aE1pbmltdW1Mb2dpY2FsSGVpZ2h0KExheW91dFVuaXQmIGFkanVzdG1lbnQsCiB2b2lkIFJlbmRl
ckJsb2NrOjpzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VT
aG9ydGFnZSkKIHsKICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgZmxvd1RocmVhZC0+c2V0UGFnZUJyZWFr
KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIG9mZnNldCwgc3BhY2VTaG9ydGFn
ZSk7CisgICAgICAgIGZsb3dUaHJlYWQtPnNldFBhZ2VCcmVhayh0aGlzLCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIHNwYWNlU2hvcnRhZ2UpOwogfQogCiB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwg
TGF5b3V0VW5pdCBtaW5IZWlnaHQpCiB7CiAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIGZsb3dUaHJlYWQt
PnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2Uo
KSArIG9mZnNldCwgbWluSGVpZ2h0KTsKKyAgICAgICAgZmxvd1RocmVhZC0+dXBkYXRlTWluaW11
bVBhZ2VIZWlnaHQodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgb2Zm
c2V0LCBtaW5IZWlnaHQpOwogICAgIGVsc2UgaWYgKENvbHVtbkluZm8qIGNvbEluZm8gPSB2aWV3
KCktPmxheW91dFN0YXRlKCktPm1fY29sdW1uSW5mbykKICAgICAgICAgY29sSW5mby0+dXBkYXRl
TWluaW11bUNvbHVtbkhlaWdodChtaW5IZWlnaHQpOwogfQpAQCAtNzc2OSw3ICs3NzY0LDcgQEAg
UmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6cmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRVbml0
IGJsb2NrT2Zmc2V0KSBjb25zdAogICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+
aGFzVmFsaWRSZWdpb25JbmZvKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGZs
b3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSgpICsgYmxvY2tPZmZzZXQsIHRydWUpOworICAgIHJldHVybiBmbG93VGhyZWFkLT5yZWdp
b25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSAr
IGJsb2NrT2Zmc2V0LCB0cnVlKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU3RhdGlj
SW5saW5lUG9zaXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3ApCkBAIC03Nzk3LDI4ICs3NzkyLDcxIEBAIGJvb2wgUmVuZGVyQmxvY2s6OmxvZ2ljYWxX
aWR0aENoYW5nZWRJblJlZ2lvbnMoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkgY29uCiAg
ICAgcmV0dXJuIGZsb3dUaHJlYWQtPmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9j
ayh0aGlzKTsKIH0KIAotUmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6Y2xhbXBUb1N0YXJ0QW5k
RW5kUmVnaW9ucyhSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3ZvaWQgUmVuZGVyQmxvY2s6
OmNvbXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCogYm94KSBjb25z
dAogewogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKCk7CisgICAgaWYgKCFmbG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNSZWdp
b25zKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChpc1JlbmRlclZpZXcoKSB8fCAo
cmVnaW9uICYmIGZsb3dUaHJlYWQpKTsKLSAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCi0gICAgICAg
IHJldHVybiByZWdpb247Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGNsYW1wIHRvIHRoZSBibG9jaywg
c2luY2Ugd2Ugd2FudCBhbnkgbGluZXMgb3IgYmxvY2tzIHRoYXQgb3ZlcmZsb3cgb3V0IG9mIHRo
ZQotICAgIC8vIGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBibG9jayB0byBz
aXplIGFzIHRob3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUgZmlyc3QgYW5kCi0gICAgLy8gbGFz
dCByZWdpb25zIGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVyd2lzZSB0aGUgbGluZXMgYXJlIGdv
aW5nIHRvIHNpemUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25zCi0gICAgLy8gdGhleSBvdmVyZmxv
dyBpbnRvLCB3aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRoaXMgYmxvY2sgZG9lc24ndCBleGlz
dCBpbiB8cmVnaW9ufCBhdCBhbGwuCiAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKICAg
ICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKLSAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5n
ZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLSAgICAKLSAgICBpZiAoc3Rh
cnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0
YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKLSAgICAgICAgcmV0
dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9w
Rm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJl
YWRDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBlbmRSZWdpb247Ci0gICAgCi0gICAgcmV0dXJu
IHJlZ2lvbjsKKyAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lv
biA9IGJveC0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpOworICAgIGlmIChib3gt
PmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpKQorICAgICAgICBzdGFydFJlZ2lvbiA9IGVu
ZFJlZ2lvbiA9IGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UmVnaW9uLCB0cnVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3Rh
cnRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiwgdHJ1ZSk7CisgICAgICAgIGVuZFJlZ2lvbiA9IGZs
b3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UmVnaW9uICsgbG9naWNhbEhlaWdodEZvckNoaWxkKGJveCksIHRydWUpOworICAgIH0K
KworICAgIEFTU0VSVChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pOworICAgIGZsb3dUaHJlYWQt
PnNldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Cit9CisK
K3ZvaWQgUmVuZGVyQmxvY2s6OmVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChSZW5kZXJC
b3gqIGJveCkgY29uc3QKK3sKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1Ro
cmVhZC0+aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYm94LT5pc1Vu
c3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkgeworICAgICAgICBjb21wdXRlUmVnaW9uUmFuZ2VG
b3JCb3hDaGlsZChib3gpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzIGVzdGltYXRlZFZhbHVlczsKKyAgICBib3gtPmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQ6Om1heCgpIC8gMiwgbG9naWNhbFRvcEZvckNoaWxkKGJveCks
IGVzdGltYXRlZFZhbHVlcyk7CisKKyAgICBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFJlZ2lvbiA9IGJveC0+b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpOwor
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2Nr
T2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiwgdHJ1ZSk7Cisg
ICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zm
c2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGVzdGltYXRlZFZh
bHVlcy5tX2V4dGVudCwgdHJ1ZSk7CisKKyAgICBBU1NFUlQoc3RhcnRSZWdpb24gJiYgZW5kUmVn
aW9uKTsKKyAgICBmbG93VGhyZWFkLT5zZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVn
aW9uLCBlbmRSZWdpb24pOworfQorCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25SYW5n
ZUZvckJveENoaWxkKFJlbmRlckJveCogYm94KSBjb25zdAoreworICAgIFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFm
bG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNSZWdpb25zKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiog
ZW5kUmVnaW9uID0gMDsKKyAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gs
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94
Q2hpbGQoYm94KTsKKworICAgIFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24gPSAwOworICAg
IFJlbmRlclJlZ2lvbiogbmV3RW5kUmVnaW9uID0gMDsKKyAgICBmbG93VGhyZWFkLT5nZXRSZWdp
b25SYW5nZUZvckJveChib3gsIG5ld1N0YXJ0UmVnaW9uLCBuZXdFbmRSZWdpb24pOworCisgICAg
Ly8gVGhlIHJlZ2lvbiByYW5nZSBvZiB0aGUgYm94IGhhcyBjaGFuZ2VkLiBTb21lIGJveGVzIChl
LmcgZmxvYXRzKSBtYXkgaGF2ZSBiZWVuIHBvc2l0aW9uZWQgYXNzdW1pbmcKKyAgICAvLyBhIGRp
ZmZlcmVudCByYW5nZS4KKyAgICAvLyBGSVhNRTogQmUgc21hcnRlciBhYm91dCB0aGlzLiBXZSBk
b24ndCBuZWVkIHRvIHJlbGF5b3V0IGFsbCB0aGUgdGltZS4KKyAgICBpZiAobmV3U3RhcnRSZWdp
b24gIT0gc3RhcnRSZWdpb24gfHwgbmV3RW5kUmVnaW9uICE9IGVuZFJlZ2lvbikKKyAgICAgICAg
Ym94LT5zZXROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOworCisgICAgYm94LT5sYXlv
dXRJZk5lZWRlZCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb2xsYXBzZWRNYXJn
aW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAzM2VjMWM5MWM0NzYzMWVhODkzODZmMjI5
YmM4MDU4MTBkMDdiNTkwLi5kZGI5ZDY2NTNlM2E1ZDU3MjRlY2I0M2YxMDgxNDY0NjdlMGE1Yjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzQ1LDkgKzM0NSw5
IEBAIHB1YmxpYzoKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbG9naWNhbCB3aWR0aC9oZWlnaHQg
YW5kIG1hcmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93IGRpcmVjdGlv
bi4KICAgICBlbnVtIEFwcGx5TGF5b3V0RGVsdGFNb2RlIHsgQXBwbHlMYXlvdXREZWx0YSwgRG9O
b3RBcHBseUxheW91dERlbHRhIH07Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+aGVpZ2h0KCk7IH0KLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmhlaWdodCgpIDogY2hpbGQtPndpZHRo
KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gq
IGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6
IGNoaWxkLT54KCk7IH0KKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNvbnN0
IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5oZWlnaHQoKTsgfQorICAgIExheW91dFVuaXQg
bG9naWNhbEhlaWdodEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+
d2lkdGgoKTsgfQorICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBj
aGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQogICAgIHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERl
bHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9w
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxh
eW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNv
bnN0IHsgcmV0dXJuIGNoaWxkLT5tYXJnaW5CZWZvcmUoc3R5bGUoKSk7IH0KQEAgLTU3Niw5ICs1
NzYsMTIgQEAgcHJvdGVjdGVkOgogICAgIH0KICNlbmRpZgogCi0gICAgYm9vbCB1cGRhdGVSZWdp
b25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCopOwotICAgIHZv
aWQgdXBkYXRlUmVnaW9uc0FuZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVh
ZCosIGJvb2wgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKLSAgICB2b2lkIGNvbXB1dGVSZWdpb25S
YW5nZUZvckJsb2NrKFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBib29sIHVwZGF0ZVNoYXBlc0Jl
Zm9yZUJsb2NrTGF5b3V0KCk7CisgICAgdm9pZCB1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0
KGJvb2wgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNvbXB1dGVSZWdpb25SYW5n
ZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCopIGNvbnN0OworCisgICAgdm9pZCBlc3RpbWF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoUmVuZGVyQm94KikgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVSZWdpb25SYW5nZUZvckJveENoaWxkKFJlbmRlckJveCopIGNvbnN0OwogCiAgICAgdm9pZCB1
cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgUmVuZGVyQm94Kik7CiAKQEAgLTExNTIsNyArMTE1NSw2IEBAIHByb3RlY3RlZDoKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpIGNvbnN0OwogICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uQXRCbG9ja09mZnNldChMYXlvdXRV
bml0KSBjb25zdDsKLSAgICBSZW5kZXJSZWdpb24qIGNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMo
UmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1Y3QgRmxvYXRpbmdP
YmplY3RIYXNoRnVuY3Rpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZWM1ODNkZWZhZTQxNWMwNTQ4NmQ0MzE0MjJl
YTNhM2ZhNjhmYjA2MC4uMDdmODAzZmQ4MGVmYjUzZTQyZmZiY2M1Y2U1YjI0ZmFkMDBhNGIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAKQEAgLTIxMzgsNiArMjEzOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGlu
ZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAg
ICAgIFZlY3RvcjxSZW5kZXJCb3gqPiByZXBsYWNlZENoaWxkcmVuOwogICAgICAgICBmb3IgKElu
bGluZVdhbGtlciB3YWxrZXIodGhpcyk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2Uo
KSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gd2Fsa2VyLmN1cnJlbnQoKTsKKwog
ICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVDaGlsZCAmJiBvLT5pc0lubGluZSgpKQogICAgICAg
ICAgICAgICAgIGhhc0lubGluZUNoaWxkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCAzNTcxNjIzM2E0MzM0YTNiNTA3YTU0YjczYzJhYjRlZmM0Mjdl
YmJlLi4wZjA1NTFiNDc2NmRhZjdiZGVkNTlkYTMxYTM5Y2M2OTYxOTA3ZjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA2LDExICsxMDYsNTQgQEAgUmVuZGVy
Qm94Ojp+UmVuZGVyQm94KCkKIHsKIH0KIAorUmVuZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1w
VG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit7CisgICAg
UmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2so
KTsKKworICAgIEFTU0VSVChpc1JlbmRlclZpZXcoKSB8fCAocmVnaW9uICYmIGZsb3dUaHJlYWQp
KTsKKyAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVybiByZWdpb247CisKKyAg
ICAvLyBXZSBuZWVkIHRvIGNsYW1wIHRvIHRoZSBibG9jaywgc2luY2Ugd2Ugd2FudCBhbnkgbGlu
ZXMgb3IgYmxvY2tzIHRoYXQgb3ZlcmZsb3cgb3V0IG9mIHRoZQorICAgIC8vIGxvZ2ljYWwgdG9w
IG9yIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBibG9jayB0byBzaXplIGFzIHRob3VnaCB0aGUgYm9y
ZGVyIGJveCBpbiB0aGUgZmlyc3QgYW5kCisgICAgLy8gbGFzdCByZWdpb25zIGV4dGVuZGVkIGlu
ZmluaXRlbHkuIE90aGVyd2lzZSB0aGUgbGluZXMgYXJlIGdvaW5nIHRvIHNpemUgYWNjb3JkaW5n
IHRvIHRoZSByZWdpb25zCisgICAgLy8gdGhleSBvdmVyZmxvdyBpbnRvLCB3aGljaCBtYWtlcyBu
byBzZW5zZSB3aGVuIHRoaXMgYmxvY2sgZG9lc24ndCBleGlzdCBpbiB8cmVnaW9ufCBhdCBhbGwu
CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb24gPSAwOworICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMs
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsK
KyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQorICAg
ICAgICByZXR1cm4gZW5kUmVnaW9uOworCisgICAgcmV0dXJuIHJlZ2lvbjsKK30KKwogTGF5b3V0
UmVjdCBSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lv
biwgUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKIHsKICAgICBpZiAo
IXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKLSAgICAKKworICAgIFJl
bmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7
CisgICAgaWYgKCFmbG93VGhyZWFkKQorICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOwor
CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb24gPSAwOworICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMs
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgLy8gRklYTUU6IEluIGEgcGVyZmVjdCB3
b3JsZCB0aGlzIGNvbmRpdGlvbiBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgIGlmICghc3RhcnRS
ZWdpb24gfHwgIWVuZFJlZ2lvbikKKyAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKKwor
ICAgIC8vIEZJWE1FOiBPbmNlIG92ZXJmbG93IGlzIGltcGxlbWVudGVkIHRoaXMgYXNzZXJ0aW9u
IG5lZWRzIHRvIGJlIGVuYWJsZWQuIFJpZ2h0IG5vdyB0aGUgb3ZlcmZsb3cgY29udGVudCBpcyBw
YWludGVkCisgICAgLy8gaW4gcmVnaW9ucyBvdXRzaWRlIHRoZSBib3ggcmFuZ2Ugc28gdGhlIGFz
c2VydCBpcyBkaXNhYmxlZC4KKyAgICAvLyBBU1NFUlQoY2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9u
cyhyZWdpb24pID09IHJlZ2lvbik7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYm94ZXMg
YXJlIHBhaW50ZWQgaW5zaWRlIHRoZWlyIHJlZ2lvbiByYW5nZS4KKyAgICByZWdpb24gPSBjbGFt
cFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbik7CisKICAgICAvLyBDb21wdXRlIHRoZSBsb2dp
Y2FsIHdpZHRoIGFuZCBwbGFjZW1lbnQgaW4gdGhpcyByZWdpb24uCiAgICAgUmVuZGVyQm94UmVn
aW9uSW5mbyogYm94SW5mbyA9IHJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCBjYWNoZUZsYWcp
OwogICAgIGlmICghYm94SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCA1NzkxMWFkMzI4ZjM3OTljZDZjOWFjMzVmOTYxMjUxOTczZDAwYjMwLi4xZmViZmU3YjZhZGE4
Yjg3ZjZlN2NmNzA4MjRiYjk1YjY4NzIxZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCkBAIC0zNjAsNiArMzYwLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBSZW5kZXJCb3hS
ZWdpb25JbmZvRmxhZ3MgeyBDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8sIERvTm90Q2FjaGVSZW5k
ZXJCb3hSZWdpb25JbmZvIH07CiAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3hSZWN0SW5SZWdpb24o
UmVuZGVyUmVnaW9uKiwgUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzID0gQ2FjaGVSZW5kZXJCb3hS
ZWdpb25JbmZvKSBjb25zdDsKKyAgICBSZW5kZXJSZWdpb24qIGNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMoUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlbmRlckJveFJlZ2lv
bkluZm8oKTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZp
cnN0UGFnZSgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBjMDA1YzdkMGU3OGIx
ZTBiZDc5ZjM2NmIzZjMzYWVlYjliMzM5NzdiLi43YzE1MjQxZDhlZGJmOGRkNzZkNzI5MDQzMmQ2
ODdkNTNlMmU1MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQpCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZs
b3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZElu
UmVnaW9ucyhmbG93VGhyZWFkKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0g
ICAgaWYgKHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGlsZExheW91dChmbG93VGhyZWFk
KSkKKyAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkKICAgICAgICAgcmVs
YXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICBMYXlvdXRTaXplIHByZXZpb3VzU2l6ZSA9IHNp
emUoKTsKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAg
bGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAK
LSAgICB1cGRhdGVSZWdpb25zQW5kU2hhcGVzQWZ0ZXJDaGlsZExheW91dChmbG93VGhyZWFkKTsK
KyAgICB1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0KCk7CiAKICAgICBpZiAoIWlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBoZWlnaHQoKSA9PSAwKSB7CiAgICAgICAgIC8v
IFdlIGFyZSBhIGJsb2NrIHdpdGggbm8gYm9yZGVyIGFuZCBwYWRkaW5nIGFuZCBhIGNvbXB1dGVk
IGhlaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAKaW5kZXggYTFlYTQ3NjdhOTM3YTkwYTk3NjU2ZGY0ZmE4ZjQ4NzgzYTE1MzBhOS4uYzE3ZTI1
NmNlNDllZTU1Mjk4OWFjMGJjYTc3MzEzNTQ4ZGMzZGI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0KQogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMo
Zmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1
cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCkpCisgICAg
aWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAgIHJlbGF5b3V0Q2hp
bGRyZW4gPSB0cnVlOwogCiAgICAgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUg
PSAtMTsKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsKIAotICAgIHVwZGF0
ZVJlZ2lvbnNBbmRTaGFwZXNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0
ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIHJlcGFpbnRDaGlsZHJlbkR1cmluZ0xh
eW91dElmTW92ZWQob2xkQ2hpbGRSZWN0cyk7CiAgICAgLy8gRklYTUU6IGNzczMvZmxleGJveC9y
ZXBhaW50LXJ0bC1jb2x1bW4uaHRtbCBzZWVtcyB0byByZXBhaW50IG1vcmUgb3ZlcmZsb3cgdGhh
biBpdCBuZWVkcyB0by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcAppbmRleCA3MDIwOGY2NmU2NWE0Y2E1YThkZGI0MTQyOGJiODZkMWU4ZmNmNWJiLi5m
YzQyMGYwNzdhMjllZjQ3Y2RiZDMxMGUwZjEwMTYxMmE1NzA3YjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xODUsNiArMTg1LDggQEAg
dm9pZCBSZW5kZXJGbG93VGhyZWFkOjp2YWxpZGF0ZVJlZ2lvbnMoKQogCiAgICAgICAgICAgICAg
ICAgcHJldmlvdXNSZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb25Mb2dpY2FsV2lkdGg7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIG1fcmVn
aW9uTGlzdC5maXJzdCgpLCBtX3JlZ2lvbkxpc3QubGFzdCgpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMzc2LDMzICszNzgsNDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVj
dGFuZ2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LAogICAgIH0KIH0K
IAotUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KExh
eW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1dG9HZW5lcmF0
aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQorUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93
VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCogY2xhbXBCb3gsIExh
eW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lvbkF1dG9HZW5lcmF0
aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQogewogICAgIEFTU0VSVCghbV9yZWdpb25z
SW52YWxpZGF0ZWQpOwogCiAgICAgaWYgKGF1dG9HZW5lcmF0aW9uUG9saWN5ID09IEFsbG93UmVn
aW9uQXV0b0dlbmVyYXRpb24pCiAgICAgICAgIGF1dG9HZW5lcmF0ZVJlZ2lvbnNUb0Jsb2NrT2Zm
c2V0KG9mZnNldCk7CiAKLSAgICBpZiAob2Zmc2V0IDw9IDApCi0gICAgICAgIHJldHVybiBtX3Jl
Z2lvbkxpc3QuaXNFbXB0eSgpID8gMCA6IG1fcmVnaW9uTGlzdC5maXJzdCgpOworICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gMDsKKyAgICBpZiAob2Zmc2V0IDw9IDApIHsKKyAgICAgICAgcmVn
aW9uID0gbV9yZWdpb25MaXN0LmlzRW1wdHkoKSA/IDAgOiBtX3JlZ2lvbkxpc3QuZmlyc3QoKTsK
KyAgICAgICAgaWYgKCFjbGFtcEJveCkKKyAgICAgICAgICAgIHJldHVybiByZWdpb247CisgICAg
ICAgIHJldHVybiByZWdpb24gPyBjbGFtcEJveC0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhy
ZWdpb24pIDogMDsKKyAgICB9CiAKICAgICBSZWdpb25TZWFyY2hBZGFwdGVyIGFkYXB0ZXIob2Zm
c2V0KTsKICAgICBtX3JlZ2lvbkludGVydmFsVHJlZS5hbGxPdmVybGFwc1dpdGhBZGFwdGVyPFJl
Z2lvblNlYXJjaEFkYXB0ZXI+KGFkYXB0ZXIpOwogCiAgICAgLy8gSWYgbm8gcmVnaW9uIHdhcyBm
b3VuZCwgdGhlIG9mZnNldCBpcyBpbiB0aGUgZmxvdyB0aHJlYWQgb3ZlcmZsb3cuCiAgICAgLy8g
VGhlIGxhc3QgcmVnaW9uIHdpbGwgY29udGFpbiB0aGUgb2Zmc2V0IGlmIGV4dGVuZExhc3RSZWdp
b24gaXMgc2V0IG9yIGlmIHRoZSBsYXN0IHJlZ2lvbiBpcyBhIHNldC4KLSAgICBpZiAoIWFkYXB0
ZXIucmVzdWx0KCkgJiYgIW1fcmVnaW9uTGlzdC5pc0VtcHR5KCkgJiYgKGV4dGVuZExhc3RSZWdp
b24gfHwgbV9yZWdpb25MaXN0Lmxhc3QoKS0+aXNSZW5kZXJSZWdpb25TZXQoKSkpCi0gICAgICAg
IHJldHVybiBtX3JlZ2lvbkxpc3QubGFzdCgpOworICAgIGlmICghYWRhcHRlci5yZXN1bHQoKSAm
JiAhbV9yZWdpb25MaXN0LmlzRW1wdHkoKSAmJiAoZXh0ZW5kTGFzdFJlZ2lvbiB8fCBtX3JlZ2lv
bkxpc3QubGFzdCgpLT5pc1JlbmRlclJlZ2lvblNldCgpKSkgeworICAgICAgICByZWdpb24gPSBt
X3JlZ2lvbkxpc3QubGFzdCgpOworICAgICAgICBpZiAoIWNsYW1wQm94KQorICAgICAgICAgICAg
cmV0dXJuIHJlZ2lvbjsKKyAgICAgICAgcmV0dXJuIHJlZ2lvbiA/IGNsYW1wQm94LT5jbGFtcFRv
U3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbikgOiAwOworICAgIH0KIAotICAgIHJldHVybiBhZGFw
dGVyLnJlc3VsdCgpOworICAgIHJlZ2lvbiA9IGFkYXB0ZXIucmVzdWx0KCk7CisgICAgaWYgKCFj
bGFtcEJveCkKKyAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAgICByZXR1cm4gcmVnaW9uID8gY2xh
bXBCb3gtPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKSA6IDA7CiB9CiAgICAgCiBM
YXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09m
ZnNldFBhcmVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94TW9kZWxPYmplY3QsIGNv
bnN0IExheW91dFBvaW50JiBzdGFydFBvaW50KQogewogICAgIExheW91dFBvaW50IHJlZmVyZW5j
ZVBvaW50ID0gc3RhcnRQb2ludDsKICAgICAKKyAgICBjb25zdCBSZW5kZXJCbG9jayogb2JqQ29u
dGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgYWRhcHRlZCBmb3IgZGlmZmVyZW50IHdyaXRpbmcgbW9k
ZXMgaW5zaWRlIHRoZSBmbG93IHRocmVhZC4KLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9u
ID0gcmVnaW9uQXRCbG9ja09mZnNldChyZWZlcmVuY2VQb2ludC55KCkpOworICAgIFJlbmRlclJl
Z2lvbiogc3RhcnRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9iakNvbnRhaW5pbmdCbG9j
aywgcmVmZXJlbmNlUG9pbnQueSgpKTsKICAgICBpZiAoc3RhcnRSZWdpb24pIHsKICAgICAgICAg
Ly8gVGFrZSBpbnRvIGFjY291bnQgdGhlIG9mZnNldCBjb29yZGluYXRlcyBvZiB0aGUgcmVnaW9u
LgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3Vyck9iamVjdCA9IHN0YXJ0UmVnaW9u
OwpAQCAtNDIyLDcgKzQzNyw2IEBAIExheW91dFBvaW50IFJlbmRlckZsb3dUaHJlYWQ6OmFkanVz
dGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IFJlbmRlCiAgICAgICAgIC8v
IGFuZCBpZiBzbywgZHJvcCB0aGUgb2JqZWN0J3MgdG9wIHBvc2l0aW9uICh3aGljaCB3YXMgY29t
cHV0ZWQgcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5pbmcgYmxvY2sKICAgICAgICAgLy8gYW5kIGlz
IG5vIGxvbmdlciB2YWxpZCkgYW5kIHJlY29tcHV0ZSBpdCB1c2luZyB0aGUgcmVnaW9uIGluIHdo
aWNoIGl0IGZsb3dzIGFzIHJlZmVyZW5jZS4KICAgICAgICAgYm9vbCB3YXNDb21wdXRlZFJlbGF0
aXZlVG9PdGhlclJlZ2lvbiA9IGZhbHNlOwotICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogb2Jq
Q29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7CiAgICAg
ICAgIHdoaWxlIChvYmpDb250YWluaW5nQmxvY2sgJiYgIW9iakNvbnRhaW5pbmdCbG9jay0+aXNS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBv
YmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgcmVnaW9uLgogICAgICAgICAgICAgUmVuZGVyUmVnaW9u
KiBwYXJlbnRTdGFydFJlZ2lvbiA9IDA7CkBAIC00ODAsMTkgKzQ5NCwxOSBAQCBMYXlvdXRQb2lu
dCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVu
dChjb25zdCBSZW5kZQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2Fs
VG9wRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxvd1JlZ2lvbkF1
dG9HZW5lcmF0aW9uKTsKICAgICByZXR1cm4gcmVnaW9uID8gcmVnaW9uLT5wYWdlTG9naWNhbFRv
cEZvck9mZnNldChvZmZzZXQpIDogTGF5b3V0VW5pdCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRl
ckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsV2lkdGhGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQp
CiB7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNl
dCwgdHJ1ZSk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0
KDAsIG9mZnNldCwgdHJ1ZSwgQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAgICAgcmV0dXJu
IHJlZ2lvbiA/IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpIDogY29udGVudExvZ2ljYWxXaWR0
aCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsSGVpZ2h0
Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxvd1JlZ2lvbkF1dG9H
ZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTUw
MSw3ICs1MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsSGVp
Z2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dU
aHJlYWQ6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zm
c2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpCiB7Ci0gICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7CisgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KDAsIG9mZnNldCwgZmFsc2UsIEFsbG93
UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4g
MDsKIApAQCAtNTE3LDcgKzUzMSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cGFn
ZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzCiAgICAgcmV0
dXJuIHJlbWFpbmluZ0hlaWdodDsKIH0KIAotUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFk
OjptYXBGcm9tRmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29u
c3QKK1JlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbihj
b25zdCBSZW5kZXJCbG9jayogYmxvY2ssIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkg
Y29uc3QKIHsKICAgICBpZiAoIWhhc1ZhbGlkUmVnaW9uSW5mbygpKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTUzMCw3ICs1NDQsNyBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJlYWQ6Om1h
cEZyb21GbG93VG9SZWdpb24oVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YQogICAgIC8vIE5v
dGU6IFVzaW5nIHRoZSBjZW50ZXIgaW4gb3JkZXIgdG8gYXZvaWQgcm91bmRpbmcgZXJyb3JzLgog
CiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gYm94UmVjdC5jZW50ZXIoKTsKLSAgICBSZW5kZXJS
ZWdpb24qIHJlbmRlclJlZ2lvbiA9IGNvbnN0X2Nhc3Q8UmVuZGVyRmxvd1RocmVhZCo+KHRoaXMp
LT5yZWdpb25BdEJsb2NrT2Zmc2V0KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjZW50ZXIu
eSgpIDogY2VudGVyLngoKSwgdHJ1ZSwgRGlzYWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7Cisg
ICAgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24gPSBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJl
YWQqPih0aGlzKS0+cmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgpLCB0cnVlLCBEaXNhbGxvd1JlZ2lvbkF1
dG9HZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlbmRlclJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTU4NCwyMSArNTk4LDE4IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdp
ZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBiCiAgICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb247CiAgICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYmxvY2ssIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogCi0gICAgLy8gV2hlbiB0aGUgcmVnaW9uIGNoYWluIGlz
IGludmFsaWRhdGVkIHRoZSBib3ggaW5mb3JtYXRpb24gaXMgZGlzY2FyZGVkIHNvIHdlIG11c3Qg
YXNzdW1lIHRoZSB3aWR0aCBoYXMgY2hhbmdlZC4KLSAgICBpZiAobV9wYWdlTG9naWNhbFNpemVD
aGFuZ2VkICYmICFzdGFydFJlZ2lvbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAvLyBO
b3QgbmVjZXNzYXJ5IGZvciB0aGUgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIGFscmVhZHkgY29tcHV0
ZWQgdGhlIGNvcnJlY3QgaW5mbyBmb3IgaXQuCiAgICAgaWYgKGJsb2NrID09IHRoaXMpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3IgKFJlbmRl
clJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lv
bik7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVy
UmVnaW9uKiByZWdpb24gPSAqaXRlcjsKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5
b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKIAorICAgICAgICAvLyBXZSBo
YXZlIG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZvciB0aGlzIHJlZ2lvbiBzbyB3ZSBuZWVkIHRv
IGRvIGl0LgogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9IHJl
Z2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwogICAgICAgICBpZiAoIW9sZElu
Zm8pCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFdpZHRoID0gb2xkSW5mby0+bG9naWNhbFdpZHRo
KCk7CiAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIG5ld0luZm8gPSBibG9jay0+cmVuZGVy
Qm94UmVnaW9uSW5mbyhyZWdpb24pOwpAQCAtNjc2LDE0ICs2ODcsMzEgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVj
dCogb2JqZWN0LAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25S
YW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKQordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJv
eFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdp
b24sIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uKQogewogICAgIGlmICghaGFzUmVnaW9ucygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogTm90IHJpZ2h0IGZvciBkaWZmZXJpbmcg
d3JpdGluZy1tb2Rlcy4KLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gcmVnaW9uQXRC
bG9ja09mZnNldChvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlLCB0cnVlKTsKLSAgICBS
ZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSArIGJveC0+bG9naWNhbEhlaWdodCgpLCB0cnVlKTsKKyAgICBB
U1NFUlQoc3RhcnRSZWdpb24gJiYgZW5kUmVnaW9uKTsKKworICAgIGZvciAoUmVuZGVyUmVnaW9u
TGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRl
ciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOworICAgICAgICBpZiAocmVnaW9uLT5yZW5kZXJCb3hSZWdpb25JbmZv
KGJveCkpCisgICAgICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94
KTsKKworICAgICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoYm94KTsKK30KKwor
dm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJC
b3gqIGJveCwgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiBlbmRSZWdp
b24pCit7CisgICAgaWYgKCFoYXNSZWdpb25zKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pOwogICAgIFJlbmRlclJlZ2lvblJhbmdlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChib3gpOwogICAgIGlmIChpdCA9
PSBtX3JlZ2lvblJhbmdlTWFwLmVuZCgpKSB7CiAgICAgICAgIG1fcmVnaW9uUmFuZ2VNYXAuc2V0
KGJveCwgUmVuZGVyUmVnaW9uUmFuZ2Uoc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpOwpAQCAtNjk2
LDIxICs3MjQsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94
KGNvbnN0IFJlbmRlckJveCogYm94LCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChyYW5nZS5zdGFy
dFJlZ2lvbigpID09IHN0YXJ0UmVnaW9uICYmIHJhbmdlLmVuZFJlZ2lvbigpID09IGVuZFJlZ2lv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRGVsZXRlIGFueSBpbmZvIHRoYXQgd2UgZmlu
ZCBiZWZvcmUgb3VyIG5ldyBzdGFydFJlZ2lvbiBhbmQgYWZ0ZXIgb3VyIG5ldyBlbmRSZWdpb24u
Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0
LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBzdGFy
dFJlZ2lvbikgewotICAgICAgICAgICAgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKGVuZFJlZ2lv
bik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZ2lvbi0+
cmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhib3gpOwotCi0gICAgICAgIGlmIChyZWdpb24gPT0g
cmFuZ2UuZW5kUmVnaW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjbGVh
clJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2Uu
ZW5kUmVnaW9uKCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIC8vIEZJWE1FOiBFdmVu
dHVhbGx5IGJlIHNtYXJ0ZXIgYWJvdXQgdGhpcyAoZS5nLiBwdXQgYSBmbGFnIG9uIHRoZSBib3gg
dG8gaW52YWxpZGF0ZSB0aGUgaW5mbykuCisgICAgY2xlYXJSZW5kZXJCb3hSZWdpb25JbmZvKGJv
eCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9uKCkpOwogICAgIHJhbmdlLnNl
dFJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogfQogCkBAIC03MzIsNyArNzQ3LDcgQEAg
dm9pZCBSZW5kZXJGbG93VGhyZWFkOjphcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQg
Y2xpZW50SGVpZ2h0KQogewogICAgIC8vIFNpbXVsYXRlIGEgcmVnaW9uIGJyZWFrIGF0IGhlaWdo
dC4gSWYgaXQgcG9pbnRzIGluc2lkZSBhbiBhdXRvIGxvZ2ljYWwgaGVpZ2h0IHJlZ2lvbiwKICAg
ICAvLyB0aGVuIGl0IG1heSBkZXRlcm1pbmUgdGhlIHJlZ2lvbiBvdmVycmlkZSBsb2dpY2FsIGNv
bnRlbnQgaGVpZ2h0LgotICAgIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNsaWVudEhlaWdodCwgdGhp
cywgZmFsc2UpOworICAgIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKHRoaXMsIGNsaWVudEhlaWdodCwg
dGhpcywgZmFsc2UpOwogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyZmxv
d1N0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSkKQEAgLTkzMSw3
ICs5NDYsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZVJlZ2lvbnNGbG93VGhyZWFk
UG9ydGlvblJlY3QoY29uc3QgUmVuZGVyUmVnaW9uKiBsYQogLy8gRXZlbiBpZiB3ZSByZXF1aXJl
IHRoZSBicmVhayB0byBvY2N1ciBhdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwgYmVjYXVzZSBy
ZWdpb25zIG1heSBoYXZlIG1pbi9tYXgtaGVpZ2h0IHZhbHVlcywKIC8vIGl0IGlzIHBvc3NpYmxl
IHRoYXQgdGhlIGJyZWFrIHdpbGwgb2NjdXIgYXQgYSBkaWZmZXJlbnQgb2Zmc2V0IHRoYW4gdGhl
IG9yaWdpbmFsIG9uZSByZXF1aXJlZC4KIC8vIG9mZnNldEJyZWFrQWRqdXN0bWVudCBtZWFzdXJl
cyB0aGUgZGlmZmVyZW50IGJldHdlZW4gdGhlIHJlcXVlc3RlZCBicmVhayBvZmZzZXQgYW5kIHRo
ZSBjdXJyZW50IGJyZWFrIG9mZnNldC4KLWJvb2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2Vk
UmVnaW9uQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwgUmVuZGVyT2Jq
ZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVha0Fk
anVzdG1lbnQpCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNv
bnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVh
ZCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBv
ZmZzZXRCcmVha0FkanVzdG1lbnQpCiB7CiAgICAgLy8gV2UgdGFrZSBicmVha3MgaW50byBhY2Nv
dW50IGZvciBoZWlnaHQgY29tcHV0YXRpb24gZm9yIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9u
cwogICAgIC8vIG9ubHkgaW4gdGhlIGxheW91dCBwaGFzZSBpbiB3aGljaCB3ZSBsYXkgb3V0IHRo
ZSBmbG93cyB0aHJlYWRzIHVuY29uc3RyYWluZWQKQEAgLTk1OCw3ICs5NzMsNyBAQCBib29sIFJl
bmRlckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKExheW91dFVuaXQgb2Zmc2V0QnJl
YWtJbkZsb3dUaHJlYWQsCiAKICAgICAvLyBTaW11bGF0ZSBhIHJlZ2lvbiBicmVhayBhdCBvZmZz
ZXRCcmVha0luRmxvd1RocmVhZC4gSWYgaXQgcG9pbnRzIGluc2lkZSBhbiBhdXRvIGxvZ2ljYWwg
aGVpZ2h0IHJlZ2lvbiwKICAgICAvLyB0aGVuIGl0IGRldGVybWluZXMgdGhlIHJlZ2lvbiBvdmVy
cmlkZSBsb2dpY2FsIGNvbnRlbnQgaGVpZ2h0LgotICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
cmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7CisgICAgUmVuZGVy
UmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBvZmZzZXRCcmVha0lu
Rmxvd1RocmVhZCk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTE1OSw3ICsxMTc0LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjptYXBMb2NhbFRvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnQKICAgICBpZiAodGhp
cyA9PSByZXBhaW50Q29udGFpbmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVy
UmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxvd1RvUmVnaW9uKHRyYW5zZm9ybVN0YXRlKSkKKyAg
ICBpZiAoUmVuZGVyUmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxvd1RvUmVnaW9uKHRoaXMsIHRy
YW5zZm9ybVN0YXRlKSkKICAgICAgICAgLy8gRklYTUU6IFRoZSBjYXN0IGJlbG93IGlzIHByb2Jh
Ymx5IG5vdCB0aGUgYmVzdCBzb2x1dGlvbiwgd2UgbWF5IG5lZWQgdG8gZmluZCBhIGJldHRlciB3
YXkuCiAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlck9iamVjdCo+KHJlZ2lvbiktPm1h
cExvY2FsVG9Db250YWluZXIocmVnaW9uLT5jb250YWluZXJGb3JSZXBhaW50KCksIHRyYW5zZm9y
bVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaAppbmRleCAxM2JkNzI2OGUzODA5ZTc4N2VlNzU1MDc1Yzk3MWExMTVj
ODk1ZmYyLi40ODIzMjJiMTU2YzExNThmODI4NGZjOTUyYzI3ZTc5M2JjYWQ3NDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTEwMywxOSArMTAz
LDIwIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0
KExheW91dFVuaXQpOwogICAgIExheW91dFVuaXQgcGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRG
b3JPZmZzZXQoTGF5b3V0VW5pdCwgUGFnZUJvdW5kYXJ5UnVsZSA9IEluY2x1ZGVQYWdlQm91bmRh
cnkpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBhZ2VCcmVhayhMYXlvdXRVbml0IC8qb2Zmc2V0
Ki8sIExheW91dFVuaXQgLypzcGFjZVNob3J0YWdlKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVNaW5pbXVtUGFnZUhlaWdodChMYXlvdXRVbml0IC8qb2Zmc2V0Ki8sIExheW91dFVuaXQg
LyptaW5IZWlnaHQqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VCcmVhayhjb25zdCBS
ZW5kZXJCbG9jayosIExheW91dFVuaXQgLypvZmZzZXQqLywgTGF5b3V0VW5pdCAvKnNwYWNlU2hv
cnRhZ2UqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KGNv
bnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRVbml0IC8qbWlu
SGVpZ2h0Ki8pIHsgfQogCiAgICAgZW51bSBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSB7CiAg
ICAgICAgIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24sCiAgICAgICAgIERpc2FsbG93UmVnaW9u
QXV0b0dlbmVyYXRpb24sCiAgICAgfTsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tP
ZmZzZXQoTGF5b3V0VW5pdCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uID0gZmFsc2UsIFJlZ2lvbkF1
dG9HZW5lcmF0aW9uUG9saWN5ID0gQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CisKKyAgICBS
ZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0
VW5pdCwgYm9vbCBleHRlbmRMYXN0UmVnaW9uID0gZmFsc2UsIFJlZ2lvbkF1dG9HZW5lcmF0aW9u
UG9saWN5ID0gQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAKICAgICBib29sIHJlZ2lvbnNI
YXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uc0hhdmVVbmlm
b3JtTG9naWNhbFdpZHRoOyB9CiAgICAgYm9vbCByZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0OyB9
CiAKLSAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24oVHJhbnNmb3JtU3RhdGUm
KSBjb25zdDsKKyAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24oY29uc3QgUmVu
ZGVyQmxvY2sqLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVSZW5k
ZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCopOwogICAgIGJvb2wgbG9naWNhbFdpZHRoQ2hhbmdl
ZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKik7CkBAIC0xMjcsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFJlbmRlclJlZ2lvbiogZmlyc3RSZWdpb24oKSBjb25zdDsKICAgICBS
ZW5kZXJSZWdpb24qIGxhc3RSZWdpb24oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0UmVnaW9uUmFu
Z2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRv
cE9mRmlyc3RQYWdlKTsKKyAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRl
ckJveCosIFJlbmRlclJlZ2lvbiosIFJlbmRlclJlZ2lvbiopOwogICAgIHZvaWQgZ2V0UmVnaW9u
UmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24s
IFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFyUmVuZGVy
T2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0KiwKQEAgLTE0Myw3ICsxNDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNGb3JMYXlv
dXQoKTsKIAotICAgIGJvb2wgYWRkRm9yY2VkUmVnaW9uQnJlYWsoTGF5b3V0VW5pdCwgUmVuZGVy
T2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVh
a0FkanVzdG1lbnQgPSAwKTsKKyAgICBib29sIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJl
bmRlckJsb2NrKiwgTGF5b3V0VW5pdCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlz
QmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKTsKICAgICB2b2lk
IGFwcGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCk7CiAKICAgICBib29sIHBhZ2VMb2dp
Y2FsU2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsU2l6ZUNoYW5nZWQ7
IH0KQEAgLTE2OCw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoRmxvd1RocmVhZExh
eW91dFN0YXRlKGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcG9wRmxvd1RocmVhZExh
eW91dFN0YXRlKCk7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RS
ZWdpb24oY29uc3QgUmVuZGVyQmxvY2sqKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyUmVuZGVyQm94
UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdpb24q
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBhNjU5
NDE1NTIwMDYyZThiYmQwOWQ3ZTA0MmE2NDkxZjkwY2I5YmFhLi4wOGMwOWVjMTc2MTQ5MDI5NTRk
MDUzNDhjNmMwNzM4MDE1NGM0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAobG9naWNh
bFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFkKSkKICAgICAgICAgcmVsYXlvdXRDaGls
ZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGlsZExh
eW91dChmbG93VGhyZWFkKSkKKyAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQo
KSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICBMYXlvdXRTaXplIHBy
ZXZpb3VzU2l6ZSA9IHNpemUoKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFJlbmRlckdyaWQ6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIGxh
eW91dFBvc2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0g
ICAgdXBkYXRlUmVnaW9uc0FuZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCk7Cisg
ICAgdXBkYXRlU2hhcGVzQWZ0ZXJCbG9ja0xheW91dCgpOwogCiAgICAgY29tcHV0ZU92ZXJmbG93
KG9sZENsaWVudEFmdGVyRWRnZSk7CiAgICAgc3RhdGVQdXNoZXIucG9wKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
Y3BwCmluZGV4IGRmYTAxN2RjZDAyZTQzOTdlZmE0MzdhZmRhNTZhY2I1ODVlOTVhYzIuLmE4OGFl
NjAyMWQyZGI1MzYwYmNmMjNmMjhiY2E5MWE1MWIzODBiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCkBA
IC0xMDQsMTUgKzEwNCwxNSBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6YXV0
b0dlbmVyYXRlUmVnaW9uc1RvQmxvY2tPZmZzZXQoTGF5b3V0VW5pdCAvKgogICAgIHZhbGlkYXRl
UmVnaW9ucygpOwogfQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6c2V0UGFn
ZUJyZWFrKExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpCit2b2lk
IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6c2V0UGFnZUJyZWFrKGNvbnN0IFJlbmRlckJs
b2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSkK
IHsKLSAgICBpZiAoUmVuZGVyTXVsdGlDb2x1bW5TZXQqIG11bHRpY29sU2V0ID0gdG9SZW5kZXJN
dWx0aUNvbHVtblNldChyZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCkpKQorICAgIGlmIChSZW5k
ZXJNdWx0aUNvbHVtblNldCogbXVsdGljb2xTZXQgPSB0b1JlbmRlck11bHRpQ29sdW1uU2V0KHJl
Z2lvbkF0QmxvY2tPZmZzZXQoYmxvY2ssIG9mZnNldCkpKQogICAgICAgICBtdWx0aWNvbFNldC0+
cmVjb3JkU3BhY2VTaG9ydGFnZShzcGFjZVNob3J0YWdlKTsKIH0KIAotdm9pZCBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQ6OnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KExheW91dFVuaXQgb2Zm
c2V0LCBMYXlvdXRVbml0IG1pbkhlaWdodCkKK3ZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhy
ZWFkOjp1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJCbG9jayogYmxvY2ssIExh
eW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IG1pbkhlaWdodCkKIHsKLSAgICBpZiAoUmVuZGVy
TXVsdGlDb2x1bW5TZXQqIG11bHRpY29sU2V0ID0gdG9SZW5kZXJNdWx0aUNvbHVtblNldChyZWdp
b25BdEJsb2NrT2Zmc2V0KG9mZnNldCkpKQorICAgIGlmIChSZW5kZXJNdWx0aUNvbHVtblNldCog
bXVsdGljb2xTZXQgPSB0b1JlbmRlck11bHRpQ29sdW1uU2V0KHJlZ2lvbkF0QmxvY2tPZmZzZXQo
YmxvY2ssIG9mZnNldCkpKQogICAgICAgICBtdWx0aWNvbFNldC0+dXBkYXRlTWluaW11bUNvbHVt
bkhlaWdodChtaW5IZWlnaHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggZGZhOTI4MGY0ZjQ0YWY4
OGM1Yzc1ZmM1ZGE4ZWI0NzY1YmM3YjU4Zi4uNzFhMmFiYjVhM2Q3NjcwZTAwNWI4ZGQzMjAxMTYz
ZTFkODIzMDUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApAQCAtNDQsOCArNDQsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGF1dG9HZW5lcmF0ZVJlZ2lvbnNUb0Js
b2NrT2Zmc2V0KExheW91dFVuaXQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBp
bml0aWFsTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFBhZ2VCcmVhayhMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0
VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGFnZUJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCBvZmZzZXQs
IExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCBvZmZz
ZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA1YTk5YTRiZTU2MjBiNjViYTI1NmFmZGFjNjAxNTNmYWZkNzYzNDNh
Li41MDYzY2NjODFmMTliZjFiOTZmMjFhMzczYjk3M2UyOGU0YmU4NzEyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTMtMDYtMjAgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CisK
KyAgICAgICAgW0NTUyBSZWdpb25zXSBDb21wdXRlIGNvcnJlY3QgcmVnaW9uIHJhbmdlcyBmb3Ig
Ym94ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NjI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RzIGZvciB0aGUgY2hhbmdlcyBpbiBob3cgcmVnaW9uIHJhbmdlcyBhcmUgY29tcHV0ZWQgYW5k
IGFwcGxpZWQuCisgICAgICAgIFRlbXBvcmFyaWx5IGRpc2FibGUgdGhlIHdpZG93cyBhbmQgb3Jw
aGFucyB0ZXN0IHVudGlsIHdlIGZpZ3VyZSBvdXQgYSB3YXkgdG8gaGFuZGxlIHRoZSBzdGFsZQor
ICAgICAgICB3aWRvd3MgUm9vdElubGluZUJveCBwb2ludGVyLgorCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVnaW9uLWFic29sdXRlLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ct
b3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0yLWV4cGVjdGVkLmh0bWw6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdl
LWV4cGVjdGVkLmh0bWwuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0
aC1jaGFuZ2UtMi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxv
YXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9yZWdp
b25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbDoKKyAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11bnNwbGl0dGFi
bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxMy0wNi0yMCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogVXNlIGNvbnNvbGUudGltZVN0YW1wIGluc3RlYWQgb2YgY29uc29s
ZS5tYXJrVGltZWxpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9ib3R0
b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVn
aW9uLWFic29sdXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ZDY5OGU0OWRmZDU2MGM1
OWE3NmY3MDNkNWQyMmViN2Q3NGQyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeyBmb250OiAxNnB4
LzEuMjUgbW9ub3NwYWNlOyB9CisKKyAgICAgICAgICAgICNmaXJzdC1ib3gtMSB7CisgICAgICAg
ICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAgICAgICAgYm9y
ZGVyLWxlZnQ6IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDog
MXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OjIwNHB4OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I2ZpcnN0LWJveC0yIHsKKyAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQg
Ymx1ZTsKKyAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGJsdWU7CisgICAg
ICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6OTZweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24xIHsKKyAgICAgICAgICAgICAgICBwYWRk
aW5nLWxlZnQ6IDVweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogNXB4OworICAgICAg
ICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDAy
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDVweDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgI3JlZ2lvbjIgeworICAgICAgICAgICAgICAgIHdpZHRoOiAyOTBweDsKKyAgICAg
ICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLWJv
dHRvbTogNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcDEg
eworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDAl
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0
b3A6IDE1MHB4OworICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAxMjBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPHA+SW4gdGhlIHRlc3QgY2FzZSBiZWxvdywgdGhlIHBhcmFncmFwaCB3aXRoIGEgc2Nyb2xs
IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBpbnNpZGUgdGhlIGJsdWUgZGl2LCBiZXR3ZWVuIHR3
byByZWdpb25zLiBUaGUgcGFyYWdyYXBoIHNob3VsZCBhcHBlYXIgYXMgYSBtb25vbGl0aGljYWwg
c2luZ2xlIGJveCwgc2l6ZWQgcmVsYXRpdmVseSB0byB0aGUgYmx1ZSBkaXYgZnJhZ21lbnQgaW5z
aWRlIHRoZSBmaXJzdCByZWdpb24uPC9wPgorICAgICAgICA8ZGl2IGlkPSJjb250YWluZXIiPgor
ICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0i
Zmlyc3QtYm94LTEiPgorICAgICAgICAgICAgICAgICAgICA8cCBpZD0icDEiPlRoZXNlIGxpbmVz
IHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFs
bCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUg
c2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxl
IGJveC48L3A+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZp
cnN0LWJveC0yIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
Ym90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1h
YnNvbHV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMTFkNDEwNTdlYWU5ZTU2YzcxMmNlNzM0M2Q3ZmVm
MjJiNzkxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvYm90
dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbApAQCAtMCwwICsx
LDU2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICBib2R5IHsgZm9udDogMTZweC8xLjI1IG1vbm9zcGFjZTsgfQorCisg
ICAgICAgICAgICAjY29udGVudCB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1mbG93LWludG86
IGZsb3cxOworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgI2ZpcnN0LWJveCB7CisgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29s
aWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6MzAwcHg7CisgICAgICAgICAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcmVnaW9u
MSwgI3JlZ2lvbjIgeworICAgICAgICAgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93MTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3JlZ2lvbjEgeworICAgICAgICAgICAgICAg
IHdpZHRoOiA0MTJweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIxMHB4OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICNwMSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAg
ICAgIHdpZHRoOiA0MCU7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICAgICAgICAgIHRvcDogMTUwcHg7CisgICAgICAgICAgICAgICAgbGVmdDogMTBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93OiBz
Y3JvbGw7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8cD5JbiB0aGUgdGVzdCBjYXNlIGJlbG93LCB0aGUgcGFyYWdyYXBo
IHdpdGggYSBzY3JvbGwgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgYmx1ZSBk
aXYsIGJldHdlZW4gdHdvIHJlZ2lvbnMuIFRoZSBwYXJhZ3JhcGggc2hvdWxkIGFwcGVhciBhcyBh
IG1vbm9saXRoaWNhbCBzaW5nbGUgYm94LCBzaXplZCByZWxhdGl2ZWx5IHRvIHRoZSBibHVlIGRp
diBmcmFnbWVudCBpbnNpZGUgdGhlIGZpcnN0IHJlZ2lvbi48L3A+CisgICAgICAgIDxkaXYgaWQ9
ImNvbnRlbnQiPgorICAgICAgICAgICAgPGRpdiBpZD0iZmlyc3QtYm94Ij4KKyAgICAgICAgICAg
ICAgICA8cCBpZD0icDEiPlRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxl
IGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBUaGVz
ZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUgc2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVzIHNo
b3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC48L3A+CisgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9u
MiI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTIt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lk
dGgtY2hhbmdlLTItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2I1ZGFmMzM2MmFhNmU1NGI3
MmRlYzQyZmUwNTQ4ZjE2YWIyNzBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsNzcgQEAKKzwhZG9jdHlwZSBodG1sPgorCisgPHN0eWxlPgorCisgICAgQGZvbnQtZmFj
ZSB7CisgICAgICAgIGZvbnQtZmFtaWx5OiB3ZWJraXQtYWhlbTsKKyAgICAgICAgZm9udC1zdHls
ZTogbm9ybWFsOworICAgICAgICBzcmM6IHVybCguLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYpOwor
ICAgIH0KKyAgIAorICAgICNmbG9hdDEgeworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAg
cG9zaXRpb246YWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDJweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsKKyAgICAgICAgei1pbmRl
eDotMTsKKyAgICB9CisgICAgCisgICAgI2Zsb2F0MiB7CisgICAgICAgIGZsb2F0OnJpZ2h0Owor
ICAgICAgICB3aWR0aDoyMDBweDsKKyAgICAgICAgaGVpZ2h0OjMwcHg7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6b3JhbmdlCisgICAgfQorCisgICAgI3JlZ2lvbjEsICNyZWdpb24yLCAjcmVn
aW9uMyB7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKyAKKyAgICAj
cmVnaW9uMSB7CisgICAgICAgIHdpZHRoOiAxNzBweDsKKyAgICAgICAgaGVpZ2h0OiA4MHB4Owor
ICAgICAgICBwYWRkaW5nOiA1cHg7CisgICAgfQorICAgIAorICAgICNyZWdpb24yIHsKKyAgICAg
ICAgd2lkdGg6IDM5MHB4OworICAgICAgICBoZWlnaHQ6IDg5cHg7CisgICAgICAgIHBhZGRpbmct
dG9wOjFweDsKKyAgICAgICAgcGFkZGluZy1sZWZ0OjVweDsKKyAgICAgICAgcGFkZGluZy1yaWdo
dDo1cHg7CisgICAgfQorICAgIAorICAgICNyZWdpb24zIHsKKyAgICAgICAgd2lkdGg6IDM4NXB4
OworICAgICAgICBoZWlnaHQ6IDgwcHg7CisgICAgICAgIHBhZGRpbmctbGVmdDo1cHg7CisgICAg
ICAgIHBhZGRpbmctcmlnaHQ6MTBweDsKKyAgICAgICAgcGFkZGluZy1ib3R0b206MTBweDsKKyAg
ICB9CisgICAgCisgICAgcC5mbG93MSB7CisgICAgICAgIGNsZWFyOmJvdGg7CisgICAgICAgIG1h
cmdpbi1ib3R0b206IDBweDsKKyAgICB9CisKKyAgICBwLmZsb3cyIHsKKyAgICAgICAgbWFyZ2lu
LXRvcDogMHB4OworICAgIH0KKyAgICAKKzwvc3R5bGU+CisKKzxwPkluIHRoZSBleGFtcGxlIGJl
bG93LCB0aGUgZ3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0b3Agb2YgdGhlIGZpcnN0IHJl
Z2lvbiBhbmQgb24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBpbnRvIHJlZ2lvbiB0d28uCitU
aGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYXQgdGhlIHRvcCBvZiByZWdp
b24gdHdvLjwvcD4KKworPGRpdiBpZD0icmVnaW9uMSI+CisgICAgIDxwPjxpbWcgaWQ9ImZsb2F0
MSI+PC9wPgorPC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24yIj4KKyAgICA8aW1nIGlkPSJmbG9hdDIi
PgorICAgIDxwIGNsYXNzPSJmbG93MSI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLjwvcD4KKzwvZGl2PgorPGRpdiBpZD0icmVnaW9uMyI+Cis8cCBjbGFzcz0i
ZmxvdzIiPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9u
LiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+
Cis8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48
L3A+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1w
dXNoZWQtd2lkdGgtY2hhbmdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWE0ZDdmZDQ2MjU5ZjRm
ZDVkZjcyYWEzMTk2MDUxOTZhZjQwM2RjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCkBAIC0wLDAgKzEs
NzQgQEAKKzwhZG9jdHlwZSBodG1sPgorCisgPHN0eWxlPgorCisgICBAZm9udC1mYWNlIHsKKyAg
ICAgICAgZm9udC1mYW1pbHk6IHdlYmtpdC1haGVtOworICAgICAgICBmb250LXN0eWxlOiBub3Jt
YWw7CisgICAgICAgIHNyYzogdXJsKC4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zik7CisgICAgfQor
CisgICAgI2NvbnRlbnQgeworICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7CisgICAg
ICAgIHBhZGRpbmc6IDVweDsKKyAgICB9CisgIAorICAgICNmbG9hdDEgeworICAgICAgICBmbG9h
dDogbGVmdDsKKyAgICAgICAgd2lkdGg6IDE1MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuCisgICAgfQorICAgIAorICAgICNmbG9hdDIg
eworICAgICAgICBmbG9hdDpyaWdodDsKKyAgICAgICAgd2lkdGg6MjAwcHg7CisgICAgICAgIGhl
aWdodDozMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOm9yYW5nZQorICAgIH0KKworICAg
ICNyZWdpb24xLCAjcmVnaW9uMiwgI3JlZ2lvbjMgeworICAgICAgICBib3JkZXI6IDFweCBzb2xp
ZCBibGFjazsKKyAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3cxOworICAgIH0KKworICAg
ICNyZWdpb24xIHsKKyAgICAgICAgd2lkdGg6IDE4MHB4OworICAgICAgICBoZWlnaHQ6IDkwcHg7
CisgICAgfQorICAgIAorICAgICNyZWdpb24yIHsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAg
ICAgICBoZWlnaHQ6IDkwcHg7CisgICAgfQorICAgIAorICAgICNyZWdpb24zIHsKKyAgICAgICAg
d2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDkwcHg7CisgICAgfQorCisgICAgI2Zsb2F0
Y29udGFpbmVyIHsKKyAgICAgICAgaGVpZ2h0OiA4NHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxw
PkluIHRoZSBleGFtcGxlIGJlbG93LCB0aGUgZ3JlZW4gZmxvYXQgc2hvdWxkIGJlIGF0IHRoZSB0
b3Agb2YgdGhlIGZpcnN0IHJlZ2lvbiBhbmQgb24gdGhlIGxlZnQuIEl0IHNob3VsZCBzcGlsbCBp
bnRvIHJlZ2lvbiB0d28uCitUaGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQg
YXQgdGhlIHRvcCBvZiByZWdpb24gdHdvLjwvcD4KKworPGRpdiBpZD0iY29udGVudCI+CisgICAg
PGRpdiBpZD0iZmlyc3QtYm94Ij4KKyAgICAgICAgPGRpdiBpZD0ic2Vjb25kLWJveCI+CisgICAg
ICAgICAgICA8cCBpZD0iZmxvYXRjb250YWluZXIiPjxpbWcgaWQ9ImZsb2F0MSI+PGltZyBpZD0i
ZmxvYXQyIj4KKyAgICAgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0
IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQg
b2YgdGhlIHJlZ2lvbi48L3A+CisgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBu
b3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdl
dCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CisgICAgICAgICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4
dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CisgICAgICAgICAgICAKKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgICA8ZGl2IGlkPSJyZWdpb24xIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24yIj48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJyZWdpb24zIj48L2Rpdj4KKzwvZGl2PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1w
dXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sCmluZGV4IDFjMDA5YTZl
MTNhNDAzZmNjMTE3NDFmYjMzNjVlYjFmOGM2NjM4ZjcuLmM1M2VmZDMwNGI3MzRiY2QxZWRjZTFi
M2MyNzI0OTE3NTRjNDMxNjkgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9m
bG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbApAQCAt
MTgsNyArMTgsOSBAQAogICAgIH0KICAgICAKICAgICAjZmxvYXQyIHsKLSAgICAgICAgZmxvYXQ6
cmlnaHQ7CisgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CisgICAgICAgIG1hcmdpbi1sZWZ0OiAt
MzBweDsKKyAgICAgICAgZmxvYXQ6bGVmdDsKICAgICAgICAgd2lkdGg6MjAwcHg7CiAgICAgICAg
IGhlaWdodDozMHB4OwogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOm9yYW5nZQpAQCAtNjIsMTQg
KzY0LDE0IEBACiA8L3N0eWxlPgogCiA8cD5JbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhlIGdyZWVu
IGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdCByZWdpb24gYW5kIG9uIHRo
ZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24gdHdvLgotVGhlIG9yYW5nZSBmbG9h
dCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2YgcmVnaW9uIHR3by48L3A+CitU
aGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSByaWdodCBhbGlnbmVkIHVuZGVyIHRoZSBncmVlbiBm
bG9hdCBiZWNhdXNlIHRoZWlyIGNvbnRhaW5pbmcgYmxvY2sgaXMgZmxvd24gb25seSBpbiB0aGUg
Zmlyc3QgcmVnaW9uPC9wPgogCiA8ZGl2IGlkPSJyZWdpb24xIj4KICAgICAgPHA+PGltZyBpZD0i
ZmxvYXQxIj48L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9InJlZ2lvbjIiPgogICAgIDxpbWcgaWQ9ImZs
b2F0MiI+Ci0gICAgPHAgY2xhc3M9ImZsb3cxIj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90
IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgIDxwIGNsYXNzPSJmbG93MSI+VGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgogPC9kaXY+CiA8ZGl2
IGlkPSJyZWdpb24zIj4KIDxwIGNsYXNzPSJmbG93MiI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxk
IG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3Qg
Z2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sCmluZGV4IDFlODcxYjZhYzFl
MWVjZGY5MzcwNzcyN2FkMmJiYThhNWY0M2I3NDkuLjMyNTQwZDMwYjhjMWNhMDVmMmZmMDZiZTA0
OWI3OGY3NDZhZGM5MmMgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbApAQCAtNDksMTMgKzQ5LDEzIEBACiA8L3N0
eWxlPgogCiA8cD5JbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhlIGdyZWVuIGZsb2F0IHNob3VsZCBi
ZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdCByZWdpb24gYW5kIG9uIHRoZSBsZWZ0LiBJdCBzaG91
bGQgc3BpbGwgaW50byByZWdpb24gdHdvLgotVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgb24g
dGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2YgcmVnaW9uIHR3by48L3A+CitUaGUgb3JhbmdlIGZsb2F0
IHNob3VsZCBiZSByaWdodCBhbGlnbmVkIHVuZGVyIHRoZSBncmVlbiBmbG9hdCBiZWNhdXNlIHRo
ZWlyIGNvbnRhaW5pbmcgYmxvY2sgaXMgZmxvd24gb25seSBpbiB0aGUgZmlyc3QgcmVnaW9uPC9w
PgogCiA8ZGl2IGlkPSJjb250ZW50Ij4KICAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgogICAgICAg
ICA8ZGl2IGlkPSJzZWNvbmQtYm94Ij4KLSAgICAgICAgICAgIDxwPjxpbWcgaWQ9ImZsb2F0MSI+
PGltZyBpZD0iZmxvYXQyIj4KLSAgICAgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3Vs
ZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90
IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CisgICAgICAgICAgICA8cD48aW1nIGlkPSJmbG9h
dDEiPjxpbWcgaWQ9ImZsb2F0MiI+PHAvPgorICAgICAgICAgICAgPHA+VGhpcyBsaW5lIG9mIHRl
eHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgogCSAgICA8cD5UaGlzIGxp
bmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgogICAgICAgICAgICAg
PHA+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9w
PgogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Ny
b2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjNjNmRlM2EwYzdmNGVmNzk3MjQ2MjRlM2I5YWUwZjc3M2ZmNjRm
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxl
LXBhcmFncmFwaC11bnNwbGl0dGFibGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKyAgICAgICAgPHN0eWxlPgor
CisgICAgICAgICNjb250ZW50IHsKKyAgICAgICAgICAgIHdpZHRoOiAxODBweDsKKyAgICAgICAg
ICAgIGhlaWdodDogNDAwcHg7CisgICAgICAgICAgICBib3JkZXI6IHRoaWNrIHNvbGlkIGdyZWVu
OworICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKzxib2R5Pgor
CTxwPlRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgYmVsb3cgc2hvdWxkIGxvb2sgbGlrZSBpdCdzIG5v
dCBmcmFnbWVudGVkLiBUaGUgZ3JlZW4gYm9yZGVyIHNob3VsZCBiZSBjb250aW5vdXMuIFRoZSBj
b250ZW50IHNob3VsZCBmaXQgdGhlIHNjcm9sbGFibGUgYXJlYS48L3A+CisgICAgPGRpdiBpZD0i
Y29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBpZD0iY29udGVudCI+TG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gUHJhZXNlbnQgaW50ZXJkdW0s
IHNhcGllbiB2aXRhZSBmYXVjaWJ1cyBzdXNjaXBpdCwgbWFzc2EgdXJuYSBzYWdpdHRpcyBsaWJl
cm8sIGFjIGltcGVyZGlldCBlbGl0IGxhY3VzIGEgbGlndWxhLiBNYXVyaXMgYSBvcmNpIHNlbS4g
TnVsbGFtIHVsbGFtY29ycGVyIG9ybmFyZSBwb3J0dGl0b3IuIE1vcmJpIGxhb3JlZXQgcGVsbGVu
dGVzcXVlIGRpYW0sIHZpdGFlIGhlbmRyZXJpdCBzZW0gZnJpbmdpbGxhIGlkLiBNYWVjZW5hcyBy
dXRydW0gbGFjaW5pYSBsb2JvcnRpcy4gUHJhZXNlbnQgZWxpdCBsZWN0dXMsIHBvcnR0aXRvciBz
ZWQgc2VtcGVyIHZlbCwgZnJpbmdpbGxhIGlkIGRvbG9yLiBTZWQgbGFjdXMgbmlzbCwgcnV0cnVt
IHNpdCBhbWV0IGV1aXNtb2QgYSwgdnVscHV0YXRlIHF1aXMgZWxpdC4gRnVzY2UgY29tbW9kbyBk
dWkgcXVpcyBsYWN1cyB2aXZlcnJhIHZlbCBlZ2VzdGFzIHZlbGl0IHRlbXB1cy4gRG9uZWMgdXQg
c2FwaWVuIHNpdCBhbWV0IHB1cnVzIGx1Y3R1cyBmZXJtZW50dW0uIERvbmVjIGVsZWlmZW5kIHBy
ZXRpdW0gbmVxdWUgcXVpcyBiaWJlbmR1bS4gVmVzdGlidWx1bSBhbnRlIGlwc3VtIHByaW1pcyBp
biBmYXVjaWJ1cyBvcmNpIGx1Y3R1cyBldCB1bHRyaWNlcyBwb3N1ZXJlIGN1YmlsaWEgQ3VyYWU7
IE5hbSBjb25ndWUgZGFwaWJ1cyBtaSwgaWQgdWx0cmljaWVzIGVzdCBzYWdpdHRpcyBldC4gSW50
ZWdlciBwb3N1ZXJlLCBlcm9zIHZpdGFlIGxhb3JlZXQgY29uZ3VlLCB0b3J0b3IgcHVydXMgZXVp
c21vZCBuaWJoLCBldSBwb3J0YSBwdXJ1cyBhcmN1IGlkIHR1cnBpcy4gRG9uZWMgdml0YWUgdWx0
cmljaWVzIG5pYmguIE51bGxhbSBpbiB1cm5hIGRvbG9yLCBhdCBmcmluZ2lsbGEgbG9yZW0uIExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9k
aXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjhkYTM0ZDRjZGM2YzZjNGVhY2JhMmJiNjFjODI4ZGM5NGM1OTRm
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxl
LXBhcmFncmFwaC11bnNwbGl0dGFibGUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAj
Y29udGFpbmVyIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOworICAgICAgICAgICAgLXdl
YmtpdC1mbG93LWludG86IGZsb3c7CisgICAgICAgIH0KKworICAgICAgICAjY29udGVudCB7Cisg
ICAgICAgICAgICB3aWR0aDogMzAlOworICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAg
ICAgICAgIGJvcmRlcjogdGhpY2sgc29saWQgZ3JlZW47CisgICAgICAgICAgICBmb250LXNpemU6
IDE1cHg7CisgICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgICB9CisKKyAgICAg
ICAgLnJlZ2lvbiB7CisgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7CisgICAgICAg
ICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
IDwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgYmVsb3cgc2hv
dWxkIGxvb2sgbGlrZSBpdCdzIG5vdCBmcmFnbWVudGVkLiBUaGUgZ3JlZW4gYm9yZGVyIHNob3Vs
ZCBiZSBjb250aW5vdXMuIFRoZSBjb250ZW50IHNob3VsZCBmaXQgdGhlIHNjcm9sbGFibGUgYXJl
YS48L3A+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJ3
aWR0aDogNDAwcHg7IiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdp
b24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgaWQ9ImNv
bnRlbnQiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5n
IGVsaXQuIFByYWVzZW50IGludGVyZHVtLCBzYXBpZW4gdml0YWUgZmF1Y2lidXMgc3VzY2lwaXQs
IG1hc3NhIHVybmEgc2FnaXR0aXMgbGliZXJvLCBhYyBpbXBlcmRpZXQgZWxpdCBsYWN1cyBhIGxp
Z3VsYS4gTWF1cmlzIGEgb3JjaSBzZW0uIE51bGxhbSB1bGxhbWNvcnBlciBvcm5hcmUgcG9ydHRp
dG9yLiBNb3JiaSBsYW9yZWV0IHBlbGxlbnRlc3F1ZSBkaWFtLCB2aXRhZSBoZW5kcmVyaXQgc2Vt
IGZyaW5naWxsYSBpZC4gTWFlY2VuYXMgcnV0cnVtIGxhY2luaWEgbG9ib3J0aXMuIFByYWVzZW50
IGVsaXQgbGVjdHVzLCBwb3J0dGl0b3Igc2VkIHNlbXBlciB2ZWwsIGZyaW5naWxsYSBpZCBkb2xv
ci4gU2VkIGxhY3VzIG5pc2wsIHJ1dHJ1bSBzaXQgYW1ldCBldWlzbW9kIGEsIHZ1bHB1dGF0ZSBx
dWlzIGVsaXQuIEZ1c2NlIGNvbW1vZG8gZHVpIHF1aXMgbGFjdXMgdml2ZXJyYSB2ZWwgZWdlc3Rh
cyB2ZWxpdCB0ZW1wdXMuIERvbmVjIHV0IHNhcGllbiBzaXQgYW1ldCBwdXJ1cyBsdWN0dXMgZmVy
bWVudHVtLiBEb25lYyBlbGVpZmVuZCBwcmV0aXVtIG5lcXVlIHF1aXMgYmliZW5kdW0uIFZlc3Rp
YnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMgZXQgdWx0cmlj
ZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBOYW0gY29uZ3VlIGRhcGlidXMgbWksIGlkIHVsdHJp
Y2llcyBlc3Qgc2FnaXR0aXMgZXQuIEludGVnZXIgcG9zdWVyZSwgZXJvcyB2aXRhZSBsYW9yZWV0
IGNvbmd1ZSwgdG9ydG9yIHB1cnVzIGV1aXNtb2QgbmliaCwgZXUgcG9ydGEgcHVydXMgYXJjdSBp
ZCB0dXJwaXMuIERvbmVjIHZpdGFlIHVsdHJpY2llcyBuaWJoLiBOdWxsYW0gaW4gdXJuYSBkb2xv
ciwgYXQgZnJpbmdpbGxhIGxvcmVtLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2Vj
dGV0dXIgYWRpcGlzY2luZyBlbGl0LjwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYzAyZGVj
N2UyMDdjN2Y3NjdiNWY1MWMzN2EzNDI2YzIzMjM5Yjc0Li5kM2FkZDg5YjNjYWI0ZTcyM2Y3NmU1
MWQxMDhmZDMxMGFkMDlkZTA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNTQwLDYgKzU0MCw5IEBAIHdlYmtpdC5vcmcvYi84MjM0MCBmYXN0L3JlZ2lv
bnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9uLXN0eWxpbmctbXVsCiB3ZWJr
aXQub3JnL2IvODIzNDAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRl
LXJlZ2lvbi1zdHlsaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84
MjM0MCBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogCisjIEZJWE1FOiBUaGUgd2lkb3dzIGFuZCBvcnBoYW5zIGltcGxlbWVudGF0aW9u
IGludGVyZmVyZXMgd2l0aCB0aGUgcmVnaW9uIHJhbmdlIGNoYW5nZSByZWxheW91dC4gCitmYXN0
L3JlZ2lvbnMvcmVnaW9ucy13aWRvd3MtYW5kLW9ycGhhbnMuaHRtbAorCiAjIFRoaXMgcG9ydCBk
b2VzIG5vdCBlbmFibGUgSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcKIGZhc3QvZG9t
L3RpbWVyLXRocm90dGxpbmctaGlkZGVuLXBhZ2UuaHRtbCBbIFdvbnRGaXggXQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg5YjkwOWIwYTA4MDEyZGVj
ZDEyZGFjYTY1ZDZmNmIwMjQ3YWE4NjEuLjkwMzM3M2IyZmVlYTk0MmRkYTY4OTcwNmI0YTkzMjIw
MzJhODUxOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xMzIzLDYgKzEzMjMsOSBAQCB3ZWJraXQub3JnL2IvMTEwMDkwIGZhc3QvZXZlbnRzL2NsaWVu
dFhZLWluLXpvb20tYW5kLXNjcm9sbC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8x
MDYxMjUgZmFzdC9yZWdpb25zL3NlYW1sZXNzLWlmcmFtZS1mbG93ZWQtaW50by1yZWdpb25zLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBGSVhNRTogVGhlIHdpZG93cyBhbmQgb3JwaGFu
cyBpbXBsZW1lbnRhdGlvbiBpbnRlcmZlcmVzIHdpdGggdGhlIHJlZ2lvbiByYW5nZSBjaGFuZ2Ug
cmVsYXlvdXQuIAorZmFzdC9yZWdpb25zL3JlZ2lvbnMtd2lkb3dzLWFuZC1vcnBoYW5zLmh0bWwK
Kwogd2Via2l0Lm9yZy9iLzExMDMyMCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRvbS1ldmVudC1k
aXNwYXRjaGluZy1kaXN0cmlidXRlZC10ZXh0LW5vZGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzExMDMyMCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRvbS1ldmVudC1kaXNwYXRjaGlu
Zy10ZXh0LW5vZGUtaW4tc2hhZG93LXJvb3QuaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM3NDUwZjc4MDc3M2Q0ZGE0OTIw
Y2QwODQ3YThlMzBlMzVlZThlNDMuLmI4ZjE3NTYxMmVjZjIzMzQ0MzlmY2U3YjcxYmM2NWFhMTM1
OGY4MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
ODMsNiArMzgzLDkgQEAgd2Via2l0Lm9yZy9iLzYxNDg3IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8t
Y3Jvc3Mtc2l0ZS5odG1sIFsgRmFpbHVyZSBdCiAjIFN0eWxlZCBzY29wZSBlbGVtZW50IGlzIG5v
dCB5ZXQgZW5hYmxlZC4KIHdlYmtpdC5vcmcvYi80OTE0MiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQK
IAorIyBGSVhNRTogVGhlIHdpZG93cyBhbmQgb3JwaGFucyBpbXBsZW1lbnRhdGlvbiBpbnRlcmZl
cmVzIHdpdGggdGhlIHJlZ2lvbiByYW5nZSBjaGFuZ2UgcmVsYXlvdXQuIAorZmFzdC9yZWdpb25z
L3JlZ2lvbnMtd2lkb3dzLWFuZC1vcnBoYW5zLmh0bWwKKwogIyBDU1MgUmVnaW9ucyB0ZXN0cyBm
b3IgcmVnaW9uIHN0eWxpbmcgYW5kIHNjb3BlZCBzdHlsZXMKIGZhc3QvcmVnaW9ucy9zdHlsZS1z
Y29wZWQtaW4tZmxvdy1vdmVycmlkZS1jb250YWluZXItc3R5bGUuaHRtbAogZmFzdC9yZWdpb25z
L3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLW11bHRpcGxlLXJl
Z2lvbnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZTA3NDc0YWEzMmI1ZDA2ZGFlMDkzODQyMTA3NjdlOGE0ODk5OTk2ZC4uNjAyYmYzYjY5OGRhNjNm
YjE0N2ZiZGU1MzlkMWNlZDVhMGYzODQwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xNzQsNiArMTc0LDkgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3Bl
ZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLW11bHRpcGxlLXJlZ2lvbnMuaHRtbAog
ZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5n
Lmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAKKyMgRklYTUU6
IFRoZSB3aWRvd3MgYW5kIG9ycGhhbnMgaW1wbGVtZW50YXRpb24gaW50ZXJmZXJlcyB3aXRoIHRo
ZSByZWdpb24gcmFuZ2UgY2hhbmdlIHJlbGF5b3V0LiAKK2Zhc3QvcmVnaW9ucy9yZWdpb25zLXdp
ZG93cy1hbmQtb3JwaGFucy5odG1sCisKICMgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JF
Q1RTIG9wdGlvbiB0byBsYXllclRyZWVBc1RleHQgaXMgb25seSBhcHBsaWNhYmxlIHRvIE1hYy4K
IGNvbXBvc2l0aW5nL3Zpc2libGUtcmVjdCBbIFNraXAgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQ4OWMyYjY5ZWQ0MmZjZjZjOWY5NjkyNDhmM2Y0
ZDc4OGJmNDAyMDkuLmUzYTQzZmUxODQzYjZiMTJhNmM2ZGI1ZjY0ZWI1OWNiMzg3Zjc1Y2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTUxLDYgKzE1
NTEsOSBAQCBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9u
LXN0eWxpbmctbXVsdGlwbGUtcmVnaW9ucy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVk
LWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9uLXN0eWxpbmcuaHRtbAogZmFzdC9yZWdpb25zL3N0eWxl
LXNjb3BlZC1pbi1mbG93Lmh0bWwKIAorIyBGSVhNRTogVGhlIHdpZG93cyBhbmQgb3JwaGFucyBp
bXBsZW1lbnRhdGlvbiBpbnRlcmZlcmVzIHdpdGggdGhlIHJlZ2lvbiByYW5nZSBjaGFuZ2UgcmVs
YXlvdXQuIAorZmFzdC9yZWdpb25zL3JlZ2lvbnMtd2lkb3dzLWFuZC1vcnBoYW5zLmh0bWwKKwog
IyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBlZGl0aW5nL3NoYWRvdwogZmFzdC9k
b20vc2hhZG93Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206324</attachid>
            <date>2013-07-09 08:24:57 -0700</date>
            <delta_ts>2013-08-12 08:16:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116296-20130709182243.patch</filename>
            <type>text/plain</type>
            <size>69353</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIyMmM4NDgzNzQ4MzM5
ZmNkYjNjODEwNWRmZGE3MWZjMzViMThlOC4uOTA2NWMzNmI4ZmZhMDkzNmQwNzc0YzM2MGZlZTlj
ZWVkZDQ1YjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTA3LTA5ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggZXh0ZW5kcyB0aGUgcmVnaW9u
IHJhbmdlcyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6CisgICAg
ICAgIC0gdGhlIHJhbmdlIG9mIGEgYm94IGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgcmFuZ2Ug
b2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sgKGV2ZW4gZm9yIGZsb2F0cyk7IHRoaXMgd2lsbCBzaW1w
bGlmeSBob3cgb3ZlcmZsb3cKKyAgICAgICAgaXMgcHJvcGFnYXRlZCB0byB0aGUgcmVnaW9ucyBh
bmQgaXQgc2hvdWxkIGxhdGVyIGNoYW5nZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcy4KKyAgICAg
ICAgLSBpZiB0aGUgcmFuZ2Ugb2YgYSBib3ggaXMgbm90IGNvcnJlY3RseSBlc3RpbWF0ZWQgYmVm
b3JlIHRoZSBsYXlvdXQgaXQgd2lsbCBiZSBtYXJrZWQgZm9yIHJlbGF5b3V0OyB0aGlzIGlzIG5l
Y2Vzc2FyeSB0byBjb3JyZWN0bHkKKyAgICAgICAgcG9zaXRpb24gYm94ZXMgdGhhdCBvdmVyZmxv
dyBuYXR1cmFsbHksIGxpa2UgZmxvYXRzLgorICAgICAgICAtIGFsbCB0aGUgYm94ZXMgaGF2ZSBh
IHJhbmdlIG5vdywgbm90IG9ubHkgdGhlIGJsb2Nrcy4KKyAgICAgICAgLSByZWdpb25BdEJsb2Nr
T2Zmc2V0IGNhbiBjbGFtcCB0byBhIGJveC4KKyAgICAgICAgLSBhbiB1bnNwbGl0dGFibGUgYm94
IGhhcyBhIHJlZ2lvbiByYW5nZSBvZiBhIHNpbmdsZSByZWdpb24sIHRoZSBvbmUgd2hlcmUgdGhl
IGJveCB0b3AgZmFsbHMgaW50by4KKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGls
ZCBib3ggc3RhcnRzIGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1h
eGltYWwgaGVpZ2h0IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRo
ZSBlc3RpbWF0aW9uIHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBs
ZSwgaWYgYSBibG9jayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRo
ZSBmbG9hdAorICAgICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQg
aXMgbmVlZGVkIGZvciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUg
dG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJl
IG9wdGltaXplZCBieSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4g
dGhhdCBkb24ndCBoYXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAg
IGNvbnRhaW5pbmcgYmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMv
Ym90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRh
YmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6Omhhc05leHRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphcHBseUJlZm9yZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjph
cHBseUFmdGVyQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldFBhZ2VC
cmVhayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlTWluaW11bVBhZ2VI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lv
blJhbmdlRm9yQm94Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxXaWR0aEZvckNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxUb3BGb3JDaGlsZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGFt
cFRvU3RhcnRBbmRFbmRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Ym9y
ZGVyQm94UmVjdEluUmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjp2YWxpZGF0ZVJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6cmVnaW9uQXRCbG9ja09mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbFRvcEZvck9mZnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbFdpZHRoRm9yT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsSGVpZ2h0
Rm9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VSZW1h
aW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6Om1hcEZyb21GbG93VG9SZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Rmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJCb3hS
ZWdpb25JbmZvQW5kQ3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1Ro
cmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6YXBwbHlCcmVha0FmdGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnNldFBhZ2VCcmVhayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnVwZGF0ZU1pbmltdW1QYWdl
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
Lmg6CisKIDIwMTMtMDctMDkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBVc2UgdG9TVkdGb250RWxlbWVudCgpIGluc3RlYWQgb2Ygc3RhdGljX2Nh
c3Q8U1ZHRm9udEVsZW1lbnQqPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggNzBkZWFmNDE4YmNhZTQ4MDRiODYwMTU4YTdlZmM2YmRlMjIzNGI2MC4uMzQwN2Fi
NWY1MGY2ODE2Y2I3ZTNkN2U3ZDM5ZDlhNTcyZDVhYTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDgyLDEzICsxNDgyLDEwIEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzaGFwZUluZm9SZXF1aXJlc1JlbGF5b3V0KGNvbnN0IFJlbmRlckJsb2NrKiBibG9j
aykKICNlbmRpZgogfQogCi1ib29sIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25zQW5kU2hhcGVz
QmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKK2Jvb2wgUmVu
ZGVyQmxvY2s6OnVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkKIHsKICNpZiBFTkFCTEUo
Q1NTX1NIQVBFUykKLSAgICBpZiAoIWZsb3dUaHJlYWQgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQot
I2Vsc2UKLSAgICBpZiAoIWZsb3dUaHJlYWQpCi0jZW5kaWYKKyAgICBpZiAoIWZsb3dUaHJlYWRD
b250YWluaW5nQmxvY2soKSAmJiAhc2hhcGVJbnNpZGVJbmZvKCkpCiAgICAgICAgIHJldHVybiBz
aGFwZUluZm9SZXF1aXJlc1JlbGF5b3V0KHRoaXMpOwogCiAgICAgTGF5b3V0VW5pdCBvbGRIZWln
aHQgPSBsb2dpY2FsSGVpZ2h0KCk7CkBAIC0xNDk5LDE4ICsxNDk2LDEzIEBAIGJvb2wgUmVuZGVy
QmxvY2s6OnVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGlsZExheW91dChSZW5kZXJGbG93
VGhyZWFkKiBmbG93CiAgICAgc2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0OjptYXgoKSAvIDIp
OwogICAgIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKIAotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQog
ICAgIGNvbXB1dGVTaGFwZVNpemUoKTsKLSNlbmRpZgotCi0gICAgLy8gU2V0IG91ciBzdGFydCBh
bmQgZW5kIHJlZ2lvbnMuIE5vIHJlZ2lvbnMgYWJvdmUgb3IgYmVsb3cgdXMgd2lsbCBiZSBjb25z
aWRlcmVkIGJ5IG91ciBjaGlsZHJlbi4gVGhleSBhcmUKLSAgICAvLyBlZmZlY3RpdmVseSBjbGFt
cGVkIHRvIG91ciByZWdpb24gcmFuZ2UuCi0gICAgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2so
Zmxvd1RocmVhZCk7CiAKICAgICBzZXRMb2dpY2FsSGVpZ2h0KG9sZEhlaWdodCk7CiAgICAgc2V0
TG9naWNhbFRvcChvbGRUb3ApOwogICAgIAogICAgIHJldHVybiBzaGFwZUluZm9SZXF1aXJlc1Jl
bGF5b3V0KHRoaXMpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKQEAgLTE1
MjQsMjMgKzE1MTYsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVNoYXBlU2l6ZSgpCiB9
CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uc0FuZFNoYXBlc0FmdGVy
Q2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCwgYm9vbCBoZWlnaHRDaGFu
Z2VkKQordm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQWZ0ZXJCbG9ja0xheW91dChib29s
IGhlaWdodENoYW5nZWQpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgLy8gQSBwcmV2
aW91cyBzaWJsaW5nIGhhcyBjaGFuZ2VkIGRpbWVuc2lvbiwgc28gd2UgbmVlZCB0byByZWxheW91
dCB0aGUgc2hhcGUgd2l0aCB0aGUgY29udGVudAogICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJ
bnNpZGVJbmZvID0gbGF5b3V0U2hhcGVJbnNpZGVJbmZvKCk7CiAgICAgaWYgKGhlaWdodENoYW5n
ZWQgJiYgc2hhcGVJbnNpZGVJbmZvKQogICAgICAgICBzaGFwZUluc2lkZUluZm8tPmRpcnR5U2hh
cGVTaXplKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShoZWlnaHRDaGFuZ2VkKTsKICNlbmRp
ZgotICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKGZsb3dUaHJlYWQpOwotfQotCi12b2lk
IFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkKQotewotICAgIGlmIChmbG93VGhyZWFkKQotICAgICAgICBmbG93VGhyZWFk
LT5zZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVMb2dpY2FsV2lkdGhBbmRDb2x1
bW5XaWR0aCgpCkBAIC0xNjIyLDcgKzE2MDUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAog
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkp
CiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25z
QW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCkpCisgICAgaWYgKHVwZGF0ZVNo
YXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVl
OwogCiAgICAgLy8gV2UgdXNlIGZvdXIgdmFsdWVzLCBtYXhUb3BQb3MsIG1heFRvcE5lZywgbWF4
Qm90dG9tUG9zLCBhbmQgbWF4Qm90dG9tTmVnLCB0byB0cmFjawpAQCAtMTY5Miw3ICsxNjc1LDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKIAogICAgIGxheW91dFBvc2l0aW9uZWRPYmplY3Rz
KHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVnaW9uc0FuZFNo
YXBlc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCwgaGVpZ2h0Q2hhbmdlZCk7CisgICAgdXBk
YXRlU2hhcGVzQWZ0ZXJCbG9ja0xheW91dChoZWlnaHRDaGFuZ2VkKTsKIAogICAgIC8vIEFkZCBv
dmVyZmxvdyBmcm9tIGNoaWxkcmVuICh1bmxlc3Mgd2UncmUgbXVsdGktY29sdW1uLCBzaW5jZSBp
biB0aGF0IGNhc2UgYWxsIG91ciBjaGlsZCBvdmVyZmxvdyBpcyBjbGlwcGVkIGFueXdheSkuCiAg
ICAgY29tcHV0ZU92ZXJmbG93KG9sZENsaWVudEFmdGVyRWRnZSk7CkBAIC0yNjI5LDYgKzI2MTIs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hpbGQs
IE1hcmdpbkluZm8mIG1hcmdpbkluZm8sIExheQogI2VuZGlmCiAgICAgLy8gR28gYWhlYWQgYW5k
IHBvc2l0aW9uIHRoZSBjaGlsZCBhcyB0aG91Z2ggaXQgZGlkbid0IGNvbGxhcHNlIHdpdGggdGhl
IHRvcC4KICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoY2hpbGQsIGxvZ2ljYWxUb3BFc3RpbWF0
ZSwgQXBwbHlMYXlvdXREZWx0YSk7CisgICAgZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxk
KGNoaWxkKTsKIAogICAgIFJlbmRlckJsb2NrKiBjaGlsZFJlbmRlckJsb2NrID0gY2hpbGQtPmlz
UmVuZGVyQmxvY2soKSA/IHRvUmVuZGVyQmxvY2soY2hpbGQpIDogMDsKICAgICBib29sIG1hcmtE
ZXNjZW5kYW50c1dpdGhGbG9hdHMgPSBmYWxzZTsKQEAgLTI3MDUsNiArMjY4OSwxMSBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCogY2hpbGQsIE1hcmdpbklu
Zm8mIG1hcmdpbkluZm8sIExheQogICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsKICAg
ICB9CiAKKyAgICBpZiAodXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZCkpIHsKKyAg
ICAgICAgY2hpbGQtPnNldE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7CisgICAgICAg
IGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgIH0KKwogICAgIC8vIFdlIGFyZSBubyBsb25n
ZXIgYXQgdGhlIHRvcCBvZiB0aGUgYmxvY2sgaWYgd2UgZW5jb3VudGVyIGEgbm9uLWVtcHR5IGNo
aWxkLiAgCiAgICAgLy8gVGhpcyBoYXMgdG8gYmUgZG9uZSBhZnRlciBjaGVja2luZyBmb3IgY2xl
YXIsIHNvIHRoYXQgbWFyZ2lucyBjYW4gYmUgcmVzZXQgaWYgYSBjbGVhciBvY2N1cnJlZC4KICAg
ICBpZiAobWFyZ2luSW5mby5hdEJlZm9yZVNpZGVPZkJsb2NrKCkgJiYgIWNoaWxkLT5pc1NlbGZD
b2xsYXBzaW5nQmxvY2soKSkKQEAgLTI4NjcsNiArMjg1Niw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgYm9vbCBmaXhl
ZFBvc2l0CiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IHBv
c2l0aW9uZWREZXNjZW5kYW50cy0+ZW5kKCk7CiAgICAgZm9yIChUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudHMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICByID0gKml0OworICAgICAgICAKKyAgICAgICAgZXN0
aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpOwogCiAgICAgICAgIC8vIEEgZml4ZWQgcG9z
aXRpb24gZWxlbWVudCB3aXRoIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgYW5jZXN0b3IgaGFzIG5v
IHdheSBvZiBrbm93aW5nIGlmIHRoZSBsYXR0ZXIgaGFzIGNoYW5nZWQgcG9zaXRpb24uIFNvCiAg
ICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50LCBtYXJrIGl0IGZv
ciBsYXlvdXQgaWYgaXQgaGFzIGFuIGFic3BvcyBhbmNlc3RvciBhbmQgbmVlZHMgdG8gbW92ZSB3
aXRoIHRoYXQgYW5jZXN0b3IsIGkuZS4gCkBAIC0yOTA3LDcgKzI4OTgsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGJv
b2wgZml4ZWRQb3NpdAogICAgICAgICAgICAgICAgIHItPnVwZGF0ZUxvZ2ljYWxXaWR0aCgpOwog
ICAgICAgICAgICAgb2xkTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JDaGlsZChyKTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICByLT5sYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAg
IC8vIExheSBvdXQgYWdhaW4gaWYgb3VyIGVzdGltYXRlIHdhcyB3cm9uZy4KQEAgLTI5MTUsNiAr
MjkwNiwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAgICAgICAgICAgci0+c2V0Q2hp
bGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgci0+bGF5b3V0
SWZOZWVkZWQoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICh1cGRhdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKHIpKSB7CisgICAgICAgICAgICByLT5zZXROZWVkc0xheW91dCh0cnVlLCBNYXJr
T25seVRoaXMpOworICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgfQog
ICAgIH0KICAgICAKICAgICBpZiAoaGFzQ29sdW1ucygpKQpAQCAtNDIxNSw2ICs0MjExLDcgQEAg
Ym9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgUmVuZGVyQm94KiBjaGlsZEJveCA9IGZsb2F0aW5nT2JqZWN0LT5yZW5k
ZXJlcigpOworCiAgICAgICAgIExheW91dFVuaXQgY2hpbGRMb2dpY2FsTGVmdE1hcmdpbiA9IHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hp
bGRCb3gpIDogbWFyZ2luRW5kRm9yQ2hpbGQoY2hpbGRCb3gpOwogCiAgICAgICAgIExheW91dFJl
Y3Qgb2xkUmVjdCA9IGNoaWxkQm94LT5mcmFtZVJlY3QoKTsKQEAgLTQyMzEsNiArNDIyOCw4IEBA
IGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgc2V0TG9naWNh
bExlZnRGb3JDaGlsZChjaGlsZEJveCwgZmxvYXRMb2dpY2FsTG9jYXRpb24ueCgpICsgY2hpbGRM
b2dpY2FsTGVmdE1hcmdpbik7CiAgICAgICAgIHNldExvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZEJv
eCwgZmxvYXRMb2dpY2FsTG9jYXRpb24ueSgpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGRC
b3gpKTsKIAorICAgICAgICBlc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY2hpbGRCb3gp
OworCiAgICAgICAgIExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5b3V0U3Rh
dGUoKTsKICAgICAgICAgYm9vbCBpc1BhZ2luYXRlZCA9IGxheW91dFN0YXRlLT5pc1BhZ2luYXRl
ZCgpOwogICAgICAgICBpZiAoaXNQYWdpbmF0ZWQgJiYgIWNoaWxkQm94LT5uZWVkc0xheW91dCgp
KQpAQCAtNDI2NSw2ICs0MjY0LDExIEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3Rmxv
YXRzKCkKICAgICAgICAgICAgICAgICAgICAgY2hpbGRCbG9jay0+c2V0Q2hpbGROZWVkc0xheW91
dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgICAgIGNoaWxkQm94LT5sYXlvdXRJ
Zk5lZWRlZCgpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodXBkYXRlUmVnaW9u
UmFuZ2VGb3JCb3hDaGlsZChjaGlsZEJveCkpIHsKKyAgICAgICAgICAgICAgICBjaGlsZEJveC0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKKyAgICAgICAgICAgICAgICBjaGls
ZEJveC0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIHNldExvZ2ljYWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCwgZmxvYXRMb2dpY2FsTG9j
YXRpb24ueSgpKTsKQEAgLTczODQsNyArNzM4OCw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc05l
eHRQYWdlKExheW91dFVuaXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91
CiAKICAgICAvLyBTZWUgaWYgd2UncmUgaW4gdGhlIGxhc3QgcmVnaW9uLgogICAgIExheW91dFVu
aXQgcGFnZU9mZnNldCA9IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2lj
YWxPZmZzZXQ7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25B
dEJsb2NrT2Zmc2V0KHBhZ2VPZmZzZXQsIHRoaXMpOworICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBwYWdlT2Zmc2V0LCB0aGlz
KTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChyZWdp
b24tPmlzTGFzdFJlZ2lvbigpKQpAQCAtNzQzOSw3ICs3NDQzLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6YXBwbHlCZWZvcmVCcmVhayhSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxv
Z2ljYWxPZmYKICAgICAgICAgICAgIHZpZXcoKS0+bGF5b3V0U3RhdGUoKS0+YWRkRm9yY2VkQ29s
dW1uQnJlYWsoY2hpbGQsIGxvZ2ljYWxPZmZzZXQpOwogICAgICAgICBpZiAoY2hlY2tSZWdpb25C
cmVha3MpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0g
MDsKLSAgICAgICAgICAgIGlmIChmbG93VGhyZWFkLT5hZGRGb3JjZWRSZWdpb25CcmVhayhvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0LCBjaGlsZCwgdHJ1
ZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkpCisgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+
YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpICsgbG9naWNhbE9mZnNldCwgY2hpbGQsIHRydWUsICZvZmZzZXRCcmVha0FkanVzdG1lbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zmc2V0ICsgb2Zmc2V0QnJlYWtBZGp1
c3RtZW50OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXh0UGFnZUxvZ2ljYWxUb3AobG9n
aWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSk7CkBAIC03NDY2LDcgKzc0NzAsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJsb2NrOjphcHBseUFmdGVyQnJlYWsoUmVuZGVyQm94KiBjaGlsZCwg
TGF5b3V0VW5pdCBsb2dpY2FsT2ZmcwogICAgICAgICAgICAgdmlldygpLT5sYXlvdXRTdGF0ZSgp
LT5hZGRGb3JjZWRDb2x1bW5CcmVhayhjaGlsZCwgbG9naWNhbE9mZnNldCk7CiAgICAgICAgIGlm
IChjaGVja1JlZ2lvbkJyZWFrcykgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRCcmVh
a0FkanVzdG1lbnQgPSAwOwotICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQtPmFkZEZvcmNlZFJl
Z2lvbkJyZWFrKG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxPZmZz
ZXQgKyBtYXJnaW5PZmZzZXQsIGNoaWxkLCBmYWxzZSwgJm9mZnNldEJyZWFrQWRqdXN0bWVudCkp
CisgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+YWRkRm9yY2VkUmVnaW9uQnJlYWsodGhpcywg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9mZnNldCArIG1hcmdp
bk9mZnNldCwgY2hpbGQsIGZhbHNlLCAmb2Zmc2V0QnJlYWtBZGp1c3RtZW50KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldCArIG1hcmdpbk9mZnNldCArIG9mZnNldEJyZWFr
QWRqdXN0bWVudDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV4dFBhZ2VMb2dpY2FsVG9w
KGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpOwpAQCAtNzU2NSwxMyArNzU2OSwx
MyBAQCBib29sIFJlbmRlckJsb2NrOjpwdXNoVG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhl
aWdodChMYXlvdXRVbml0JiBhZGp1c3RtZW50LAogdm9pZCBSZW5kZXJCbG9jazo6c2V0UGFnZUJy
ZWFrKExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpCiB7CiAgICAg
aWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCkpCi0gICAgICAgIGZsb3dUaHJlYWQtPnNldFBhZ2VCcmVhayhvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIHNwYWNlU2hvcnRhZ2UpOworICAgICAgICBmbG93
VGhyZWFkLT5zZXRQYWdlQnJlYWsodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSgpICsgb2Zmc2V0LCBzcGFjZVNob3J0YWdlKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6dXBk
YXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVp
Z2h0KQogewogICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVh
ZENvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBmbG93VGhyZWFkLT51cGRhdGVNaW5pbXVtUGFn
ZUhlaWdodChvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZzZXQsIG1pbkhl
aWdodCk7CisgICAgICAgIGZsb3dUaHJlYWQtPnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KHRoaXMs
IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIG9mZnNldCwgbWluSGVpZ2h0KTsK
ICAgICBlbHNlIGlmIChDb2x1bW5JbmZvKiBjb2xJbmZvID0gdmlldygpLT5sYXlvdXRTdGF0ZSgp
LT5tX2NvbHVtbkluZm8pCiAgICAgICAgIGNvbEluZm8tPnVwZGF0ZU1pbmltdW1Db2x1bW5IZWln
aHQobWluSGVpZ2h0KTsKIH0KQEAgLTc3NzcsNyArNzc4MSw3IEBAIFJlbmRlclJlZ2lvbiogUmVu
ZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBibG9ja09mZnNldCkgY29u
c3QKICAgICBpZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1ZhbGlkUmVnaW9uSW5m
bygpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmbG93VGhyZWFkLT5yZWdpb25B
dEJsb2NrT2Zmc2V0KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGJsb2NrT2Zm
c2V0LCB0cnVlKTsKKyAgICByZXR1cm4gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0
aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBibG9ja09mZnNldCwgdHJ1
ZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVN0YXRpY0lubGluZVBvc2l0aW9uRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKQpAQCAtNzgwNSwy
OCArNzgwOSw2OSBAQCBib29sIFJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIGNvbgogICAgIHJldHVybiBmbG93VGhy
ZWFkLT5sb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2sodGhpcyk7CiB9CiAKLVJl
bmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVy
UmVnaW9uKiByZWdpb24pIGNvbnN0Cit2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFu
Z2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gqIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAg
IGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzUmVnaW9ucygpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBBU1NFUlQoaXNSZW5kZXJWaWV3KCkgfHwgKHJlZ2lvbiAmJiBmbG93VGhy
ZWFkKSk7Ci0gICAgaWYgKGlzUmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gcmVnaW9uOwot
Ci0gICAgLy8gV2UgbmVlZCB0byBjbGFtcCB0byB0aGUgYmxvY2ssIHNpbmNlIHdlIHdhbnQgYW55
IGxpbmVzIG9yIGJsb2NrcyB0aGF0IG92ZXJmbG93IG91dCBvZiB0aGUKLSAgICAvLyBsb2dpY2Fs
IHRvcCBvciBsb2dpY2FsIGJvdHRvbSBvZiB0aGUgYmxvY2sgdG8gc2l6ZSBhcyB0aG91Z2ggdGhl
IGJvcmRlciBib3ggaW4gdGhlIGZpcnN0IGFuZAotICAgIC8vIGxhc3QgcmVnaW9ucyBleHRlbmRl
ZCBpbmZpbml0ZWx5LiBPdGhlcndpc2UgdGhlIGxpbmVzIGFyZSBnb2luZyB0byBzaXplIGFjY29y
ZGluZyB0byB0aGUgcmVnaW9ucwotICAgIC8vIHRoZXkgb3ZlcmZsb3cgaW50bywgd2hpY2ggbWFr
ZXMgbm8gc2Vuc2Ugd2hlbiB0aGlzIGJsb2NrIGRvZXNuJ3QgZXhpc3QgaW4gfHJlZ2lvbnwgYXQg
YWxsLgogICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247CiAgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb247Ci0gICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3Rh
cnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0gICAgCi0gICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lv
bi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsK
LSAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQotICAg
ICAgICByZXR1cm4gZW5kUmVnaW9uOwotICAgIAotICAgIHJldHVybiByZWdpb247CisgICAgTGF5
b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICBpZiAoYm94LT5pc1Vuc3BsaXR0YWJsZUZv
clBhZ2luYXRpb24oKSkKKyAgICAgICAgc3RhcnRSZWdpb24gPSBlbmRSZWdpb24gPSBmbG93VGhy
ZWFkLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFJlZ2lvbiwgdHJ1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHN0YXJ0UmVnaW9uID0gZmxvd1Ro
cmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RSZWdpb24sIHRydWUpOworICAgICAgICBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25B
dEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGxv
Z2ljYWxIZWlnaHRGb3JDaGlsZChib3gpLCB0cnVlKTsKKyAgICB9CisKKyAgICBmbG93VGhyZWFk
LT5zZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworfQor
Cit2b2lkIFJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBib3gpIGNvbnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVh
ZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJlYWQgfHwg
IWZsb3dUaHJlYWQtPmhhc1JlZ2lvbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGJv
eC0+aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgY29tcHV0ZVJlZ2lv
blJhbmdlRm9yQm94Q2hpbGQoYm94KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBlc3RpbWF0ZWRWYWx1ZXM7CisgICAgYm94LT5jb21w
dXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0OjptYXgoKSAvIDIsIGxvZ2ljYWxUb3BGb3JDaGls
ZChib3gpLCBlc3RpbWF0ZWRWYWx1ZXMpOworCisgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9u
QXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24sIHRy
dWUpOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRC
bG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gKyBlc3Rp
bWF0ZWRWYWx1ZXMubV9leHRlbnQsIHRydWUpOworCisgICAgZmxvd1RocmVhZC0+c2V0UmVnaW9u
UmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKK30KKworYm9vbCBSZW5k
ZXJCbG9jazo6dXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gqIGJv
eCkgY29uc3QKK3sKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVh
ZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+
aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJSZWdpb24q
IHN0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CisgICAg
Zmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVn
aW9uKTsKKworICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGJveCk7CisKKyAgICBS
ZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIG5ld0Vu
ZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBu
ZXdTdGFydFJlZ2lvbiwgbmV3RW5kUmVnaW9uKTsKKworICAgIC8vIFRoZSByZWdpb24gcmFuZ2Ug
b2YgdGhlIGJveCBoYXMgY2hhbmdlZC4gU29tZSBib3hlcyAoZS5nIGZsb2F0cykgbWF5IGhhdmUg
YmVlbiBwb3NpdGlvbmVkIGFzc3VtaW5nCisgICAgLy8gYSBkaWZmZXJlbnQgcmFuZ2UuCisgICAg
Ly8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJvdXQgdGhpcy4gV2UgZG9uJ3QgbmVlZCB0byByZWxheW91
dCBhbGwgdGhlIHRpbWUuCisgICAgaWYgKG5ld1N0YXJ0UmVnaW9uICE9IHN0YXJ0UmVnaW9uIHx8
IG5ld0VuZFJlZ2lvbiAhPSBlbmRSZWdpb24pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb2xsYXBzZWRNYXJn
aW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAxMjU4ODcxNzVjOTkyYzdkY2UzZGUwMmM5
MjRhNWVjY2FkNWE1NWNiLi40ZTYxMTQ1NTZiY2U5MGNmMjExZDQxMWViNzJkN2E5NDg4OGMxMjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzQ1LDkgKzM0NSw5
IEBAIHB1YmxpYzoKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbG9naWNhbCB3aWR0aC9oZWlnaHQg
YW5kIG1hcmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBibG9jay1mbG93IGRpcmVjdGlv
bi4KICAgICBlbnVtIEFwcGx5TGF5b3V0RGVsdGFNb2RlIHsgQXBwbHlMYXlvdXREZWx0YSwgRG9O
b3RBcHBseUxheW91dERlbHRhIH07Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gY2hpbGQtPndpZHRoKCkgOiBjaGlsZC0+aGVpZ2h0KCk7IH0KLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmhlaWdodCgpIDogY2hpbGQtPndpZHRo
KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gq
IGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6
IGNoaWxkLT54KCk7IH0KKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNvbnN0
IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+d2lkdGgoKSA6IGNoaWxkLT5oZWlnaHQoKTsgfQorICAgIExheW91dFVuaXQg
bG9naWNhbEhlaWdodEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0IHsgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+
d2lkdGgoKTsgfQorICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBj
aGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQogICAgIHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERl
bHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9w
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxh
eW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNv
bnN0IHsgcmV0dXJuIGNoaWxkLT5tYXJnaW5CZWZvcmUoc3R5bGUoKSk7IH0KQEAgLTU3Niw5ICs1
NzYsMTIgQEAgcHJvdGVjdGVkOgogICAgIH0KICNlbmRpZgogCi0gICAgYm9vbCB1cGRhdGVSZWdp
b25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCopOwotICAgIHZv
aWQgdXBkYXRlUmVnaW9uc0FuZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVh
ZCosIGJvb2wgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKLSAgICB2b2lkIGNvbXB1dGVSZWdpb25S
YW5nZUZvckJsb2NrKFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBib29sIHVwZGF0ZVNoYXBlc0Jl
Zm9yZUJsb2NrTGF5b3V0KCk7CisgICAgdm9pZCB1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0
KGJvb2wgaGVpZ2h0Q2hhbmdlZCA9IGZhbHNlKTsKKyAgICB2b2lkIGNvbXB1dGVSZWdpb25SYW5n
ZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCopIGNvbnN0OworCisgICAgdm9pZCBlc3RpbWF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94KikgY29uc3Q7CisgICAgYm9v
bCB1cGRhdGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCopIGNvbnN0Owog
CiAgICAgdm9pZCB1cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgUmVuZGVyQm94Kik7CiAKQEAgLTExNDIsNyArMTE0NSw2IEBAIHByb3Rl
Y3RlZDoKIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSgpIGNvbnN0OwogICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uQXRCbG9ja09m
ZnNldChMYXlvdXRVbml0KSBjb25zdDsKLSAgICBSZW5kZXJSZWdpb24qIGNsYW1wVG9TdGFydEFu
ZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1
Y3QgRmxvYXRpbmdPYmplY3RIYXNoRnVuY3Rpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZWRmODcxMjY5M2NmYzdk
NGQxYjliNDRkY2EwZjE1YjhjNGM1MWNkMy4uNjVjODQ1YmU0NTk4NDVhNWRjMWQwYTRjNmEyMjVi
NjRjNWZkMDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHAKQEAgLTIxNDIsNiArMjE0Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYg
cmVwYWluCiAgICAgICAgIFZlY3RvcjxSZW5kZXJCb3gqPiByZXBsYWNlZENoaWxkcmVuOwogICAg
ICAgICBmb3IgKElubGluZVdhbGtlciB3YWxrZXIodGhpcyk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fs
a2VyLmFkdmFuY2UoKSkgewogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gd2Fsa2VyLmN1
cnJlbnQoKTsKKwogICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVDaGlsZCAmJiBvLT5pc0lubGlu
ZSgpKQogICAgICAgICAgICAgICAgIGhhc0lubGluZUNoaWxkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAxYTA4MjhmMjhmNGUwYjNkNzhiNzkzNjAz
NTM5OWI3YjFjYmJjYmZmLi41ZDUxMDJiMDNlZDdhZTRjOGU2YjUxZTBlNzFhOGMwNDFhZmQzNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTA4LDExICsxMDgs
NTQgQEAgUmVuZGVyQm94Ojp+UmVuZGVyQm94KCkKIHsKIH0KIAorUmVuZGVyUmVnaW9uKiBSZW5k
ZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNv
bnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKKworICAgIEFTU0VSVChpc1JlbmRlclZpZXcoKSB8fCAocmVnaW9uICYm
IGZsb3dUaHJlYWQpKTsKKyAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVybiBy
ZWdpb247CisKKyAgICAvLyBXZSBuZWVkIHRvIGNsYW1wIHRvIHRoZSBibG9jaywgc2luY2Ugd2Ug
d2FudCBhbnkgbGluZXMgb3IgYmxvY2tzIHRoYXQgb3ZlcmZsb3cgb3V0IG9mIHRoZQorICAgIC8v
IGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBibG9jayB0byBzaXplIGFzIHRo
b3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUgZmlyc3QgYW5kCisgICAgLy8gbGFzdCByZWdpb25z
IGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVyd2lzZSB0aGUgbGluZXMgYXJlIGdvaW5nIHRvIHNp
emUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25zCisgICAgLy8gdGhleSBvdmVyZmxvdyBpbnRvLCB3
aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRoaXMgYmxvY2sgZG9lc24ndCBleGlzdCBpbiB8cmVn
aW9ufCBhdCBhbGwuCisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOworICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdl
Rm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgaWYgKHN0YXJ0UmVn
aW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJl
Z2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgICAgIHJldHVybiBz
dGFydFJlZ2lvbjsKKyAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZs
b3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29u
dGVudCgpKQorICAgICAgICByZXR1cm4gZW5kUmVnaW9uOworCisgICAgcmV0dXJuIHJlZ2lvbjsK
K30KKwogTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QK
IHsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKLSAg
ICAKKworICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKCk7CisgICAgaWYgKCFmbG93VGhyZWFkKQorICAgICAgICByZXR1cm4gYm9yZGVy
Qm94UmVjdCgpOworCisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOworICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdl
Rm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgLy8gRklYTUU6IElu
IGEgcGVyZmVjdCB3b3JsZCB0aGlzIGNvbmRpdGlvbiBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
IGlmICghc3RhcnRSZWdpb24gfHwgIWVuZFJlZ2lvbikKKyAgICAgICAgcmV0dXJuIGJvcmRlckJv
eFJlY3QoKTsKKworICAgIC8vIEZJWE1FOiBPbmNlIG92ZXJmbG93IGlzIGltcGxlbWVudGVkIHRo
aXMgYXNzZXJ0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQuIFJpZ2h0IG5vdyB0aGUgb3ZlcmZsb3cg
Y29udGVudCBpcyBwYWludGVkCisgICAgLy8gaW4gcmVnaW9ucyBvdXRzaWRlIHRoZSBib3ggcmFu
Z2Ugc28gdGhlIGFzc2VydCBpcyBkaXNhYmxlZC4KKyAgICAvLyBBU1NFUlQoY2xhbXBUb1N0YXJ0
QW5kRW5kUmVnaW9ucyhyZWdpb24pID09IHJlZ2lvbik7CisKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IG9uY2UgYm94ZXMgYXJlIHBhaW50ZWQgaW5zaWRlIHRoZWlyIHJlZ2lvbiByYW5nZS4KKyAgICBy
ZWdpb24gPSBjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbik7CisKICAgICAvLyBDb21w
dXRlIHRoZSBsb2dpY2FsIHdpZHRoIGFuZCBwbGFjZW1lbnQgaW4gdGhpcyByZWdpb24uCiAgICAg
UmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9IHJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9u
LCBjYWNoZUZsYWcpOwogICAgIGlmICghYm94SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCAyMDJiMWUyMjJlNTdkODY1MTRjOWU5MjY3Y2MxYzQwZDk3Mjk5MzA4Li4x
YWNjYzJjMmM5NzllZTNhZDJkNDgyYWQ5MDYxYjYzM2YyNjI0MDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zNjAsNiArMzYwLDcgQEAgcHVibGljOgogCiAgICAgZW51
bSBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgeyBDYWNoZVJlbmRlckJveFJlZ2lvbkluZm8sIERv
Tm90Q2FjaGVSZW5kZXJCb3hSZWdpb25JbmZvIH07CiAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3hS
ZWN0SW5SZWdpb24oUmVuZGVyUmVnaW9uKiwgUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzID0gQ2Fj
aGVSZW5kZXJCb3hSZWdpb25JbmZvKSBjb25zdDsKKyAgICBSZW5kZXJSZWdpb24qIGNsYW1wVG9T
dGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJl
bmRlckJveFJlZ2lvbkluZm8oKTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAz
MTA2ZmM5YTJjYTkzYmZmZjc2OGM5ZDljYjQzYmNiY2RmZDFlYmM1Li44ZWM0NzM5ZTBlNDUzMDQw
MDY3NTI0NDViZGMyZDcxN2IyMGFjOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMzA1LDcgKzMw
NSw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxv
d1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAobG9naWNhbFdp
ZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFkKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJl
biA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGlsZExheW91
dChmbG93VGhyZWFkKSkKKyAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkK
ICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICBMYXlvdXRTaXplIHByZXZp
b3VzU2l6ZSA9IHNpemUoKTsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0KQogCiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVjdHMocmVsYXlvdXRDaGlsZHJlbiB8fCBp
c1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdpb25zQW5kU2hhcGVzQWZ0ZXJDaGlsZExheW91dChm
bG93VGhyZWFkKTsKKyAgICB1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0KCk7CiAKICAgICBp
ZiAoIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBoZWlnaHQoKSA9PSAwKSB7
CiAgICAgICAgIC8vIFdlIGFyZSBhIGJsb2NrIHdpdGggbm8gYm9yZGVyIGFuZCBwYWRkaW5nIGFu
ZCBhIGNvbXB1dGVkIGhlaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKaW5kZXggYzk1ZTM3ZTJkZDMxZmU4ODY5OTlhYTI0ZmViZmJlMjUyNDRm
NDkyMS4uZGY4ODg2MmY5MDc1OWU1YWU5MzYzZTQ1NzhlYTBkNjVkNWI3OTdlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zNDIsNyAr
MzQyLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5n
ZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVl
OwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoZmxvd1Ro
cmVhZCkpCisgICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAgICAg
IHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVu
T25GaXJzdExpbmUgPSAtMTsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxl
Qm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAg
ICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsK
IAotICAgIHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQp
OworICAgIHVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIHJlcGFpbnRDaGls
ZHJlbkR1cmluZ0xheW91dElmTW92ZWQob2xkQ2hpbGRSZWN0cyk7CiAgICAgLy8gRklYTUU6IGNz
czMvZmxleGJveC9yZXBhaW50LXJ0bC1jb2x1bW4uaHRtbCBzZWVtcyB0byByZXBhaW50IG1vcmUg
b3ZlcmZsb3cgdGhhbiBpdCBuZWVkcyB0by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCAzM2IwZmQ2MzQ2NWIyN2I1OTRhOWZlYTlmNTA1ZTVh
Nzc3YmVhZDMxLi45NmFhYTk5NDAyMTNkZTlhYjI5ZDJiN2VhOTI5Y2NkYWQyZDBlMjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xODYs
NiArMTg2LDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp2YWxpZGF0ZVJlZ2lvbnMoKQogCiAg
ICAgICAgICAgICAgICAgcHJldmlvdXNSZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb25Mb2dpY2Fs
V2lkdGg7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFJlZ2lvblJhbmdlRm9yQm94
KHRoaXMsIG1fcmVnaW9uTGlzdC5maXJzdCgpLCBtX3JlZ2lvbkxpc3QubGFzdCgpKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMzgwLDMzICszODIsNDAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFk
OjpyZXBhaW50UmVjdGFuZ2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0
LAogICAgIH0KIH0KIAotUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJs
b2NrT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lv
bkF1dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQorUmVuZGVyUmVnaW9u
KiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCog
Y2xhbXBCb3gsIExheW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGVuZExhc3RSZWdpb24sIFJlZ2lv
bkF1dG9HZW5lcmF0aW9uUG9saWN5IGF1dG9HZW5lcmF0aW9uUG9saWN5KQogewogICAgIEFTU0VS
VCghbV9yZWdpb25zSW52YWxpZGF0ZWQpOwogCiAgICAgaWYgKGF1dG9HZW5lcmF0aW9uUG9saWN5
ID09IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pCiAgICAgICAgIGF1dG9HZW5lcmF0ZVJlZ2lv
bnNUb0Jsb2NrT2Zmc2V0KG9mZnNldCk7CiAKKyAgICBpZiAobV9yZWdpb25MaXN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAob2Zmc2V0IDw9IDApCi0gICAgICAgIHJl
dHVybiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpID8gMCA6IG1fcmVnaW9uTGlzdC5maXJzdCgpOwor
ICAgICAgICByZXR1cm4gY2xhbXBCb3ggPyBjbGFtcEJveC0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVn
aW9ucyhtX3JlZ2lvbkxpc3QuZmlyc3QoKSkgOiBtX3JlZ2lvbkxpc3QuZmlyc3QoKTsKIAogICAg
IFJlZ2lvblNlYXJjaEFkYXB0ZXIgYWRhcHRlcihvZmZzZXQpOwogICAgIG1fcmVnaW9uSW50ZXJ2
YWxUcmVlLmFsbE92ZXJsYXBzV2l0aEFkYXB0ZXI8UmVnaW9uU2VhcmNoQWRhcHRlcj4oYWRhcHRl
cik7CiAKICAgICAvLyBJZiBubyByZWdpb24gd2FzIGZvdW5kLCB0aGUgb2Zmc2V0IGlzIGluIHRo
ZSBmbG93IHRocmVhZCBvdmVyZmxvdy4KICAgICAvLyBUaGUgbGFzdCByZWdpb24gd2lsbCBjb250
YWluIHRoZSBvZmZzZXQgaWYgZXh0ZW5kTGFzdFJlZ2lvbiBpcyBzZXQgb3IgaWYgdGhlIGxhc3Qg
cmVnaW9uIGlzIGEgc2V0LgotICAgIGlmICghYWRhcHRlci5yZXN1bHQoKSAmJiAhbV9yZWdpb25M
aXN0LmlzRW1wdHkoKSAmJiAoZXh0ZW5kTGFzdFJlZ2lvbiB8fCBtX3JlZ2lvbkxpc3QubGFzdCgp
LT5pc1JlbmRlclJlZ2lvblNldCgpKSkKLSAgICAgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0
KCk7CisgICAgaWYgKCFhZGFwdGVyLnJlc3VsdCgpICYmIChleHRlbmRMYXN0UmVnaW9uIHx8IG1f
cmVnaW9uTGlzdC5sYXN0KCktPmlzUmVuZGVyUmVnaW9uU2V0KCkpKQorICAgICAgICByZXR1cm4g
Y2xhbXBCb3ggPyBjbGFtcEJveC0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhtX3JlZ2lvbkxp
c3QubGFzdCgpKSA6IG1fcmVnaW9uTGlzdC5sYXN0KCk7CiAKLSAgICByZXR1cm4gYWRhcHRlci5y
ZXN1bHQoKTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IGFkYXB0ZXIucmVzdWx0KCk7Cisg
ICAgaWYgKCFjbGFtcEJveCkKKyAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyAgICByZXR1cm4gcmVn
aW9uID8gY2xhbXBCb3gtPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMocmVnaW9uKSA6IDA7CiB9
CiAgICAgCiBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVs
YXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94TW9kZWxP
YmplY3QsIGNvbnN0IExheW91dFBvaW50JiBzdGFydFBvaW50KQogewogICAgIExheW91dFBvaW50
IHJlZmVyZW5jZVBvaW50ID0gc3RhcnRQb2ludDsKICAgICAKKyAgICBjb25zdCBSZW5kZXJCbG9j
ayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2NrKCk7
CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgYWRhcHRlZCBmb3IgZGlmZmVyZW50IHdy
aXRpbmcgbW9kZXMgaW5zaWRlIHRoZSBmbG93IHRocmVhZC4KLSAgICBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChyZWZlcmVuY2VQb2ludC55KCkpOworICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9iakNvbnRh
aW5pbmdCbG9jaywgcmVmZXJlbmNlUG9pbnQueSgpKTsKICAgICBpZiAoc3RhcnRSZWdpb24pIHsK
ICAgICAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIG9mZnNldCBjb29yZGluYXRlcyBvZiB0
aGUgcmVnaW9uLgogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3Vyck9iamVjdCA9IHN0
YXJ0UmVnaW9uOwpAQCAtNDI2LDcgKzQzNSw2IEBAIExheW91dFBvaW50IFJlbmRlckZsb3dUaHJl
YWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IFJlbmRlCiAg
ICAgICAgIC8vIGFuZCBpZiBzbywgZHJvcCB0aGUgb2JqZWN0J3MgdG9wIHBvc2l0aW9uICh3aGlj
aCB3YXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5pbmcgYmxvY2sKICAgICAgICAg
Ly8gYW5kIGlzIG5vIGxvbmdlciB2YWxpZCkgYW5kIHJlY29tcHV0ZSBpdCB1c2luZyB0aGUgcmVn
aW9uIGluIHdoaWNoIGl0IGZsb3dzIGFzIHJlZmVyZW5jZS4KICAgICAgICAgYm9vbCB3YXNDb21w
dXRlZFJlbGF0aXZlVG9PdGhlclJlZ2lvbiA9IGZhbHNlOwotICAgICAgICBjb25zdCBSZW5kZXJC
bG9jayogb2JqQ29udGFpbmluZ0Jsb2NrID0gYm94TW9kZWxPYmplY3QuY29udGFpbmluZ0Jsb2Nr
KCk7CiAgICAgICAgIHdoaWxlIChvYmpDb250YWluaW5nQmxvY2sgJiYgIW9iakNvbnRhaW5pbmdC
bG9jay0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgdGhpcyBvYmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgcmVnaW9uLgogICAgICAgICAgICAgUmVu
ZGVyUmVnaW9uKiBwYXJlbnRTdGFydFJlZ2lvbiA9IDA7CkBAIC00ODQsMTkgKzQ5MiwxOSBAQCBM
YXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09m
ZnNldFBhcmVudChjb25zdCBSZW5kZQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBh
Z2VMb2dpY2FsVG9wRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxv
d1JlZ2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICByZXR1cm4gcmVnaW9uID8gcmVnaW9uLT5wYWdl
TG9naWNhbFRvcEZvck9mZnNldChvZmZzZXQpIDogTGF5b3V0VW5pdCgpOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dpY2FsV2lkdGhGb3JPZmZzZXQoTGF5b3V0VW5p
dCBvZmZzZXQpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zm
c2V0KG9mZnNldCwgdHJ1ZSk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJs
b2NrT2Zmc2V0KDAsIG9mZnNldCwgdHJ1ZSwgQWxsb3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAg
ICAgcmV0dXJuIHJlZ2lvbiA/IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpIDogY29udGVudExv
Z2ljYWxXaWR0aCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VMb2dp
Y2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogewotICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpOworICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldCgwLCBvZmZzZXQsIGZhbHNlLCBBbGxvd1Jl
Z2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTUwNSw3ICs1MTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnBhZ2VM
b2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQogCiBMYXlvdXRVbml0IFJl
bmRlckZsb3dUaHJlYWQ6OnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91
dFVuaXQgb2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZ2VCb3VuZGFyeVJ1bGUpCiB7Ci0gICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7CisgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KDAsIG9mZnNldCwgZmFs
c2UsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAg
ICByZXR1cm4gMDsKIApAQCAtNTM0LDcgKzU0Miw3IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxv
d1RocmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3Rh
CiAgICAgLy8gTm90ZTogVXNpbmcgdGhlIGNlbnRlciBpbiBvcmRlciB0byBhdm9pZCByb3VuZGlu
ZyBlcnJvcnMuCiAKICAgICBMYXlvdXRQb2ludCBjZW50ZXIgPSBib3hSZWN0LmNlbnRlcigpOwot
ICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhy
ZWFkKj4odGhpcyktPnJlZ2lvbkF0QmxvY2tPZmZzZXQoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgpLCB0cnVlLCBEaXNhbGxvd1JlZ2lvbkF1dG9HZW5l
cmF0aW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9IGNvbnN0X2Nhc3Q8UmVu
ZGVyRmxvd1RocmVhZCo+KHRoaXMpLT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBjZW50ZXIueSgpIDogY2VudGVyLngoKSwgdHJ1ZSwgRGlzYWxs
b3dSZWdpb25BdXRvR2VuZXJhdGlvbik7CiAgICAgaWYgKCFyZW5kZXJSZWdpb24pCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC01ODgsMjEgKzU5NiwxOSBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6
OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayog
YgogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwogICAgIGdldFJlZ2lvblJhbmdlRm9yQm94
KGJsb2NrLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAotICAgIC8vIFdoZW4gdGhlIHJlZ2lv
biBjaGFpbiBpcyBpbnZhbGlkYXRlZCB0aGUgYm94IGluZm9ybWF0aW9uIGlzIGRpc2NhcmRlZCBz
byB3ZSBtdXN0IGFzc3VtZSB0aGUgd2lkdGggaGFzIGNoYW5nZWQuCi0gICAgaWYgKG1fcGFnZUxv
Z2ljYWxTaXplQ2hhbmdlZCAmJiAhc3RhcnRSZWdpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwot
CiAgICAgLy8gTm90IG5lY2Vzc2FyeSBmb3IgdGhlIGZsb3cgdGhyZWFkLCBzaW5jZSB3ZSBhbHJl
YWR5IGNvbXB1dGVkIHRoZSBjb3JyZWN0IGluZm8gZm9yIGl0LgorICAgIC8vIElmIHRoZSByZWdp
b25zIGhhdmUgY2hhbmdlZCBpbnZhbGlkYXRlIHRoZSBjaGlsZHJlbi4KICAgICBpZiAoYmxvY2sg
PT0gdGhpcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9wYWdlTG9n
aWNhbFNpemVDaGFuZ2VkOwogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBp
dGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pOyBpdGVyICE9IG1fcmVnaW9uTGlz
dC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7
CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5k
ZXJSZWdpb25TZXQoKSk7CiAKKyAgICAgICAgLy8gV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21w
dXRlZCBmb3IgdGhpcyByZWdpb24gc28gd2UgbmVlZCB0byBkbyBpdC4KICAgICAgICAgT3duUHRy
PFJlbmRlckJveFJlZ2lvbkluZm8+IG9sZEluZm8gPSByZWdpb24tPnRha2VSZW5kZXJCb3hSZWdp
b25JbmZvKGJsb2NrKTsKICAgICAgICAgaWYgKCFvbGRJbmZvKQotICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBMYXlvdXRVbml0IG9sZExv
Z2ljYWxXaWR0aCA9IG9sZEluZm8tPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBSZW5kZXJCb3hS
ZWdpb25JbmZvKiBuZXdJbmZvID0gYmxvY2stPnJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uKTsK
QEAgLTY1NCwxMiArNjYwLDIyIEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6bGFz
dFJlZ2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0KCk7CiB9CiAKLXZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwKLSAgICBjb25zdCBSZW5kZXJSZWdpb24qIG9sZFN0YXJ0UmVn
aW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVuZFJlZ2lvbiwKLSAgICBjb25zdCBSZW5kZXJS
ZWdpb24qIG5ld1N0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbikK
K3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBDbGVhciB0aGUgc3R5bGVzIGZvciB0
aGUgb2JqZWN0IGluIHRoZSByZWdpb25zLgotICAgIC8vIFRoZSBzdHlsZXMgYXJlIG5vdCBjbGVh
cmVkIGZvciB0aGUgcmVnaW9ucyB0aGF0IGFyZSBjb250YWluZWQgaW4gYm90aCByYW5nZXMuCisg
ICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGlzIG5vdCBjb21wdXRlZCBvbmx5IGZvciB0aGUg
cmVnaW9uIHJhbmdlIG9mIHRoZSBvYmplY3Qgc28gdGhpcyBpcyB3aHkgd2UgbmVlZCB0byB3YWxr
IHRoZSB3aG9sZSBjaGFpbi4KKyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0
ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsr
aXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAgICBy
ZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOworICAgIH0KK30KKwordm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJveFJlZ2lvbkluZm9BbmRDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJCb3gqIGJveCwKKyAgICBjb25zdCBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0
UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiwKKyAgICBjb25zdCBSZW5k
ZXJSZWdpb24qIG9sZFN0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVuZFJlZ2lv
bikKK3sKKyAgICBBU1NFUlQobmV3U3RhcnRSZWdpb24gJiYgbmV3RW5kUmVnaW9uICYmIG9sZFN0
YXJ0UmVnaW9uICYmIG9sZEVuZFJlZ2lvbik7CisKICAgICBib29sIGluc2lkZU9sZFJlZ2lvblJh
bmdlID0gZmFsc2U7CiAgICAgYm9vbCBpbnNpZGVOZXdSZWdpb25SYW5nZSA9IGZhbHNlOwogICAg
IGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdp
bigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CkBAIC02NzAsOCArNjg2
LDExIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKICAgICAgICAgaWYgKG5ld1N0YXJ0UmVnaW9u
ID09IHJlZ2lvbikKICAgICAgICAgICAgIGluc2lkZU5ld1JlZ2lvblJhbmdlID0gdHJ1ZTsKIAot
ICAgICAgICBpZiAoIShpbnNpZGVPbGRSZWdpb25SYW5nZSAmJiBpbnNpZGVOZXdSZWdpb25SYW5n
ZSkpCi0gICAgICAgICAgICByZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3Qp
OworICAgICAgICBpZiAoIShpbnNpZGVPbGRSZWdpb25SYW5nZSAmJiBpbnNpZGVOZXdSZWdpb25S
YW5nZSkpIHsKKyAgICAgICAgICAgIHJlZ2lvbi0+Y2xlYXJPYmplY3RTdHlsZUluUmVnaW9uKGJv
eCk7CisgICAgICAgICAgICBpZiAocmVnaW9uLT5yZW5kZXJCb3hSZWdpb25JbmZvKGJveCkpCisg
ICAgICAgICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKGJveCk7Cisg
ICAgICAgIH0KIAogICAgICAgICBpZiAob2xkRW5kUmVnaW9uID09IHJlZ2lvbikKICAgICAgICAg
ICAgIGluc2lkZU9sZFJlZ2lvblJhbmdlID0gZmFsc2U7CkBAIC02ODAsMTggKzY5OSwxNCBAQCB2
b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QsCiAgICAgfQogfQogCi12b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBMYXlvdXRVbml0IG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNl
dFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbikKIHsKLSAgICBpZiAoIWhhc1JlZ2lv
bnMoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChoYXNSZWdpb25zKCkpOworICAgIEFT
U0VSVChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pOwogCi0gICAgLy8gRklYTUU6IE5vdCByaWdo
dCBmb3IgZGlmZmVyaW5nIHdyaXRpbmctbW9kZXMuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFn
ZSwgdHJ1ZSk7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zm
c2V0KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKyBib3gtPmxvZ2ljYWxIZWlnaHQo
KSwgdHJ1ZSk7CiAgICAgUmVuZGVyUmVnaW9uUmFuZ2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdp
b25SYW5nZU1hcC5maW5kKGJveCk7CiAgICAgaWYgKGl0ID09IG1fcmVnaW9uUmFuZ2VNYXAuZW5k
KCkpIHsKICAgICAgICAgbV9yZWdpb25SYW5nZU1hcC5zZXQoYm94LCBSZW5kZXJSZWdpb25SYW5n
ZShzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSk7Ci0gICAgICAgIGNsZWFyUmVuZGVyT2JqZWN0Q3Vz
dG9tU3R5bGUoYm94KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzAwLDIxICs3MTUs
NyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJl
bmRlckJveCogYm94LCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChyYW5nZS5zdGFydFJlZ2lvbigp
ID09IHN0YXJ0UmVnaW9uICYmIHJhbmdlLmVuZFJlZ2lvbigpID09IGVuZFJlZ2lvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gRGVsZXRlIGFueSBpbmZvIHRoYXQgd2UgZmluZCBiZWZvcmUg
b3VyIG5ldyBzdGFydFJlZ2lvbiBhbmQgYWZ0ZXIgb3VyIG5ldyBlbmRSZWdpb24uCi0gICAgZm9y
IChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7
IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBzdGFydFJlZ2lvbikg
ewotICAgICAgICAgICAgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKGVuZFJlZ2lvbik7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVu
ZGVyQm94UmVnaW9uSW5mbyhib3gpOwotCi0gICAgICAgIGlmIChyZWdpb24gPT0gcmFuZ2UuZW5k
UmVnaW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjbGVhclJlbmRlck9i
amVjdEN1c3RvbVN0eWxlKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9u
KCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5m
b0FuZEN1c3RvbVN0eWxlKGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbiwgcmFuZ2Uuc3RhcnRS
ZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9uKCkpOwogICAgIHJhbmdlLnNldFJhbmdlKHN0YXJ0UmVn
aW9uLCBlbmRSZWdpb24pOwogfQogCkBAIC03MzYsNyArNzM3LDcgQEAgdm9pZCBSZW5kZXJGbG93
VGhyZWFkOjphcHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQgY2xpZW50SGVpZ2h0KQog
ewogICAgIC8vIFNpbXVsYXRlIGEgcmVnaW9uIGJyZWFrIGF0IGhlaWdodC4gSWYgaXQgcG9pbnRz
IGluc2lkZSBhbiBhdXRvIGxvZ2ljYWwgaGVpZ2h0IHJlZ2lvbiwKICAgICAvLyB0aGVuIGl0IG1h
eSBkZXRlcm1pbmUgdGhlIHJlZ2lvbiBjb21wdXRlZCBhdXRvaGVpZ2h0LgotICAgIGFkZEZvcmNl
ZFJlZ2lvbkJyZWFrKGNsaWVudEhlaWdodCwgdGhpcywgZmFsc2UpOworICAgIGFkZEZvcmNlZFJl
Z2lvbkJyZWFrKHRoaXMsIGNsaWVudEhlaWdodCwgdGhpcywgZmFsc2UpOwogfQogCiBib29sIFJl
bmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkluUmFuZ2UoY29uc3QgUmVuZGVyUmVnaW9uKiB0YXJnZXRS
ZWdpb24sIGNvbnN0IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24sIGNvbnN0IFJlbmRlclJlZ2lv
biogZW5kUmVnaW9uKSBjb25zdApAQCAtODk2LDcgKzg5Nyw3IEBAIHZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6dXBkYXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBSZW5kZXJSZWdp
b24qIGxhCiAvLyBFdmVuIGlmIHdlIHJlcXVpcmUgdGhlIGJyZWFrIHRvIG9jY3VyIGF0IG9mZnNl
dEJyZWFrSW5GbG93VGhyZWFkLCBiZWNhdXNlIHJlZ2lvbnMgbWF5IGhhdmUgbWluL21heC1oZWln
aHQgdmFsdWVzLAogLy8gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgYnJlYWsgd2lsbCBvY2N1ciBh
dCBhIGRpZmZlcmVudCBvZmZzZXQgdGhhbiB0aGUgb3JpZ2luYWwgb25lIHJlcXVpcmVkLgogLy8g
b2Zmc2V0QnJlYWtBZGp1c3RtZW50IG1lYXN1cmVzIHRoZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUg
cmVxdWVzdGVkIGJyZWFrIG9mZnNldCBhbmQgdGhlIGN1cnJlbnQgYnJlYWsgb2Zmc2V0LgotYm9v
bCBSZW5kZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhMYXlvdXRVbml0IG9mZnNl
dEJyZWFrSW5GbG93VGhyZWFkLCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQsIGJvb2wgaXNCZWZv
cmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCkKK2Jvb2wgUmVuZGVyRmxvd1Ro
cmVhZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlv
dXRVbml0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQs
IGJvb2wgaXNCZWZvcmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCkKIHsKICAg
ICAvLyBXZSB0YWtlIGJyZWFrcyBpbnRvIGFjY291bnQgZm9yIGhlaWdodCBjb21wdXRhdGlvbiBm
b3IgYXV0byBsb2dpY2FsIGhlaWdodCByZWdpb25zCiAgICAgLy8gb25seSBpbiB0aGUgbGF5b3V0
IHBoYXNlIGluIHdoaWNoIHdlIGxheSBvdXQgdGhlIGZsb3dzIHRocmVhZHMgdW5jb25zdHJhaW5l
ZApAQCAtOTIzLDcgKzkyNCw3IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2VkUmVn
aW9uQnJlYWsoTGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwKIAogICAgIC8vIFNp
bXVsYXRlIGEgcmVnaW9uIGJyZWFrIGF0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLiBJZiBpdCBw
b2ludHMgaW5zaWRlIGFuIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9uLAogICAgIC8vIHRoZW4g
aXQgZGV0ZXJtaW5lcyB0aGUgcmVnaW9uIGNvbXB1dGVkIGF1dG8gaGVpZ2h0LgotICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXRCcmVha0luRmxvd1Ro
cmVhZCk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KGJs
b2NrLCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmgKaW5kZXggZGMxZGMwOTFmYTBkMDZjYmNlNjY1ZjEwMzMwYTcyNWM0YWYwMmZkOS4uOTRi
Mzk1YWNhYTE3OWZjZDllNWQ5YTliNGI4NzgwNmQ0OGEwOTBkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMDMsMTQgKzEwMywxNSBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0
KTsKICAgICBMYXlvdXRVbml0IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExh
eW91dFVuaXQsIFBhZ2VCb3VuZGFyeVJ1bGUgPSBJbmNsdWRlUGFnZUJvdW5kYXJ5KTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRV
bml0IC8qc3BhY2VTaG9ydGFnZSovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWluaW11
bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRVbml0IC8qbWluSGVpZ2h0
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sq
LCBMYXlvdXRVbml0IC8qb2Zmc2V0Ki8sIExheW91dFVuaXQgLypzcGFjZVNob3J0YWdlKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJC
bG9jayosIExheW91dFVuaXQgLypvZmZzZXQqLywgTGF5b3V0VW5pdCAvKm1pbkhlaWdodCovKSB7
IH0KIAogICAgIGVudW0gUmVnaW9uQXV0b0dlbmVyYXRpb25Qb2xpY3kgewogICAgICAgICBBbGxv
d1JlZ2lvbkF1dG9HZW5lcmF0aW9uLAogICAgICAgICBEaXNhbGxvd1JlZ2lvbkF1dG9HZW5lcmF0
aW9uLAogICAgIH07Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb25BdEJsb2NrT2Zmc2V0KExheW91
dFVuaXQsIGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlLCBSZWdpb25BdXRvR2VuZXJhdGlv
blBvbGljeSA9IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOworCisgICAgUmVuZGVyUmVnaW9u
KiByZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQsIGJvb2wg
ZXh0ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlLCBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSA9IEFs
bG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOwogCiAgICAgYm9vbCByZWdpb25zSGF2ZVVuaWZvcm1M
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxX
aWR0aDsgfQogICAgIGJvb2wgcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodDsgfQpAQCAtMTMwLDE5
ICsxMzEsMTcgQEAgcHVibGljOgogICAgIGJvb2wgcHJldmlvdXNSZWdpb25Db3VudENoYW5nZWQo
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzUmVnaW9uQ291bnQgIT0gbV9yZWdpb25MaXN0LnNp
emUoKTsgfTsKICAgICB2b2lkIHVwZGF0ZVByZXZpb3VzUmVnaW9uQ291bnQoKSB7IG1fcHJldmlv
dXNSZWdpb25Db3VudCA9IG1fcmVnaW9uTGlzdC5zaXplKCk7IH07CiAKLSAgICB2b2lkIHNldFJl
Z2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSk7CisgICAgdm9pZCBzZXRSZWdpb25SYW5nZUZvckJveChjb25z
dCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdpb24qKTsKICAgICB2b2lkIGdl
dFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0
UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0OwogCi0gICAgdm9pZCBjbGVh
clJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCosCi0gICAgICAgIGNv
bnN0IFJlbmRlclJlZ2lvbiogb2xkU3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5kZXJSZWdpb24q
IG9sZEVuZFJlZ2lvbiA9IDAsCi0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogbmV3U3RhcnRS
ZWdpb24gPSAwLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDApOworICAgIHZv
aWQgY2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAog
ICAgIC8vIENoZWNrIGlmIHRoZSBvYmplY3QgaXMgaW4gcmVnaW9uIGFuZCB0aGUgcmVnaW9uIGlz
IHBhcnQgb2YgdGhpcyBmbG93IHRocmVhZC4KICAgICBib29sIG9iamVjdEluRmxvd1JlZ2lvbihj
b25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogICAgIHZv
aWQgbWFya0F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0ZvckxheW91dCgpOwogCi0gICAgYm9vbCBh
ZGRGb3JjZWRSZWdpb25CcmVhayhMYXlvdXRVbml0LCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQs
IGJvb2wgaXNCZWZvcmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCA9IDApOwor
ICAgIGJvb2wgYWRkRm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRV
bml0LCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQsIGJvb2wgaXNCZWZvcmUsIExheW91dFVuaXQq
IG9mZnNldEJyZWFrQWRqdXN0bWVudCA9IDApOwogICAgIHZvaWQgYXBwbHlCcmVha0FmdGVyQ29u
dGVudChMYXlvdXRVbml0KTsKIAogICAgIGJvb2wgcGFnZUxvZ2ljYWxTaXplQ2hhbmdlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2ljYWxTaXplQ2hhbmdlZDsgfQpAQCAtMTY3LDYgKzE2Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1c2hGbG93VGhyZWFkTGF5b3V0U3RhdGUoY29uc3QgUmVu
ZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBwb3BGbG93VGhyZWFkTGF5b3V0U3RhdGUoKTsKICAgICBM
YXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbihjb25zdCBSZW5kZXJC
bG9jayopIGNvbnN0OworICAgIHZvaWQgY2xlYXJSZW5kZXJCb3hSZWdpb25JbmZvQW5kQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyQm94KiwgY29uc3QgUmVuZGVyUmVnaW9uKiwgY29uc3QgUmVuZGVy
UmVnaW9uKiwgY29uc3QgUmVuZGVyUmVnaW9uKiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CiAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggYTY1OTQxNTUyMDA2
MmU4YmJkMDlkN2UwNDJhNjQ5MWY5MGNiOWJhYS4uMDhjMDllYzE3NjE0OTAyOTU0ZDA1MzQ4YzZj
MDczODAxNTRjNGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApA
QCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aENo
YW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0
cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoZmxv
d1RocmVhZCkpCisgICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCiAgICAg
ICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgTGF5b3V0U2l6ZSBwcmV2aW91c1Np
emUgPSBzaXplKCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBsYXlvdXRQb3Np
dGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsKIAotICAgIHVwZGF0
ZVJlZ2lvbnNBbmRTaGFwZXNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAgIHVwZGF0
ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIGNvbXB1dGVPdmVyZmxvdyhvbGRDbGll
bnRBZnRlckVkZ2UpOwogICAgIHN0YXRlUHVzaGVyLnBvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAppbmRl
eCBkZmEwMTdkY2QwMmU0Mzk3ZWZhNDM3YWZkYTU2YWNiNTg1ZTk1YWMyLi5hODhhZTYwMjFkMmRi
NTM2MGJjZjIzZjI4YmNhOTFhNTFiMzgwYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcApAQCAtMTA0LDE1
ICsxMDQsMTUgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmF1dG9HZW5lcmF0
ZVJlZ2lvbnNUb0Jsb2NrT2Zmc2V0KExheW91dFVuaXQgLyoKICAgICB2YWxpZGF0ZVJlZ2lvbnMo
KTsKIH0KIAotdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnNldFBhZ2VCcmVhayhM
YXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKQordm9pZCBSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnNldFBhZ2VCcmVhayhjb25zdCBSZW5kZXJCbG9jayogYmxv
Y2ssIExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpCiB7Ci0gICAg
aWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBtdWx0aWNvbFNldCA9IHRvUmVuZGVyTXVsdGlDb2x1
bW5TZXQocmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXQpKSkKKyAgICBpZiAoUmVuZGVyTXVsdGlD
b2x1bW5TZXQqIG11bHRpY29sU2V0ID0gdG9SZW5kZXJNdWx0aUNvbHVtblNldChyZWdpb25BdEJs
b2NrT2Zmc2V0KGJsb2NrLCBvZmZzZXQpKSkKICAgICAgICAgbXVsdGljb2xTZXQtPnJlY29yZFNw
YWNlU2hvcnRhZ2Uoc3BhY2VTaG9ydGFnZSk7CiB9CiAKLXZvaWQgUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkOjp1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5
b3V0VW5pdCBtaW5IZWlnaHQpCit2b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6dXBk
YXRlTWluaW11bVBhZ2VIZWlnaHQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0
IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5IZWlnaHQpCiB7Ci0gICAgaWYgKFJlbmRlck11bHRpQ29s
dW1uU2V0KiBtdWx0aWNvbFNldCA9IHRvUmVuZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9j
a09mZnNldChvZmZzZXQpKSkKKyAgICBpZiAoUmVuZGVyTXVsdGlDb2x1bW5TZXQqIG11bHRpY29s
U2V0ID0gdG9SZW5kZXJNdWx0aUNvbHVtblNldChyZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBv
ZmZzZXQpKSkKICAgICAgICAgbXVsdGljb2xTZXQtPnVwZGF0ZU1pbmltdW1Db2x1bW5IZWlnaHQo
bWluSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmluZGV4IGRmYTkyODBmNGY0NGFmODhjNWM3NWZj
NWRhOGViNDc2NWJjN2I1OGYuLjcxYTJhYmI1YTNkNzY3MGUwMDViOGRkMzIwMTE2M2UxZDgyMzA1
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkLmgKQEAgLTQ0LDggKzQ0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhdXRvR2VuZXJhdGVSZWdpb25zVG9CbG9ja09mZnNl
dChMYXlvdXRVbml0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgaW5pdGlhbExv
Z2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJl
YWsoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KExheW91dFVuaXQgb2Zm
c2V0LCBMYXlvdXRVbml0IG1pbkhlaWdodCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFBhZ2VCcmVhayhjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRV
bml0IHNwYWNlU2hvcnRhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNaW5p
bXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBMYXlv
dXRVbml0IG1pbkhlaWdodCkgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOTM3NGY1ZjU0ZjM4YzhmYmY5NWJjZTBmZDlhM2FkOWYyNGFiMzM0OC4uM2VhMDll
NmEzNWVkODZlNDg4YjE3ZTQ5ZWFmMjY1MDQ1N2FiZWJkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDEzLTA3LTA5ICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAg
IFtDU1MgUmVnaW9uc10gQ29tcHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Ig
dGhlIGNoYW5nZXMgaW4gaG93IHJlZ2lvbiByYW5nZXMgYXJlIGNvbXB1dGVkIGFuZCBhcHBsaWVk
LgorICAgICAgICBUZW1wb3JhcmlseSBkaXNhYmxlIHRoZSB3aWRvd3MgYW5kIG9ycGhhbnMgdGVz
dCB1bnRpbCB3ZSBmaWd1cmUgb3V0IGEgd2F5IHRvIGhhbmRsZSB0aGUgc3RhbGUKKyAgICAgICAg
d2lkb3dzIFJvb3RJbmxpbmVCb3ggcG9pbnRlci4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9i
b3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvYm90dG9tLW92ZXJmbG93LW91dC1vZi1m
aXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25z
L2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3Rl
ZC5odG1sLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdl
LTIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hl
ZC13aWR0aC1jaGFuZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVk
LXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9h
dC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWw6CisgICAgICAgICogZmFzdC9yZWdpb25zL3Njcm9s
bGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0YWJsZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDct
MDkgIFpvbHRhbiBBcnZhaSAgPHphcnZhaUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0
XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2Yt
Zmlyc3QtcmVnaW9uLWFic29sdXRlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ZDY5OGU0
OWRmZDU2MGM1OWE3NmY3MDNkNWQyMmViN2Q3NGQyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1h
YnNvbHV0ZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeyBm
b250OiAxNnB4LzEuMjUgbW9ub3NwYWNlOyB9CisKKyAgICAgICAgICAgICNmaXJzdC1ib3gtMSB7
CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAg
ICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGJvcmRl
ci1yaWdodDogMXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OjIwNHB4Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgI2ZpcnN0LWJveC0yIHsKKyAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAx
cHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGJs
dWU7CisgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmx1ZTsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6OTZweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24xIHsKKyAgICAgICAgICAg
ICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogNXB4
OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKKyAgICAgICAgICAgICAgICB3
aWR0aDogNDAycHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDVweDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgI3JlZ2lvbjIgeworICAgICAgICAgICAgICAgIHdpZHRoOiAyOTBw
eDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKKyAgICAgICAgICAgICAgICBw
YWRkaW5nLWJvdHRvbTogNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAjcDEgeworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgICAgICB3
aWR0aDogNDAlOworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
ICAgICAgICB0b3A6IDE1MHB4OworICAgICAgICAgICAgICAgIGxlZnQ6IDEwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMjBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdzogc2Nyb2xs
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPHA+SW4gdGhlIHRlc3QgY2FzZSBiZWxvdywgdGhlIHBhcmFncmFwaCB3aXRo
IGEgc2Nyb2xsIGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBpbnNpZGUgdGhlIGJsdWUgZGl2LCBi
ZXR3ZWVuIHR3byByZWdpb25zLiBUaGUgcGFyYWdyYXBoIHNob3VsZCBhcHBlYXIgYXMgYSBtb25v
bGl0aGljYWwgc2luZ2xlIGJveCwgc2l6ZWQgcmVsYXRpdmVseSB0byB0aGUgYmx1ZSBkaXYgZnJh
Z21lbnQgaW5zaWRlIHRoZSBmaXJzdCByZWdpb24uPC9wPgorICAgICAgICA8ZGl2IGlkPSJjb250
YWluZXIiPgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+CisgICAgICAgICAgICAgICAg
PGRpdiBpZD0iZmlyc3QtYm94LTEiPgorICAgICAgICAgICAgICAgICAgICA8cCBpZD0icDEiPlRo
ZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC4gVGhlc2UgbGluZXMg
c2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBUaGVzZSBsaW5lcyBzaG91bGQgYWxs
IGZpdCB0aGUgc2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBz
Y3JvbGxhYmxlIGJveC48L3A+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPgorICAgICAgICAgICAgICAgIDxk
aXYgaWQ9ImZpcnN0LWJveC0yIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvYm90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0
LXJlZ2lvbi1hYnNvbHV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMTFkNDEwNTdlYWU5ZTU2YzcxMmNl
NzM0M2Q3ZmVmMjJiNzkxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvYm90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbApA
QCAtMCwwICsxLDU2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsgZm9udDogMTZweC8xLjI1IG1vbm9zcGFj
ZTsgfQorCisgICAgICAgICAgICAjY29udGVudCB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1m
bG93LWludG86IGZsb3cxOworICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI2ZpcnN0LWJveCB7CisgICAgICAgICAgICAgICAgYm9yZGVy
OiAxcHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6MzAwcHg7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjcmVnaW9uMSwgI3JlZ2lvbjIgeworICAgICAgICAgICAgICAgIC13ZWJraXQtZmxvdy1mcm9t
OiBmbG93MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3JlZ2lvbjEgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiA0MTJweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIxMHB4Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICNwMSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICAgICAgICAgIHdpZHRoOiA0MCU7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICAgICAgICAgIHRvcDogMTUwcHg7CisgICAgICAgICAgICAgICAgbGVmdDog
MTBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5JbiB0aGUgdGVzdCBjYXNlIGJlbG93LCB0aGUg
cGFyYWdyYXBoIHdpdGggYSBzY3JvbGwgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluc2lkZSB0
aGUgYmx1ZSBkaXYsIGJldHdlZW4gdHdvIHJlZ2lvbnMuIFRoZSBwYXJhZ3JhcGggc2hvdWxkIGFw
cGVhciBhcyBhIG1vbm9saXRoaWNhbCBzaW5nbGUgYm94LCBzaXplZCByZWxhdGl2ZWx5IHRvIHRo
ZSBibHVlIGRpdiBmcmFnbWVudCBpbnNpZGUgdGhlIGZpcnN0IHJlZ2lvbi48L3A+CisgICAgICAg
IDxkaXYgaWQ9ImNvbnRlbnQiPgorICAgICAgICAgICAgPGRpdiBpZD0iZmlyc3QtYm94Ij4KKyAg
ICAgICAgICAgICAgICA8cCBpZD0icDEiPlRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBz
Y3JvbGxhYmxlIGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUg
Ym94LiBUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUgc2Nyb2xsYWJsZSBib3guIFRoZXNl
IGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC48L3A+CisgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgICAgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBp
ZD0icmVnaW9uMiI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgt
Y2hhbmdlLTItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1w
dXNoZWQtd2lkdGgtY2hhbmdlLTItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2E5NjhjY2Rm
YzEyMGIzYTljZWEyNDY3OTkyMzk2MmZkNDdiMGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhZG9jdHlwZSBodG1sPgorCisgPHN0eWxlPgorICAgCisg
ICAgI2Zsb2F0MSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICBwb3NpdGlvbjphYnNv
bHV0ZTsKKyAgICAgICAgd2lkdGg6IDE1MHB4OworICAgICAgICBoZWlnaHQ6IDEwMnB4OworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOworICAgICAgICB6LWluZGV4Oi0xOworICAgIH0K
KyAgICAKKyAgICAjZmxvYXQyIHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRo
OjIwMHB4OworICAgICAgICBoZWlnaHQ6MzBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpv
cmFuZ2UKKyAgICB9CisKKyAgICAjcmVnaW9uMSwgI3JlZ2lvbjIsICNyZWdpb24zIHsKKyAgICAg
ICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgfQorIAorICAgICNyZWdpb24xIHsKKyAg
ICAgICAgd2lkdGg6IDE3MHB4OworICAgICAgICBoZWlnaHQ6IDgwcHg7CisgICAgICAgIHBhZGRp
bmc6IDVweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lvbjIgeworICAgICAgICB3aWR0aDogMzkw
cHg7CisgICAgICAgIGhlaWdodDogODlweDsKKyAgICAgICAgcGFkZGluZy10b3A6MXB4OworICAg
ICAgICBwYWRkaW5nLWxlZnQ6NXB4OworICAgICAgICBwYWRkaW5nLXJpZ2h0OjVweDsKKyAgICB9
CisgICAgCisgICAgI3JlZ2lvbjMgeworICAgICAgICB3aWR0aDogMzg1cHg7CisgICAgICAgIGhl
aWdodDogODBweDsKKyAgICAgICAgcGFkZGluZy1sZWZ0OjVweDsKKyAgICAgICAgcGFkZGluZy1y
aWdodDoxMHB4OworICAgICAgICBwYWRkaW5nLWJvdHRvbToxMHB4OworICAgIH0KKyAgICAKKyAg
ICBwLmZsb3cxIHsKKyAgICAgICAgY2xlYXI6Ym90aDsKKyAgICAgICAgbWFyZ2luLWJvdHRvbTog
MHB4OworICAgIH0KKworICAgIHAuZmxvdzIgeworICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Cisg
ICAgfQorICAgIAorPC9zdHlsZT4KKworPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVl
biBmbG9hdCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0
aGUgbGVmdC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxv
YXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgor
Cis8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48L3A+Cis8L2Rp
dj4KKzxkaXYgaWQ9InJlZ2lvbjIiPgorICAgIDxpbWcgaWQ9ImZsb2F0MiI+CisgICAgPHAgY2xh
c3M9ImZsb3cxIj5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJl
Z2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24u
PC9wPgorPC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24zIj4KKzxwIGNsYXNzPSJmbG93MiI+VGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBv
ZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzxwPlRoaXMgbGlu
ZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKzwvZGl2Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1j
aGFuZ2UtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0
aC1jaGFuZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NmI2MGI1MDIzZmU5M2I2OTcyNTYwMDdjYWJm
MDFiNzMzMzIxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
ZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0yLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFkb2N0
eXBlIGh0bWw+CisKKyA8c3R5bGU+CisKKyAgICAjY29udGVudCB7CisgICAgICAgIC13ZWJraXQt
Zmxvdy1pbnRvOiBmbG93MTsKKyAgICAgICAgcGFkZGluZzogNXB4OworICAgIH0KKyAgCisgICAg
I2Zsb2F0MSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICB3aWR0aDogMTUwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW4KKyAg
ICB9CisgICAgCisgICAgI2Zsb2F0MiB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3
aWR0aDoyMDBweDsKKyAgICAgICAgaGVpZ2h0OjMwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6b3JhbmdlCisgICAgfQorCisgICAgI3JlZ2lvbjEsICNyZWdpb24yLCAjcmVnaW9uMyB7Cisg
ICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICAtd2Via2l0LWZsb3ctZnJv
bTogZmxvdzE7CisgICAgfQorCisgICAgI3JlZ2lvbjEgeworICAgICAgICB3aWR0aDogMTgwcHg7
CisgICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAgCisgICAgI3JlZ2lvbjIgeworICAg
ICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogOTBweDsKKyAgICB9CisgICAgCisg
ICAgI3JlZ2lvbjMgeworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogOTBw
eDsKKyAgICB9CisKKyAgICAjZmxvYXRjb250YWluZXIgeworICAgICAgICBoZWlnaHQ6IDg0cHg7
CisgICAgfQorPC9zdHlsZT4KKworPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBncmVlbiBm
bG9hdCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QgcmVnaW9uIGFuZCBvbiB0aGUg
bGVmdC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4KK1RoZSBvcmFuZ2UgZmxvYXQg
c2hvdWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJlZ2lvbiB0d28uPC9wPgorCis8
ZGl2IGlkPSJjb250ZW50Ij4KKyAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgorICAgICAgICA8ZGl2
IGlkPSJzZWNvbmQtYm94Ij4KKyAgICAgICAgICAgIDxwIGlkPSJmbG9hdGNvbnRhaW5lciI+PGlt
ZyBpZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPgorICAgICAgICAgICAgPHA+VGhpcyBsaW5l
IG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0
ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAgPHA+VGhp
cyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGlu
ZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICAgICAg
ICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9u
LjwvcD4KKyAgICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgorICAg
IDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjMiPjwvZGl2Pgor
PC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLWV4cGVj
dGVkLmh0bWwKaW5kZXggMWMwMDlhNmUxM2E0MDNmY2MxMTc0MWZiMzM2NWViMWY4YzY2MzhmNy4u
Y2ZhMjc2MGQ2NGY5MDg1YjUwZmEyOTZjY2Q2OTY0YzRkNGUxMTMzMyAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhwZWN0ZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNo
YW5nZS1leHBlY3RlZC5odG1sCkBAIC0xLDEyICsxLDYgQEAKIDwhZG9jdHlwZSBodG1sPgogCiAg
PHN0eWxlPgotCi0gICAgQGZvbnQtZmFjZSB7Ci0gICAgICAgIGZvbnQtZmFtaWx5OiB3ZWJraXQt
YWhlbTsKLSAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwotICAgICAgICBzcmM6IHVybCguLi8u
Li9yZXNvdXJjZXMvQWhlbS50dGYpOwotICAgIH0KICAgIAogICAgICNmbG9hdDEgewogICAgICAg
ICBmbG9hdDogbGVmdDsKQEAgLTE4LDcgKzEyLDkgQEAKICAgICB9CiAgICAgCiAgICAgI2Zsb2F0
MiB7Ci0gICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OworICAg
ICAgICBtYXJnaW4tbGVmdDogLTMwcHg7CisgICAgICAgIGZsb2F0OmxlZnQ7CiAgICAgICAgIHdp
ZHRoOjIwMHB4OwogICAgICAgICBoZWlnaHQ6MzBweDsKICAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjpvcmFuZ2UKQEAgLTYyLDE0ICs1OCwxNCBAQAogPC9zdHlsZT4KIAogPHA+SW4gdGhlIGV4YW1w
bGUgYmVsb3csIHRoZSBncmVlbiBmbG9hdCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmly
c3QgcmVnaW9uIGFuZCBvbiB0aGUgbGVmdC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3
by4KLVRoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9m
IHJlZ2lvbiB0d28uPC9wPgorVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgcmlnaHQgYWxpZ25l
ZCB1bmRlciB0aGUgZ3JlZW4gZmxvYXQgYmVjYXVzZSB0aGVpciBjb250YWluaW5nIGJsb2NrIGlz
IGZsb3duIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lvbjwvcD4KIAogPGRpdiBpZD0icmVnaW9uMSI+
CiAgICAgIDxwPjxpbWcgaWQ9ImZsb2F0MSI+PC9wPgogPC9kaXY+CiA8ZGl2IGlkPSJyZWdpb24y
Ij4KICAgICA8aW1nIGlkPSJmbG9hdDIiPgotICAgIDxwIGNsYXNzPSJmbG93MSI+VGhpcyBsaW5l
IG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0
ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KKyAgICA8cCBjbGFzcz0i
ZmxvdzEiPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9u
LjwvcD4KIDwvZGl2PgogPGRpdiBpZD0icmVnaW9uMyI+CiA8cCBjbGFzcz0iZmxvdzIiPlRoaXMg
bGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBUaGlzIGxpbmUg
b2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48L3A+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRt
bAppbmRleCAxZTg3MWI2YWMxZTFlY2RmOTM3MDc3MjdhZDJiYmE4YTVmNDNiNzQ5Li44OTE2ZGYx
NjViZWQ2NmNhYmMwMWYxZGEyN2VmZTU4OTU4NGQzZWQ3IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwKQEAgLTIs
MTIgKzIsNiBAQAogCiAgPHN0eWxlPgogCi0gICBAZm9udC1mYWNlIHsKLSAgICAgICAgZm9udC1m
YW1pbHk6IHdlYmtpdC1haGVtOwotICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7Ci0gICAgICAg
IHNyYzogdXJsKC4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zik7Ci0gICAgfQotCiAgICAgI2NvbnRl
bnQgewogICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzE7CiAgICAgICAgIHBhZGRpbmc6
IDVweDsKQEAgLTQ5LDEzICs0MywxMyBAQAogPC9zdHlsZT4KIAogPHA+SW4gdGhlIGV4YW1wbGUg
YmVsb3csIHRoZSBncmVlbiBmbG9hdCBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3Qg
cmVnaW9uIGFuZCBvbiB0aGUgbGVmdC4gSXQgc2hvdWxkIHNwaWxsIGludG8gcmVnaW9uIHR3by4K
LVRoZSBvcmFuZ2UgZmxvYXQgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBhdCB0aGUgdG9wIG9mIHJl
Z2lvbiB0d28uPC9wPgorVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgcmlnaHQgYWxpZ25lZCB1
bmRlciB0aGUgZ3JlZW4gZmxvYXQgYmVjYXVzZSB0aGVpciBjb250YWluaW5nIGJsb2NrIGlzIGZs
b3duIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lvbjwvcD4KIAogPGRpdiBpZD0iY29udGVudCI+CiAg
ICAgPGRpdiBpZD0iZmlyc3QtYm94Ij4KICAgICAgICAgPGRpdiBpZD0ic2Vjb25kLWJveCI+Ci0g
ICAgICAgICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjxpbWcgaWQ9ImZsb2F0MiI+Ci0gICAgICAg
ICAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lv
bi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9w
PgorICAgICAgICAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48aW1nIGlkPSJmbG9hdDIiPjxwLz4K
KyAgICAgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0
aGUgcmVnaW9uLjwvcD4KIAkgICAgPHA+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLjwvcD4KICAgICAgICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3Vs
ZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KICAgICAgICAgICAgIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Njcm9sbGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0
YWJsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Njcm9sbGFibGUt
cGFyYWdyYXBoLXVuc3BsaXR0YWJsZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzYzZkZTNh
MGM3ZjRlZjc5NzI0NjI0ZTNiOWFlMGY3NzNmZjY0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVh
ZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD1VVEYtOCI+CisgICAgICAgIDxzdHlsZT4KKworICAgICAgICAjY29udGVudCB7CisgICAg
ICAgICAgICB3aWR0aDogMTgwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgICAg
ICAgICAgYm9yZGVyOiB0aGljayBzb2xpZCBncmVlbjsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTog
MTVweDsKKyAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICA8L2hlYWQ+Cis8Ym9keT4KKwk8cD5UaGUgc2Nyb2xsYWJsZSBlbGVtZW50
IGJlbG93IHNob3VsZCBsb29rIGxpa2UgaXQncyBub3QgZnJhZ21lbnRlZC4gVGhlIGdyZWVuIGJv
cmRlciBzaG91bGQgYmUgY29udGlub3VzLiBUaGUgY29udGVudCBzaG91bGQgZml0IHRoZSBzY3Jv
bGxhYmxlIGFyZWEuPC9wPgorICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYg
aWQ9ImNvbnRlbnQiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlw
aXNjaW5nIGVsaXQuIFByYWVzZW50IGludGVyZHVtLCBzYXBpZW4gdml0YWUgZmF1Y2lidXMgc3Vz
Y2lwaXQsIG1hc3NhIHVybmEgc2FnaXR0aXMgbGliZXJvLCBhYyBpbXBlcmRpZXQgZWxpdCBsYWN1
cyBhIGxpZ3VsYS4gTWF1cmlzIGEgb3JjaSBzZW0uIE51bGxhbSB1bGxhbWNvcnBlciBvcm5hcmUg
cG9ydHRpdG9yLiBNb3JiaSBsYW9yZWV0IHBlbGxlbnRlc3F1ZSBkaWFtLCB2aXRhZSBoZW5kcmVy
aXQgc2VtIGZyaW5naWxsYSBpZC4gTWFlY2VuYXMgcnV0cnVtIGxhY2luaWEgbG9ib3J0aXMuIFBy
YWVzZW50IGVsaXQgbGVjdHVzLCBwb3J0dGl0b3Igc2VkIHNlbXBlciB2ZWwsIGZyaW5naWxsYSBp
ZCBkb2xvci4gU2VkIGxhY3VzIG5pc2wsIHJ1dHJ1bSBzaXQgYW1ldCBldWlzbW9kIGEsIHZ1bHB1
dGF0ZSBxdWlzIGVsaXQuIEZ1c2NlIGNvbW1vZG8gZHVpIHF1aXMgbGFjdXMgdml2ZXJyYSB2ZWwg
ZWdlc3RhcyB2ZWxpdCB0ZW1wdXMuIERvbmVjIHV0IHNhcGllbiBzaXQgYW1ldCBwdXJ1cyBsdWN0
dXMgZmVybWVudHVtLiBEb25lYyBlbGVpZmVuZCBwcmV0aXVtIG5lcXVlIHF1aXMgYmliZW5kdW0u
IFZlc3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMgZXQg
dWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBOYW0gY29uZ3VlIGRhcGlidXMgbWksIGlk
IHVsdHJpY2llcyBlc3Qgc2FnaXR0aXMgZXQuIEludGVnZXIgcG9zdWVyZSwgZXJvcyB2aXRhZSBs
YW9yZWV0IGNvbmd1ZSwgdG9ydG9yIHB1cnVzIGV1aXNtb2QgbmliaCwgZXUgcG9ydGEgcHVydXMg
YXJjdSBpZCB0dXJwaXMuIERvbmVjIHZpdGFlIHVsdHJpY2llcyBuaWJoLiBOdWxsYW0gaW4gdXJu
YSBkb2xvciwgYXQgZnJpbmdpbGxhIGxvcmVtLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg
Y29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LjwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Njcm9sbGFibGUt
cGFyYWdyYXBoLXVuc3BsaXR0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Nj
cm9sbGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4ZGEzNGQ0
Y2RjNmM2YzRlYWNiYTJiYjYxYzgyOGRjOTRjNTk0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLmh0
bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVhZD48bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYt
OCI+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgI2NvbnRhaW5lciB7CisgICAgICAgICAgICB3
aWR0aDogMTAwJTsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICBvdmVy
ZmxvdzogdmlzaWJsZTsKKyAgICAgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAg
ICAgICB9CisKKyAgICAgICAgI2NvbnRlbnQgeworICAgICAgICAgICAgd2lkdGg6IDMwJTsKKyAg
ICAgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAgICAgICAgICBib3JkZXI6IHRoaWNrIHNvbGlk
IGdyZWVuOworICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4OworICAgICAgICAgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKKyAgICAgICAgfQorCisgICAgICAgIC5yZWdpb24geworICAgICAgICAgICAg
d2lkdGg6IDYwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIC13
ZWJraXQtZmxvdy1mcm9tOiBmbG93OworICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5U
aGUgc2Nyb2xsYWJsZSBlbGVtZW50IGJlbG93IHNob3VsZCBsb29rIGxpa2UgaXQncyBub3QgZnJh
Z21lbnRlZC4gVGhlIGdyZWVuIGJvcmRlciBzaG91bGQgYmUgY29udGlub3VzLiBUaGUgY29udGVu
dCBzaG91bGQgZml0IHRoZSBzY3JvbGxhYmxlIGFyZWEuPC9wPgorICAgIDxkaXYgY2xhc3M9InJl
Z2lvbiI+PC9kaXY+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyIgY2xhc3M9InJlZ2lv
biI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
b250YWluZXIiPgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50Ij5Mb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBQcmFlc2VudCBpbnRlcmR1bSwg
c2FwaWVuIHZpdGFlIGZhdWNpYnVzIHN1c2NpcGl0LCBtYXNzYSB1cm5hIHNhZ2l0dGlzIGxpYmVy
bywgYWMgaW1wZXJkaWV0IGVsaXQgbGFjdXMgYSBsaWd1bGEuIE1hdXJpcyBhIG9yY2kgc2VtLiBO
dWxsYW0gdWxsYW1jb3JwZXIgb3JuYXJlIHBvcnR0aXRvci4gTW9yYmkgbGFvcmVldCBwZWxsZW50
ZXNxdWUgZGlhbSwgdml0YWUgaGVuZHJlcml0IHNlbSBmcmluZ2lsbGEgaWQuIE1hZWNlbmFzIHJ1
dHJ1bSBsYWNpbmlhIGxvYm9ydGlzLiBQcmFlc2VudCBlbGl0IGxlY3R1cywgcG9ydHRpdG9yIHNl
ZCBzZW1wZXIgdmVsLCBmcmluZ2lsbGEgaWQgZG9sb3IuIFNlZCBsYWN1cyBuaXNsLCBydXRydW0g
c2l0IGFtZXQgZXVpc21vZCBhLCB2dWxwdXRhdGUgcXVpcyBlbGl0LiBGdXNjZSBjb21tb2RvIGR1
aSBxdWlzIGxhY3VzIHZpdmVycmEgdmVsIGVnZXN0YXMgdmVsaXQgdGVtcHVzLiBEb25lYyB1dCBz
YXBpZW4gc2l0IGFtZXQgcHVydXMgbHVjdHVzIGZlcm1lbnR1bS4gRG9uZWMgZWxlaWZlbmQgcHJl
dGl1bSBuZXF1ZSBxdWlzIGJpYmVuZHVtLiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIGlu
IGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2VzIHBvc3VlcmUgY3ViaWxpYSBDdXJhZTsg
TmFtIGNvbmd1ZSBkYXBpYnVzIG1pLCBpZCB1bHRyaWNpZXMgZXN0IHNhZ2l0dGlzIGV0LiBJbnRl
Z2VyIHBvc3VlcmUsIGVyb3Mgdml0YWUgbGFvcmVldCBjb25ndWUsIHRvcnRvciBwdXJ1cyBldWlz
bW9kIG5pYmgsIGV1IHBvcnRhIHB1cnVzIGFyY3UgaWQgdHVycGlzLiBEb25lYyB2aXRhZSB1bHRy
aWNpZXMgbmliaC4gTnVsbGFtIGluIHVybmEgZG9sb3IsIGF0IGZyaW5naWxsYSBsb3JlbS4gTG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDBhMzdhNjk1MTkzYTIzNGNlZTcwNTUyOTlkZTU5MzY0
ZDUzYzgyMi4uNzJjZWQxYTM0MTI2YWQzNWZiMWI3OTcyYzc3OWE1YWJlZTY3Mzk1ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUzNyw2ICs1MzcsOSBA
QCB3ZWJraXQub3JnL2IvODIzNDAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92
ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLW11bAogd2Via2l0Lm9yZy9iLzgyMzQwIGZhc3QvcmVnaW9u
cy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvODIzNDAgZmFzdC9yZWdpb25zL3N0eWxlLXNj
b3BlZC1pbi1mbG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBGSVhNRTogVGhlIHdp
ZG93cyBhbmQgb3JwaGFucyBpbXBsZW1lbnRhdGlvbiBpbnRlcmZlcmVzIHdpdGggdGhlIHJlZ2lv
biByYW5nZSBjaGFuZ2UgcmVsYXlvdXQuIAorZmFzdC9yZWdpb25zL3JlZ2lvbnMtd2lkb3dzLWFu
ZC1vcnBoYW5zLmh0bWwKKwogIyBUaGlzIHBvcnQgZG9lcyBub3QgZW5hYmxlIEhJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HCiBmYXN0L2RvbS90aW1lci10aHJvdHRsaW5nLWhpZGRlbi1w
YWdlLmh0bWwgWyBXb250Rml4IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA4NGMzYjhiY2EwM2VjMjZhYWZkOWNhNWMxYzdkOGY4ZTdiMTU5MGE1Li44
ODQ4NTBiNWU3ZWQ3MmQ0ODkwZGM1YmRhMWZiZGU2NTg3NTYzYWFiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTMyMiw2ICsxMzIyLDkgQEAgd2Via2l0
Lm9yZy9iLzExMDA5MCBmYXN0L2V2ZW50cy9jbGllbnRYWS1pbi16b29tLWFuZC1zY3JvbGwuaHRt
bCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTA2MTI1IGZhc3QvcmVnaW9ucy9zZWFtbGVz
cy1pZnJhbWUtZmxvd2VkLWludG8tcmVnaW9ucy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
KyMgRklYTUU6IFRoZSB3aWRvd3MgYW5kIG9ycGhhbnMgaW1wbGVtZW50YXRpb24gaW50ZXJmZXJl
cyB3aXRoIHRoZSByZWdpb24gcmFuZ2UgY2hhbmdlIHJlbGF5b3V0LiAKK2Zhc3QvcmVnaW9ucy9y
ZWdpb25zLXdpZG93cy1hbmQtb3JwaGFucy5odG1sCisKIHdlYmtpdC5vcmcvYi8xMTAzMjAgZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmctZGlzdHJpYnV0ZWQtdGV4
dC1ub2RlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMTAzMjAgZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmctdGV4dC1ub2RlLWluLXNoYWRvdy1yb290
Lmh0bWwgWyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCAyMGE1MTI0NzgxNDI2OTAyM2FlMzczYzMwODg3ZWU2ZmJmNzU5YjBlLi40YjBm
NWYxNGZlOTdmZWIyYjAxN2I1YWNlYjhiOWZkNzIyMzkyNGNhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgzLDYgKzM4Myw5IEBAIHdlYmtpdC5vcmcv
Yi82MTQ4NyBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNyb3NzLXNpdGUuaHRtbCBbIEZhaWx1cmUg
XQogIyBTdHlsZWQgc2NvcGUgZWxlbWVudCBpcyBub3QgeWV0IGVuYWJsZWQuCiB3ZWJraXQub3Jn
L2IvNDkxNDIgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAKKyMgRklYTUU6IFRoZSB3aWRvd3MgYW5k
IG9ycGhhbnMgaW1wbGVtZW50YXRpb24gaW50ZXJmZXJlcyB3aXRoIHRoZSByZWdpb24gcmFuZ2Ug
Y2hhbmdlIHJlbGF5b3V0LiAKK2Zhc3QvcmVnaW9ucy9yZWdpb25zLXdpZG93cy1hbmQtb3JwaGFu
cy5odG1sCisKICMgQ1NTIFJlZ2lvbnMgdGVzdHMgZm9yIHJlZ2lvbiBzdHlsaW5nIGFuZCBzY29w
ZWQgc3R5bGVzCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtY29u
dGFpbmVyLXN0eWxlLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVy
cmlkZS1yZWdpb24tc3R5bGluZy1tdWx0aXBsZS1yZWdpb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE2YTE3ZTMyNmVjNTg0YWY3ODZjMzA3ODdh
ODQ2YmY2OWEwODcwNDEuLmEwMGJjYzhjZTFkNzMxOTU5OTA3MDc2ZmI4ZGJmOTg4YmJlNzg2NTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3LDYgKzE3
Nyw5IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24t
c3R5bGluZy1tdWx0aXBsZS1yZWdpb25zLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQt
aW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUt
c2NvcGVkLWluLWZsb3cuaHRtbAogCisjIEZJWE1FOiBUaGUgd2lkb3dzIGFuZCBvcnBoYW5zIGlt
cGxlbWVudGF0aW9uIGludGVyZmVyZXMgd2l0aCB0aGUgcmVnaW9uIHJhbmdlIGNoYW5nZSByZWxh
eW91dC4gCitmYXN0L3JlZ2lvbnMvcmVnaW9ucy13aWRvd3MtYW5kLW9ycGhhbnMuaHRtbAorCiAj
IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyBvcHRpb24gdG8gbGF5ZXJUcmVlQXNU
ZXh0IGlzIG9ubHkgYXBwbGljYWJsZSB0byBNYWMuCiBjb21wb3NpdGluZy92aXNpYmxlLXJlY3Qg
WyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA0YjYwNWU2NzUyYWQ5MWI1MmM4N2RjN2UxOWVmMDg4ODg4ZWE0NWQzLi43ZDQ1OTQwMWQ0MzFk
ZTAxMTYzODAyYjgxYjM5MDIwNmU0YTIyYzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU1NCw2ICsxNTU0LDkgQEAgZmFzdC9yZWdpb25zL3N0eWxl
LXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLW11bHRpcGxlLXJlZ2lvbnMu
aHRtbAogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1z
dHlsaW5nLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAKKyMg
RklYTUU6IFRoZSB3aWRvd3MgYW5kIG9ycGhhbnMgaW1wbGVtZW50YXRpb24gaW50ZXJmZXJlcyB3
aXRoIHRoZSByZWdpb24gcmFuZ2UgY2hhbmdlIHJlbGF5b3V0LiAKK2Zhc3QvcmVnaW9ucy9yZWdp
b25zLXdpZG93cy1hbmQtb3JwaGFucy5odG1sCisKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRp
c2FibGVkLgogZWRpdGluZy9zaGFkb3cKIGZhc3QvZG9tL3NoYWRvdwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208540</attachid>
            <date>2013-08-12 08:17:08 -0700</date>
            <delta_ts>2013-08-13 00:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116296-20130812181706.patch</filename>
            <type>text/plain</type>
            <size>75446</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIwZmY0YTg5OWIxNTIy
ZjFlYTcyMDExYmU3ZjUzZTMxNWRjOWQ4ZC4uZWFmODQ4ZDAzZGYxMzFiZDZhMjBkYTc5NjAxNmZl
NGIzMDNhYTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEzLTA4LTA5ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ29t
cHV0ZSBjb3JyZWN0IHJlZ2lvbiByYW5nZXMgZm9yIGJveGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGF0Y2ggZXh0ZW5kcyB0aGUgcmVnaW9u
IHJhbmdlcyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6CisgICAg
ICAgIC0gdGhlIHJhbmdlIG9mIGEgYm94IGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgcmFuZ2Ug
b2YgaXRzIGNvbnRhaW5pbmcgYmxvY2sgKGV2ZW4gZm9yIGZsb2F0cyk7IHRoaXMgd2lsbCBzaW1w
bGlmeSBob3cgb3ZlcmZsb3cKKyAgICAgICAgaXMgcHJvcGFnYXRlZCB0byB0aGUgcmVnaW9ucyBh
bmQgaXQgc2hvdWxkIGxhdGVyIGNoYW5nZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcy4KKyAgICAg
ICAgLSBpZiB0aGUgcmFuZ2Ugb2YgYSBib3ggaXMgbm90IGNvcnJlY3RseSBlc3RpbWF0ZWQgYmVm
b3JlIHRoZSBsYXlvdXQgaXQgd2lsbCBiZSBtYXJrZWQgZm9yIHJlbGF5b3V0OyB0aGlzIGlzIG5l
Y2Vzc2FyeSB0byBjb3JyZWN0bHkKKyAgICAgICAgcG9zaXRpb24gYm94ZXMgdGhhdCBvdmVyZmxv
dyBuYXR1cmFsbHksIGxpa2UgZmxvYXRzLgorICAgICAgICAtIGFsbCB0aGUgYm94ZXMgaGF2ZSBh
IHJhbmdlIG5vdywgbm90IG9ubHkgdGhlIGJsb2Nrcy4KKyAgICAgICAgLSByZWdpb25BdEJsb2Nr
T2Zmc2V0IGNhbiBjbGFtcCB0byBhIGJveC4KKyAgICAgICAgLSBhbiB1bnNwbGl0dGFibGUgYm94
IGhhcyBhIHJlZ2lvbiByYW5nZSBvZiBhIHNpbmdsZSByZWdpb24sIHRoZSBvbmUgd2hlcmUgdGhl
IGJveCB0b3AgZmFsbHMgaW50by4KKworICAgICAgICBXaGVuIHRoZSBsYXlvdXQgb2YgYSBjaGls
ZCBib3ggc3RhcnRzIGl0IHRyaWVzIHRvIGdpdmUgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIG1h
eGltYWwgaGVpZ2h0IG9mIHRoZSBib3guIEFmdGVyIHRoZSBsYXlvdXQsCisgICAgICAgIGlmIHRo
ZSBlc3RpbWF0aW9uIHdhcyB3cm9uZywgdGhlIGJveCBpcyByZWxhaWQgb3V0LiBGb3IgZXhhbXBs
ZSwgaWYgYSBibG9jayB3aXRoIGEgZmxvYXQgaXMgbGFpZCBvdXQgaW4gYSByZWdpb24gYnV0IHRo
ZSBmbG9hdAorICAgICAgICBvdmVyZmxvd3MgaW4gdGhlIG5leHQgcmVnaW9uIGEgcmVsYXlvdXQg
aXMgbmVlZGVkIGZvciB0aGUgZmxvYXQgc28gaXQgY2FuIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUg
dG8gdGhlIGNvbnRhaW5pbmcgYmxvY2sKKyAgICAgICAgcmVnaW9uICh0aGlzIHN0ZXAgY2FuIGJl
IG9wdGltaXplZCBieSBtYWtpbmcgYSBsYXlvdXQgcGFzcyBvbmx5IGZvciB0aGUgY2hpbGRyZW4g
dGhhdCBkb24ndCBoYXZlIHRoZSByZWdpb24gcmFuZ2UgZW5jbG9zZWQgaW4gdGhlCisgICAgICAg
IGNvbnRhaW5pbmcgYmxvY2sgcmFuZ2UpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMv
Ym90dG9tLW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRh
YmxlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQpOiBE
b2Vzbid0IGRvIGFueXRoaW5nIGZvciByZWdpb25zIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjp1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0KTogRG9lc24ndCBkbyBhbnl0
aGluZyBmb3IgcmVnaW9ucyBub3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVs
YXlvdXRUb0F2b2lkV2lkb3dzKTogVGhlIGxheW91dCB0byBhdm9pZCB3aWRvd3MuIFdpZG93cyB1
c2UgdGhlIGxpbmUgaW5kZXggdG8gZGV0ZXJtaW5lIHRoZSBicmVhayBwb2ludCwKKyAgICAgICAg
bm90IHRoZSBSb290TGluZUJveCBwb2ludGVyIGFzIGJlZm9yZS4gVGhpcyBpcyBuZWNlc3Nhcnkg
dG8gcHJldmVudCBzdGFsZSBwb2ludGVycyBpbiBmdXJ0aGVyIGxheW91dHMuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjptYXJrRm9yUGFnaW5hdGlvblJlbGF5b3V0SWZOZWVkZWQpOiBSZWxheW91dCBmb3Igd2lk
b3dzIGR1cmluZyBsYXlvdXRCbG9jaygpLiBEb24ndCB3YWl0IHRvIGV4aXQgdGhlIGJsb2NrIGxh
eW91dC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aGFzTmV4dFBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmFwcGx5QWZ0ZXJCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6c2V0UGFnZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1
cGRhdGVNaW5pbXVtUGFnZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
cmVnaW9uQXRCbG9ja09mZnNldCk6IFRoaXMgZnVuY3Rpb24gY2FuIG5vdyBjbGFtcCBhdCBhIGJv
eC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JC
b3hDaGlsZCk6IENhbGN1bGF0ZSB0aGUgYm94IHJlZ2lvbiByYW5nZSB1c2luZyB0aGUgYm94IGhl
aWdodC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdl
Rm9yQm94Q2hpbGQpOiBFc3RpbWF0ZSB0aGUgYm94IHJlZ2lvbiByYW5nZSB1c2luZyBhIGh1Z2Ug
aGVpZ2h0IGZvciB0aGUgYm94LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQpOiBEZXRlcm1pbmUgdGhlIGZpbmFsIHJlZ2lvbiByYW5n
ZSBvZiBhIGJveC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbEhlaWdodEZvckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsVG9wRm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5k
UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJl
Z2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dmFsaWRhdGVS
ZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0Qmxv
Y2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQ
b3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Rmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxXaWR0aEZvck9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpwYWdlUmVtYWluaW5nTG9naWNhbEhl
aWdodEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjptYXBG
cm9tRmxvd1RvUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6Omxv
Z2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyQm94UmVnaW9uSW5mb0FuZEN1
c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lv
blJhbmdlRm9yQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFwcGx5
QnJlYWtBZnRlckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
YWRkRm9yY2VkUmVnaW9uQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkOjpzZXRQYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjp1cGRhdGVNaW5pbXVtUGFnZUhlaWdodCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorCiAyMDEzLTA4
LTEyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAg
ICAgICAgIFtRdF0gQWRkIFN1cHBvcnQgZm9yIGNhbnZhcyBibGVuZCBtb2RlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNDI0ODUzMzQyYjU3YTViNzcxOWFi
Mzc3NjI3N2U5M2M2ZDQwMGI1Ni4uOWU4YTdkZGE1ZGJlNzcyMDI3ZDZlMGM3OTcyNzczNWViOWU5
MTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDgw
LDE1ICsxNDgwLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaGFwZUluZm9SZXF1aXJlc1JlbGF5
b3V0KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaykKIH0KICNlbmRpZgogCi1ib29sIFJlbmRlckJs
b2NrOjp1cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCkKK2Jvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlc0JlZm9yZUJs
b2NrTGF5b3V0KCkKIHsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBpZiAoIWZsb3dUaHJl
YWQgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQorICAgIGlmICghZmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpICYmICFzaGFwZUluc2lkZUluZm8oKSkKICAgICAgICAgcmV0dXJuIHNoYXBlSW5mb1Jl
cXVpcmVzUmVsYXlvdXQodGhpcyk7Ci0jZWxzZQotICAgIGlmICghZmxvd1RocmVhZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAKICAgICBMYXlvdXRVbml0IG9sZEhlaWdodCA9IGxv
Z2ljYWxIZWlnaHQoKTsKICAgICBMYXlvdXRVbml0IG9sZFRvcCA9IGxvZ2ljYWxUb3AoKTsKQEAg
LTE0OTgsMjEgKzE0OTQsMTIgQEAgYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uc0FuZFNo
YXBlc0JlZm9yZUNoaWxkTGF5b3V0KFJlbmRlckZsb3dUaHJlYWQqIGZsb3cKICAgICBzZXRMb2dp
Y2FsSGVpZ2h0KFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKSk7CiAgICAgdXBk
YXRlTG9naWNhbEhlaWdodCgpOwogCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgY29tcHV0
ZVNoYXBlU2l6ZSgpOwotI2VuZGlmCi0KLSAgICAvLyBTZXQgb3VyIHN0YXJ0IGFuZCBlbmQgcmVn
aW9ucy4gTm8gcmVnaW9ucyBhYm92ZSBvciBiZWxvdyB1cyB3aWxsIGJlIGNvbnNpZGVyZWQgYnkg
b3VyIGNoaWxkcmVuLiBUaGV5IGFyZQotICAgIC8vIGVmZmVjdGl2ZWx5IGNsYW1wZWQgdG8gb3Vy
IHJlZ2lvbiByYW5nZS4KLSAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhmbG93VGhyZWFk
KTsKIAogICAgIHNldExvZ2ljYWxIZWlnaHQob2xkSGVpZ2h0KTsKICAgICBzZXRMb2dpY2FsVG9w
KG9sZFRvcCk7CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICByZXR1cm4gc2hhcGVJbmZv
UmVxdWlyZXNSZWxheW91dCh0aGlzKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiB9CiAKQEAgLTE1MjcsMjMgKzE1MTQsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVNo
YXBlU2l6ZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uc0Fu
ZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCwgYm9v
bCBoZWlnaHRDaGFuZ2VkKQordm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQWZ0ZXJCbG9j
a0xheW91dChib29sIGhlaWdodENoYW5nZWQpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAg
ICAgLy8gQSBwcmV2aW91cyBzaWJsaW5nIGhhcyBjaGFuZ2VkIGRpbWVuc2lvbiwgc28gd2UgbmVl
ZCB0byByZWxheW91dCB0aGUgc2hhcGUgd2l0aCB0aGUgY29udGVudAogICAgIFNoYXBlSW5zaWRl
SW5mbyogc2hhcGVJbnNpZGVJbmZvID0gbGF5b3V0U2hhcGVJbnNpZGVJbmZvKCk7CiAgICAgaWYg
KGhlaWdodENoYW5nZWQgJiYgc2hhcGVJbnNpZGVJbmZvKQogICAgICAgICBzaGFwZUluc2lkZUlu
Zm8tPmRpcnR5U2hhcGVTaXplKCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShoZWlnaHRDaGFu
Z2VkKTsKICNlbmRpZgotICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJsb2NrKGZsb3dUaHJlYWQp
OwotfQotCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCbG9jayhSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotewotICAgIGlmIChmbG93VGhyZWFkKQotICAgICAg
ICBmbG93VGhyZWFkLT5zZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBvZmZzZXRGcm9tTG9naWNh
bFRvcE9mRmlyc3RQYWdlKCkpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVMb2dpY2Fs
V2lkdGhBbmRDb2x1bW5XaWR0aCgpCkBAIC0xNTkxLDYgKzE1NjksMTcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6Y2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdodENoYW5nZShMYXlvdXRVbml0JiBw
YWdlTG9naWNhbEgKICAgICB9CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2s6OnJlbGF5b3V0VG9Bdm9p
ZFdpZG93cyhMYXlvdXRTdGF0ZU1haW50YWluZXImIHN0YXRlUHVzaGVyKQoreworICAgIGlmICgh
c2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3RhdGVQdXNoZXIucG9wKCk7CisgICAgc2V0RXZlckhhZExheW91dCh0cnVlKTsKKyAg
ICBsYXlvdXRCbG9jayhmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC0xNjI1LDcg
KzE2MTQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaAogICAgIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGxvZ2lj
YWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCiAgICAgICAgIHJlbGF5b3V0Q2hp
bGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVSZWdpb25zQW5kU2hhcGVzQmVmb3JlQ2hpbGRM
YXlvdXQoZmxvd1RocmVhZCkpCisgICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0
KCkpCiAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogCiAgICAgLy8gV2UgdXNlIGZv
dXIgdmFsdWVzLCBtYXhUb3BQb3MsIG1heFRvcE5lZywgbWF4Qm90dG9tUG9zLCBhbmQgbWF4Qm90
dG9tTmVnLCB0byB0cmFjawpAQCAtMTY2Miw4ICsxNjUxLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdoCiAgICAgaWYgKGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpID4gKGxvZ2ljYWxIZWln
aHQoKSAtIHRvQWRkKSAmJiBleHBhbmRzVG9FbmNsb3NlT3ZlcmhhbmdpbmdGbG9hdHMoKSkKICAg
ICAgICAgc2V0TG9naWNhbEhlaWdodChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSArIHRvQWRk
KTsKICAgICAKLSAgICBpZiAocmVsYXlvdXRGb3JQYWdpbmF0aW9uKGhhc1NwZWNpZmllZFBhZ2VM
b2dpY2FsSGVpZ2h0LCBwYWdlTG9naWNhbEhlaWdodCwgc3RhdGVQdXNoZXIpKQorICAgIGlmIChy
ZWxheW91dEZvclBhZ2luYXRpb24oaGFzU3BlY2lmaWVkUGFnZUxvZ2ljYWxIZWlnaHQsIHBhZ2VM
b2dpY2FsSGVpZ2h0LCBzdGF0ZVB1c2hlcikgfHwgcmVsYXlvdXRUb0F2b2lkV2lkb3dzKHN0YXRl
UHVzaGVyKSkgeworICAgICAgICBBU1NFUlQoIXNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93
KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIG91ciBuZXcg
aGVpZ2h0LgogICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOwpAQCAt
MTY5NSw3ICsxNjg2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2gKIAogICAgIGxheW91dFBv
c2l0aW9uZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBk
YXRlUmVnaW9uc0FuZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCwgaGVpZ2h0Q2hh
bmdlZCk7CisgICAgdXBkYXRlU2hhcGVzQWZ0ZXJCbG9ja0xheW91dChoZWlnaHRDaGFuZ2VkKTsK
IAogICAgIC8vIEFkZCBvdmVyZmxvdyBmcm9tIGNoaWxkcmVuICh1bmxlc3Mgd2UncmUgbXVsdGkt
Y29sdW1uLCBzaW5jZSBpbiB0aGF0IGNhc2UgYWxsIG91ciBjaGlsZCBvdmVyZmxvdyBpcyBjbGlw
cGVkIGFueXdheSkuCiAgICAgY29tcHV0ZU92ZXJmbG93KG9sZENsaWVudEFmdGVyRWRnZSk7CkBA
IC0yNjMyLDYgKzI2MjMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJl
bmRlckJveCogY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdpbkluZm8sIExheQogI2VuZGlmCiAgICAg
Ly8gR28gYWhlYWQgYW5kIHBvc2l0aW9uIHRoZSBjaGlsZCBhcyB0aG91Z2ggaXQgZGlkbid0IGNv
bGxhcHNlIHdpdGggdGhlIHRvcC4KICAgICBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQoY2hpbGQsIGxv
Z2ljYWxUb3BFc3RpbWF0ZSwgQXBwbHlMYXlvdXREZWx0YSk7CisgICAgZXN0aW1hdGVSZWdpb25S
YW5nZUZvckJveENoaWxkKGNoaWxkKTsKIAogICAgIFJlbmRlckJsb2NrKiBjaGlsZFJlbmRlckJs
b2NrID0gY2hpbGQtPmlzUmVuZGVyQmxvY2soKSA/IHRvUmVuZGVyQmxvY2soY2hpbGQpIDogMDsK
ICAgICBib29sIG1hcmtEZXNjZW5kYW50c1dpdGhGbG9hdHMgPSBmYWxzZTsKQEAgLTI3MDgsNiAr
MjcwMCwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCog
Y2hpbGQsIE1hcmdpbkluZm8mIG1hcmdpbkluZm8sIExheQogICAgICAgICBjaGlsZC0+bGF5b3V0
SWZOZWVkZWQoKTsKICAgICB9CiAKKyAgICBpZiAodXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGls
ZChjaGlsZCkpIHsKKyAgICAgICAgY2hpbGQtPnNldE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5
VGhpcyk7CisgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOworICAgIH0KKwogICAgIC8v
IFdlIGFyZSBubyBsb25nZXIgYXQgdGhlIHRvcCBvZiB0aGUgYmxvY2sgaWYgd2UgZW5jb3VudGVy
IGEgbm9uLWVtcHR5IGNoaWxkLiAgCiAgICAgLy8gVGhpcyBoYXMgdG8gYmUgZG9uZSBhZnRlciBj
aGVja2luZyBmb3IgY2xlYXIsIHNvIHRoYXQgbWFyZ2lucyBjYW4gYmUgcmVzZXQgaWYgYSBjbGVh
ciBvY2N1cnJlZC4KICAgICBpZiAobWFyZ2luSW5mby5hdEJlZm9yZVNpZGVPZkJsb2NrKCkgJiYg
IWNoaWxkLT5pc1NlbGZDb2xsYXBzaW5nQmxvY2soKSkKQEAgLTI4NzYsNiArMjg3Myw4IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgYm9vbCBmaXhlZFBvc2l0CiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0
ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWREZXNjZW5kYW50cy0+ZW5kKCk7CiAgICAgZm9yIChUcmFj
a2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkRGVzY2VuZGFu
dHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICByID0gKml0OworICAgICAg
ICAKKyAgICAgICAgZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpOwogCiAgICAgICAg
IC8vIEEgZml4ZWQgcG9zaXRpb24gZWxlbWVudCB3aXRoIGFuIGFic29sdXRlIHBvc2l0aW9uZWQg
YW5jZXN0b3IgaGFzIG5vIHdheSBvZiBrbm93aW5nIGlmIHRoZSBsYXR0ZXIgaGFzIGNoYW5nZWQg
cG9zaXRpb24uIFNvCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmaXhlZCBwb3NpdGlvbiBlbGVt
ZW50LCBtYXJrIGl0IGZvciBsYXlvdXQgaWYgaXQgaGFzIGFuIGFic3BvcyBhbmNlc3RvciBhbmQg
bmVlZHMgdG8gbW92ZSB3aXRoIHRoYXQgYW5jZXN0b3IsIGkuZS4gCkBAIC0yOTE2LDcgKzI5MTUs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAgICAgICAgICAgICAgIHItPnVwZGF0ZUxv
Z2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgb2xkTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JD
aGlsZChyKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByLT5sYXlvdXRJZk5lZWRl
ZCgpOwogCiAgICAgICAgIC8vIExheSBvdXQgYWdhaW4gaWYgb3VyIGVzdGltYXRlIHdhcyB3cm9u
Zy4KQEAgLTI5MjQsNiArMjkyMywxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGJvb2wgZml4ZWRQb3NpdAogICAgICAg
ICAgICAgci0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBNYXJrT25seVRoaXMpOwogICAgICAg
ICAgICAgci0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICh1cGRh
dGVSZWdpb25SYW5nZUZvckJveENoaWxkKHIpKSB7CisgICAgICAgICAgICByLT5zZXROZWVkc0xh
eW91dCh0cnVlLCBNYXJrT25seVRoaXMpOworICAgICAgICAgICAgci0+bGF5b3V0SWZOZWVkZWQo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAoaGFzQ29sdW1ucygpKQpAQCAtMjk0
OSw3ICsyOTUzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bWFya0ZvclBhZ2luYXRpb25SZWxheW91
dElmTmVlZGVkKCkKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHZpZXcoKS0+bGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKCkg
fHwgKHZpZXcoKS0+bGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHQoKSAmJiB2aWV3KCkt
PmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsT2Zmc2V0KHRoaXMsIGxvZ2ljYWxUb3AoKSkgIT0g
cGFnZUxvZ2ljYWxPZmZzZXQoKSkgfHwgc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSkK
KyAgICBpZiAodmlldygpLT5sYXlvdXRTdGF0ZSgpLT5wYWdlTG9naWNhbEhlaWdodENoYW5nZWQo
KSB8fCAodmlldygpLT5sYXlvdXRTdGF0ZSgpLT5wYWdlTG9naWNhbEhlaWdodCgpICYmIHZpZXco
KS0+bGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxPZmZzZXQodGhpcywgbG9naWNhbFRvcCgpKSAh
PSBwYWdlTG9naWNhbE9mZnNldCgpKSkKICAgICAgICAgc2V0Q2hpbGROZWVkc0xheW91dCh0cnVl
LCBNYXJrT25seVRoaXMpOwogfQogCkBAIC00MjQ1LDYgKzQyNDksNyBAQCBib29sIFJlbmRlckJs
b2NrOjpwb3NpdGlvbk5ld0Zsb2F0cygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBSZW5kZXJCb3gqIGNoaWxkQm94ID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCk7CisKICAg
ICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxMZWZ0TWFyZ2luID0gc3R5bGUoKS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gbWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZEJveCkgOiBtYXJn
aW5FbmRGb3JDaGlsZChjaGlsZEJveCk7CiAKICAgICAgICAgTGF5b3V0UmVjdCBvbGRSZWN0ID0g
Y2hpbGRCb3gtPmZyYW1lUmVjdCgpOwpAQCAtNDI2MSw2ICs0MjY2LDggQEAgYm9vbCBSZW5kZXJC
bG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogICAgICAgICBzZXRMb2dpY2FsTGVmdEZvckNoaWxk
KGNoaWxkQm94LCBmbG9hdExvZ2ljYWxMb2NhdGlvbi54KCkgKyBjaGlsZExvZ2ljYWxMZWZ0TWFy
Z2luKTsKICAgICAgICAgc2V0TG9naWNhbFRvcEZvckNoaWxkKGNoaWxkQm94LCBmbG9hdExvZ2lj
YWxMb2NhdGlvbi55KCkgKyBtYXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZEJveCkpOwogCisgICAg
ICAgIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjaGlsZEJveCk7CisKICAgICAgICAg
TGF5b3V0U3RhdGUqIGxheW91dFN0YXRlID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpOwogICAgICAg
ICBib29sIGlzUGFnaW5hdGVkID0gbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCk7CiAgICAgICAg
IGlmIChpc1BhZ2luYXRlZCAmJiAhY2hpbGRCb3gtPm5lZWRzTGF5b3V0KCkpCkBAIC00Mjk1LDYg
KzQzMDIsMTEgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogICAgICAg
ICAgICAgICAgICAgICBjaGlsZEJsb2NrLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIE1hcmtP
bmx5VGhpcyk7CiAgICAgICAgICAgICAgICAgY2hpbGRCb3gtPmxheW91dElmTmVlZGVkKCk7CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh1cGRhdGVSZWdpb25SYW5nZUZvckJveENo
aWxkKGNoaWxkQm94KSkgeworICAgICAgICAgICAgICAgIGNoaWxkQm94LT5zZXROZWVkc0xheW91
dCh0cnVlLCBNYXJrT25seVRoaXMpOworICAgICAgICAgICAgICAgIGNoaWxkQm94LT5sYXlvdXRJ
Zk5lZWRlZCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgc2V0TG9naWNh
bFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBmbG9hdExvZ2ljYWxMb2NhdGlvbi55KCkpOwpA
QCAtNzIzMSw3ICs3MjQzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2V0UGFnZUxvZ2ljYWxPZmZz
ZXQoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0KQogICAgIG1fcmFyZURhdGEtPm1fcGFnZUxvZ2lj
YWxPZmZzZXQgPSBsb2dpY2FsT2Zmc2V0OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpzZXRCcmVh
a0F0TGluZVRvQXZvaWRXaWRvdyhSb290SW5saW5lQm94KiBsaW5lVG9CcmVhaykKK3ZvaWQgUmVu
ZGVyQmxvY2s6OnNldEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGludCBsaW5lVG9CcmVhaykKIHsK
ICAgICBBU1NFUlQobGluZVRvQnJlYWspOwogICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTcyNDUs
NyArNzI1Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2
b2lkV2lkb3coKSBjb25zdAogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fcmFyZURhdGEtPm1fc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3cgPSBmYWxzZTsK
LSAgICBtX3JhcmVEYXRhLT5tX2xpbmVCcmVha1RvQXZvaWRXaWRvdyA9IDA7CisgICAgbV9yYXJl
RGF0YS0+bV9saW5lQnJlYWtUb0F2b2lkV2lkb3cgPSAtMTsKIH0KIAogdm9pZCBSZW5kZXJCbG9j
azo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CkBAIC03NDA3LDcgKzc0MTksNyBAQCBib29sIFJl
bmRlckJsb2NrOjpoYXNOZXh0UGFnZShMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3Vu
ZGFyeVJ1bGUgcGFnZUJvdQogCiAgICAgLy8gU2VlIGlmIHdlJ3JlIGluIHRoZSBsYXN0IHJlZ2lv
bi4KICAgICBMYXlvdXRVbml0IHBhZ2VPZmZzZXQgPSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKCkgKyBsb2dpY2FsT2Zmc2V0OwotICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gZmxv
d1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldChwYWdlT2Zmc2V0LCB0aGlzKTsKKyAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9IGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywg
cGFnZU9mZnNldCwgdGhpcyk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKQEAgLTc0NjIsNyArNzQ3NCw3IEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFwcGx5QmVmb3JlQnJlYWsoUmVuZGVyQm94KiBjaGls
ZCwgTGF5b3V0VW5pdCBsb2dpY2FsT2ZmCiAgICAgICAgICAgICB2aWV3KCktPmxheW91dFN0YXRl
KCktPmFkZEZvcmNlZENvbHVtbkJyZWFrKGNoaWxkLCBsb2dpY2FsT2Zmc2V0KTsKICAgICAgICAg
aWYgKGNoZWNrUmVnaW9uQnJlYWtzKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IG9mZnNldEJy
ZWFrQWRqdXN0bWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+YWRkRm9yY2Vk
UmVnaW9uQnJlYWsob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgbG9naWNhbE9m
ZnNldCwgY2hpbGQsIHRydWUsICZvZmZzZXRCcmVha0FkanVzdG1lbnQpKQorICAgICAgICAgICAg
aWYgKGZsb3dUaHJlYWQtPmFkZEZvcmNlZFJlZ2lvbkJyZWFrKHRoaXMsIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2ljYWxPZmZzZXQsIGNoaWxkLCB0cnVlLCAmb2Zmc2V0
QnJlYWtBZGp1c3RtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldCAr
IG9mZnNldEJyZWFrQWRqdXN0bWVudDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV4dFBh
Z2VMb2dpY2FsVG9wKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpOwpAQCAtNzQ4
OSw3ICs3NTAxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YXBwbHlBZnRlckJyZWFrKFJl
bmRlckJveCogY2hpbGQsIExheW91dFVuaXQgbG9naWNhbE9mZnMKICAgICAgICAgICAgIHZpZXco
KS0+bGF5b3V0U3RhdGUoKS0+YWRkRm9yY2VkQ29sdW1uQnJlYWsoY2hpbGQsIGxvZ2ljYWxPZmZz
ZXQpOwogICAgICAgICBpZiAoY2hlY2tSZWdpb25CcmVha3MpIHsKICAgICAgICAgICAgIExheW91
dFVuaXQgb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0gMDsKLSAgICAgICAgICAgIGlmIChmbG93VGhy
ZWFkLT5hZGRGb3JjZWRSZWdpb25CcmVhayhvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KCkgKyBsb2dpY2FsT2Zmc2V0ICsgbWFyZ2luT2Zmc2V0LCBjaGlsZCwgZmFsc2UsICZvZmZzZXRC
cmVha0FkanVzdG1lbnQpKQorICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQtPmFkZEZvcmNlZFJl
Z2lvbkJyZWFrKHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGxvZ2lj
YWxPZmZzZXQgKyBtYXJnaW5PZmZzZXQsIGNoaWxkLCBmYWxzZSwgJm9mZnNldEJyZWFrQWRqdXN0
bWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxPZmZzZXQgKyBtYXJnaW5PZmZz
ZXQgKyBvZmZzZXRCcmVha0FkanVzdG1lbnQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5l
eHRQYWdlTG9naWNhbFRvcChsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KTsKQEAg
LTc1ODgsMTMgKzc2MDAsMTMgQEAgYm9vbCBSZW5kZXJCbG9jazo6cHVzaFRvTmV4dFBhZ2VXaXRo
TWluaW11bUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCYgYWRqdXN0bWVudCwKIHZvaWQgUmVuZGVy
QmxvY2s6OnNldFBhZ2VCcmVhayhMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNo
b3J0YWdlKQogewogICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBmbG93VGhyZWFkLT5zZXRQYWdlQnJlYWso
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgb2Zmc2V0LCBzcGFjZVNob3J0YWdl
KTsKKyAgICAgICAgZmxvd1RocmVhZC0+c2V0UGFnZUJyZWFrKHRoaXMsIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSArIG9mZnNldCwgc3BhY2VTaG9ydGFnZSk7CiB9CiAKIHZvaWQg
UmVuZGVyQmxvY2s6OnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KExheW91dFVuaXQgb2Zmc2V0LCBM
YXlvdXRVbml0IG1pbkhlaWdodCkKIHsKICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgZmxvd1RocmVhZC0+
dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgp
ICsgb2Zmc2V0LCBtaW5IZWlnaHQpOworICAgICAgICBmbG93VGhyZWFkLT51cGRhdGVNaW5pbXVt
UGFnZUhlaWdodCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBvZmZz
ZXQsIG1pbkhlaWdodCk7CiAgICAgZWxzZSBpZiAoQ29sdW1uSW5mbyogY29sSW5mbyA9IHZpZXco
KS0+bGF5b3V0U3RhdGUoKS0+bV9jb2x1bW5JbmZvKQogICAgICAgICBjb2xJbmZvLT51cGRhdGVN
aW5pbXVtQ29sdW1uSGVpZ2h0KG1pbkhlaWdodCk7CiB9CkBAIC03NjU1LDggKzc2NjcsOSBAQCB2
b2lkIFJlbmRlckJsb2NrOjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKFJvb3RJbmxp
bmVCb3gqIGxpbmVCb3gsIExheW91dAogICAgICAgICByZXR1cm47CiAgICAgTGF5b3V0VW5pdCBy
ZW1haW5pbmdMb2dpY2FsSGVpZ2h0ID0gcGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZz
ZXQobG9naWNhbE9mZnNldCwgRXhjbHVkZVBhZ2VCb3VuZGFyeSk7CiAKLSAgICBpZiAocmVtYWlu
aW5nTG9naWNhbEhlaWdodCA8IGxpbmVIZWlnaHQgfHwgKHNob3VsZEJyZWFrQXRMaW5lVG9Bdm9p
ZFdpZG93KCkgJiYgbGluZUJyZWFrVG9Bdm9pZFdpZG93KCkgPT0gbGluZUJveCkpIHsKLSAgICAg
ICAgaWYgKHNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkgJiYgbGluZUJyZWFrVG9Bdm9p
ZFdpZG93KCkgPT0gbGluZUJveCkKKyAgICBpbnQgbGluZUluZGV4ID0gbGluZUNvdW50KGxpbmVC
b3gpOworICAgIGlmIChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0IDwgbGluZUhlaWdodCB8fCAoc2hv
dWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSAmJiBsaW5lQnJlYWtUb0F2b2lkV2lkb3coKSA9
PSBsaW5lSW5kZXgpKSB7CisgICAgICAgIGlmIChzaG91bGRCcmVha0F0TGluZVRvQXZvaWRXaWRv
dygpICYmIGxpbmVCcmVha1RvQXZvaWRXaWRvdygpID09IGxpbmVJbmRleCkKICAgICAgICAgICAg
IGNsZWFyU2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKTsKICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBhIG5vbi11bmlmb3JtIHBhZ2UgaGVpZ2h0LCB0aGVuIHdlIGhhdmUgdG8gc2hpZnQgZnVy
dGhlciBwb3NzaWJseS4KICAgICAgICAgaWYgKCFoYXNVbmlmb3JtUGFnZUxvZ2ljYWxIZWlnaHQg
JiYgIXB1c2hUb05leHRQYWdlV2l0aE1pbmltdW1Mb2dpY2FsSGVpZ2h0KHJlbWFpbmluZ0xvZ2lj
YWxIZWlnaHQsIGxvZ2ljYWxPZmZzZXQsIGxpbmVIZWlnaHQpKQpAQCAtNzY2OCw3ICs3NjgxLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbihSb290
SW5saW5lQm94KiBsaW5lQm94LCBMYXlvdXQKICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2lj
YWxIZWlnaHQgPSBsaW5lSGVpZ2h0ICsgbWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxPZmZzZXQp
OwogICAgICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQgPSBoYXNV
bmlmb3JtUGFnZUxvZ2ljYWxIZWlnaHQgPyBwYWdlTG9naWNhbEhlaWdodCA6IHBhZ2VMb2dpY2Fs
SGVpZ2h0Rm9yT2Zmc2V0KGxvZ2ljYWxPZmZzZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsK
ICAgICAgICAgc2V0UGFnZUJyZWFrKGxvZ2ljYWxPZmZzZXQsIGxpbmVIZWlnaHQgLSByZW1haW5p
bmdMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgaWYgKCgobGluZUJveCA9PSBmaXJzdFJvb3RCb3go
KSAmJiB0b3RhbExvZ2ljYWxIZWlnaHQgPCBwYWdlTG9naWNhbEhlaWdodEF0TmV3T2Zmc2V0KSB8
fCAoIXN0eWxlKCktPmhhc0F1dG9PcnBoYW5zKCkgJiYgc3R5bGUoKS0+b3JwaGFucygpID49IGxp
bmVDb3VudChsaW5lQm94KSkpCisgICAgICAgIGlmICgoKGxpbmVCb3ggPT0gZmlyc3RSb290Qm94
KCkgJiYgdG90YWxMb2dpY2FsSGVpZ2h0IDwgcGFnZUxvZ2ljYWxIZWlnaHRBdE5ld09mZnNldCkg
fHwgKCFzdHlsZSgpLT5oYXNBdXRvT3JwaGFucygpICYmIHN0eWxlKCktPm9ycGhhbnMoKSA+PSBs
aW5lSW5kZXgpKQogICAgICAgICAgICAgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFp
c1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgc2V0UGFnaW5hdGlvblN0cnV0KHJlbWFpbmluZ0xv
Z2ljYWxIZWlnaHQgKyBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbE9mZnNldCkpOwogICAgICAg
ICBlbHNlIHsKQEAgLTc4MDAsNyArNzgxMyw3IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6
OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCBibG9ja09mZnNldCkgY29uc3QKICAgICBp
ZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1ZhbGlkUmVnaW9uSW5mbygpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zm
c2V0KG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSArIGJsb2NrT2Zmc2V0LCB0cnVl
KTsKKyAgICByZXR1cm4gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBibG9ja09mZnNldCwgdHJ1ZSk7CiB9CiAK
IHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKQpAQCAtNzgyOCwyOCArNzg0MSw2
OSBAQCBib29sIFJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKFJlbmRl
ckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIGNvbgogICAgIHJldHVybiBmbG93VGhyZWFkLT5sb2dp
Y2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2sodGhpcyk7CiB9CiAKLVJlbmRlclJlZ2lv
biogUmVuZGVyQmxvY2s6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiBy
ZWdpb24pIGNvbnN0Cit2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hD
aGlsZChjb25zdCBSZW5kZXJCb3gqIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxv
d1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQoaXNSZW5kZXJWaWV3KCkgfHwgKHJlZ2lvbiAmJiBmbG93VGhyZWFkKSk7Ci0g
ICAgaWYgKGlzUmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gcmVnaW9uOwotCi0gICAgLy8g
V2UgbmVlZCB0byBjbGFtcCB0byB0aGUgYmxvY2ssIHNpbmNlIHdlIHdhbnQgYW55IGxpbmVzIG9y
IGJsb2NrcyB0aGF0IG92ZXJmbG93IG91dCBvZiB0aGUKLSAgICAvLyBsb2dpY2FsIHRvcCBvciBs
b2dpY2FsIGJvdHRvbSBvZiB0aGUgYmxvY2sgdG8gc2l6ZSBhcyB0aG91Z2ggdGhlIGJvcmRlciBi
b3ggaW4gdGhlIGZpcnN0IGFuZAotICAgIC8vIGxhc3QgcmVnaW9ucyBleHRlbmRlZCBpbmZpbml0
ZWx5LiBPdGhlcndpc2UgdGhlIGxpbmVzIGFyZSBnb2luZyB0byBzaXplIGFjY29yZGluZyB0byB0
aGUgcmVnaW9ucwotICAgIC8vIHRoZXkgb3ZlcmZsb3cgaW50bywgd2hpY2ggbWFrZXMgbm8gc2Vu
c2Ugd2hlbiB0aGlzIGJsb2NrIGRvZXNuJ3QgZXhpc3QgaW4gfHJlZ2lvbnwgYXQgYWxsLgogICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247
Ci0gICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24s
IGVuZFJlZ2lvbik7Ci0gICAgCi0gICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZs
b3dUaHJlYWRDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAo
ZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBl
bmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQotICAgICAgICByZXR1
cm4gZW5kUmVnaW9uOwotICAgIAotICAgIHJldHVybiByZWdpb247CisgICAgTGF5b3V0VW5pdCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UoKTsKKyAgICBpZiAoYm94LT5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRp
b24oKSkKKyAgICAgICAgc3RhcnRSZWdpb24gPSBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdp
b25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiwg
dHJ1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+cmVn
aW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24s
IHRydWUpOworICAgICAgICBlbmRSZWdpb24gPSBmbG93VGhyZWFkLT5yZWdpb25BdEJsb2NrT2Zm
c2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiArIGxvZ2ljYWxIZWln
aHRGb3JDaGlsZChib3gpLCB0cnVlKTsKKyAgICB9CisKKyAgICBmbG93VGhyZWFkLT5zZXRSZWdp
b25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworfQorCit2b2lkIFJl
bmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94
KiBib3gpIGNvbnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJl
YWQtPmhhc1JlZ2lvbnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGJveC0+aXNVbnNw
bGl0dGFibGVGb3JQYWdpbmF0aW9uKCkpIHsKKyAgICAgICAgY29tcHV0ZVJlZ2lvblJhbmdlRm9y
Qm94Q2hpbGQoYm94KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBlc3RpbWF0ZWRWYWx1ZXM7CisgICAgYm94LT5jb21wdXRlTG9naWNh
bEhlaWdodChSZW5kZXJGbG93VGhyZWFkOjptYXhMb2dpY2FsSGVpZ2h0KCksIGxvZ2ljYWxUb3BG
b3JDaGlsZChib3gpLCBlc3RpbWF0ZWRWYWx1ZXMpOworCisgICAgTGF5b3V0VW5pdCBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gPSBib3gtPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZG
aXJzdFBhZ2UoKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+
cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdp
b24sIHRydWUpOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVn
aW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24g
KyBlc3RpbWF0ZWRWYWx1ZXMubV9leHRlbnQsIHRydWUpOworCisgICAgZmxvd1RocmVhZC0+c2V0
UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKK30KKworYm9v
bCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJC
b3gqIGJveCkgY29uc3QKK3sKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1Ro
cmVhZC0+aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7
CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwg
ZW5kUmVnaW9uKTsKKworICAgIGNvbXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGJveCk7CisK
KyAgICBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24q
IG5ld0VuZFJlZ2lvbiA9IDA7CisgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3go
Ym94LCBuZXdTdGFydFJlZ2lvbiwgbmV3RW5kUmVnaW9uKTsKKworICAgIC8vIFRoZSByZWdpb24g
cmFuZ2Ugb2YgdGhlIGJveCBoYXMgY2hhbmdlZC4gU29tZSBib3hlcyAoZS5nIGZsb2F0cykgbWF5
IGhhdmUgYmVlbiBwb3NpdGlvbmVkIGFzc3VtaW5nCisgICAgLy8gYSBkaWZmZXJlbnQgcmFuZ2Uu
CisgICAgLy8gRklYTUU6IEJlIHNtYXJ0ZXIgYWJvdXQgdGhpcy4gV2UgZG9uJ3QgbmVlZCB0byBy
ZWxheW91dCBhbGwgdGhlIHRpbWUuCisgICAgaWYgKG5ld1N0YXJ0UmVnaW9uICE9IHN0YXJ0UmVn
aW9uIHx8IG5ld0VuZFJlZ2lvbiAhPSBlbmRSZWdpb24pCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb2xsYXBz
ZWRNYXJnaW5CZWZvcmVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiYTkzYmJiNDFmNGZhOTNiMzg2
ZGVhYzgzMTg5Nzc5MjYwYWQ5ODcxLi5jOTY0YmVkNTI4NDE2ZGFkMWE2ZGJjYWM3MGNjOWY2ZGQ1
ZmIwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzI2LDgg
KzMyNiw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQnJlYWtBdExpbmVUb0F2b2lkV2lk
b3coKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURhdGEtPm1fc2hvdWxkQnJl
YWtBdExpbmVUb0F2b2lkV2lkb3c7IH0KICAgICB2b2lkIGNsZWFyU2hvdWxkQnJlYWtBdExpbmVU
b0F2b2lkV2lkb3coKSBjb25zdDsKLSAgICBSb290SW5saW5lQm94KiBsaW5lQnJlYWtUb0F2b2lk
V2lkb3coKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9saW5lQnJl
YWtUb0F2b2lkV2lkb3cgOiAwOyB9Ci0gICAgdm9pZCBzZXRCcmVha0F0TGluZVRvQXZvaWRXaWRv
dyhSb290SW5saW5lQm94Kik7CisgICAgaW50IGxpbmVCcmVha1RvQXZvaWRXaWRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX2xpbmVCcmVha1RvQXZvaWRXaWRv
dyA6IC0xOyB9CisgICAgdm9pZCBzZXRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyhpbnQpOwogCiAg
ICAgLy8gVGhlIHBhZ2UgbG9naWNhbCBvZmZzZXQgaXMgdGhlIG9iamVjdCdzIG9mZnNldCBmcm9t
IHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW4gdGhlIHBhZ2UgcHJvZ3Jlc3Npb24KICAgICAvLyBkaXJl
Y3Rpb24gKHNvIGFuIHgtb2Zmc2V0IGluIHZlcnRpY2FsIHRleHQgYW5kIGEgeS1vZmZzZXQgZm9y
IGhvcml6b250YWwgdGV4dCkuCkBAIC0zNDcsOSArMzQ3LDkgQEAgcHVibGljOgogCiAgICAgLy8g
QWNjZXNzb3JzIGZvciBsb2dpY2FsIHdpZHRoL2hlaWdodCBhbmQgbWFyZ2lucyBpbiB0aGUgY29u
dGFpbmluZyBibG9jaydzIGJsb2NrLWZsb3cgZGlyZWN0aW9uLgogICAgIGVudW0gQXBwbHlMYXlv
dXREZWx0YU1vZGUgeyBBcHBseUxheW91dERlbHRhLCBEb05vdEFwcGx5TGF5b3V0RGVsdGEgfTsK
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hp
bGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+d2lkdGgoKSA6
IGNoaWxkLT5oZWlnaHQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxk
KGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+aGVpZ2h0KCkgOiBjaGlsZC0+d2lkdGgoKTsgfQotICAgIExheW91dFVuaXQg
bG9naWNhbFRvcEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+eSgpIDogY2hpbGQtPngoKTsgfQorICAgIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT53aWR0aCgpIDog
Y2hpbGQtPmhlaWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGNoaWxkLT5oZWlnaHQoKSA6IGNoaWxkLT53aWR0aCgpOyB9CisgICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QgeyBy
ZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55KCkgOiBjaGlsZC0+eCgp
OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExh
eW91dFVuaXQgbG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RBcHBseUxh
eW91dERlbHRhKTsKICAgICB2b2lkIHNldExvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RB
cHBseUxheW91dERlbHRhKTsKICAgICBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZUZvckNoaWxkKGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gY2hpbGQtPm1h
cmdpbkJlZm9yZShzdHlsZSgpKTsgfQpAQCAtNTkyLDkgKzU5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgfQogI2VuZGlmCiAKLSAgICBib29sIHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGls
ZExheW91dChSZW5kZXJGbG93VGhyZWFkKik7Ci0gICAgdm9pZCB1cGRhdGVSZWdpb25zQW5kU2hh
cGVzQWZ0ZXJDaGlsZExheW91dChSZW5kZXJGbG93VGhyZWFkKiwgYm9vbCBoZWlnaHRDaGFuZ2Vk
ID0gZmFsc2UpOwotICAgIHZvaWQgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQmxvY2soUmVuZGVyRmxv
d1RocmVhZCopOworICAgIGJvb2wgdXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKTsKKyAg
ICB2b2lkIHVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoYm9vbCBoZWlnaHRDaGFuZ2VkID0g
ZmFsc2UpOworICAgIHZvaWQgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVu
ZGVyQm94KikgY29uc3Q7CisKKyAgICB2b2lkIGVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGls
ZChjb25zdCBSZW5kZXJCb3gqKSBjb25zdDsKKyAgICBib29sIHVwZGF0ZVJlZ2lvblJhbmdlRm9y
Qm94Q2hpbGQoY29uc3QgUmVuZGVyQm94KikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUJsb2Nr
Q2hpbGREaXJ0eUJpdHNCZWZvcmVMYXlvdXQoYm9vbCByZWxheW91dENoaWxkcmVuLCBSZW5kZXJC
b3gqKTsKIApAQCAtNjUzLDYgKzY1Niw4IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIHRvIGxh
eSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9mIGEgcnVi
eSBydW4uCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENo
aWxkKGJvb2wgLypyZWxheW91dENoaWxkcmVuKi8pIHsgcmV0dXJuIDA7IH0KIAorICAgIGJvb2wg
cmVsYXlvdXRUb0F2b2lkV2lkb3dzKExheW91dFN0YXRlTWFpbnRhaW5lciYpOworCiAgICAgdm9p
ZCBjcmVhdGVGaXJzdExldHRlclJlbmRlcmVyKFJlbmRlck9iamVjdCogZmlyc3RMZXR0ZXJCbG9j
aywgUmVuZGVyT2JqZWN0KiBjdXJyZW50Q2hpbGQpOwogICAgIHZvaWQgdXBkYXRlRmlyc3RMZXR0
ZXJTdHlsZShSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQmxvY2ssIFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXJDb250YWluZXIpOwogCkBAIC0xMTY1LDcgKzExNzAsNiBAQCBwcm90ZWN0ZWQ6CiBw
dWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UoKSBjb25zdDsKICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5
b3V0VW5pdCkgY29uc3Q7Ci0gICAgUmVuZGVyUmVnaW9uKiBjbGFtcFRvU3RhcnRBbmRFbmRSZWdp
b25zKFJlbmRlclJlZ2lvbiopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IEZsb2F0
aW5nT2JqZWN0SGFzaEZ1bmN0aW9ucyB7CkBAIC0xMjgzLDcgKzEyODcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAsIG1fcGFnaW5hdGlvblN0cnV0KDApCiAgICAgICAgICAgICAsIG1fcGFnZUxv
Z2ljYWxPZmZzZXQoMCkKICAgICAgICAgICAgICwgbV9saW5lR3JpZEJveCgwKQotICAgICAgICAg
ICAgLCBtX2xpbmVCcmVha1RvQXZvaWRXaWRvdygwKQorICAgICAgICAgICAgLCBtX2xpbmVCcmVh
a1RvQXZvaWRXaWRvdygtMSkKICAgICAgICAgICAgICwgbV9zaG91bGRCcmVha0F0TGluZVRvQXZv
aWRXaWRvdyhmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXNjYXJkTWFyZ2luQmVmb3JlKGZhbHNl
KQogICAgICAgICAgICAgLCBtX2Rpc2NhcmRNYXJnaW5BZnRlcihmYWxzZSkKQEAgLTEzMTMsNyAr
MTMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIFJvb3RJbmxpbmVCb3gqIG1fbGlu
ZUdyaWRCb3g7CiAKLSAgICAgICAgUm9vdElubGluZUJveCogbV9saW5lQnJlYWtUb0F2b2lkV2lk
b3c7CisgICAgICAgIGludCBtX2xpbmVCcmVha1RvQXZvaWRXaWRvdzsKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKICAgICAgICAgT3duUHRyPFNoYXBlSW5zaWRlSW5mbz4gbV9zaGFwZUluc2lkZUlu
Zm87CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAKaW5kZXggODU1MGNhNDk1NDRmMDM1NzRjNWE5ZjAwNGMyYzhjYmY4ODFh
ZTQxNS4uNzgxNDc1NGI3MzY2YWEwZGJjYTE0ZWM0NDkxOGIxM2Y3NWVmMTg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAg
LTIwMTEsNyArMjAxMSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAgICAgICAgICAgICAg
ICAgbGluZUJveCA9IGxpbmVCb3gtPnByZXZSb290Qm94KCk7CiAKICAgICAgICAgICAgIC8vIFdl
IG5vdyB3YW50IHRvIGJyZWFrIGF0IHRoaXMgbGluZS4gUmVtZW1iZXIgZm9yIG5leHQgbGF5b3V0
IGFuZCB0cmlnZ2VyIHJlbGF5b3V0LgotICAgICAgICAgICAgc2V0QnJlYWtBdExpbmVUb0F2b2lk
V2lkb3cobGluZUJveCk7CisgICAgICAgICAgICBzZXRCcmVha0F0TGluZVRvQXZvaWRXaWRvdyhs
aW5lQ291bnQobGluZUJveCkpOwogICAgICAgICAgICAgbWFya0xpbmVzRGlydHlJbkJsb2NrUmFu
Z2UobGFzdFJvb3RCb3goKS0+bGluZUJvdHRvbVdpdGhMZWFkaW5nKCksIGxpbmVCb3gtPmxpbmVC
b3R0b21XaXRoTGVhZGluZygpLCBsaW5lQm94KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNDks
NiArMjE0OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWluCiAgICAgICAgIFZlY3RvcjxSZW5k
ZXJCb3gqPiByZXBsYWNlZENoaWxkcmVuOwogICAgICAgICBmb3IgKElubGluZVdhbGtlciB3YWxr
ZXIodGhpcyk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBvID0gd2Fsa2VyLmN1cnJlbnQoKTsKKwogICAgICAgICAgICAgaWYg
KCFoYXNJbmxpbmVDaGlsZCAmJiBvLT5pc0lubGluZSgpKQogICAgICAgICAgICAgICAgIGhhc0lu
bGluZUNoaWxkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCAzNDMwYzcyZjQ5MDc1OWMwNzg2NThmYmM5YTViMWFmN2I4NzYzOGUwLi4xODQ2M2NmMmNk
OGUzMTEyNDJjMWRlZWQzODFjYWNmNjU5NzJiMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTA4LDExICsxMDgsNTQgQEAgUmVuZGVyQm94Ojp+UmVuZGVyQm94
KCkKIHsKIH0KIAorUmVuZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJl
Z2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit7CisgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKworICAgIEFTU0VS
VChpc1JlbmRlclZpZXcoKSB8fCAocmVnaW9uICYmIGZsb3dUaHJlYWQpKTsKKyAgICBpZiAoaXNS
ZW5kZXJWaWV3KCkpCisgICAgICAgIHJldHVybiByZWdpb247CisKKyAgICAvLyBXZSBuZWVkIHRv
IGNsYW1wIHRvIHRoZSBibG9jaywgc2luY2Ugd2Ugd2FudCBhbnkgbGluZXMgb3IgYmxvY2tzIHRo
YXQgb3ZlcmZsb3cgb3V0IG9mIHRoZQorICAgIC8vIGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90
dG9tIG9mIHRoZSBibG9jayB0byBzaXplIGFzIHRob3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUg
Zmlyc3QgYW5kCisgICAgLy8gbGFzdCByZWdpb25zIGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVy
d2lzZSB0aGUgbGluZXMgYXJlIGdvaW5nIHRvIHNpemUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25z
CisgICAgLy8gdGhleSBvdmVyZmxvdyBpbnRvLCB3aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRo
aXMgYmxvY2sgZG9lc24ndCBleGlzdCBpbiB8cmVnaW9ufCBhdCBhbGwuCisgICAgUmVuZGVyUmVn
aW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwor
ICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBl
bmRSZWdpb24pOworCisgICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZv
ckZsb3dUaHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJl
YWRDb250ZW50KCkpCisgICAgICAgIHJldHVybiBzdGFydFJlZ2lvbjsKKyAgICBpZiAoZW5kUmVn
aW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQorICAgICAgICByZXR1cm4gZW5k
UmVnaW9uOworCisgICAgcmV0dXJuIHJlZ2lvbjsKK30KKwogTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgUmVuZGVyQm94UmVn
aW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKIHsKICAgICBpZiAoIXJlZ2lvbikKICAgICAg
ICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKLSAgICAKKworICAgIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKCFmbG93
VGhyZWFkKQorICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgpOworCisgICAgUmVuZGVyUmVn
aW9uKiBzdGFydFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwor
ICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBl
bmRSZWdpb24pOworCisgICAgLy8gRklYTUU6IEluIGEgcGVyZmVjdCB3b3JsZCB0aGlzIGNvbmRp
dGlvbiBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgIGlmICghc3RhcnRSZWdpb24gfHwgIWVuZFJl
Z2lvbikKKyAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKKworICAgIC8vIEZJWE1FOiBP
bmNlIG92ZXJmbG93IGlzIGltcGxlbWVudGVkIHRoaXMgYXNzZXJ0aW9uIG5lZWRzIHRvIGJlIGVu
YWJsZWQuIFJpZ2h0IG5vdyB0aGUgb3ZlcmZsb3cgY29udGVudCBpcyBwYWludGVkCisgICAgLy8g
aW4gcmVnaW9ucyBvdXRzaWRlIHRoZSBib3ggcmFuZ2Ugc28gdGhlIGFzc2VydCBpcyBkaXNhYmxl
ZC4KKyAgICAvLyBBU1NFUlQoY2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pID09IHJl
Z2lvbik7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgYm94ZXMgYXJlIHBhaW50ZWQgaW5z
aWRlIHRoZWlyIHJlZ2lvbiByYW5nZS4KKyAgICByZWdpb24gPSBjbGFtcFRvU3RhcnRBbmRFbmRS
ZWdpb25zKHJlZ2lvbik7CisKICAgICAvLyBDb21wdXRlIHRoZSBsb2dpY2FsIHdpZHRoIGFuZCBw
bGFjZW1lbnQgaW4gdGhpcyByZWdpb24uCiAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5m
byA9IHJlbmRlckJveFJlZ2lvbkluZm8ocmVnaW9uLCBjYWNoZUZsYWcpOwogICAgIGlmICghYm94
SW5mbykKQEAgLTI5MzksMTAgKzI5ODIsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNbwogICAg
ICAgICAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkpIHsKICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGNiUGFnZU9mZnNldCA9IGNiLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KCk7CiAgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBjYlJlZ2lvbiA9IGNiLT5yZWdpb25B
dEJsb2NrT2Zmc2V0KGNiUGFnZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNiUmVnaW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNiUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVu
ZFJlZ2lvbnMoY2JSZWdpb24pOworICAgICAgICAgICAgICAgIGlmIChjYlJlZ2lvbikKICAgICAg
ICAgICAgICAgICAgICAgYm94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKGNiUmVnaW9u
KTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVnaW9uICYmIGZsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY29udGFp
bmluZ0Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBSZW5k
ZXJSZWdpb24qIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRBbmRFbmRS
ZWdpb25zKHJlZ2lvbik7CkBAIC0zMTg2LDcgKzMyMjcsNiBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBj
b21wdQogICAgICAgICBMYXlvdXRVbml0IGNiUGFnZU9mZnNldCA9IGNiLT5vZmZzZXRGcm9tTG9n
aWNhbFRvcE9mRmlyc3RQYWdlKCk7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogY2JSZWdpb24gPSBj
Yi0+cmVnaW9uQXRCbG9ja09mZnNldChjYlBhZ2VPZmZzZXQpOwogICAgICAgICBpZiAoY2JSZWdp
b24pIHsKLSAgICAgICAgICAgIGNiUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lv
bnMoY2JSZWdpb24pOwogICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogYm94SW5mbyA9
IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKGNiUmVnaW9uKTsKICAgICAgICAgICAgIGlmIChib3hJ
bmZvKSB7CiAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRQb3MgKz0gYm94SW5mby0+bG9naWNh
bExlZnQoKTsKQEAgLTM1MDUsNyArMzU0NSw2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wCiAg
ICAgICAgIExheW91dFVuaXQgY2JQYWdlT2Zmc2V0ID0gY2ItPm9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UoKSAtIGxvZ2ljYWxMZWZ0KCk7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogY2JS
ZWdpb24gPSBjYi0+cmVnaW9uQXRCbG9ja09mZnNldChjYlBhZ2VPZmZzZXQpOwogICAgICAgICBp
ZiAoY2JSZWdpb24pIHsKLSAgICAgICAgICAgIGNiUmVnaW9uID0gY2ItPmNsYW1wVG9TdGFydEFu
ZEVuZFJlZ2lvbnMoY2JSZWdpb24pOwogICAgICAgICAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyog
Ym94SW5mbyA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKGNiUmVnaW9uKTsKICAgICAgICAgICAg
IGlmIChib3hJbmZvKSB7CiAgICAgICAgICAgICAgICAgbG9naWNhbFRvcFBvcyArPSBib3hJbmZv
LT5sb2dpY2FsTGVmdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDNm
MWM5NGQ1NDYwYjhjYzYwZjdiYzFmZDYwZDI2ZWIyYmJkYWEzYTMuLjZiMjIxNmJmODcxMjgwNDQ0
ZWQ0NTZlYTgzNWQxMjk1YThhYTIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTM2OCw2ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFJlbmRlckJveFJlZ2lv
bkluZm9GbGFncyB7IENhY2hlUmVuZGVyQm94UmVnaW9uSW5mbywgRG9Ob3RDYWNoZVJlbmRlckJv
eFJlZ2lvbkluZm8gfTsKICAgICBMYXlvdXRSZWN0IGJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5k
ZXJSZWdpb24qLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgPSBDYWNoZVJlbmRlckJveFJlZ2lv
bkluZm8pIGNvbnN0OworICAgIFJlbmRlclJlZ2lvbiogY2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9u
cyhSZW5kZXJSZWdpb24qKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5m
bygpOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDMxMDZmYzlhMmNhOTNiZmZm
NzY4YzlkOWNiNDNiY2JjZGZkMWViYzUuLjhlYzQ3MzllMGU0NTMwNDAwNjc1MjQ0NWJkYzJkNzE3
YjIwYWM5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCkKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKGZsb3dUaHJlYWQpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBp
ZiAodXBkYXRlUmVnaW9uc0FuZFNoYXBlc0JlZm9yZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQor
ICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91
dENoaWxkcmVuID0gdHJ1ZTsKIAogICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0gc2l6ZSgp
OwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBsYXlv
dXRQb3NpdGlvbmVkT2JqZWN0cyhyZWxheW91dENoaWxkcmVuIHx8IGlzUm9vdCgpKTsKIAotICAg
IHVwZGF0ZVJlZ2lvbnNBbmRTaGFwZXNBZnRlckNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpOworICAg
IHVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoKTsKIAogICAgIGlmICghaXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGhlaWdodCgpID09IDApIHsKICAgICAgICAgLy8gV2Ug
YXJlIGEgYmxvY2sgd2l0aCBubyBib3JkZXIgYW5kIHBhZGRpbmcgYW5kIGEgY29tcHV0ZWQgaGVp
Z2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApp
bmRleCBjOTVlMzdlMmRkMzFmZTg4Njk5OWFhMjRmZWJmYmUyNTI0NGY0OTIxLi5kZjg4ODYyZjkw
NzU5ZTVhZTkzNjNlNDU3OGVhMGQ2NWQ1Yjc5N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFJl
bmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQpCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKICAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93
VGhyZWFkKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0
ZVJlZ2lvbnNBbmRTaGFwZXNCZWZvcmVDaGlsZExheW91dChmbG93VGhyZWFkKSkKKyAgICBpZiAo
dXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkKICAgICAgICAgcmVsYXlvdXRDaGlsZHJl
biA9IHRydWU7CiAKICAgICBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA9IC0x
OwpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIGxheW91dFBvc2l0aW9u
ZWRPYmplY3RzKHJlbGF5b3V0Q2hpbGRyZW4gfHwgaXNSb290KCkpOwogCi0gICAgdXBkYXRlUmVn
aW9uc0FuZFNoYXBlc0FmdGVyQ2hpbGRMYXlvdXQoZmxvd1RocmVhZCk7CisgICAgdXBkYXRlU2hh
cGVzQWZ0ZXJCbG9ja0xheW91dCgpOwogCiAgICAgcmVwYWludENoaWxkcmVuRHVyaW5nTGF5b3V0
SWZNb3ZlZChvbGRDaGlsZFJlY3RzKTsKICAgICAvLyBGSVhNRTogY3NzMy9mbGV4Ym94L3JlcGFp
bnQtcnRsLWNvbHVtbi5odG1sIHNlZW1zIHRvIHJlcGFpbnQgbW9yZSBvdmVyZmxvdyB0aGFuIGl0
IG5lZWRzIHRvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwCmluZGV4IDJkYzQzNzA0ZmJhMjEyOGYyNDRkYzU4MTgwMzA0Yzk3ZjkwZDExZDQuLjU5OWJk
ZjM0ODk4Y2E4ZmU5MDEzOGNlMDU4YTZhM2QwZTIwMjNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OnZhbGlkYXRlUmVnaW9ucygpCiAKICAgICAgICAgICAgICAgICBw
cmV2aW91c1JlZ2lvbkxvZ2ljYWxXaWR0aCA9IHJlZ2lvbkxvZ2ljYWxXaWR0aDsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgbV9yZWdpb25M
aXN0LmZpcnN0KCksIG1fcmVnaW9uTGlzdC5sYXN0KCkpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0zOTAsMzMgKzM5Miw0MCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5n
bGVJblJlZ2lvbnMoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QsCiAgICAgfQogfQogCi1S
ZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0
VW5pdCBvZmZzZXQsIGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiwgUmVnaW9uQXV0b0dlbmVyYXRpb25Q
b2xpY3kgYXV0b0dlbmVyYXRpb25Qb2xpY3kpCitSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJl
YWQ6OnJlZ2lvbkF0QmxvY2tPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjbGFtcEJveCwgTGF5b3V0
VW5pdCBvZmZzZXQsIGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiwgUmVnaW9uQXV0b0dlbmVyYXRpb25Q
b2xpY3kgYXV0b0dlbmVyYXRpb25Qb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFtX3JlZ2lvbnNJbnZh
bGlkYXRlZCk7CiAKICAgICBpZiAoYXV0b0dlbmVyYXRpb25Qb2xpY3kgPT0gQWxsb3dSZWdpb25B
dXRvR2VuZXJhdGlvbikKICAgICAgICAgYXV0b0dlbmVyYXRlUmVnaW9uc1RvQmxvY2tPZmZzZXQo
b2Zmc2V0KTsKIAorICAgIGlmIChtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gMDsKKwogICAgIGlmIChvZmZzZXQgPD0gMCkKLSAgICAgICAgcmV0dXJuIG1fcmVnaW9uTGlz
dC5pc0VtcHR5KCkgPyAwIDogbV9yZWdpb25MaXN0LmZpcnN0KCk7CisgICAgICAgIHJldHVybiBj
bGFtcEJveCA/IGNsYW1wQm94LT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKG1fcmVnaW9uTGlz
dC5maXJzdCgpKSA6IG1fcmVnaW9uTGlzdC5maXJzdCgpOwogCiAgICAgUmVnaW9uU2VhcmNoQWRh
cHRlciBhZGFwdGVyKG9mZnNldCk7CiAgICAgbV9yZWdpb25JbnRlcnZhbFRyZWUuYWxsT3Zlcmxh
cHNXaXRoQWRhcHRlcjxSZWdpb25TZWFyY2hBZGFwdGVyPihhZGFwdGVyKTsKIAogICAgIC8vIElm
IG5vIHJlZ2lvbiB3YXMgZm91bmQsIHRoZSBvZmZzZXQgaXMgaW4gdGhlIGZsb3cgdGhyZWFkIG92
ZXJmbG93LgogICAgIC8vIFRoZSBsYXN0IHJlZ2lvbiB3aWxsIGNvbnRhaW4gdGhlIG9mZnNldCBp
ZiBleHRlbmRMYXN0UmVnaW9uIGlzIHNldCBvciBpZiB0aGUgbGFzdCByZWdpb24gaXMgYSBzZXQu
Ci0gICAgaWYgKCFhZGFwdGVyLnJlc3VsdCgpICYmICFtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYm
IChleHRlbmRMYXN0UmVnaW9uIHx8IG1fcmVnaW9uTGlzdC5sYXN0KCktPmlzUmVuZGVyUmVnaW9u
U2V0KCkpKQotICAgICAgICByZXR1cm4gbV9yZWdpb25MaXN0Lmxhc3QoKTsKKyAgICBpZiAoIWFk
YXB0ZXIucmVzdWx0KCkgJiYgKGV4dGVuZExhc3RSZWdpb24gfHwgbV9yZWdpb25MaXN0Lmxhc3Qo
KS0+aXNSZW5kZXJSZWdpb25TZXQoKSkpCisgICAgICAgIHJldHVybiBjbGFtcEJveCA/IGNsYW1w
Qm94LT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKG1fcmVnaW9uTGlzdC5sYXN0KCkpIDogbV9y
ZWdpb25MaXN0Lmxhc3QoKTsKIAotICAgIHJldHVybiBhZGFwdGVyLnJlc3VsdCgpOworICAgIFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gYWRhcHRlci5yZXN1bHQoKTsKKyAgICBpZiAoIWNsYW1wQm94
KQorICAgICAgICByZXR1cm4gcmVnaW9uOworICAgIHJldHVybiByZWdpb24gPyBjbGFtcEJveC0+
Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdpb24pIDogMDsKIH0KICAgICAKIExheW91dFBv
aW50IFJlbmRlckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFy
ZW50KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3hNb2RlbE9iamVjdCwgY29uc3QgTGF5
b3V0UG9pbnQmIHN0YXJ0UG9pbnQpCiB7CiAgICAgTGF5b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQg
PSBzdGFydFBvaW50OwogICAgIAorICAgIGNvbnN0IFJlbmRlckJsb2NrKiBvYmpDb250YWluaW5n
QmxvY2sgPSBib3hNb2RlbE9iamVjdC5jb250YWluaW5nQmxvY2soKTsKICAgICAvLyBGSVhNRTog
VGhpcyBuZWVkcyB0byBiZSBhZGFwdGVkIGZvciBkaWZmZXJlbnQgd3JpdGluZyBtb2RlcyBpbnNp
ZGUgdGhlIGZsb3cgdGhyZWFkLgotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSByZWdp
b25BdEJsb2NrT2Zmc2V0KHJlZmVyZW5jZVBvaW50LnkoKSk7CisgICAgUmVuZGVyUmVnaW9uKiBz
dGFydFJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2JqQ29udGFpbmluZ0Jsb2NrLCByZWZl
cmVuY2VQb2ludC55KCkpOwogICAgIGlmIChzdGFydFJlZ2lvbikgewogICAgICAgICAvLyBUYWtl
IGludG8gYWNjb3VudCB0aGUgb2Zmc2V0IGNvb3JkaW5hdGVzIG9mIHRoZSByZWdpb24uCiAgICAg
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjdXJyT2JqZWN0ID0gc3RhcnRSZWdpb247CkBAIC00
MzYsNyArNDQ1LDYgQEAgTGF5b3V0UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3Np
dGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoY29uc3QgUmVuZGUKICAgICAgICAgLy8gYW5kIGlm
IHNvLCBkcm9wIHRoZSBvYmplY3QncyB0b3AgcG9zaXRpb24gKHdoaWNoIHdhcyBjb21wdXRlZCBy
ZWxhdGl2ZSB0byBpdHMgY29udGFpbmluZyBibG9jawogICAgICAgICAvLyBhbmQgaXMgbm8gbG9u
Z2VyIHZhbGlkKSBhbmQgcmVjb21wdXRlIGl0IHVzaW5nIHRoZSByZWdpb24gaW4gd2hpY2ggaXQg
Zmxvd3MgYXMgcmVmZXJlbmNlLgogICAgICAgICBib29sIHdhc0NvbXB1dGVkUmVsYXRpdmVUb090
aGVyUmVnaW9uID0gZmFsc2U7Ci0gICAgICAgIGNvbnN0IFJlbmRlckJsb2NrKiBvYmpDb250YWlu
aW5nQmxvY2sgPSBib3hNb2RlbE9iamVjdC5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgd2hp
bGUgKG9iakNvbnRhaW5pbmdCbG9jayAmJiAhb2JqQ29udGFpbmluZ0Jsb2NrLT5pc1JlbmRlck5h
bWVkRmxvd1RocmVhZCgpKSB7CiAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGlzIG9iamVjdCBp
cyBpbiBhIGRpZmZlcmVudCByZWdpb24uCiAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHBhcmVu
dFN0YXJ0UmVnaW9uID0gMDsKQEAgLTQ5NCwxOSArNTAyLDE5IEBAIExheW91dFBvaW50IFJlbmRl
ckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0
IFJlbmRlCiAKIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JP
ZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBy
ZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBy
ZWdpb25BdEJsb2NrT2Zmc2V0KDAsIG9mZnNldCwgZmFsc2UsIEFsbG93UmVnaW9uQXV0b0dlbmVy
YXRpb24pOwogICAgIHJldHVybiByZWdpb24gPyByZWdpb24tPnBhZ2VMb2dpY2FsVG9wRm9yT2Zm
c2V0KG9mZnNldCkgOiBMYXlvdXRVbml0KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyRmxvd1Ro
cmVhZDo6cGFnZUxvZ2ljYWxXaWR0aEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkKIHsKLSAg
ICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0LCB0cnVl
KTsKKyAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoMCwgb2Zm
c2V0LCB0cnVlLCBBbGxvd1JlZ2lvbkF1dG9HZW5lcmF0aW9uKTsKICAgICByZXR1cm4gcmVnaW9u
ID8gcmVnaW9uLT5wYWdlTG9naWNhbFdpZHRoKCkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZz
ZXQoTGF5b3V0VW5pdCBvZmZzZXQpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdp
b25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7CisgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdp
b25BdEJsb2NrT2Zmc2V0KDAsIG9mZnNldCwgZmFsc2UsIEFsbG93UmVnaW9uQXV0b0dlbmVyYXRp
b24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNTE1LDcgKzUy
Myw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxIZWlnaHRGb3JP
ZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpCiAKIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6
cGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQsIFBh
Z2VCb3VuZGFyeVJ1bGUgcGFnZUJvdW5kYXJ5UnVsZSkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0KTsKKyAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQoMCwgb2Zmc2V0LCBmYWxzZSwgQWxsb3dSZWdpb25B
dXRvR2VuZXJhdGlvbik7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC01NDQsNyArNTUyLDcgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjptYXBGcm9t
Rmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGEKICAgICAvLyBOb3RlOiBV
c2luZyB0aGUgY2VudGVyIGluIG9yZGVyIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KIAogICAg
IExheW91dFBvaW50IGNlbnRlciA9IGJveFJlY3QuY2VudGVyKCk7Ci0gICAgUmVuZGVyUmVnaW9u
KiByZW5kZXJSZWdpb24gPSBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJlYWQqPih0aGlzKS0+cmVn
aW9uQXRCbG9ja09mZnNldChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2VudGVyLnkoKSA6
IGNlbnRlci54KCksIHRydWUsIERpc2FsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOworICAgIFJl
bmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4o
dGhpcyktPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgpLCB0cnVlLCBEaXNhbGxvd1JlZ2lvbkF1dG9HZW5l
cmF0aW9uKTsKICAgICBpZiAoIXJlbmRlclJlZ2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTU5NCwyNSArNjAyLDMxIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hh
bmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBiCiAgICAgaWYgKCFoYXNS
ZWdpb25zKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIFJlbmRlclJlZ2lvblJhbmdl
TWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChibG9jayk7CisgICAgaWYg
KGl0ID09IG1fcmVnaW9uUmFuZ2VNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFJlbmRlclJlZ2lvblJhbmdlJiByYW5nZSA9IGl0LT52YWx1ZTsKKyAgICBib29sIHJhbmdl
SW52YWxpZGF0ZWQgPSByYW5nZS5yYW5nZUludmFsaWRhdGVkKCk7CisgICAgcmFuZ2UuY2xlYXJS
YW5nZUludmFsaWRhdGVkKCk7CisKICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uOwogICAg
IFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwogICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2Nr
LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAotICAgIC8vIFdoZW4gdGhlIHJlZ2lvbiBjaGFp
biBpcyBpbnZhbGlkYXRlZCB0aGUgYm94IGluZm9ybWF0aW9uIGlzIGRpc2NhcmRlZCBzbyB3ZSBt
dXN0IGFzc3VtZSB0aGUgd2lkdGggaGFzIGNoYW5nZWQuCi0gICAgaWYgKG1fcGFnZUxvZ2ljYWxT
aXplQ2hhbmdlZCAmJiAhc3RhcnRSZWdpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gTm90IG5lY2Vzc2FyeSBmb3IgdGhlIGZsb3cgdGhyZWFkLCBzaW5jZSB3ZSBhbHJlYWR5IGNv
bXB1dGVkIHRoZSBjb3JyZWN0IGluZm8gZm9yIGl0LgorICAgIC8vIElmIHRoZSByZWdpb25zIGhh
dmUgY2hhbmdlZCBpbnZhbGlkYXRlIHRoZSBjaGlsZHJlbi4KICAgICBpZiAoYmxvY2sgPT0gdGhp
cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9wYWdlTG9naWNhbFNp
emVDaGFuZ2VkOwogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0g
bV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAg
ICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdp
b25TZXQoKSk7CiAKKyAgICAgICAgLy8gV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBm
b3IgdGhpcyByZWdpb24gc28gd2UgbmVlZCB0byBkbyBpdC4KICAgICAgICAgT3duUHRyPFJlbmRl
ckJveFJlZ2lvbkluZm8+IG9sZEluZm8gPSByZWdpb24tPnRha2VSZW5kZXJCb3hSZWdpb25JbmZv
KGJsb2NrKTsKICAgICAgICAgaWYgKCFvbGRJbmZvKQotICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICByZXR1cm4gcmFuZ2VJbnZhbGlkYXRlZDsKIAogICAgICAgICBMYXlvdXRVbml0
IG9sZExvZ2ljYWxXaWR0aCA9IG9sZEluZm8tPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBSZW5k
ZXJCb3hSZWdpb25JbmZvKiBuZXdJbmZvID0gYmxvY2stPnJlbmRlckJveFJlZ2lvbkluZm8ocmVn
aW9uKTsKQEAgLTY2NCwxMiArNjc4LDIyIEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVh
ZDo6bGFzdFJlZ2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0KCk7CiB9
CiAKLXZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKLSAgICBjb25zdCBSZW5kZXJSZWdpb24qIG9sZFN0
YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVuZFJlZ2lvbiwKLSAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJl
Z2lvbikKK3ZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICAvLyBDbGVhciB0aGUgc3R5bGVz
IGZvciB0aGUgb2JqZWN0IGluIHRoZSByZWdpb25zLgotICAgIC8vIFRoZSBzdHlsZXMgYXJlIG5v
dCBjbGVhcmVkIGZvciB0aGUgcmVnaW9ucyB0aGF0IGFyZSBjb250YWluZWQgaW4gYm90aCByYW5n
ZXMuCisgICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGlzIG5vdCBjb21wdXRlZCBvbmx5IGZv
ciB0aGUgcmVnaW9uIHJhbmdlIG9mIHRoZSBvYmplY3Qgc28gdGhpcyBpcyB3aHkgd2UgbmVlZCB0
byB3YWxrIHRoZSB3aG9sZSBjaGFpbi4KKyAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAg
ICAgICByZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOworICAgIH0KK30K
Kwordm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJveFJlZ2lvbkluZm9BbmRDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJCb3gqIGJveCwKKyAgICBjb25zdCBSZW5kZXJSZWdpb24qIG5l
d1N0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiwKKyAgICBjb25z
dCBSZW5kZXJSZWdpb24qIG9sZFN0YXJ0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVu
ZFJlZ2lvbikKK3sKKyAgICBBU1NFUlQobmV3U3RhcnRSZWdpb24gJiYgbmV3RW5kUmVnaW9uICYm
IG9sZFN0YXJ0UmVnaW9uICYmIG9sZEVuZFJlZ2lvbik7CisKICAgICBib29sIGluc2lkZU9sZFJl
Z2lvblJhbmdlID0gZmFsc2U7CiAgICAgYm9vbCBpbnNpZGVOZXdSZWdpb25SYW5nZSA9IGZhbHNl
OwogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlz
dC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CkBAIC02ODAs
OCArNzA0LDExIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKICAgICAgICAgaWYgKG5ld1N0YXJ0
UmVnaW9uID09IHJlZ2lvbikKICAgICAgICAgICAgIGluc2lkZU5ld1JlZ2lvblJhbmdlID0gdHJ1
ZTsKIAotICAgICAgICBpZiAoIShpbnNpZGVPbGRSZWdpb25SYW5nZSAmJiBpbnNpZGVOZXdSZWdp
b25SYW5nZSkpCi0gICAgICAgICAgICByZWdpb24tPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihv
YmplY3QpOworICAgICAgICBpZiAoIShpbnNpZGVPbGRSZWdpb25SYW5nZSAmJiBpbnNpZGVOZXdS
ZWdpb25SYW5nZSkpIHsKKyAgICAgICAgICAgIHJlZ2lvbi0+Y2xlYXJPYmplY3RTdHlsZUluUmVn
aW9uKGJveCk7CisgICAgICAgICAgICBpZiAocmVnaW9uLT5yZW5kZXJCb3hSZWdpb25JbmZvKGJv
eCkpCisgICAgICAgICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKGJv
eCk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAob2xkRW5kUmVnaW9uID09IHJlZ2lvbikKICAg
ICAgICAgICAgIGluc2lkZU9sZFJlZ2lvblJhbmdlID0gZmFsc2U7CkBAIC02OTAsMjAgKzcxNywx
NCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsCiAgICAgfQogfQogCi12b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBMYXlvdXRV
bml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCit2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdp
b24qIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbikKIHsKLSAgICBpZiAoIWhh
c1JlZ2lvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGJveC0+bG9naWNhbEhl
aWdodCgpID49IDApOworICAgIEFTU0VSVChoYXNSZWdpb25zKCkpOworICAgIEFTU0VSVChzdGFy
dFJlZ2lvbiAmJiBlbmRSZWdpb24pOwogCi0gICAgLy8gRklYTUU6IE5vdCByaWdodCBmb3IgZGlm
ZmVyaW5nIHdyaXRpbmctbW9kZXMuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IHJl
Z2lvbkF0QmxvY2tPZmZzZXQob2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgdHJ1ZSk7
Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UgKyBib3gtPmxvZ2ljYWxIZWlnaHQoKSwgdHJ1ZSk7
CiAgICAgUmVuZGVyUmVnaW9uUmFuZ2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpb25SYW5nZU1h
cC5maW5kKGJveCk7CiAgICAgaWYgKGl0ID09IG1fcmVnaW9uUmFuZ2VNYXAuZW5kKCkpIHsKICAg
ICAgICAgbV9yZWdpb25SYW5nZU1hcC5zZXQoYm94LCBSZW5kZXJSZWdpb25SYW5nZShzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKSk7Ci0gICAgICAgIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUo
Ym94KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzEyLDIxICs3MzMsNyBAQCB2b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OnNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCog
Ym94LCBMYXlvdXRVbml0IG9mZgogICAgIGlmIChyYW5nZS5zdGFydFJlZ2lvbigpID09IHN0YXJ0
UmVnaW9uICYmIHJhbmdlLmVuZFJlZ2lvbigpID09IGVuZFJlZ2lvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gRGVsZXRlIGFueSBpbmZvIHRoYXQgd2UgZmluZCBiZWZvcmUgb3VyIG5ldyBz
dGFydFJlZ2lvbiBhbmQgYWZ0ZXIgb3VyIG5ldyBlbmRSZWdpb24uCi0gICAgZm9yIChSZW5kZXJS
ZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0g
bV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdp
b24gPSAqaXRlcjsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBzdGFydFJlZ2lvbikgewotICAgICAg
ICAgICAgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKGVuZFJlZ2lvbik7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVuZGVyQm94UmVn
aW9uSW5mbyhib3gpOwotCi0gICAgICAgIGlmIChyZWdpb24gPT0gcmFuZ2UuZW5kUmVnaW9uKCkp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjbGVhclJlbmRlck9iamVjdEN1c3Rv
bVN0eWxlKGJveCwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwgcmFuZ2UuZW5kUmVnaW9uKCksIHN0YXJ0
UmVnaW9uLCBlbmRSZWdpb24pOworICAgIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5mb0FuZEN1c3Rv
bVN0eWxlKGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbiwgcmFuZ2Uuc3RhcnRSZWdpb24oKSwg
cmFuZ2UuZW5kUmVnaW9uKCkpOwogICAgIHJhbmdlLnNldFJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRS
ZWdpb24pOwogfQogCkBAIC03NDgsNyArNzU1LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjph
cHBseUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQgY2xpZW50SGVpZ2h0KQogewogICAgIC8v
IFNpbXVsYXRlIGEgcmVnaW9uIGJyZWFrIGF0IGhlaWdodC4gSWYgaXQgcG9pbnRzIGluc2lkZSBh
biBhdXRvIGxvZ2ljYWwgaGVpZ2h0IHJlZ2lvbiwKICAgICAvLyB0aGVuIGl0IG1heSBkZXRlcm1p
bmUgdGhlIHJlZ2lvbiBjb21wdXRlZCBhdXRvaGVpZ2h0LgotICAgIGFkZEZvcmNlZFJlZ2lvbkJy
ZWFrKGNsaWVudEhlaWdodCwgdGhpcywgZmFsc2UpOworICAgIGFkZEZvcmNlZFJlZ2lvbkJyZWFr
KHRoaXMsIGNsaWVudEhlaWdodCwgdGhpcywgZmFsc2UpOwogfQogCiBib29sIFJlbmRlckZsb3dU
aHJlYWQ6OnJlZ2lvbkluUmFuZ2UoY29uc3QgUmVuZGVyUmVnaW9uKiB0YXJnZXRSZWdpb24sIGNv
bnN0IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24sIGNvbnN0IFJlbmRlclJlZ2lvbiogZW5kUmVn
aW9uKSBjb25zdApAQCAtOTE5LDcgKzkyNiw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6dXBk
YXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBSZW5kZXJSZWdpb24qIGxhCiAv
LyBFdmVuIGlmIHdlIHJlcXVpcmUgdGhlIGJyZWFrIHRvIG9jY3VyIGF0IG9mZnNldEJyZWFrSW5G
bG93VGhyZWFkLCBiZWNhdXNlIHJlZ2lvbnMgbWF5IGhhdmUgbWluL21heC1oZWlnaHQgdmFsdWVz
LAogLy8gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgYnJlYWsgd2lsbCBvY2N1ciBhdCBhIGRpZmZl
cmVudCBvZmZzZXQgdGhhbiB0aGUgb3JpZ2luYWwgb25lIHJlcXVpcmVkLgogLy8gb2Zmc2V0QnJl
YWtBZGp1c3RtZW50IG1lYXN1cmVzIHRoZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgcmVxdWVzdGVk
IGJyZWFrIG9mZnNldCBhbmQgdGhlIGN1cnJlbnQgYnJlYWsgb2Zmc2V0LgotYm9vbCBSZW5kZXJG
bG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhMYXlvdXRVbml0IG9mZnNldEJyZWFrSW5G
bG93VGhyZWFkLCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQsIGJvb2wgaXNCZWZvcmUsIExheW91
dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCkKK2Jvb2wgUmVuZGVyRmxvd1RocmVhZDo6YWRk
Rm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0IG9m
ZnNldEJyZWFrSW5GbG93VGhyZWFkLCBSZW5kZXJPYmplY3QqIGJyZWFrQ2hpbGQsIGJvb2wgaXNC
ZWZvcmUsIExheW91dFVuaXQqIG9mZnNldEJyZWFrQWRqdXN0bWVudCkKIHsKICAgICAvLyBXZSB0
YWtlIGJyZWFrcyBpbnRvIGFjY291bnQgZm9yIGhlaWdodCBjb21wdXRhdGlvbiBmb3IgYXV0byBs
b2dpY2FsIGhlaWdodCByZWdpb25zCiAgICAgLy8gb25seSBpbiB0aGUgbGF5b3V0IHBoYXNlIGlu
IHdoaWNoIHdlIGxheSBvdXQgdGhlIGZsb3dzIHRocmVhZHMgdW5jb25zdHJhaW5lZApAQCAtOTQ2
LDcgKzk1Myw3IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWso
TGF5b3V0VW5pdCBvZmZzZXRCcmVha0luRmxvd1RocmVhZCwKIAogICAgIC8vIFNpbXVsYXRlIGEg
cmVnaW9uIGJyZWFrIGF0IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkLiBJZiBpdCBwb2ludHMgaW5z
aWRlIGFuIGF1dG8gbG9naWNhbCBoZWlnaHQgcmVnaW9uLAogICAgIC8vIHRoZW4gaXQgZGV0ZXJt
aW5lcyB0aGUgcmVnaW9uIGNvbXB1dGVkIGF1dG8gaGVpZ2h0LgotICAgIFJlbmRlclJlZ2lvbiog
cmVnaW9uID0gcmVnaW9uQXRCbG9ja09mZnNldChvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7Cisg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KGJsb2NrLCBvZmZz
ZXRCcmVha0luRmxvd1RocmVhZCk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5k
ZXggYjc0ZjIzYmUwZGQ2MmZkNzJhMGMwYjIzNjIyNmMyOWEwNGY1N2Y3My4uYzE3N2U4YjZmZDlm
ZGFiNDg2MTliMTkxNzdjMmQ2NzFjZWNlNmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMDMsMTQgKzEwMywxNSBAQCBwdWJsaWM6CiAgICAg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChMYXlvdXRVbml0KTsKICAgICBM
YXlvdXRVbml0IHBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KExheW91dFVuaXQs
IFBhZ2VCb3VuZGFyeVJ1bGUgPSBJbmNsdWRlUGFnZUJvdW5kYXJ5KTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRVbml0IC8qc3Bh
Y2VTaG9ydGFnZSovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VIZWln
aHQoTGF5b3V0VW5pdCAvKm9mZnNldCovLCBMYXlvdXRVbml0IC8qbWluSGVpZ2h0Ki8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRV
bml0IC8qb2Zmc2V0Ki8sIExheW91dFVuaXQgLypzcGFjZVNob3J0YWdlKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJCbG9jayosIExh
eW91dFVuaXQgLypvZmZzZXQqLywgTGF5b3V0VW5pdCAvKm1pbkhlaWdodCovKSB7IH0KIAogICAg
IGVudW0gUmVnaW9uQXV0b0dlbmVyYXRpb25Qb2xpY3kgewogICAgICAgICBBbGxvd1JlZ2lvbkF1
dG9HZW5lcmF0aW9uLAogICAgICAgICBEaXNhbGxvd1JlZ2lvbkF1dG9HZW5lcmF0aW9uLAogICAg
IH07Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQsIGJv
b2wgZXh0ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlLCBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSA9
IEFsbG93UmVnaW9uQXV0b0dlbmVyYXRpb24pOworCisgICAgUmVuZGVyUmVnaW9uKiByZWdpb25B
dEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQsIGJvb2wgZXh0ZW5kTGFz
dFJlZ2lvbiA9IGZhbHNlLCBSZWdpb25BdXRvR2VuZXJhdGlvblBvbGljeSA9IEFsbG93UmVnaW9u
QXV0b0dlbmVyYXRpb24pOwogCiAgICAgYm9vbCByZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aDsgfQog
ICAgIGJvb2wgcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodDsgfQpAQCAtMTMwLDEyICsxMzEsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgcHJldmlvdXNSZWdpb25Db3VudENoYW5nZWQoKSBjb25zdCB7
IHJldHVybiBtX3ByZXZpb3VzUmVnaW9uQ291bnQgIT0gbV9yZWdpb25MaXN0LnNpemUoKTsgfTsK
ICAgICB2b2lkIHVwZGF0ZVByZXZpb3VzUmVnaW9uQ291bnQoKSB7IG1fcHJldmlvdXNSZWdpb25D
b3VudCA9IG1fcmVnaW9uTGlzdC5zaXplKCk7IH07CiAKLSAgICB2b2lkIHNldFJlZ2lvblJhbmdl
Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSk7CisgICAgdm9pZCBzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJC
b3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdpb24qKTsKICAgICB2b2lkIGdldFJlZ2lvblJh
bmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBS
ZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0OwogCi0gICAgdm9pZCBjbGVhclJlbmRlck9i
amVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCosCi0gICAgICAgIGNvbnN0IFJlbmRl
clJlZ2lvbiogb2xkU3RhcnRSZWdpb24gPSAwLCBjb25zdCBSZW5kZXJSZWdpb24qIG9sZEVuZFJl
Z2lvbiA9IDAsCi0gICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24gPSAw
LCBjb25zdCBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDApOworICAgIHZvaWQgY2xlYXJS
ZW5kZXJPYmplY3RDdXN0b21TdHlsZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIC8vIENo
ZWNrIGlmIHRoZSBvYmplY3QgaXMgaW4gcmVnaW9uIGFuZCB0aGUgcmVnaW9uIGlzIHBhcnQgb2Yg
dGhpcyBmbG93IHRocmVhZC4KICAgICBib29sIG9iamVjdEluRmxvd1JlZ2lvbihjb25zdCBSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsKQEAgLTE0Myw3ICsxNDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zRm9yTGF5b3V0
KCk7CiAgICAgdm9pZCBtYXJrUmVnaW9uc0Zvck92ZXJmbG93TGF5b3V0SWZOZWVkZWQoKTsKIAot
ICAgIGJvb2wgYWRkRm9yY2VkUmVnaW9uQnJlYWsoTGF5b3V0VW5pdCwgUmVuZGVyT2JqZWN0KiBi
cmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1l
bnQgPSAwKTsKKyAgICBib29sIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJlbmRlckJsb2Nr
KiwgTGF5b3V0VW5pdCwgUmVuZGVyT2JqZWN0KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBM
YXlvdXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKTsKICAgICB2b2lkIGFwcGx5QnJl
YWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCk7CiAKICAgICBib29sIHBhZ2VMb2dpY2FsU2l6ZUNo
YW5nZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsU2l6ZUNoYW5nZWQ7IH0KQEAgLTE3
OCw2ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoRmxvd1RocmVhZExheW91dFN0YXRl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgcG9wRmxvd1RocmVhZExheW91dFN0YXRl
KCk7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24oY29u
c3QgUmVuZGVyQmxvY2sqKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyUmVuZGVyQm94UmVnaW9uSW5m
b0FuZEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlckJveCosIGNvbnN0IFJlbmRlclJlZ2lvbiosIGNv
bnN0IFJlbmRlclJlZ2lvbiosIGNvbnN0IFJlbmRlclJlZ2lvbiosIGNvbnN0IFJlbmRlclJlZ2lv
biopOwogCiAgICAgLy8gVXNlZCB0byBlc3RpbWF0ZSB0aGUgbWF4aW11bSBoZWlnaHQgb2YgdGhl
IGZsb3cgdGhyZWFkLgogICAgIHN0YXRpYyBMYXlvdXRVbml0IG1heExvZ2ljYWxIZWlnaHQoKSB7
IHJldHVybiBMYXlvdXRVbml0OjptYXgoKSAvIDI7IH0KQEAgLTIzNywxNCArMjM3LDE4IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgewogICAgICAgICAgICAgbV9zdGFydFJlZ2lvbiA9IHN0YXJ0Owog
ICAgICAgICAgICAgbV9lbmRSZWdpb24gPSBlbmQ7CisgICAgICAgICAgICBtX3JhbmdlSW52YWxp
ZGF0ZWQgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJl
Z2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRSZWdpb247IH0KICAgICAgICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2VuZFJlZ2lvbjsgfQorICAgICAgICBi
b29sIHJhbmdlSW52YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlSW52YWxpZGF0ZWQ7
IH0KKyAgICAgICAgdm9pZCBjbGVhclJhbmdlSW52YWxpZGF0ZWQoKSB7IG1fcmFuZ2VJbnZhbGlk
YXRlZCA9IGZhbHNlOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZW5kZXJSZWdpb24qIG1f
c3RhcnRSZWdpb247CiAgICAgICAgIFJlbmRlclJlZ2lvbiogbV9lbmRSZWdpb247CisgICAgICAg
IGJvb2wgbV9yYW5nZUludmFsaWRhdGVkOwogICAgIH07CiAKICAgICB0eXBlZGVmIFBPREludGVy
dmFsPExheW91dFVuaXQsIFJlbmRlclJlZ2lvbio+IFJlZ2lvbkludGVydmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDdjNjUzZjMyZDEzNWU1NjAzMzIxMTAw
MGQwODQxZWM5ODc0YTZlZGEuLjE0MmQ0ZGQ0MTBlMDVhNmVmMmIxMjQ0NWUwZmY0MzRhYzQxMTYw
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCkKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKGZsb3dUaHJlYWQpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBp
ZiAodXBkYXRlUmVnaW9uc0FuZFNoYXBlc0JlZm9yZUNoaWxkTGF5b3V0KGZsb3dUaHJlYWQpKQor
ICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpKQogICAgICAgICByZWxheW91
dENoaWxkcmVuID0gdHJ1ZTsKIAogICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0gc2l6ZSgp
OwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgbGF5b3V0UG9zaXRpb25lZE9iamVj
dHMocmVsYXlvdXRDaGlsZHJlbiB8fCBpc1Jvb3QoKSk7CiAKLSAgICB1cGRhdGVSZWdpb25zQW5k
U2hhcGVzQWZ0ZXJDaGlsZExheW91dChmbG93VGhyZWFkKTsKKyAgICB1cGRhdGVTaGFwZXNBZnRl
ckJsb2NrTGF5b3V0KCk7CiAKICAgICBjb21wdXRlT3ZlcmZsb3cob2xkQ2xpZW50QWZ0ZXJFZGdl
KTsKICAgICBzdGF0ZVB1c2hlci5wb3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKaW5kZXggZGZhMDE3ZGNk
MDJlNDM5N2VmYTQzN2FmZGE1NmFjYjU4NWU5NWFjMi4uYTg4YWU2MDIxZDJkYjUzNjBiY2YyM2Yy
OGJjYTkxYTUxYjM4MGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKQEAgLTEwNCwxNSArMTA0LDE1IEBA
IHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjphdXRvR2VuZXJhdGVSZWdpb25zVG9C
bG9ja09mZnNldChMYXlvdXRVbml0IC8qCiAgICAgdmFsaWRhdGVSZWdpb25zKCk7CiB9CiAKLXZv
aWQgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpzZXRQYWdlQnJlYWsoTGF5b3V0VW5pdCBv
ZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSkKK3ZvaWQgUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkOjpzZXRQYWdlQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRV
bml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKQogewotICAgIGlmIChSZW5kZXJN
dWx0aUNvbHVtblNldCogbXVsdGljb2xTZXQgPSB0b1JlbmRlck11bHRpQ29sdW1uU2V0KHJlZ2lv
bkF0QmxvY2tPZmZzZXQob2Zmc2V0KSkpCisgICAgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBt
dWx0aWNvbFNldCA9IHRvUmVuZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9ja09mZnNldChi
bG9jaywgb2Zmc2V0KSkpCiAgICAgICAgIG11bHRpY29sU2V0LT5yZWNvcmRTcGFjZVNob3J0YWdl
KHNwYWNlU2hvcnRhZ2UpOwogfQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6
dXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoTGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWlu
SGVpZ2h0KQordm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OnVwZGF0ZU1pbmltdW1Q
YWdlSGVpZ2h0KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdCBvZmZzZXQsIExh
eW91dFVuaXQgbWluSGVpZ2h0KQogewotICAgIGlmIChSZW5kZXJNdWx0aUNvbHVtblNldCogbXVs
dGljb2xTZXQgPSB0b1JlbmRlck11bHRpQ29sdW1uU2V0KHJlZ2lvbkF0QmxvY2tPZmZzZXQob2Zm
c2V0KSkpCisgICAgaWYgKFJlbmRlck11bHRpQ29sdW1uU2V0KiBtdWx0aWNvbFNldCA9IHRvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQocmVnaW9uQXRCbG9ja09mZnNldChibG9jaywgb2Zmc2V0KSkpCiAg
ICAgICAgIG11bHRpY29sU2V0LT51cGRhdGVNaW5pbXVtQ29sdW1uSGVpZ2h0KG1pbkhlaWdodCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQuaAppbmRleCA5MmEyODY0N2ZhN2QzZjU4ZTY3OGI2MmU3NWY2NjI3MTkz
N2I2OTkzLi41YmRjNWYyNGE3MDUzYTYzMTY1NTllNjY0YjhiNjNkNGY0ZjI1YjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZC5oCkBAIC00NCw4ICs0NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXV0b0dlbmVyYXRlUmVnaW9uc1RvQmxvY2tPZmZzZXQoTGF5b3V0VW5p
dCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGluaXRpYWxMb2dpY2FsV2lkdGgo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUJyZWFrKExheW91dFVu
aXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0
VW5pdCBtaW5IZWlnaHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlQnJlYWso
Y29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNo
b3J0YWdlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VIZWln
aHQoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBtaW5I
ZWlnaHQpIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ1
NTg1YmM2MzUzMGFmZDM4MmUzM2E0MjZkMzZjOWIzMzA3ZDY5OGEuLjk5MzIzZWE1NGQ3NjBhNTFj
MWU3YjgwMWQwODY5NThiNmVhYTdkYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wOC0x
MiAgQW5kcmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIFJlZ2lv
bnNdIENvbXB1dGUgY29ycmVjdCByZWdpb24gcmFuZ2VzIGZvciBib3hlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2Mjk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBjaGFuZ2Vz
IGluIGhvdyByZWdpb24gcmFuZ2VzIGFyZSBjb21wdXRlZCBhbmQgYXBwbGllZC4KKworICAgICAg
ICAqIGZhc3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNv
bHV0ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvYm90dG9t
LW92ZXJmbG93LW91dC1vZi1maXJzdC1yZWdpb24tYWJzb2x1dGUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5o
dG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdp
ZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG9hdC1w
dXNoZWQtd2lkdGgtY2hhbmdlLTIuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbC4KKyAgICAgICAgKiBmYXN0L3Jl
Z2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1sOgorICAgICAgICAq
IGZhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWw6CisgICAgICAgICog
ZmFzdC9yZWdpb25zL3Njcm9sbGFibGUtcGFyYWdyYXBoLXVuc3BsaXR0YWJsZS1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgt
dW5zcGxpdHRhYmxlLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA4LTEyICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gQWRkIFN1cHBv
cnQgZm9yIGNhbnZhcyBibGVuZCBtb2RlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVnaW9uLWFic29sdXRlLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvYm90dG9tLW92ZXJmbG93LW91dC1v
Zi1maXJzdC1yZWdpb24tYWJzb2x1dGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzlkNjk4
ZTQ5ZGZkNTYwYzU5YTc2ZjcwM2Q1ZDIyZWI3ZDc0ZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmlyc3QtcmVnaW9u
LWFic29sdXRlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgYm9keSB7
IGZvbnQ6IDE2cHgvMS4yNSBtb25vc3BhY2U7IH0KKworICAgICAgICAgICAgI2ZpcnN0LWJveC0x
IHsKKyAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgYmx1ZTsKKyAgICAgICAg
ICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGJsdWU7CisgICAgICAgICAgICAgICAgYm9y
ZGVyLXJpZ2h0OiAxcHggc29saWQgYmx1ZTsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6MjA0cHg7
CisgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjZmlyc3QtYm94LTIgeworICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206
IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQg
Ymx1ZTsKKyAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibHVlOworICAg
ICAgICAgICAgICAgIGhlaWdodDo5NnB4OworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3JlZ2lvbjEgeworICAgICAgICAg
ICAgICAgIHBhZGRpbmctbGVmdDogNXB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA1
cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4OworICAgICAgICAgICAgICAg
IHdpZHRoOiA0MDJweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwNXB4OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDI5
MHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4OworICAgICAgICAgICAgICAg
IHBhZGRpbmctYm90dG9tOiA1cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICNwMSB7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgICAg
IHdpZHRoOiA0MCU7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgICAgIHRvcDogMTUwcHg7CisgICAgICAgICAgICAgICAgbGVmdDogMTBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93OiBzY3Jv
bGw7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8cD5JbiB0aGUgdGVzdCBjYXNlIGJlbG93LCB0aGUgcGFyYWdyYXBoIHdp
dGggYSBzY3JvbGwgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgYmx1ZSBkaXYs
IGJldHdlZW4gdHdvIHJlZ2lvbnMuIFRoZSBwYXJhZ3JhcGggc2hvdWxkIGFwcGVhciBhcyBhIG1v
bm9saXRoaWNhbCBzaW5nbGUgYm94LCBzaXplZCByZWxhdGl2ZWx5IHRvIHRoZSBibHVlIGRpdiBm
cmFnbWVudCBpbnNpZGUgdGhlIGZpcnN0IHJlZ2lvbi48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJmaXJzdC1ib3gtMSI+CisgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJwMSI+
VGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LiBUaGVzZSBsaW5l
cyBzaG91bGQgYWxsIGZpdCB0aGUgc2Nyb2xsYWJsZSBib3guIFRoZXNlIGxpbmVzIHNob3VsZCBh
bGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC4gVGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhl
IHNjcm9sbGFibGUgYm94LjwvcD4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMiI+CisgICAgICAgICAgICAgICAg
PGRpdiBpZD0iZmlyc3QtYm94LTIiPjwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2JvdHRvbS1vdmVyZmxvdy1vdXQtb2YtZmly
c3QtcmVnaW9uLWFic29sdXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmExMWQ0MTA1N2VhZTllNTZjNzEy
Y2U3MzQzZDdmZWYyMmI3OTE2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9ib3R0b20tb3ZlcmZsb3ctb3V0LW9mLWZpcnN0LXJlZ2lvbi1hYnNvbHV0ZS5odG1s
CkBAIC0wLDAgKzEsNTYgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGJvZHkgeyBmb250OiAxNnB4LzEuMjUgbW9ub3Nw
YWNlOyB9CisKKyAgICAgICAgICAgICNjb250ZW50IHsKKyAgICAgICAgICAgICAgICAtd2Via2l0
LWZsb3ctaW50bzogZmxvdzE7CisgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAjZmlyc3QtYm94IHsKKyAgICAgICAgICAgICAgICBib3Jk
ZXI6IDFweCBzb2xpZCBibHVlOworICAgICAgICAgICAgICAgIGhlaWdodDozMDBweDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICNyZWdpb24xLCAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZy
b206IGZsb3cxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjcmVnaW9uMSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDQxMnB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMjEwcHg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24yIHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI3AxIHsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDQwJTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAxNTBweDsKKyAgICAgICAgICAgICAgICBsZWZ0
OiAxMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTIwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPkluIHRoZSB0ZXN0IGNhc2UgYmVsb3csIHRo
ZSBwYXJhZ3JhcGggd2l0aCBhIHNjcm9sbCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgaW5zaWRl
IHRoZSBibHVlIGRpdiwgYmV0d2VlbiB0d28gcmVnaW9ucy4gVGhlIHBhcmFncmFwaCBzaG91bGQg
YXBwZWFyIGFzIGEgbW9ub2xpdGhpY2FsIHNpbmdsZSBib3gsIHNpemVkIHJlbGF0aXZlbHkgdG8g
dGhlIGJsdWUgZGl2IGZyYWdtZW50IGluc2lkZSB0aGUgZmlyc3QgcmVnaW9uLjwvcD4KKyAgICAg
ICAgPGRpdiBpZD0iY29udGVudCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgor
ICAgICAgICAgICAgICAgIDxwIGlkPSJwMSI+VGhlc2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhl
IHNjcm9sbGFibGUgYm94LiBUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0aGUgc2Nyb2xsYWJs
ZSBib3guIFRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRoZSBzY3JvbGxhYmxlIGJveC4gVGhl
c2UgbGluZXMgc2hvdWxkIGFsbCBmaXQgdGhlIHNjcm9sbGFibGUgYm94LjwvcD4KKyAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKworICAgICAgICA8ZGl2IGlkPSJjb250YWluZXIi
PgorICAgICAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2
IGlkPSJyZWdpb24yIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0
aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0
LXB1c2hlZC13aWR0aC1jaGFuZ2UtMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYTk2OGNj
ZGZjMTIwYjNhOWNlYTI0Njc5OTIzOTYyZmQ0N2IwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS0yLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPCFkb2N0eXBlIGh0bWw+CisKKyA8c3R5bGU+CisgICAK
KyAgICAjZmxvYXQxIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIHBvc2l0aW9uOmFi
c29sdXRlOworICAgICAgICB3aWR0aDogMTUwcHg7CisgICAgICAgIGhlaWdodDogMTAycHg7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47CisgICAgICAgIHotaW5kZXg6LTE7CisgICAg
fQorICAgIAorICAgICNmbG9hdDIgeworICAgICAgICBmbG9hdDpyaWdodDsKKyAgICAgICAgd2lk
dGg6MjAwcHg7CisgICAgICAgIGhlaWdodDozMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
Om9yYW5nZQorICAgIH0KKworICAgICNyZWdpb24xLCAjcmVnaW9uMiwgI3JlZ2lvbjMgeworICAg
ICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgCisgICAgI3JlZ2lvbjEgewor
ICAgICAgICB3aWR0aDogMTcwcHg7CisgICAgICAgIGhlaWdodDogODBweDsKKyAgICAgICAgcGFk
ZGluZzogNXB4OworICAgIH0KKyAgICAKKyAgICAjcmVnaW9uMiB7CisgICAgICAgIHdpZHRoOiAz
OTBweDsKKyAgICAgICAgaGVpZ2h0OiA4OXB4OworICAgICAgICBwYWRkaW5nLXRvcDoxcHg7Cisg
ICAgICAgIHBhZGRpbmctbGVmdDo1cHg7CisgICAgICAgIHBhZGRpbmctcmlnaHQ6NXB4OworICAg
IH0KKyAgICAKKyAgICAjcmVnaW9uMyB7CisgICAgICAgIHdpZHRoOiAzODVweDsKKyAgICAgICAg
aGVpZ2h0OiA4MHB4OworICAgICAgICBwYWRkaW5nLWxlZnQ6NXB4OworICAgICAgICBwYWRkaW5n
LXJpZ2h0OjEwcHg7CisgICAgICAgIHBhZGRpbmctYm90dG9tOjEwcHg7CisgICAgfQorICAgIAor
ICAgIHAuZmxvdzEgeworICAgICAgICBjbGVhcjpib3RoOworICAgICAgICBtYXJnaW4tYm90dG9t
OiAwcHg7CisgICAgfQorCisgICAgcC5mbG93MiB7CisgICAgICAgIG1hcmdpbi10b3A6IDBweDsK
KyAgICB9CisgICAgCis8L3N0eWxlPgorCis8cD5JbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhlIGdy
ZWVuIGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdCByZWdpb24gYW5kIG9u
IHRoZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24gdHdvLgorVGhlIG9yYW5nZSBm
bG9hdCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2YgcmVnaW9uIHR3by48L3A+
CisKKzxkaXYgaWQ9InJlZ2lvbjEiPgorICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjwvcD4KKzwv
ZGl2PgorPGRpdiBpZD0icmVnaW9uMiI+CisgICAgPGltZyBpZD0iZmxvYXQyIj4KKyAgICA8cCBj
bGFzcz0iZmxvdzEiPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUg
cmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lv
bi48L3A+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjMiPgorPHAgY2xhc3M9ImZsb3cyIj5UaGlz
IGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5l
IG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorPHA+VGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorPC9kaXY+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRo
LWNoYW5nZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdp
ZHRoLWNoYW5nZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk2YjYwYjUwMjNmZTkzYjY5NzI1NjAwN2Nh
YmYwMWI3MzMzMjFlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLTIuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IWRv
Y3R5cGUgaHRtbD4KKworIDxzdHlsZT4KKworICAgICNjb250ZW50IHsKKyAgICAgICAgLXdlYmtp
dC1mbG93LWludG86IGZsb3cxOworICAgICAgICBwYWRkaW5nOiA1cHg7CisgICAgfQorICAKKyAg
ICAjZmxvYXQxIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIHdpZHRoOiAxNTBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbgor
ICAgIH0KKyAgICAKKyAgICAjZmxvYXQyIHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAg
IHdpZHRoOjIwMHB4OworICAgICAgICBoZWlnaHQ6MzBweDsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjpvcmFuZ2UKKyAgICB9CisKKyAgICAjcmVnaW9uMSwgI3JlZ2lvbjIsICNyZWdpb24zIHsK
KyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAgIC13ZWJraXQtZmxvdy1m
cm9tOiBmbG93MTsKKyAgICB9CisKKyAgICAjcmVnaW9uMSB7CisgICAgICAgIHdpZHRoOiAxODBw
eDsKKyAgICAgICAgaGVpZ2h0OiA5MHB4OworICAgIH0KKyAgICAKKyAgICAjcmVnaW9uMiB7Cisg
ICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA5MHB4OworICAgIH0KKyAgICAK
KyAgICAjcmVnaW9uMyB7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA5
MHB4OworICAgIH0KKworICAgICNmbG9hdGNvbnRhaW5lciB7CisgICAgICAgIGhlaWdodDogODRw
eDsKKyAgICB9Cis8L3N0eWxlPgorCis8cD5JbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhlIGdyZWVu
IGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdCByZWdpb24gYW5kIG9uIHRo
ZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24gdHdvLgorVGhlIG9yYW5nZSBmbG9h
dCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2YgcmVnaW9uIHR3by48L3A+CisK
KzxkaXYgaWQ9ImNvbnRlbnQiPgorICAgIDxkaXYgaWQ9ImZpcnN0LWJveCI+CisgICAgICAgIDxk
aXYgaWQ9InNlY29uZC1ib3giPgorICAgICAgICAgICAgPHAgaWQ9ImZsb2F0Y29udGFpbmVyIj48
aW1nIGlkPSJmbG9hdDEiPjxpbWcgaWQ9ImZsb2F0MiI+CisgICAgICAgICAgICA8cD5UaGlzIGxp
bmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgICAgICA8cD5U
aGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgICAg
ICAgICAgPHA+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdp
b24uPC9wPgorICAgICAgICAgICAgCisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+
CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0icmVnaW9uMiI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMyI+PC9kaXY+
Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UtZXhw
ZWN0ZWQuaHRtbAppbmRleCAxYzAwOWE2ZTEzYTQwM2ZjYzExNzQxZmIzMzY1ZWIxZjhjNjYzOGY3
Li5jZmEyNzYwZDY0ZjkwODViNTBmYTI5NmNjZDY5NjRjNGQ0ZTExMzMzIDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS1leHBlY3Rl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgt
Y2hhbmdlLWV4cGVjdGVkLmh0bWwKQEAgLTEsMTIgKzEsNiBAQAogPCFkb2N0eXBlIGh0bWw+CiAK
ICA8c3R5bGU+Ci0KLSAgICBAZm9udC1mYWNlIHsKLSAgICAgICAgZm9udC1mYW1pbHk6IHdlYmtp
dC1haGVtOwotICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7Ci0gICAgICAgIHNyYzogdXJsKC4u
Ly4uL3Jlc291cmNlcy9BaGVtLnR0Zik7Ci0gICAgfQogICAgCiAgICAgI2Zsb2F0MSB7CiAgICAg
ICAgIGZsb2F0OiBsZWZ0OwpAQCAtMTgsNyArMTIsOSBAQAogICAgIH0KICAgICAKICAgICAjZmxv
YXQyIHsKLSAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7Cisg
ICAgICAgIG1hcmdpbi1sZWZ0OiAtMzBweDsKKyAgICAgICAgZmxvYXQ6bGVmdDsKICAgICAgICAg
d2lkdGg6MjAwcHg7CiAgICAgICAgIGhlaWdodDozMHB4OwogICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOm9yYW5nZQpAQCAtNjIsMTQgKzU4LDE0IEBACiA8L3N0eWxlPgogCiA8cD5JbiB0aGUgZXhh
bXBsZSBiZWxvdywgdGhlIGdyZWVuIGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBm
aXJzdCByZWdpb24gYW5kIG9uIHRoZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24g
dHdvLgotVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Ag
b2YgcmVnaW9uIHR3by48L3A+CitUaGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSByaWdodCBhbGln
bmVkIHVuZGVyIHRoZSBncmVlbiBmbG9hdCBiZWNhdXNlIHRoZWlyIGNvbnRhaW5pbmcgYmxvY2sg
aXMgZmxvd24gb25seSBpbiB0aGUgZmlyc3QgcmVnaW9uPC9wPgogCiA8ZGl2IGlkPSJyZWdpb24x
Ij4KICAgICAgPHA+PGltZyBpZD0iZmxvYXQxIj48L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9InJlZ2lv
bjIiPgogICAgIDxpbWcgaWQ9ImZsb2F0MiI+Ci0gICAgPHAgY2xhc3M9ImZsb3cxIj5UaGlzIGxp
bmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgorICAgIDxwIGNsYXNz
PSJmbG93MSI+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdp
b24uPC9wPgogPC9kaXY+CiA8ZGl2IGlkPSJyZWdpb24zIj4KIDxwIGNsYXNzPSJmbG93MiI+VGhp
cyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGlu
ZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLjwvcD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvYXQtcHVzaGVkLXdpZHRoLWNoYW5nZS5o
dG1sCmluZGV4IDFlODcxYjZhYzFlMWVjZGY5MzcwNzcyN2FkMmJiYThhNWY0M2I3NDkuLjg5MTZk
ZjE2NWJlZDY2Y2FiYzAxZjFkYTI3ZWZlNTg5NTg0ZDNlZDcgMTAwNzU1Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9mbG9hdC1wdXNoZWQtd2lkdGgtY2hhbmdlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb2F0LXB1c2hlZC13aWR0aC1jaGFuZ2UuaHRtbApAQCAt
MiwxMiArMiw2IEBACiAKICA8c3R5bGU+CiAKLSAgIEBmb250LWZhY2UgewotICAgICAgICBmb250
LWZhbWlseTogd2Via2l0LWFoZW07Ci0gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKLSAgICAg
ICAgc3JjOiB1cmwoLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmKTsKLSAgICB9Ci0KICAgICAjY29u
dGVudCB7CiAgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93MTsKICAgICAgICAgcGFkZGlu
ZzogNXB4OwpAQCAtNDksMTMgKzQzLDEzIEBACiA8L3N0eWxlPgogCiA8cD5JbiB0aGUgZXhhbXBs
ZSBiZWxvdywgdGhlIGdyZWVuIGZsb2F0IHNob3VsZCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaXJz
dCByZWdpb24gYW5kIG9uIHRoZSBsZWZ0LiBJdCBzaG91bGQgc3BpbGwgaW50byByZWdpb24gdHdv
LgotVGhlIG9yYW5nZSBmbG9hdCBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGF0IHRoZSB0b3Agb2Yg
cmVnaW9uIHR3by48L3A+CitUaGUgb3JhbmdlIGZsb2F0IHNob3VsZCBiZSByaWdodCBhbGlnbmVk
IHVuZGVyIHRoZSBncmVlbiBmbG9hdCBiZWNhdXNlIHRoZWlyIGNvbnRhaW5pbmcgYmxvY2sgaXMg
Zmxvd24gb25seSBpbiB0aGUgZmlyc3QgcmVnaW9uPC9wPgogCiA8ZGl2IGlkPSJjb250ZW50Ij4K
ICAgICA8ZGl2IGlkPSJmaXJzdC1ib3giPgogICAgICAgICA8ZGl2IGlkPSJzZWNvbmQtYm94Ij4K
LSAgICAgICAgICAgIDxwPjxpbWcgaWQ9ImZsb2F0MSI+PGltZyBpZD0iZmxvYXQyIj4KLSAgICAg
ICAgICAgIDxwPlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVn
aW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi48
L3A+CisgICAgICAgICAgICA8cD48aW1nIGlkPSJmbG9hdDEiPjxpbWcgaWQ9ImZsb2F0MiI+PHAv
PgorICAgICAgICAgICAgPHA+VGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9m
IHRoZSByZWdpb24uPC9wPgogCSAgICA8cD5UaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdl
dCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0
IG9mIHRoZSByZWdpb24uPC9wPgogICAgICAgICAgICAgPHA+VGhpcyBsaW5lIG9mIHRleHQgc2hv
dWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uPC9wPgogICAgICAgICAgICAgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxp
dHRhYmxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJs
ZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNjNmRl
M2EwYzdmNGVmNzk3MjQ2MjRlM2I5YWUwZjc3M2ZmNjRmOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11bnNwbGl0dGFibGUt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxo
ZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ij4KKyAgICAgICAgPHN0eWxlPgorCisgICAgICAgICNjb250ZW50IHsKKyAg
ICAgICAgICAgIHdpZHRoOiAxODBweDsKKyAgICAgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAg
ICAgICAgICBib3JkZXI6IHRoaWNrIHNvbGlkIGdyZWVuOworICAgICAgICAgICAgZm9udC1zaXpl
OiAxNXB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKzxib2R5PgorCTxwPlRoZSBzY3JvbGxhYmxlIGVsZW1l
bnQgYmVsb3cgc2hvdWxkIGxvb2sgbGlrZSBpdCdzIG5vdCBmcmFnbWVudGVkLiBUaGUgZ3JlZW4g
Ym9yZGVyIHNob3VsZCBiZSBjb250aW5vdXMuIFRoZSBjb250ZW50IHNob3VsZCBmaXQgdGhlIHNj
cm9sbGFibGUgYXJlYS48L3A+CisgICAgPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICAgICAgPGRp
diBpZD0iY29udGVudCI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2NpbmcgZWxpdC4gUHJhZXNlbnQgaW50ZXJkdW0sIHNhcGllbiB2aXRhZSBmYXVjaWJ1cyBz
dXNjaXBpdCwgbWFzc2EgdXJuYSBzYWdpdHRpcyBsaWJlcm8sIGFjIGltcGVyZGlldCBlbGl0IGxh
Y3VzIGEgbGlndWxhLiBNYXVyaXMgYSBvcmNpIHNlbS4gTnVsbGFtIHVsbGFtY29ycGVyIG9ybmFy
ZSBwb3J0dGl0b3IuIE1vcmJpIGxhb3JlZXQgcGVsbGVudGVzcXVlIGRpYW0sIHZpdGFlIGhlbmRy
ZXJpdCBzZW0gZnJpbmdpbGxhIGlkLiBNYWVjZW5hcyBydXRydW0gbGFjaW5pYSBsb2JvcnRpcy4g
UHJhZXNlbnQgZWxpdCBsZWN0dXMsIHBvcnR0aXRvciBzZWQgc2VtcGVyIHZlbCwgZnJpbmdpbGxh
IGlkIGRvbG9yLiBTZWQgbGFjdXMgbmlzbCwgcnV0cnVtIHNpdCBhbWV0IGV1aXNtb2QgYSwgdnVs
cHV0YXRlIHF1aXMgZWxpdC4gRnVzY2UgY29tbW9kbyBkdWkgcXVpcyBsYWN1cyB2aXZlcnJhIHZl
bCBlZ2VzdGFzIHZlbGl0IHRlbXB1cy4gRG9uZWMgdXQgc2FwaWVuIHNpdCBhbWV0IHB1cnVzIGx1
Y3R1cyBmZXJtZW50dW0uIERvbmVjIGVsZWlmZW5kIHByZXRpdW0gbmVxdWUgcXVpcyBiaWJlbmR1
bS4gVmVzdGlidWx1bSBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cyBvcmNpIGx1Y3R1cyBl
dCB1bHRyaWNlcyBwb3N1ZXJlIGN1YmlsaWEgQ3VyYWU7IE5hbSBjb25ndWUgZGFwaWJ1cyBtaSwg
aWQgdWx0cmljaWVzIGVzdCBzYWdpdHRpcyBldC4gSW50ZWdlciBwb3N1ZXJlLCBlcm9zIHZpdGFl
IGxhb3JlZXQgY29uZ3VlLCB0b3J0b3IgcHVydXMgZXVpc21vZCBuaWJoLCBldSBwb3J0YSBwdXJ1
cyBhcmN1IGlkIHR1cnBpcy4gRG9uZWMgdml0YWUgdWx0cmljaWVzIG5pYmguIE51bGxhbSBpbiB1
cm5hIGRvbG9yLCBhdCBmcmluZ2lsbGEgbG9yZW0uIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2Nyb2xsYWJs
ZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
c2Nyb2xsYWJsZS1wYXJhZ3JhcGgtdW5zcGxpdHRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhkYTM0
ZDRjZGM2YzZjNGVhY2JhMmJiNjFjODI4ZGM5NGM1OTRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zY3JvbGxhYmxlLXBhcmFncmFwaC11bnNwbGl0dGFibGUu
aHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVU
Ri04Ij4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAjY29udGFpbmVyIHsKKyAgICAgICAgICAg
IHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgIG92
ZXJmbG93OiB2aXNpYmxlOworICAgICAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGZsb3c7Cisg
ICAgICAgIH0KKworICAgICAgICAjY29udGVudCB7CisgICAgICAgICAgICB3aWR0aDogMzAlOwor
ICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogdGhpY2sgc29s
aWQgZ3JlZW47CisgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CisgICAgICAgICAgICBvdmVy
Zmxvdzogc2Nyb2xsOworICAgICAgICB9CisKKyAgICAgICAgLnJlZ2lvbiB7CisgICAgICAgICAg
ICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAg
LXdlYmtpdC1mbG93LWZyb206IGZsb3c7CisgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsK
KyAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKzxib2R5PgorICAgIDxw
PlRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgYmVsb3cgc2hvdWxkIGxvb2sgbGlrZSBpdCdzIG5vdCBm
cmFnbWVudGVkLiBUaGUgZ3JlZW4gYm9yZGVyIHNob3VsZCBiZSBjb250aW5vdXMuIFRoZSBjb250
ZW50IHNob3VsZCBmaXQgdGhlIHNjcm9sbGFibGUgYXJlYS48L3A+CisgICAgPGRpdiBjbGFzcz0i
cmVnaW9uIj48L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHg7IiBjbGFzcz0icmVn
aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJyZWdpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPkxvcmVtIGlwc3VtIGRvbG9y
IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFByYWVzZW50IGludGVyZHVt
LCBzYXBpZW4gdml0YWUgZmF1Y2lidXMgc3VzY2lwaXQsIG1hc3NhIHVybmEgc2FnaXR0aXMgbGli
ZXJvLCBhYyBpbXBlcmRpZXQgZWxpdCBsYWN1cyBhIGxpZ3VsYS4gTWF1cmlzIGEgb3JjaSBzZW0u
IE51bGxhbSB1bGxhbWNvcnBlciBvcm5hcmUgcG9ydHRpdG9yLiBNb3JiaSBsYW9yZWV0IHBlbGxl
bnRlc3F1ZSBkaWFtLCB2aXRhZSBoZW5kcmVyaXQgc2VtIGZyaW5naWxsYSBpZC4gTWFlY2VuYXMg
cnV0cnVtIGxhY2luaWEgbG9ib3J0aXMuIFByYWVzZW50IGVsaXQgbGVjdHVzLCBwb3J0dGl0b3Ig
c2VkIHNlbXBlciB2ZWwsIGZyaW5naWxsYSBpZCBkb2xvci4gU2VkIGxhY3VzIG5pc2wsIHJ1dHJ1
bSBzaXQgYW1ldCBldWlzbW9kIGEsIHZ1bHB1dGF0ZSBxdWlzIGVsaXQuIEZ1c2NlIGNvbW1vZG8g
ZHVpIHF1aXMgbGFjdXMgdml2ZXJyYSB2ZWwgZWdlc3RhcyB2ZWxpdCB0ZW1wdXMuIERvbmVjIHV0
IHNhcGllbiBzaXQgYW1ldCBwdXJ1cyBsdWN0dXMgZmVybWVudHVtLiBEb25lYyBlbGVpZmVuZCBw
cmV0aXVtIG5lcXVlIHF1aXMgYmliZW5kdW0uIFZlc3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMg
aW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMgZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFl
OyBOYW0gY29uZ3VlIGRhcGlidXMgbWksIGlkIHVsdHJpY2llcyBlc3Qgc2FnaXR0aXMgZXQuIElu
dGVnZXIgcG9zdWVyZSwgZXJvcyB2aXRhZSBsYW9yZWV0IGNvbmd1ZSwgdG9ydG9yIHB1cnVzIGV1
aXNtb2QgbmliaCwgZXUgcG9ydGEgcHVydXMgYXJjdSBpZCB0dXJwaXMuIERvbmVjIHZpdGFlIHVs
dHJpY2llcyBuaWJoLiBOdWxsYW0gaW4gdXJuYSBkb2xvciwgYXQgZnJpbmdpbGxhIGxvcmVtLiBM
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0Ljwv
ZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>