<?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>21586</bug_id>
          
          <creation_ts>2008-10-13 23:45:55 -0700</creation_ts>
          <short_desc>SVG CSS properties don&apos;t work with CSS transitions</short_desc>
          <delta_ts>2025-08-19 09:35:39 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=297597</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathon Jongsma (jonner)">jonathon</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>antti.pirila</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dino</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>kprojection</cc>
    
    <cc>krit</cc>
    
    <cc>mike</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webmaster</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95250</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathon Jongsma (jonner)">jonathon</who>
    <bug_when>2008-10-13 23:45:55 -0700</bug_when>
    <thetext>Trying to use CSS transitions with SVG content doesn&apos;t work with (at least some) CSS properties that seem like they should be animatable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95251</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-13 23:48:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/37579

I added support for a few.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236174</commentid>
    <comment_count>2</comment_count>
      <attachid>58332</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-06-09 23:08:19 -0700</bug_when>
    <thetext>Created attachment 58332
Work in progress patch

I am adding this work-in-progress patch to get some feedback and because some things are still unclear.
What I tried were text-anchor, stroke-linejoin and stroke-linecap, those worked.
I then tried stroke-linewidth but there is a bug because it interpolates between two equal float values. Can this be because
the animation framework relies on PODs where here we use CSSValue pointers? I am basically not sure where RenderStyle *a
and *b come from. Note that this code is messy due to float &lt;-&gt; CSSValue* inconsistencies, but making that nicer could involve
changing RenderStyle.h/SVGRenderStyle.h a lot, which I want to prevent right now.
For the remaining SVG properties, I doubt some are very useful, like pointer-events. For properties that reference urls like
markers I am not sure how the smooth progress would go, I assume it is rather a sort of on/off switch. Finally I am not sure
how SVGPaint in stroke and fills should provide smooth progress, for instance when it starts with red paint but transforms to
some gradient? It would be great if this was documented somewhere, or if there already is a reference implementation.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236295</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-10 04:00:14 -0700</bug_when>
    <thetext>It&apos;s also the quastion how CSS transitions work together with SMIL animation? One value can be animated by both at te same time. Did someone test it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236303</commentid>
    <comment_count>4</comment_count>
      <attachid>58361</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-10 04:28:14 -0700</bug_when>
    <thetext>Created attachment 58361
Test with CSS transistions and SMIL Animation

This is a quiete harmless test. But even this tests shows the problem. WebKit is jumping between the differnent animations (CSS and SVG Animation). Also results differ a bit between WebKit based browsers. On Gtk the opacity is between 0.5 and 0 all the time, oscilating from one to the other. Chromium animates from 1-&gt;0 than from 0 -&gt;0.5 jumps to 1 and restarts the process. It should be tested what happens on additive sum, different animation functions and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236344</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-10 06:57:29 -0700</bug_when>
    <thetext>This describes which properties transition:
http://dev.w3.org/csswg/css3-transitions/#animatable-properties-

How SMIL and CSS animations interact is currently unspecified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236346</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-10 07:00:36 -0700</bug_when>
    <thetext>The patch looks reasonable, BTW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236359</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-06-10 07:23:47 -0700</bug_when>
    <thetext>Hello Simon,

(In reply to comment #5)
&gt; This describes which properties transition:
&gt; http://dev.w3.org/csswg/css3-transitions/#animatable-properties-
&gt; 
&gt; How SMIL and CSS animations interact is currently unspecified.

Thanks a lot! I was looking at the wrong spec then, it had no explanation about the SVG properties at all.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265413</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-17 01:12:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The patch looks reasonable, BTW.

If I compare the list of animated SVG attributes (that can be set by CSS), with the list at http://dev.w3.org/csswg/css3-transitions/#animatable-properties, we can just use a few transitions in SVG, mainly some font-settings and the color-attribute/property. Means, even the current SVG attributes defined for transitions in http://trac.webkit.org/browser/trunk/WebCore/page/animation/AnimationBase.cpp#L677 are not allowed.

But maybe the spec can change in that way, not to define the property names, but define transitions by the data type, see: http://www.w3.org/TR/SVG/animate.html#Animatable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265603</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-08-17 09:39:10 -0700</bug_when>
    <thetext>You&apos;re right - the specification should define the animatable properties by datatype. This is my mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266213</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-18 10:35:11 -0700</bug_when>
    <thetext>How do we test CSS Transitions in DRT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266223</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-18 10:42:22 -0700</bug_when>
    <thetext>See LayoutTests/transitions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420201</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Mill">kprojection</who>
    <bug_when>2011-06-13 21:45:20 -0700</bug_when>
    <thetext>Is there any renewed interest in adding more supported attributes? &quot;fill&quot; is a big one, for example. 

I&apos;m doing some SVG animations with Raphael, but using CSS animations for effects where possible makes things much faster, and makes more interesting work possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420244</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-13 23:46:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Is there any renewed interest in adding more supported attributes? &quot;fill&quot; is a big one, for example. 
&gt; 
&gt; I&apos;m doing some SVG animations with Raphael, but using CSS animations for effects where possible makes things much faster, and makes more interesting work possible.

There is still a lot of interest in supporting more SVG-CSS values for CSS transitions and animations. Most SVG people are just busy with fixing other issues. So we are always searching for volunteers. Do you want to help? The attached patch should help to add more CSS properties, including fill and stroke. Just needs some testing. But I am sure we can help on testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421892</commentid>
    <comment_count>14</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-06-16 03:30:49 -0700</bug_when>
    <thetext>I updated Rob&apos;s patch recently but it is on a machine that is powered down on the other side of the world :) I plan to submit it for review next week. 

I was taking the approach that SMIL + CSS animations on the same property just don&apos;t mix. I think that&apos;s an ok situation for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422148</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Mill">kprojection</who>
    <bug_when>2011-06-16 12:44:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; There is still a lot of interest in supporting more SVG-CSS values for CSS transitions and animations. Most SVG people are just busy with fixing other issues. So we are always searching for volunteers. Do you want to help? The attached patch should help to add more CSS properties, including fill and stroke. Just needs some testing. But I am sure we can help on testing.

I&apos;ve never done a Webkit patch before, but I might give it a shot. I might be more useful as a tester, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452970</commentid>
    <comment_count>16</comment_count>
      <attachid>104327</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-18 05:30:02 -0700</bug_when>
    <thetext>Created attachment 104327
Not quite done patch

Attaching a not quite ready patch that can animate/transition SVG properties for opacity, length, colour and a few others. It will also transition fill and stroke paints as long as both ends of the animation are colours. I expect to finish this off today, then write tests.
(I notice there is a typo where the line-cap and line-join properties are referencing the wrong base)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453672</commentid>
    <comment_count>17</comment_count>
      <attachid>104327</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-08-19 00:01:47 -0700</bug_when>
    <thetext>Comment on attachment 104327
Not quite done patch

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

General question: Do you respect fallback colors for fill and stroke? fill=&quot;url(#invalid) green&quot; this should take a the solid color green.

&gt; Source/WebCore/svg/SVGLength.h:141
&gt; +            float fromPercent = from.valueAsPercentage();
&gt; +            float toPercent = valueAsPercentage();
&gt; +            length.newValueSpecifiedUnits(LengthTypePercentage, fromPercent + (toPercent - fromPercent) * progress, ec);

That means if you animate from cm to percentage, the calculated css value will be in percentage for the whole animation? That is different to SMIL animation, where we switch the unit type after 50% of the animation. If this is the way to go in CSS animations/transitions in general I&apos;m fine. Should be discussed in publicFX as well.

&gt; Source/WebCore/svg/SVGLength.h:145
&gt; +            float fromValue = from.valueInSpecifiedUnits();
&gt; +            float toValue = valueInSpecifiedUnits();
&gt; +            length.newValueSpecifiedUnits(resultType, fromValue + (toValue - fromValue) * progress, ec);

Same like above.

&gt; Source/WebCore/svg/SVGLength.h:152
&gt; +

skip this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453732</commentid>
    <comment_count>18</comment_count>
      <attachid>104486</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-19 04:05:28 -0700</bug_when>
    <thetext>Created attachment 104486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453735</commentid>
    <comment_count>19</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-19 04:12:51 -0700</bug_when>
    <thetext>Hi Dirk,

I didn&apos;t see this before I uploaded the most recent patch.

&gt; General question: Do you respect fallback colors for fill and stroke? fill=&quot;url(#invalid) green&quot; this should take a the solid color green.

I don&apos;t do anything here. If the style system resolves to give a Color to fill, then it can be transitioned (as long as the destination is also a Color). So in theory, this should work.

&gt; &gt; Source/WebCore/svg/SVGLength.h:141
&gt; &gt; +            float fromPercent = from.valueAsPercentage();
&gt; &gt; +            float toPercent = valueAsPercentage();
&gt; &gt; +            length.newValueSpecifiedUnits(LengthTypePercentage, fromPercent + (toPercent - fromPercent) * progress, ec);
&gt; 
&gt; That means if you animate from cm to percentage, the calculated css value will be in percentage for the whole animation? That is different to SMIL animation, where we switch the unit type after 50% of the animation. If this is the way to go in CSS animations/transitions in general I&apos;m fine. Should be discussed in publicFX as well.

Yes, it should be discussed. In most cases we don&apos;t specify what should happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453747</commentid>
    <comment_count>20</comment_count>
      <attachid>104486</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-08-19 04:59:36 -0700</bug_when>
    <thetext>Comment on attachment 104486
Patch

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

Some snippets and comments.

&gt; LayoutTests/transitions/svg-transitions.html:35
&gt; +    #rect2 {
&gt; +      fill: rgb(0, 0, 255);
&gt; +      stroke: rgb(255, 0, 0);
&gt; +    }
&gt; +    .animating #rect2 {
&gt; +      fill: rgb(0, 255, 0);
&gt; +      stroke: rgb(0, 0, 0);
&gt; +    }

Can you add a test with fill: url(#invalid) green;  to fill: url(#invalid) blue; please? Even if does not pass at the beginning, or at least not animate.

&gt; Source/WebCore/page/animation/AnimationBase.cpp:221
&gt; +static inline SVGLength blendFunc(const AnimationBase*, const SVGLength&amp; from, const SVGLength&amp; to, double progress)

Can you call it blendSVGLength?

&gt; Source/WebCore/svg/SVGLength.h:125
&gt; +        if (!from.isZero() &amp;&amp; !isZero() &amp;&amp; from.unitType() != unitType())
&gt; +            return *this;

Why don&apos;t you allow animation between different unit types? We are doing it with SVGAnimatedLengthAnimator as well. You may need a new private value() function.

&gt; Source/WebCore/svg/SVGLength.h:128
&gt; +        if (from.isZero() &amp;&amp; isZero())
&gt; +            return *this;

You need an early return for LengthTypeUnknown as well, no?

&gt; Source/WebCore/svg/SVGLength.h:140
&gt; +        if (resultType == LengthTypePercentage) {
&gt; +            float fromPercent = from.valueAsPercentage();
&gt; +            float toPercent = valueAsPercentage();
&gt; +            length.newValueSpecifiedUnits(LengthTypePercentage, fromPercent + (toPercent - fromPercent) * progress, ec);

Ah ok, animation between different unit types is difficult if one of the values is percentage since you need the viewport. You can still do it with animation between other unit types. But for percentage animation we need access to the SVGElement. I don&apos;t know another way to get the information about the viewPort :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455042</commentid>
    <comment_count>21</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-22 16:27:13 -0700</bug_when>
    <thetext>(In reply to comment #19)

&gt; &gt; General question: Do you respect fallback colors for fill and stroke? fill=&quot;url(#invalid) green&quot; this should take a the solid color green.
&gt; 
&gt; I don&apos;t do anything here. If the style system resolves to give a Color to fill, then it can be transitioned (as long as the destination is also a Color). So in theory, this should work.

I take this back. It&apos;s not so straightforward to handle this case. At the SVGRenderStyle level all we have is a paint type of SVG_PAINTTYPE_URI_RGBCOLOR, but we don&apos;t yet know if the URI is invalid.

I&apos;m going to leave this type of paint out of the patch for now. We can add transitions of arbitrary paints later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455259</commentid>
    <comment_count>22</comment_count>
      <attachid>104805</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-23 02:06:35 -0700</bug_when>
    <thetext>Created attachment 104805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455261</commentid>
    <comment_count>23</comment_count>
      <attachid>104805</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-23 02:08:10 -0700</bug_when>
    <thetext>Comment on attachment 104805
Patch

Removing review?. Forgot to add the test Dirk requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455306</commentid>
    <comment_count>24</comment_count>
      <attachid>104814</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-23 04:24:28 -0700</bug_when>
    <thetext>Created attachment 104814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455310</commentid>
    <comment_count>25</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-23 04:30:20 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 104486 [details])

&gt; Can you add a test with fill: url(#invalid) green;  to fill: url(#invalid) blue; please? Even if does not pass at the beginning, or at least not animate.

Done. It currently FAILs, as explained above.

&gt; &gt; Source/WebCore/page/animation/AnimationBase.cpp:221
&gt; &gt; +static inline SVGLength blendFunc(const AnimationBase*, const SVGLength&amp; from, const SVGLength&amp; to, double progress)
&gt; 
&gt; Can you call it blendSVGLength?

The name &apos;blendFunc&apos; is used for all the typed blending methods with parameter overloading.

&gt; &gt; Source/WebCore/svg/SVGLength.h:125
&gt; &gt; +        if (!from.isZero() &amp;&amp; !isZero() &amp;&amp; from.unitType() != unitType())
&gt; &gt; +            return *this;
&gt; 
&gt; Why don&apos;t you allow animation between different unit types? We are doing it with SVGAnimatedLengthAnimator as well. You may need a new private value() function.

Done. There are some restrictions. I can&apos;t currently animate between units that are relative (ems or exes). I can animate between percentages, but not between a percentage and not a percentage. There are also a couple of zero cases.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGLength.h:128
&gt; &gt; +        if (from.isZero() &amp;&amp; isZero())
&gt; &gt; +            return *this;
&gt; 
&gt; You need an early return for LengthTypeUnknown as well, no?

Done.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGLength.h:140
&gt; &gt; +        if (resultType == LengthTypePercentage) {
&gt; &gt; +            float fromPercent = from.valueAsPercentage();
&gt; &gt; +            float toPercent = valueAsPercentage();
&gt; &gt; +            length.newValueSpecifiedUnits(LengthTypePercentage, fromPercent + (toPercent - fromPercent) * progress, ec);
&gt; 
&gt; Ah ok, animation between different unit types is difficult if one of the values is percentage since you need the viewport. You can still do it with animation between other unit types. But for percentage animation we need access to the SVGElement. I don&apos;t know another way to get the information about the viewPort :/

Right. We suffer the same problems in the non-SVG case, and if you find the bug about animating CSS gradients you see similar issues. I think this is a good start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455313</commentid>
    <comment_count>26</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-23 04:33:09 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I can animate between percentages, but not between a percentage and not a percentage. 

Err.. not overload, sorry.

% -&gt; %,  YES
0 -&gt; %, YES
% -&gt; 0, YES
everything else -&gt; %, NO
% -&gt; everything else, NO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456070</commentid>
    <comment_count>27</comment_count>
      <attachid>104814</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-08-24 06:35:03 -0700</bug_when>
    <thetext>Comment on attachment 104814
Patch

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

Looks sane, still some comments from my side:

&gt; Source/WebCore/svg/SVGLength.cpp:223
&gt; +        break;

All these breaks can be removed.

&gt; Source/WebCore/svg/SVGLength.cpp:255
&gt; -    ASSERT_NOT_REACHED();
&gt; +    ec = NOT_SUPPORTED_ERR;

This can stay as-is, it&apos;s not possible to reach this state.

&gt; Source/WebCore/svg/SVGLength.cpp:271
&gt;          break;

These breaks are superfluous now. you can remove them.

&gt; Source/WebCore/svg/SVGLength.cpp:298
&gt;      }
&gt; +    ec = NOT_SUPPORTED_ERR;
&gt; +    return 0;

Same as above, after removing all breaks; you can also reintroduce ASSERT_NOT_REACHED()  here, as it&apos;s not possible to have any other types than those handled in the switch. The compiler would warn about any missing, as there&apos;s no default: case.

&gt; Source/WebCore/svg/SVGLength.h:142
&gt; +            length.newValueSpecifiedUnits(LengthTypePercentage, fromPercent + (toPercent - fromPercent) * progress, ec);
&gt; +        } else {

Early return here, instead of adding an else branch.
if (ec)
    return SVGLength();
return length;
}
should be sufficient.

&gt; Source/WebCore/svg/SVGLength.h:150
&gt; +                    length.newValueSpecifiedUnits(toType, fromValue + (toValue - fromValue) * progress, ec);
&gt; +            } else {

Same here, early-exit instead of branching.

&gt; Source/WebCore/svg/SVGLength.h:159
&gt; +                if (!ec) {
&gt; +                    float fromValue = convertValueFromUserUnits(fromValueInUserUnits, toType, 0, ec);
&gt; +                    if (!ec) {
&gt; +                        float toValue = valueInSpecifiedUnits();
&gt; +                        length.newValueSpecifiedUnits(toType, fromValue + (toValue - fromValue) * progress, ec);
&gt; +                    }

turn each of these branches in early returns if (ec) return SVGLength()...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456545</commentid>
    <comment_count>28</comment_count>
      <attachid>105100</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-24 17:21:24 -0700</bug_when>
    <thetext>Created attachment 105100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456546</commentid>
    <comment_count>29</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-24 17:22:04 -0700</bug_when>
    <thetext>(In reply to comment #27)

Thanks Nikolas. All your comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457013</commentid>
    <comment_count>30</comment_count>
      <attachid>105100</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-25 11:29:31 -0700</bug_when>
    <thetext>Comment on attachment 105100
Patch

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

&gt; LayoutTests/transitions/resources/transition-test-helpers.js:88
&gt; +        if (isCloseEnough(parseInt(computedValue.red.cssText), expectedValue[0], tolerance) &amp;&amp;
&gt; +            isCloseEnough(parseInt(computedValue.green.cssText), expectedValue[1], tolerance) &amp;&amp;
&gt; +            isCloseEnough(parseInt(computedValue.blue.cssText), expectedValue[2], tolerance))

You could put these into a compareRGBColor function.

&gt; LayoutTests/transitions/svg-transitions-expected.txt:12
&gt; +FAIL - &quot;fill&quot; property for &quot;rect7&quot; element at 1s expected: 0,0,127 but saw: #invalid #0000ff

Did you mean to check in a failing result?

&gt; Source/WebCore/page/animation/AnimationBase.cpp:674
&gt; +class PropertyWrapperSVGPaint : public PropertyWrapperBase {

The name is awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457030</commentid>
    <comment_count>31</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-25 11:48:44 -0700</bug_when>
    <thetext>(In reply to comment #30)

&gt; Did you mean to check in a failing result?

Yes. I&apos;ll make a comment in the change log.

&gt; 
&gt; &gt; Source/WebCore/page/animation/AnimationBase.cpp:674
&gt; &gt; +class PropertyWrapperSVGPaint : public PropertyWrapperBase {
&gt; 
&gt; The name is awkward.

Yeah, but they all are. PropertyWrapperAcceleratedOpacity, PropertyWrapperAcceleratedTransform, PropertyWrapperMaybeInvalidColor.

Well, nearly all. We&apos;re inconsistent: FillLayersPropertyWrapper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457051</commentid>
    <comment_count>32</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-08-25 12:18:43 -0700</bug_when>
    <thetext>	M	LayoutTests/ChangeLog
	M	LayoutTests/transitions/resources/transition-test-helpers.js
	A	LayoutTests/transitions/svg-transitions-expected.txt
	A	LayoutTests/transitions/svg-transitions.html
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/page/animation/AnimationBase.cpp
	M	Source/WebCore/rendering/style/RenderStyle.h
	M	Source/WebCore/rendering/style/SVGRenderStyle.h
	M	Source/WebCore/svg/SVGLength.cpp
	M	Source/WebCore/svg/SVGLength.h
Committed r93807

http://trac.webkit.org/changeset/93807</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58332</attachid>
            <date>2010-06-09 23:08:19 -0700</date>
            <delta_ts>2011-08-18 05:30:02 -0700</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>21586.diff</filename>
            <type>text/plain</type>
            <size>6815</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGFhNmE0YzEuLmY1
NzllN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNTU1
LDYgKzU1NSwzOSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQcm9wZXJ0eVdyYXBwZXJCYXNlKj4g
bV9wcm9wZXJ0eVdyYXBwZXJzOwogfTsKIAorI2lmIEVOQUJMRShTVkcpCitzdGF0aWMgaW5saW5l
IEVUZXh0QW5jaG9yIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBFVGV4dEFu
Y2hvciBmcm9tLCBFVGV4dEFuY2hvciB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFVGV4dEFuY2hvcj4oYmxlbmRGdW5jKGFuaW0sIHN0YXRpY19jYXN0PGlu
dD4oZnJvbSksIHN0YXRpY19jYXN0PGludD4odG8pLCBwcm9ncmVzcykpOworfQorc3RhdGljIGlu
bGluZSBMaW5lQ2FwIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBMaW5lQ2Fw
IGZyb20sIExpbmVDYXAgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TGluZUNhcD4oYmxlbmRGdW5jKGFuaW0sIHN0YXRpY19jYXN0PGludD4oZnJvbSksIHN0
YXRpY19jYXN0PGludD4odG8pLCBwcm9ncmVzcykpOworfQorc3RhdGljIGlubGluZSBMaW5lSm9p
biBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgTGluZUpvaW4gZnJvbSwgTGlu
ZUpvaW4gdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGlu
ZUpvaW4+KGJsZW5kRnVuYyhhbmltLCBzdGF0aWNfY2FzdDxpbnQ+KGZyb20pLCBzdGF0aWNfY2Fz
dDxpbnQ+KHRvKSwgcHJvZ3Jlc3MpKTsKK30KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3Mg
UHJvcGVydHlXcmFwcGVyU1ZHTGVuZ3RoIDogcHVibGljIFByb3BlcnR5V3JhcHBlckdldHRlcjxD
U1NWYWx1ZSo+IHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJTVkdMZW5ndGgoaW50IHBy
b3AsIENTU1ZhbHVlKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShUKSkKKyAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q1NT
VmFsdWUqPihwcm9wLCBnZXR0ZXIpLCBtX3NldHRlciggc2V0dGVyICkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRl
clN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwg
ZG91YmxlIHByb2dyZXNzKSBjb25zdAorICAgIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUg
KmZyb21XaWR0aCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oKGEtPipQcm9wZXJ0
eVdyYXBwZXJHZXR0ZXI8Q1NTVmFsdWUqPjo6bV9nZXR0ZXIpKCkpOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSAqdG9XaWR0aCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oKGIt
PipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q1NTVmFsdWUqPjo6bV9nZXR0ZXIpKCkpOworCisgICAg
ICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIGZyb21XaWR0aC0+Z2V0RmxvYXRW
YWx1ZSgpLCB0b1dpZHRoLT5nZXRGbG9hdFZhbHVlKCksIHByb2dyZXNzKSk7IAorICAgIH0KK3By
aXZhdGU6CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoVCk7Cit9OworI2VuZGlm
CisKIAogc3RhdGljIFZlY3RvcjxQcm9wZXJ0eVdyYXBwZXJCYXNlKj4qIGdQcm9wZXJ0eVdyYXBw
ZXJzID0gMDsKIHN0YXRpYyBpbnQgZ1Byb3BlcnR5V3JhcHBlck1hcFtudW1DU1NQcm9wZXJ0aWVz
XTsKQEAgLTY1OCw4ICs2OTEsMTcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0
eU1hcCgpCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBw
ZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5RmlsbE9wYWNpdHksICZS
ZW5kZXJTdHlsZTo6ZmlsbE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0RmlsbE9wYWNpdHkpKTsK
LSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZs
b2F0PihDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmbG9vZE9wYWNpdHks
ICZSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlTdHJva2VP
cGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0cm9rZU9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3Ry
b2tlT3BhY2l0eSkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5bGU6
OmZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRGbG9vZE9wYWNpdHkpKTsKKyAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQ
cm9wZXJ0eVN0b3BPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0b3BPcGFjaXR5LCAmUmVuZGVyU3R5
bGU6OnNldFN0b3BPcGFjaXR5KSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQo
bmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5Rmxvb2RDb2xv
ciwgJlJlbmRlclN0eWxlOjpmbG9vZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEZsb29kQ29sb3Ip
KTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVy
TWF5YmVJbnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlTdG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c3Rv
cENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFN0b3BDb2xvcikpOworICAgICAgICBnUHJvcGVydHlX
cmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQ
cm9wZXJ0eUxpZ2h0aW5nQ29sb3IsICZSZW5kZXJTdHlsZTo6bGlnaHRpbmdDb2xvciwgJlJlbmRl
clN0eWxlOjpzZXRMaWdodGluZ0NvbG9yKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlclNWR0xlbmd0aDxmbG9hdD4oQ1NTUHJvcGVydHlTdHJv
a2VXaWR0aCwgJlJlbmRlclN0eWxlOjpzdHJva2VXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRTdHJv
a2VXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0
eVdyYXBwZXI8RVRleHRBbmNob3I+KENTU1Byb3BlcnR5VGV4dEFuY2hvciwgJlJlbmRlclN0eWxl
Ojp0ZXh0QW5jaG9yLCAmUmVuZGVyU3R5bGU6OnNldFRleHRBbmNob3IpKTsKKyAgICAgICAgZ1By
b3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExpbmVKb2luPihDU1NQ
cm9wZXJ0eVRleHRBbmNob3IsICZSZW5kZXJTdHlsZTo6am9pblN0eWxlLCAmUmVuZGVyU3R5bGU6
OnNldEpvaW5TdHlsZSkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8TGluZUNhcD4oQ1NTUHJvcGVydHlUZXh0QW5jaG9yLCAmUmVuZGVyU3R5
bGU6OmNhcFN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldENhcFN0eWxlKSk7CisgICAgICAgIGdQcm9w
ZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxpbnQ+KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24sICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb25zSW5FZmZlY3QsICZS
ZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsKICNlbmRpZgogCiAgICAg
ICAgIC8vIFRPRE86CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAxODli
ZWNmLi45ODZmZTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEw
NDUsNiArMTA0NSwzMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+Zmxvb2RPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNl
dEZsb29kT3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZsb29kT3BhY2l0
eShmKTsgfQorCisgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLT5zdG9wT3BhY2l0eSgpOyB9CisgICAgdm9pZCBzZXRTdG9wT3BhY2l0eShmbG9hdCBmKSB7
IGFjY2Vzc1NWR1N0eWxlKCktPnNldFN0b3BPcGFjaXR5KGYpOyB9CisKKyAgICBjb25zdCBDb2xv
ciYgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+c3RvcENvbG9yKCk7IH0K
KyAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgp
LT5zZXRTdG9wQ29sb3IoYyk7IH0KKworICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+Zmxvb2RDb2xvcigpOyB9CisgICAgdm9pZCBzZXRGbG9v
ZENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZsb29kQ29sb3Io
Yyk7IH0KKworICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOyB9CisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9y
KGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldExpZ2h0aW5nQ29sb3IoYyk7
IH0KKworICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHls
ZSgpLT50ZXh0QW5jaG9yKCk7IH0KKyAgICB2b2lkIHNldFRleHRBbmNob3IoRVRleHRBbmNob3Ig
dGEpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0VGV4dEFuY2hvcih0YSk7IH0KKworICAgIExpbmVD
YXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5jYXBTdHlsZSgpOyB9Cisg
ICAgdm9pZCBzZXRDYXBTdHlsZShMaW5lQ2FwIGNzKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldENh
cFN0eWxlKGNzKTsgfQorCisgICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS0+am9pblN0eWxlKCk7IH0KKyAgICB2b2lkIHNldEpvaW5TdHlsZShMaW5lSm9p
biBsaikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRKb2luU3R5bGUobGopOyB9CisKKyAgICBDU1NW
YWx1ZSAqc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VXaWR0
aCgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChmbG9hdCB3KSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYWNj
ZXNzU1ZHU3R5bGUoKS0+c3Ryb2tlV2lkdGgoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXg7
CisgICAgICAgIHZhbHVlLT5zZXRGbG9hdFZhbHVlKHZhbHVlLT5wcmltaXRpdmVUeXBlKCksIHcs
IGV4KTsgfQogI2VuZGlmCiAKICAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb250ZW50LmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCmluZGV4IGUwMzU0
ZTYuLmI3YzM4NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlRGVmcy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
RGVmcy5oCkBAIC01MCw4ICs1MCw4IEBACiAvLyAiSGVscGVyIiBtYWNyb3MgZm9yIFNWRydzIFJl
bmRlclN0eWxlIHByb3BlcnRpZXMKIC8vIEZJWE1FOiBUaGVzZSBhcmUgaW1wb3NzaWJsZSB0byB3
b3JrIHdpdGggb3IgZGVidWcuCiAjZGVmaW5lIFNWR19SU19ERUZJTkVfQVRUUklCVVRFX0RBVEFS
RUYoRGF0YSwgR3JvdXAsIFZhcmlhYmxlLCBUeXBlLCBOYW1lKSBcCi0gICAgRGF0YSBOYW1lKCkg
Y29uc3QgeyByZXR1cm4gR3JvdXAtPlZhcmlhYmxlOyB9IFwKLSAgICB2b2lkIHNldCMjVHlwZShE
YXRhIG9iaikgeyBTVkdfUlNfU0VUX1ZBUklBQkxFKEdyb3VwLCBWYXJpYWJsZSwgb2JqKSB9Cisg
ICAgY29uc3QgRGF0YSYgTmFtZSgpIGNvbnN0IHsgcmV0dXJuIEdyb3VwLT5WYXJpYWJsZTsgfSBc
CisgICAgdm9pZCBzZXQjI1R5cGUoY29uc3QgRGF0YSYgb2JqKSB7IFNWR19SU19TRVRfVkFSSUFC
TEUoR3JvdXAsIFZhcmlhYmxlLCBvYmopIH0KIAogI2RlZmluZSBTVkdfUlNfREVGSU5FX0FUVFJJ
QlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChEYXRhLCBHcm91cCwgVmFyaWFibGUsIFR5cGUsIE5h
bWUsIEluaXRpYWwpIFwKICAgICBTVkdfUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGKERhdGEs
IEdyb3VwLCBWYXJpYWJsZSwgVHlwZSwgTmFtZSkgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58361</attachid>
            <date>2010-06-10 04:28:14 -0700</date>
            <delta_ts>2010-06-10 04:28:14 -0700</delta_ts>
            <desc>Test with CSS transistions and SMIL Animation</desc>
            <filename>svg-css-transitions2.svg</filename>
            <type>image/svg+xml</type>
            <size>455</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KcmVjdCB7
ZmlsbC1vcGFjaXR5OjE7fQpyZWN0OmhvdmVyIHsKICAgIGZpbGwtb3BhY2l0eTogMC41OwogICAg
LXdlYmtpdC10cmFuc2l0aW9uOiBmaWxsLW9wYWNpdHkgMC41cyBsaW5lYXI7Cn0KPC9zdHlsZT4K
PHJlY3QgaWQ9InJlY3QiIHg9IjIwIiB5PSIyMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZp
bGw9ImJsdWUiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlVHlwZT0iQ1NTIiBhdHRyaWJ1dGVOYW1l
PSJmaWxsLW9wYWNpdHkiIGZyb209IjEiIHRvPSIwIiBkdXI9IjRzIiBiZWdpbj0iMHMiCiAgICAg
cmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGZpbGw9ImZyZWV6ZSIvPgo8L3JlY3Q+Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104327</attachid>
            <date>2011-08-18 05:30:02 -0700</date>
            <delta_ts>2011-08-19 04:05:17 -0700</delta_ts>
            <desc>Not quite done patch</desc>
            <filename>svg-css.patch</filename>
            <type>text/plain</type>
            <size>14965</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNmU3YzBlLi45M2E2NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTEtMDgtMTggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NgorICAgICAgICBB
cHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgdG8gU1ZHIHByb3BlcnRpZXMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlclNWR0xlbmd0aDo6UHJvcGVydHlXcmFwcGVyU1ZHTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR0xlbmd0aDo6YmxlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjplcXVhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OmJsZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRl
ZEZsYWdzOjpzdG9wT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
c2V0U3RvcE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnRleHRB
bmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFRleHRBbmNob3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmNhcFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRDYXBTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6am9pblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRl
ZEZsYWdzOjpzZXRKb2luU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OnN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJv
a2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3RvcENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRGbG9vZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRMaWdodGluZ0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpmaWxsUGFpbnRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjpmaWxsUGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6c2V0RmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SW5oZXJpdGVkRmxhZ3M6OnN0cm9rZVBhaW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c3Ryb2tlUGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6c2V0U3Ryb2tlUGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6c3RvcENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpm
bG9vZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpsaWdodGluZ0Nv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzdG9wQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OmZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3R5bGU6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGguaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xlbmd0aDo6YmxlbmQpOgorCiAyMDExLTA4LTE3ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDaGFuZ2UgcmVmZXJlbmNlcyB0byBsZXZlbGRiLmd5cCB0
byBsZXZlbGRhdGFiYXNlLmd5cCBhcyBwYXJ0IG9mIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBlZTE3ODMzLi45NDBmYzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApA
QCAtMjE3LDYgKzIxNywyOCBAQCBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoQm94JiBmcgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKKyNpZiBFTkFCTEUoU1ZHKQorc3RhdGljIGlubGluZSBFVGV4dEFuY2hvciBi
bGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRVRleHRBbmNob3IgZnJvbSwgRVRl
eHRBbmNob3IgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RVRleHRBbmNob3I+KGJsZW5kRnVuYyhhbmltLCBzdGF0aWNfY2FzdDxpbnQ+KGZyb20pLCBzdGF0
aWNfY2FzdDxpbnQ+KHRvKSwgcHJvZ3Jlc3MpKTsKK30KKworc3RhdGljIGlubGluZSBMaW5lQ2Fw
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBMaW5lQ2FwIGZyb20sIExpbmVD
YXAgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUNh
cD4oYmxlbmRGdW5jKGFuaW0sIHN0YXRpY19jYXN0PGludD4oZnJvbSksIHN0YXRpY19jYXN0PGlu
dD4odG8pLCBwcm9ncmVzcykpOworfQorCitzdGF0aWMgaW5saW5lIExpbmVKb2luIGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBMaW5lSm9pbiBmcm9tLCBMaW5lSm9pbiB0bywg
ZG91YmxlIHByb2dyZXNzKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxMaW5lSm9pbj4oYmxl
bmRGdW5jKGFuaW0sIHN0YXRpY19jYXN0PGludD4oZnJvbSksIHN0YXRpY19jYXN0PGludD4odG8p
LCBwcm9ncmVzcykpOworfQorCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0aCBibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFNWR0xlbmd0aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3Ro
JiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgCisgICAgcmV0dXJuIHRvLmJsZW5kKGZyb20sIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKK30KKyNlbmRpZgorCiBjbGFzcyBQcm9w
ZXJ0eVdyYXBwZXJCYXNlOwogCiBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCk7
CkBAIC02NjMsNiArNjg1LDgxIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFByb3BlcnR5V3JhcHBl
ckJhc2UqPiBtX3Byb3BlcnR5V3JhcHBlcnM7CiB9OwogCisjaWYgRU5BQkxFKFNWRykKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJvcGVydHlXcmFwcGVyU1ZHTGVuZ3RoIDogcHVibGlj
IFByb3BlcnR5V3JhcHBlckdldHRlcjxDU1NWYWx1ZSo+IHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0
eVdyYXBwZXJTVkdMZW5ndGgoaW50IHByb3AsIENTU1ZhbHVlKiAoUmVuZGVyU3R5bGU6OipnZXR0
ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShUKSkKKyAgICA6IFByb3Bl
cnR5V3JhcHBlckdldHRlcjxDU1NWYWx1ZSo+KHByb3AsIGdldHRlciksIG1fc2V0dGVyKCBzZXR0
ZXIgKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBh
LCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUgKmZyb21XaWR0aCA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4oKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q1NTVmFsdWUqPjo6bV9nZXR0
ZXIpKCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSAqdG9XaWR0aCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q1NTVmFsdWUq
Pjo6bV9nZXR0ZXIpKCkpOworICAgICAgICAKKyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVu
ZEZ1bmMoYW5pbSwgZnJvbVdpZHRoLT5nZXRGbG9hdFZhbHVlKCksIHRvV2lkdGgtPmdldEZsb2F0
VmFsdWUoKSwgcHJvZ3Jlc3MpKTsgCisgICAgfQorcHJpdmF0ZToKKyAgICB2b2lkIChSZW5kZXJT
dHlsZTo6Km1fc2V0dGVyKShUKTsKK307CisKK2NsYXNzIFByb3BlcnR5V3JhcHBlclNWR1BhaW50
IDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2UgeworcHVibGljOgorICAgIFByb3BlcnR5V3Jh
cHBlclNWR1BhaW50KGludCBwcm9wLCBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiAoUmVu
ZGVyU3R5bGU6OipwYWludFR5cGVHZXR0ZXIpKCkgY29uc3QsIGNvbnN0IENvbG9yJiAoUmVuZGVy
U3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25z
dCBDb2xvciYpKQorICAgIDogUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQorICAgICwgbV9wYWlu
dFR5cGVHZXR0ZXIocGFpbnRUeXBlR2V0dGVyKQorICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQorICAg
ICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBib29s
IGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSBTVkdQYWlu
dDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiB8fAorICAgICAgICAgICAgKGItPiptX3BhaW50VHlw
ZUdldHRlcikoKSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0
dGVyKSgpOworICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlk
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmICghZnJv
bUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGZyb21Db2xvciA9IGEtPmZpbGxQYWludENv
bG9yKCk7CisgICAgICAgIGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICB0b0Nv
bG9yID0gYi0+ZmlsbFBhaW50Q29sb3IoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmcm9t
Q29sb3IgPT0gdG9Db2xvcjsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0
eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKChhLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgIT0gU1ZHUGFpbnQ6OlNW
R19QQUlOVFRZUEVfUkdCQ09MT1IgfHwKKyAgICAgICAgICAgIChiLT4qbV9wYWludFR5cGVHZXR0
ZXIpKCkgIT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1IpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgQ29sb3IgZnJvbUNvbG9yID0gKGEtPiptX2dldHRlcikoKTsKKyAg
ICAgICAgQ29sb3IgdG9Db2xvciA9IChiLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgZnJvbUNvbG9yID0gYS0+ZmlsbFBhaW50Q29sb3IoKTsKKyAgICAgICAg
aWYgKCF0b0NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHRvQ29sb3IgPSBiLT5maWxsUGFp
bnRDb2xvcigpOworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9t
Q29sb3IsIHRvQ29sb3IsIHByb2dyZXNzKSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBj
b25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6OiptX3BhaW50VHlwZUdl
dHRlcikoKSBjb25zdDsKKyAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIp
KCkgY29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3Im
KTsKK307CisjZW5kaWYKIAogc3RhdGljIFZlY3RvcjxQcm9wZXJ0eVdyYXBwZXJCYXNlKj4qIGdQ
cm9wZXJ0eVdyYXBwZXJzID0gMDsKIHN0YXRpYyBpbnQgZ1Byb3BlcnR5V3JhcHBlck1hcFtudW1D
U1NQcm9wZXJ0aWVzXTsKQEAgLTc3MCw2ICs4NjcsMTggQEAgdm9pZCBBbmltYXRpb25CYXNlOjpl
bnN1cmVQcm9wZXJ0eU1hcCgpCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlGaWxsT3BhY2l0eSwgJlJlbmRlclN0
eWxlOjpmaWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRGaWxsT3BhY2l0eSkpOwogICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENT
U1Byb3BlcnR5Rmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OmZsb29kT3BhY2l0eSwgJlJlbmRl
clN0eWxlOjpzZXRGbG9vZE9wYWNpdHkpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFw
cGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHks
ICZSZW5kZXJTdHlsZTo6c3Ryb2tlT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VPcGFj
aXR5KSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3Jh
cHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHksICZSZW5kZXJTdHlsZTo6Zmxvb2RP
cGFjaXR5LCAmUmVuZGVyU3R5bGU6OnNldEZsb29kT3BhY2l0eSkpOworICAgICAgICBnUHJvcGVy
dHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5
U3RvcE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c3RvcE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0
U3RvcE9wYWNpdHkpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJv
cGVydHlXcmFwcGVyU1ZHUGFpbnQoQ1NTUHJvcGVydHlGaWxsLCAmUmVuZGVyU3R5bGU6OmZpbGxQ
YWludFR5cGUsICZSZW5kZXJTdHlsZTo6ZmlsbFBhaW50Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0
RmlsbFBhaW50Q29sb3IpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcg
UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQoQ1NTUHJvcGVydHlTdHJva2UsICZSZW5kZXJTdHlsZTo6
c3Ryb2tlUGFpbnRUeXBlLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVBhaW50Q29sb3IsICZSZW5kZXJT
dHlsZTo6c2V0U3Ryb2tlUGFpbnRDb2xvcikpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+
YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eUZs
b29kQ29sb3IsICZSZW5kZXJTdHlsZTo6Zmxvb2RDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRGbG9v
ZENvbG9yKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5
V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5U3RvcENvbG9yLCAmUmVuZGVyU3R5
bGU6OnN0b3BDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRTdG9wQ29sb3IpKTsKKyAgICAgICAgZ1By
b3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29s
b3IoQ1NTUHJvcGVydHlMaWdodGluZ0NvbG9yLCAmUmVuZGVyU3R5bGU6OmxpZ2h0aW5nQ29sb3Is
ICZSZW5kZXJTdHlsZTo6c2V0TGlnaHRpbmdDb2xvcikpOworICAgICAgICBnUHJvcGVydHlXcmFw
cGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eVN0
cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldFN0
cm9rZVdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3Bl
cnR5V3JhcHBlcjxFVGV4dEFuY2hvcj4oQ1NTUHJvcGVydHlUZXh0QW5jaG9yLCAmUmVuZGVyU3R5
bGU6OnRleHRBbmNob3IsICZSZW5kZXJTdHlsZTo6c2V0VGV4dEFuY2hvcikpOworICAgICAgICBn
UHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGluZUpvaW4+KENT
U1Byb3BlcnR5VGV4dEFuY2hvciwgJlJlbmRlclN0eWxlOjpqb2luU3R5bGUsICZSZW5kZXJTdHls
ZTo6c2V0Sm9pblN0eWxlKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxMaW5lQ2FwPihDU1NQcm9wZXJ0eVRleHRBbmNob3IsICZSZW5kZXJT
dHlsZTo6Y2FwU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Q2FwU3R5bGUpKTsKKyAgICAgICAgZ1By
b3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGludD4oQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwg
JlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogI2VuZGlmCiAKICAg
ICAgICAgLy8gVE9ETzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKaW5kZXggMjgxMjliYS4uOGQxZmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc1LDYgKzc1LDcgQEAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYWludC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0
eWxlLmgiCiAjZW5kaWYKIApAQCAtMTE2NCw2ICsxMTY1LDMzIEBAIHB1YmxpYzoKICAgICAKICAg
ICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5mbG9vZE9w
YWNpdHkoKTsgfQogICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZH
U3R5bGUoKS0+c2V0Rmxvb2RPcGFjaXR5KGYpOyB9CisKKyAgICBmbG9hdCBzdG9wT3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0b3BPcGFjaXR5KCk7IH0KKyAgICB2b2lkIHNl
dFN0b3BPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3RvcE9wYWNpdHko
Zik7IH0KKworICAgIEVUZXh0QW5jaG9yIHRleHRBbmNob3IoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLT50ZXh0QW5jaG9yKCk7IH0KKyAgICB2b2lkIHNldFRleHRBbmNob3IoRVRleHRBbmNo
b3IgdGEpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0VGV4dEFuY2hvcih0YSk7IH0KKworICAgIExp
bmVDYXAgY2FwU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5jYXBTdHlsZSgpOyB9
CisgICAgdm9pZCBzZXRDYXBTdHlsZShMaW5lQ2FwIGNzKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNl
dENhcFN0eWxlKGNzKTsgfQorCisgICAgTGluZUpvaW4gam9pblN0eWxlKCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS0+am9pblN0eWxlKCk7IH0KKyAgICB2b2lkIHNldEpvaW5TdHlsZShMaW5l
Sm9pbiBsaikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRKb2luU3R5bGUobGopOyB9CisKKyAgICBT
VkdMZW5ndGggc3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VX
aWR0aCgpOyB9CisgICAgdm9pZCBzZXRTdHJva2VXaWR0aChTVkdMZW5ndGggdykgeyBhY2Nlc3NT
VkdTdHlsZSgpLT5zZXRTdHJva2VXaWR0aCh3KTsgfQorICAgIAorICAgIHZvaWQgc2V0U3RvcENv
bG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldFN0b3BDb2xvcihjKTsg
fQorICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHls
ZSgpLT5zZXRGbG9vZENvbG9yKGMpOyB9CisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0
IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldExpZ2h0aW5nQ29sb3IoYyk7IH0KKyAg
ICAKKyAgICBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29u
c3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29s
b3ImIGZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50
Q29sb3IoKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsg
YWNjZXNzU1ZHU3R5bGUoKS0+c2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JH
QkNPTE9SLCBjLCAiIik7IH0KKworICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHN0
cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZVBhaW50VHlw
ZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5zdHJva2VQYWludENvbG9yKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBh
aW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlUGFp
bnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQogI2VuZGlmCiAK
ICAgICB2b2lkIHNldFdyYXBTaGFwZShQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGUpCkBA
IC0xNDAwLDYgKzE0MjgsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBjb25zdCBDb2xvciBjb2xv
ckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKIAorI2lmIEVOQUJM
RShTVkcpCisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCktPnN0b3BDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBzdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3Io
KTsgfQorI2VuZGlmCisKICAgICB2b2lkIGFwcGVuZENvbnRlbnQoUGFzc093blB0cjxDb250ZW50
RGF0YT4pOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGUuaAppbmRleCAwZmU0YTgwLi40YWFkZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMzE1LDEwICszMTUsMTAgQEAg
cHVibGljOgogICAgIFNWR0xlbmd0aCBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
c3Ryb2tlLT5kYXNoT2Zmc2V0OyB9CiAgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7IHJl
dHVybiB0ZXh0LT5rZXJuaW5nOyB9CiAgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBzdG9wcy0+b3BhY2l0eTsgfQotICAgIENvbG9yIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN0b3BzLT5jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7
IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBDb2xvciBmbG9vZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RDb2xvcjsgfQotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9CisgICAgY29uc3QgQ29sb3Im
IGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9CisgICAgY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0Nv
bG9yOyB9CiAgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZTsgfQogICAgIFNoYWRvd0RhdGEqIHNoYWRvdygpIGNv
bnN0IHsgcmV0dXJuIHNoYWRvd1NWRy0+c2hhZG93LmdldCgpOyB9CiAgICAgU3RyaW5nIGNsaXBw
ZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xpcHBlcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aC5oCmluZGV4IDI2MzJhNTAuLjE1YzYxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmgKQEAgLTExMCwxMCArMTEwLDQ4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwgdHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IHR5cGUgPT0g
TGVuZ3RoVHlwZUVYUzsKICAgICB9CiAKKyAgICBib29sIGlzWmVybygpIGNvbnN0IAorICAgIHsg
CisgICAgICAgIHJldHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgfQorCiAgICAg
c3RhdGljIFNWR0xlbmd0aCBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUq
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9DU1NQcmltaXRp
dmVWYWx1ZShjb25zdCBTVkdMZW5ndGgmKTsKICAgICBzdGF0aWMgU1ZHTGVuZ3RoTW9kZSBsZW5n
dGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CisgICAgU1ZHTGVuZ3RoIGJsZW5kKGNvbnN0IFNWR0xlbmd0aCYgZnJvbSwgZmxvYXQgcHJvZ3Jl
c3MpIGNvbnN0CisgICAgeworICAgICAgICAvLyBCbGVuZCB0d28gbGVuZ3RocyB0byBwcm9kdWNl
IGEgbmV3IGxlbmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gIFVzZWQgZm9yIGFuaW1hdGlv
bi4KKyAgICAgICAgaWYgKCFmcm9tLmlzWmVybygpICYmICFpc1plcm8oKSAmJiBmcm9tLnVuaXRU
eXBlKCkgIT0gdW5pdFR5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAg
CisgICAgICAgIGlmIChmcm9tLmlzWmVybygpICYmIGlzWmVybygpKQorICAgICAgICAgICAgcmV0
dXJuICp0aGlzOworICAgICAgICAKKyAgICAgICAgU1ZHTGVuZ3RoVHlwZSByZXN1bHRUeXBlID0g
dW5pdFR5cGUoKTsKKyAgICAgICAgaWYgKGlzWmVybygpKQorICAgICAgICAgICAgcmVzdWx0VHlw
ZSA9IGZyb20udW5pdFR5cGUoKTsKKyAgICAgICAgCisgICAgICAgIFNWR0xlbmd0aCBsZW5ndGg7
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCisgICAgICAgIGlmIChyZXN1bHRUeXBl
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBmbG9hdCBmcm9tUGVyY2Vu
dCA9IGZyb20udmFsdWVBc1BlcmNlbnRhZ2UoKTsKKyAgICAgICAgICAgIGZsb2F0IHRvUGVyY2Vu
dCA9IHZhbHVlQXNQZXJjZW50YWdlKCk7CisgICAgICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVj
aWZpZWRVbml0cyhMZW5ndGhUeXBlUGVyY2VudGFnZSwgZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50
IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3MsIGVjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGZsb2F0IGZyb21WYWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Cisg
ICAgICAgICAgICBmbG9hdCB0b1ZhbHVlID0gdmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAg
ICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhyZXN1bHRUeXBlLCBmcm9tVmFs
dWUgKyAodG9WYWx1ZSAtIGZyb21WYWx1ZSkgKiBwcm9ncmVzcywgZWMpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVjKSAgICAKKyAgICAgICAgICAgIHJldHVybiBTVkdMZW5ndGgoKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBsZW5ndGg7CisKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
Ym9vbCBkZXRlcm1pbmVWaWV3cG9ydChjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBmbG9hdCYg
d2lkdGgsIGZsb2F0JiBoZWlnaHQpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104486</attachid>
            <date>2011-08-19 04:05:28 -0700</date>
            <delta_ts>2011-08-23 02:06:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21586-20110819210534.patch</filename>
            <type>text/plain</type>
            <size>24532</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMyNzgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NzA1OWFkNTBkZjRkM2ZjODJjOTQ1
NzA1MDhlMTQ0ZWJhNjM5ZjcyLi5kYmJjNGJhMTBlNjc2NjQ1NWY1MTIyNjExN2EwYjEyN2NiNWI4
MzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDgtMTkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdCBmb3IgdGhlIFNWRyBwcm9wZXJ0aWVzIHRoYXQgY2FuIG5v
dyBhbmltYXRlLgorCisgICAgICAgICogdHJhbnNpdGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24t
dGVzdC1oZWxwZXJzLmpzOgorICAgICAgICAqIHRyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9u
cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wOC0xNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IHByb3BlciBoYW5kbGluZyBvZiBmb2N1cy9ibHVy
IGV2ZW50cyBpbiByZWdhcmQgdG8gc2hhZG93IERPTSBib3VuZGFyaWVzLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJz
LmpzIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1o
ZWxwZXJzLmpzCmluZGV4IGY0OTRkYTQyMjZjODA3Y2YyMmEyMTk1YTNkZWZhMWNhZmRlZjBmZGYu
LmZkOGFiNDlhNzUwNjZjYzE3NDE5MDc1OWFkYzJiOWM3NmE3OGM5ZDYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNlcy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5q
cworKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0
LWhlbHBlcnMuanMKQEAgLTgxLDYgKzgxLDI0IEBAIGZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRWYWx1
ZShleHBlY3RlZCwgaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAiZmlsbCIgfHwgcHJv
cGVydHkgPT0gInN0cm9rZSIpIHsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHkpLnJnYkNvbG9yOworICAgICAgICBpZiAoaXNDbG9zZUVub3Vn
aChwYXJzZUludChjb21wdXRlZFZhbHVlLnJlZC5jc3NUZXh0KSwgZXhwZWN0ZWRWYWx1ZVswXSwg
dG9sZXJhbmNlKSAmJgorICAgICAgICAgICAgaXNDbG9zZUVub3VnaChwYXJzZUludChjb21wdXRl
ZFZhbHVlLmdyZWVuLmNzc1RleHQpLCBleHBlY3RlZFZhbHVlWzFdLCB0b2xlcmFuY2UpICYmCisg
ICAgICAgICAgICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXB1dGVkVmFsdWUuYmx1ZS5jc3NU
ZXh0KSwgZXhwZWN0ZWRWYWx1ZVsyXSwgdG9sZXJhbmNlKSkKKyAgICAgICAgICAgIHBhc3MgPSB0
cnVlOworICAgICAgICAvLyBXZSBmYWlsZWQuIE1ha2Ugc3VyZSBjb21wdXRlZCB2YWx1ZSBpcyBz
b21ldGhpbmcgd2UgY2FuIHJlYWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgY29tcHV0
ZWRWYWx1ZSA9IGNvbXB1dGVkVmFsdWUuY3NzVGV4dDsKKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5
ID09ICJzdG9wLWNvbG9yIiB8fCBwcm9wZXJ0eSA9PSAiZmxvb2QtY29sb3IiIHx8IHByb3BlcnR5
ID09ICJsaWdodGluZy1jb2xvciIpIHsKKyAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmdldFBy
b3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpOworICAgICAgICAvLyBUaGUgY29tcHV0ZWRWYWx1ZSBj
c3NUZXh0IGlzIHJnYihudW0sIG51bSwgbnVtKQorICAgICAgICB2YXIgY29tcG9uZW50cyA9IGNv
bXB1dGVkVmFsdWUuY3NzVGV4dC5zcGxpdCgiKCIpWzFdLnNwbGl0KCIpIilbMF0uc3BsaXQoIiwi
KTsKKyAgICAgICAgaWYgKGlzQ2xvc2VFbm91Z2gocGFyc2VJbnQoY29tcG9uZW50c1swXSksIGV4
cGVjdGVkVmFsdWVbMF0sIHRvbGVyYW5jZSkgJiYKKyAgICAgICAgICAgIGlzQ2xvc2VFbm91Z2go
cGFyc2VJbnQoY29tcG9uZW50c1sxXSksIGV4cGVjdGVkVmFsdWVbMV0sIHRvbGVyYW5jZSkgJiYK
KyAgICAgICAgICAgIGlzQ2xvc2VFbm91Z2gocGFyc2VJbnQoY29tcG9uZW50c1syXSksIGV4cGVj
dGVkVmFsdWVbMl0sIHRvbGVyYW5jZSkpCisgICAgICAgICAgICBwYXNzID0gdHJ1ZTsKKyAgICAg
ICAgLy8gV2UgZmFpbGVkLiBNYWtlIHN1cmUgY29tcHV0ZWQgdmFsdWUgaXMgc29tZXRoaW5nIHdl
IGNhbiByZWFkIGluIHRoZSBlcnJvciBtZXNzYWdlCisgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBj
b21wdXRlZFZhbHVlLmNzc1RleHQ7CiAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhl
aWdodCIpIHsKICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQp
OwogICAgICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZh
bHVlLCB0b2xlcmFuY2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3Zn
LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10
cmFuc2l0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFlMTkwNzY1NDUxOWRlNmRiMmU0
MjQ1ZjNmZmNiNmUxM2E4ZWE0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL3N2Zy10cmFuc2l0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorRXhh
bXBsZQorUEFTUyAtICJmaWxsLW9wYWNpdHkiIHByb3BlcnR5IGZvciAicmVjdDEiIGVsZW1lbnQg
YXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjUKK1BBU1MgLSAic3Ryb2tlLXdpZHRo
IiBwcm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMworUEFTUyAtICJzdHJva2Utb3BhY2l0eSIgcHJvcGVydHkgZm9yICJyZWN0MSIgZWxl
bWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAuNQorUEFTUyAtICJzdHJva2Ut
ZGFzaG9mZnNldCIgcHJvcGVydHkgZm9yICJyZWN0MSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21l
dGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAiZmlsbCIgcHJvcGVydHkgZm9yICJyZWN0MiIgZWxl
bWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAsMTI3LDEyNworUEFTUyAtICJz
dHJva2UiIHByb3BlcnR5IGZvciAicmVjdDIiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxMjcsMCwwCitQQVNTIC0gInN0b3AtY29sb3IiIHByb3BlcnR5IGZvciAic3Rv
cDEiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMjcsMTI3LDAKK1BB
U1MgLSAic3RvcC1vcGFjaXR5IiBwcm9wZXJ0eSBmb3IgInN0b3AxIiBlbGVtZW50IGF0IDAuNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC43NQorUEFTUyAtICJzdHJva2UtbWl0ZXJsaW1pdCIg
cHJvcGVydHkgZm9yICJwb2x5bGluZTEiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxMQorUEFTUyAtICJrZXJuaW5nIiBwcm9wZXJ0eSBmb3IgInRleHQxIiBlbGVtZW50
IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNQorUEFTUyAtICJiYXNlbGluZS1zaGlm
dCIgcHJvcGVydHkgZm9yICJ0ZXh0MSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xv
c2UgdG86IDUKK1BBU1MgLSAiZmxvb2Qtb3BhY2l0eSIgcHJvcGVydHkgZm9yICJmbG9vZDEiIGVs
ZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjUKK1BBU1MgLSAiZmxvb2Qt
Y29sb3IiIHByb3BlcnR5IGZvciAiZmxvb2QxIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTI3LDEyNywwCitQQVNTIC0gImxpZ2h0aW5nLWNvbG9yIiBwcm9wZXJ0eSBm
b3IgImxpZ2h0MSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEyNywx
MjcsMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM3MDk4MWM0MmExMDgyMzc4ZDk5M2UxOTQ2NDg2ZGJjOTg0MzJmZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRt
bApAQCAtMCwwICsxLDE0NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorCisgICAgc3Zn
ICogeworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxczsKKyAgICAgIC13ZWJr
aXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICB9CisKKyAgICAjcmVj
dDEgeworICAgICAgZmlsbDogcmdiKDAsIDAsIDI1NSk7CisgICAgICBzdHJva2U6IHJlZDsKKyAg
ICAgIGZpbGwtb3BhY2l0eTogMTsKKyAgICAgIHN0cm9rZS1vcGFjaXR5OiAxOworICAgICAgc3Ry
b2tlLXdpZHRoOiAyOworICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7CisgICAgICBzdHJva2Ut
ZGFzaGFycmF5OiAxMDsKKyAgICB9CisgICAgLmFuaW1hdGluZyAjcmVjdDEgeworICAgICAgZmls
bDogcmdiKDAsIDI1NSwgMCk7CisgICAgICBzdHJva2U6IGJsYWNrOworICAgICAgZmlsbC1vcGFj
aXR5OiAwOworICAgICAgc3Ryb2tlLW9wYWNpdHk6IDA7CisgICAgICBzdHJva2Utd2lkdGg6IDQ7
CisgICAgICBzdHJva2UtZGFzaG9mZnNldDogMTA7CisgICAgfQorICAgIAorICAgICNyZWN0MiB7
CisgICAgICBmaWxsOiByZ2IoMCwgMCwgMjU1KTsKKyAgICAgIHN0cm9rZTogcmdiKDI1NSwgMCwg
MCk7CisgICAgfQorICAgIC5hbmltYXRpbmcgI3JlY3QyIHsKKyAgICAgIGZpbGw6IHJnYigwLCAy
NTUsIDApOworICAgICAgc3Ryb2tlOiByZ2IoMCwgMCwgMCk7CisgICAgfQorCisgICAgI3JlY3Qz
IHsKKyAgICAgIGZpbGw6IHVybCgjZ3JhZGllbnQxKTsKKyAgICB9CisKKyAgICAjc3RvcDEgewor
ICAgICAgc3RvcC1jb2xvcjogcmdiKDI1NSwwLDApOworICAgICAgc3RvcC1vcGFjaXR5OiAxOwor
ICAgIH0KKworICAgIC5hbmltYXRpbmcgI3N0b3AxIHsKKyAgICAgIHN0b3AtY29sb3I6IHJnYigw
LDI1NSwwKTsKKyAgICAgIHN0b3Atb3BhY2l0eTogMC41OworICAgIH0KKworICAgICNwb2x5bGlu
ZTEgeworICAgICAgZmlsbDogbm9uZTsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAgICBzdHJv
a2Utd2lkdGg6IDQ7CisgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTI7CisgICAgfQorICAgIAor
ICAgIC5hbmltYXRpbmcgI3BvbHlsaW5lMSB7CisgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7
CisgICAgfQorICAgIAorICAgICN0ZXh0MSB7CisgICAgICBrZXJuaW5nOiAwOworICAgICAgYmFz
ZWxpbmUtc2hpZnQ6IDA7CisgICAgfQorCisgICAgLmFuaW1hdGluZyAjdGV4dDEgeworICAgICAg
a2VybmluZzogMTBweDsKKyAgICAgIGJhc2VsaW5lLXNoaWZ0OiAxMHB4OworICAgIH0KKworICAg
ICNmbG9vZDEgeworICAgICAgZmxvb2Qtb3BhY2l0eTogMTsKKyAgICAgIGZsb29kLWNvbG9yOiBy
Z2IoMjU1LCAwLCAwKTsKKyAgICB9CisKKyAgICAuYW5pbWF0aW5nICNmbG9vZDEgeworICAgICAg
Zmxvb2Qtb3BhY2l0eTogMDsKKyAgICAgIGZsb29kLWNvbG9yOiByZ2IoMCwgMjU1LCAwKTsKKyAg
ICB9CisKKyAgICAjbGlnaHQxIHsKKyAgICAgIGxpZ2h0aW5nLWNvbG9yOiByZ2IoMjU1LCAwLCAw
KTsKKyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0
LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgfQorCisgICAgLmFuaW1h
dGluZyAjbGlnaHQxIHsKKyAgICAgIGxpZ2h0aW5nLWNvbG9yOiByZ2IoMCwgMjU1LCAwKTsKKyAg
ICB9CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0
LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PgorICAgIGNvbnN0IGV4cGVjdGVkVmFs
dWVzID0gWworICAgICAgLy8gW3RpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12
YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWzAuNSwgInJlY3QxIiwgImZpbGwtb3BhY2l0eSIsIDAu
NSwgMC4xXSwKKyAgICAgIFswLjUsICJyZWN0MSIsICJzdHJva2Utd2lkdGgiLCAzLCAwLjVdLAor
ICAgICAgWzAuNSwgInJlY3QxIiwgInN0cm9rZS1vcGFjaXR5IiwgMC41LCAwLjFdLAorICAgICAg
WzAuNSwgInJlY3QxIiwgInN0cm9rZS1kYXNob2Zmc2V0IiwgNSwgMV0sCisgICAgICBbMC41LCAi
cmVjdDIiLCAiZmlsbCIsIFswLCAxMjcsIDEyN10sIDhdLAorICAgICAgWzAuNSwgInJlY3QyIiwg
InN0cm9rZSIsIFsxMjcsIDAsIDBdLCA4XSwKKyAgICAgIFswLjUsICJzdG9wMSIsICJzdG9wLWNv
bG9yIiwgWzEyNywgMTI3LCAwXSwgOF0sCisgICAgICBbMC41LCAic3RvcDEiLCAic3RvcC1vcGFj
aXR5IiwgMC43NSwgMC4xXSwKKyAgICAgIFswLjUsICJwb2x5bGluZTEiLCAic3Ryb2tlLW1pdGVy
bGltaXQiLCAxMSwgMC41XSwKKyAgICAgIFswLjUsICJ0ZXh0MSIsICJrZXJuaW5nIiwgNSwgMC41
XSwKKyAgICAgIFswLjUsICJ0ZXh0MSIsICJiYXNlbGluZS1zaGlmdCIsIDUsIDAuNV0sCisgICAg
ICBbMC41LCAiZmxvb2QxIiwgImZsb29kLW9wYWNpdHkiLCAwLjUsIDAuMV0sCisgICAgICBbMC41
LCAiZmxvb2QxIiwgImZsb29kLWNvbG9yIiwgWzEyNywgMTI3LCAwXSwgOF0sCisgICAgICBbMC41
LCAibGlnaHQxIiwgImxpZ2h0aW5nLWNvbG9yIiwgWzEyNywgMTI3LCAwXSwgOF0sCisgICAgXTsK
KyAgICAKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05hbWUgPSAnYW5pbWF0aW5nJzsKKyAgICB9
CisgICAgCisgICAgcnVuVHJhbnNpdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMsIHNldHVwVGVzdCwg
dXNlUGF1c2VBUEkpOworICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8c3ZnIHZpZXdCb3g9IjAgMCAxNjAgMTIwIiB3aWR0aD0iNDAwcHgiIGhl
aWdodD0iMzAwcHgiPgorICAgIDxkZWZzPgorICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFk
aWVudDEiPgorICAgICAgICA8c3RvcCBpZD0ic3RvcDEiIG9mZnNldD0iNSUiLz4KKyAgICAgICAg
PHN0b3Agb2Zmc2V0PSI5NSUiIHN0b3AtY29sb3I9InJnYigwLDAsMjU1KSIgLz4KKyAgICAgIDwv
bGluZWFyR3JhZGllbnQ+CisgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXIxIj4KKyAgICAgICAgPGZl
Rmxvb2QgaWQ9ImZsb29kMSIvPgorICAgICAgICA8ZmVEaWZmdXNlTGlnaHRpbmcgaWQ9ImxpZ2h0
MSIvPgorICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorICAgIDxyZWN0IGlkPSJyZWN0MSIg
eD0iMTAiIHk9IjEwIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiLz4KKyAgICA8cmVjdCBpZD0icmVj
dDIiIHg9IjkwIiB5PSIxMCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjMwIi8+CisgICAgPHJlY3QgaWQ9
InJlY3QzIiB4PSI5MCIgeT0iNzAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIyMCIvPgorICAgIDxwb2x5
bGluZSBpZD0icG9seWxpbmUxIiBwb2ludHM9IjEwLDgwIDYwLDg1IDEwLDkwIi8+CisgICAgPHRl
eHQgaWQ9InRleHQxIiB4PSIxMDAiIHk9IjYwIj5FeGFtcGxlPC90ZXh0PgorICA8L3N2Zz4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2ZTdjMGU2Y2I0MDZkYTM5YTU2
ODNkODg3NDFmZjFhOTg2ZDE0ZWUuLjAwNjZhNzgwYzhmOGI4NzNkYmJmM2FjOTkxNDFlYjc1Mjgz
Y2NlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMS0wOC0xOSAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTg2CisgICAgICAgIEFwcGx5IENTUyBhbmltYXRpb25zIGFuZCB0
cmFuc2l0aW9ucyB0byBTVkcgcHJvcGVydGllcworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIGJ1bmNoIG9mIFNWRyBwcm9wZXJ0aWVzIGZy
b20gU1ZHUmVuZGVyU3R5bGUgdG8KKyAgICAgICAgUmVuZGVyU3R5bGUgYW5kIGFkZCB0aGVtIHRv
IHRoZSBsaXN0IG9mIGFuaW1hdGFibGUKKyAgICAgICAgcHJvcGVydGllcy4gVGhlcmUgYXJlbid0
IG1hbnkgU1ZHIHByb3BlcnRpZXMgdGhhdCBhcmUKKyAgICAgICAgYW5pbWF0YWJsZSBkaXJlY3Rs
eS4gU1ZHUGFpbnQgKHVzZWQgaW4gImZpbGwiIGFuZCAic3Ryb2tlIikKKyAgICAgICAgaXMgc3Vw
cG9ydGVkIG9ubHkgd2hlbiBib3RoIGVuZHMgb2YgdGhlIGFuaW1hdGlvbiBhcmUKKyAgICAgICAg
YSBDb2xvci4KKworICAgICAgICBUZXN0OiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRt
bAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVy
U1ZHTGVuZ3RoOjpQcm9wZXJ0eVdyYXBwZXJTVkdMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
UHJvcGVydHlXcmFwcGVyU1ZHTGVuZ3RoOjpibGVuZCk6CisgICAgICAgICAgICBOZXcgcHJvcGVy
dHkgd3JhcHBlciBhbmQgYmxlbmQgZnVuY3Rpb24gZm9yIFNWR0xlbmd0aHMKKyAgICAgICAgKFdl
YkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjpQcm9wZXJ0eVdyYXBwZXJTVkdQYWludCk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTVkdQYWludDo6ZXF1YWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjpibGVuZCk6CisgICAgICAg
ICAgICBOZXcgcHJvcGVydHkgd3JhcHBlciBhbmQgYmxlbmQgZnVuY3Rpb24gZm9yIFNWR1BhaW50
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1hcCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6ZmlsbFBhaW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6ZmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVk
RmxhZ3M6OnNldEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjpzdHJva2VQYWludFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OnN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dFN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnN0
cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJva2VX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlRGFzaE9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tlRGFzaE9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlTWl0ZXJMaW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tlTWl0ZXJMaW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3RvcE9wYWNpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFN0b3BPcGFjaXR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjp0ZXh0QW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aGVyaXRlZEZsYWdzOjpzZXRUZXh0QW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRl
ZEZsYWdzOjpzZXRTdG9wQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OnNldEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldExp
Z2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJhc2VsaW5l
U2hpZnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0QmFzZWxp
bmVTaGlmdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjprZXJuaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRLZXJuaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdG9wQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5oZXJpdGVkRmxhZ3M6OmZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJp
dGVkRmxhZ3M6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OnN0b3BDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Zmxvb2RD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6bGlnaHRpbmdDb2xvcik6
CisgICAgICAgICAgICBFeHBvc2luZyB0aGVzZSBTVkdSZW5kZXJTdHlsZSBwcm9wZXJ0aWVzIHRo
cm91Z2ggUmVuZGVyU3R5bGUKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6
OmJsZW5kKToKKwogMjAxMS0wOC0xNyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ2hhbmdlIHJlZmVyZW5jZXMgdG8gbGV2ZWxkYi5neXAgdG8gbGV2ZWxk
YXRhYmFzZS5neXAgYXMgcGFydCBvZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggZWUxNzgzMzRjYmQ5ZWUyOWEzOTI1ZWMzNjQ0
ZGJkYzc0ZDc3MTAwOS4uYTI1MzU4YzVhYjQwYjI0ZmEwOGYwYTRiMWQ2Y2RjNjEwMzFhOWUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
QEAgLTIxNyw2ICsyMTcsMTMgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aEJveCYgZnIKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCisjaWYgRU5BQkxFKFNWRykKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoIGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgU1ZHTGVuZ3RoJiBmcm9tLCBjb25z
dCBTVkdMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit7ICAKKyAgICByZXR1cm4gdG8uYmxl
bmQoZnJvbSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworfQorI2VuZGlmCisK
IGNsYXNzIFByb3BlcnR5V3JhcHBlckJhc2U7CiAKIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFBy
b3BlcnRpZXMoKTsKQEAgLTY2Myw2ICs2NzAsODIgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UHJv
cGVydHlXcmFwcGVyQmFzZSo+IG1fcHJvcGVydHlXcmFwcGVyczsKIH07CiAKKyNpZiBFTkFCTEUo
U1ZHKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTVkdMZW5n
dGggOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0dGVyPENTU1ZhbHVlKj4geworcHVibGljOgor
ICAgIFByb3BlcnR5V3JhcHBlclNWR0xlbmd0aChpbnQgcHJvcCwgQ1NTVmFsdWUqIChSZW5kZXJT
dHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpKQor
ICAgICAgICA6IFByb3BlcnR5V3JhcHBlckdldHRlcjxDU1NWYWx1ZSo+KHByb3AsIGdldHRlcikK
KyAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBj
b25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVz
cykgY29uc3QKKyAgICB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmcm9tV2lkdGggPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KChhLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVy
PENTU1ZhbHVlKj46Om1fZ2V0dGVyKSgpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRv
V2lkdGggPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KChiLT4qUHJvcGVydHlXcmFw
cGVyR2V0dGVyPENTU1ZhbHVlKj46Om1fZ2V0dGVyKSgpKTsKKworICAgICAgICAoZHN0LT4qbV9z
ZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tV2lkdGgtPmdldEZsb2F0VmFsdWUoKSwgdG9XaWR0
aC0+Z2V0RmxvYXRWYWx1ZSgpLCBwcm9ncmVzcykpOyAKKyAgICB9Citwcml2YXRlOgorICAgIHZv
aWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFQpOworfTsKKworY2xhc3MgUHJvcGVydHlXcmFw
cGVyU1ZHUGFpbnQgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyQmFzZSB7CitwdWJsaWM6CisgICAg
UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQoaW50IHByb3AsIGNvbnN0IFNWR1BhaW50OjpTVkdQYWlu
dFR5cGUmIChSZW5kZXJTdHlsZTo6KnBhaW50VHlwZUdldHRlcikoKSBjb25zdCwgY29uc3QgQ29s
b3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oipz
ZXR0ZXIpKGNvbnN0IENvbG9yJikpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVyQmFzZShwcm9w
KQorICAgICAgICAsIG1fcGFpbnRUeXBlR2V0dGVyKHBhaW50VHlwZUdldHRlcikKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25z
dCBSZW5kZXJTdHlsZSogYikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgoYS0+Km1fcGFpbnRU
eXBlR2V0dGVyKSgpICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCisgICAgICAg
ICAgICB8fCAoYi0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50OjpTVkdfUEFJTlRU
WVBFX1JHQkNPTE9SKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIENvbG9y
IGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIENvbG9yIHRvQ29sb3IgPSAo
Yi0+Km1fZ2V0dGVyKSgpOworCisgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAh
dG9Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBp
ZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBmcm9tQ29sb3IgPSBhLT5maWxs
UGFpbnRDb2xvcigpOworICAgICAgICBpZiAoIXRvQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAg
ICAgdG9Db2xvciA9IGItPmZpbGxQYWludENvbG9yKCk7CisKKyAgICAgICAgcmV0dXJuIGZyb21D
b2xvciA9PSB0b0NvbG9yOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBibGVuZChjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSog
YSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50OjpTVkdfUEFJ
TlRUWVBFX1JHQkNPTE9SCisgICAgICAgICAgICB8fCAoYi0+Km1fcGFpbnRUeXBlR2V0dGVyKSgp
ICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAg
IENvbG9yIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOworCisgICAgICAgIGlmICghZnJvbUNv
bG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgZnJvbUNv
bG9yID0gYS0+ZmlsbFBhaW50Q29sb3IoKTsKKyAgICAgICAgaWYgKCF0b0NvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHRvQ29sb3IgPSBiLT5maWxsUGFpbnRDb2xvcigpOworICAgICAgICAo
ZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dy
ZXNzKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5
cGUmIChSZW5kZXJTdHlsZTo6Km1fcGFpbnRUeXBlR2V0dGVyKSgpIGNvbnN0OworICAgIGNvbnN0
IENvbG9yJiAoUmVuZGVyU3R5bGU6OiptX2dldHRlcikoKSBjb25zdDsKKyAgICB2b2lkIChSZW5k
ZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOworfTsKKyNlbmRpZgogCiBzdGF0aWMg
VmVjdG9yPFByb3BlcnR5V3JhcHBlckJhc2UqPiogZ1Byb3BlcnR5V3JhcHBlcnMgPSAwOwogc3Rh
dGljIGludCBnUHJvcGVydHlXcmFwcGVyTWFwW251bUNTU1Byb3BlcnRpZXNdOwpAQCAtNzY3LDkg
Kzg1MCwyNSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKCkKICAgICAg
ICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyU2hhZG93KENT
U1Byb3BlcnR5VGV4dFNoYWRvdywgJlJlbmRlclN0eWxlOjp0ZXh0U2hhZG93LCAmUmVuZGVyU3R5
bGU6OnNldFRleHRTaGFkb3cpKTsKIAogI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlclNWR1BhaW50KENTU1Byb3BlcnR5
RmlsbCwgJlJlbmRlclN0eWxlOjpmaWxsUGFpbnRUeXBlLCAmUmVuZGVyU3R5bGU6OmZpbGxQYWlu
dENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEZpbGxQYWludENvbG9yKSk7CiAgICAgICAgIGdQcm9w
ZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVy
dHlGaWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmaWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpz
ZXRGaWxsT3BhY2l0eSkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5
bGU6OmZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRGbG9vZE9wYWNpdHkpKTsKKworICAg
ICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJTVkdQYWlu
dChDU1NQcm9wZXJ0eVN0cm9rZSwgJlJlbmRlclN0eWxlOjpzdHJva2VQYWludFR5cGUsICZSZW5k
ZXJTdHlsZTo6c3Ryb2tlUGFpbnRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VQYWludENv
bG9yKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3Jh
cHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0cm9r
ZU9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlT3BhY2l0eSkpOworICAgICAgICBnUHJv
cGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQ
cm9wZXJ0eVN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5
bGU6OnNldFN0cm9rZVdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQo
bmV3IFByb3BlcnR5V3JhcHBlcjxTVkdMZW5ndGg+KENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNl
dCwgJlJlbmRlclN0eWxlOjpzdHJva2VEYXNoT2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnNldFN0cm9r
ZURhc2hPZmZzZXQpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJv
cGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsICZSZW5kZXJT
dHlsZTo6c3Ryb2tlTWl0ZXJMaW1pdCwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VNaXRlckxpbWl0
KSk7CisKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFw
cGVyPGZsb2F0PihDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmbG9vZE9w
YWNpdHksICZSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5KSk7CisgICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENT
U1Byb3BlcnR5Rmxvb2RDb2xvciwgJlJlbmRlclN0eWxlOjpmbG9vZENvbG9yLCAmUmVuZGVyU3R5
bGU6OnNldEZsb29kQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5k
KG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5U3RvcE9wYWNpdHksICZSZW5k
ZXJTdHlsZTo6c3RvcE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3RvcE9wYWNpdHkpKTsKKyAg
ICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJ
bnZhbGlkQ29sb3IoQ1NTUHJvcGVydHlTdG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c3RvcENvbG9y
LCAmUmVuZGVyU3R5bGU6OnNldFN0b3BDb2xvcikpOworCisgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3Bl
cnR5TGlnaHRpbmdDb2xvciwgJlJlbmRlclN0eWxlOjpsaWdodGluZ0NvbG9yLCAmUmVuZGVyU3R5
bGU6OnNldExpZ2h0aW5nQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBw
ZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUJhc2VsaW5lU2hp
ZnQsICZSZW5kZXJTdHlsZTo6YmFzZWxpbmVTaGlmdFZhbHVlLCAmUmVuZGVyU3R5bGU6OnNldEJh
c2VsaW5lU2hpZnRWYWx1ZSkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUtlcm5pbmcsICZSZW5kZXJT
dHlsZTo6a2VybmluZywgJlJlbmRlclN0eWxlOjpzZXRLZXJuaW5nKSk7CiAjZW5kaWYKIAogICAg
ICAgICAvLyBUT0RPOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAppbmRleCAyODEyOWJhNzRmODZkNzU1YWM2Y2ZmMDI3ZjgyOThhZjc4MWQwNGNhLi5kZDA4
MWM0MmJjZTZiMTAyMTgyODM4MDgwNWY2ZTYyZTIyYTYyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzUsNiArNzUsNyBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAjaW5jbHVkZSAiU1ZH
UmVuZGVyU3R5bGUuaCIKICNlbmRpZgogCkBAIC0xMTU1LDE1ICsxMTU2LDM5IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoU1ZHKQogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ZnU3R5bGUuZ2V0KCk7IH0KICAgICBTVkdSZW5kZXJTdHlsZSogYWNj
ZXNzU1ZHU3R5bGUoKSB7IHJldHVybiBtX3N2Z1N0eWxlLmFjY2VzcygpOyB9Ci0gICAgCisKKyAg
ICBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZp
bGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50Q29sb3Io
KTsgfQorICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNz
U1ZHU3R5bGUoKS0+c2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
LCBjLCAiIik7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCktPmZpbGxPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYp
IHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0RmlsbE9wYWNpdHkoZik7IH0KLSAgICAKKworICAgIGNv
bnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCktPnN0cm9rZVBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIHN0
cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VQYWludENv
bG9yKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsg
YWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVf
UkdCQ09MT1IsIGMsICIiKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLT5zdHJva2VPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU9w
YWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VPcGFjaXR5KGYpOyB9
Ci0gICAgCisgICAgU1ZHTGVuZ3RoIHN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS0+c3Ryb2tlV2lkdGgoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoU1ZHTGVuZ3Ro
IHcpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAgICBTVkdMZW5n
dGggc3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZURh
c2hPZmZzZXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChTVkdMZW5ndGggZCkg
eyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9CisgICAgZmxvYXQg
c3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZU1pdGVy
TGltaXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBmKSB7IGFjY2Vz
c1NWR1N0eWxlKCktPnNldFN0cm9rZU1pdGVyTGltaXQoZik7IH0KKwogICAgIGZsb2F0IGZsb29k
T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpOyB9CiAg
ICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRG
bG9vZE9wYWNpdHkoZik7IH0KKworICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS0+c3RvcE9wYWNpdHkoKTsgfQorICAgIHZvaWQgc2V0U3RvcE9wYWNpdHko
ZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdG9wT3BhY2l0eShmKTsgfQorCisgICAg
dm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0
U3RvcENvbG9yKGMpOyB9CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjKSB7
IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZsb29kQ29sb3IoYyk7IH0KKyAgICB2b2lkIHNldExpZ2h0
aW5nQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0TGlnaHRpbmdD
b2xvcihjKTsgfQorCisgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHN2Z1N0eWxlKCktPmJhc2VsaW5lU2hpZnRWYWx1ZSgpOyB9CisgICAgdm9pZCBzZXRC
YXNlbGluZVNoaWZ0VmFsdWUoU1ZHTGVuZ3RoIHMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0QmFz
ZWxpbmVTaGlmdFZhbHVlKHMpOyB9CisgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLT5rZXJuaW5nKCk7IH0KKyAgICB2b2lkIHNldEtlcm5pbmcoU1ZHTGVu
Z3RoIGspIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0S2VybmluZyhrKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIHNldFdyYXBTaGFwZShQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGUpCkBAIC0x
NDAwLDYgKzE0MjUsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBjb25zdCBDb2xvciBjb2xvcklu
Y2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKIAorI2lmIEVOQUJMRShT
VkcpCisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCktPnN0b3BDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBzdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgbGln
aHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsg
fQorI2VuZGlmCisKICAgICB2b2lkIGFwcGVuZENvbnRlbnQoUGFzc093blB0cjxDb250ZW50RGF0
YT4pOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaAppbmRleCAwZmU0YTgwY2RmY2Q1MjFmNDczN2QzN2ZjMmYxYzViNWMzMzJlOWQ4Li40
YWFkZWVhYmMwN2NmNWJmZWFmOTJmZjgwNzAzZWNkZWZiMDZiNDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMzE1LDEwICszMTUs
MTAgQEAgcHVibGljOgogICAgIFNWR0xlbmd0aCBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gc3Ryb2tlLT5kYXNoT2Zmc2V0OyB9CiAgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25z
dCB7IHJldHVybiB0ZXh0LT5rZXJuaW5nOyB9CiAgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25z
dCB7IHJldHVybiBzdG9wcy0+b3BhY2l0eTsgfQotICAgIENvbG9yIHN0b3BDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHN0b3BzLT5jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBj
b25zdCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBj
b25zdCB7IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBDb2xvciBmbG9vZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RDb2xvcjsgfQotICAgIENvbG9yIGxpZ2h0aW5n
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9CisgICAgY29uc3Qg
Q29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9Cisg
ICAgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdo
dGluZ0NvbG9yOyB9CiAgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZTsgfQogICAgIFNoYWRvd0RhdGEqIHNoYWRv
dygpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd1NWRy0+c2hhZG93LmdldCgpOyB9CiAgICAgU3RyaW5n
IGNsaXBwZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xpcHBlcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aC5oCmluZGV4IDI2MzJhNTA4NzM0NzJlY2RjZjA5ZTI1ZDI0ZGEzOTUw
YjM5ZmIxOTkuLjkxOGUyMThkNmIyNWJhMzQ2ZGIxMzVmOTAzNjE1ZmFhNjQ5ODVlYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoLmgKQEAgLTExMCwxMCArMTEwLDQ2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwgdHlwZSA9PSBMZW5ndGhUeXBl
RU1TIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVYUzsKICAgICB9CiAKKyAgICBib29sIGlzWmVybygp
IGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7
CisgICAgfQorCiAgICAgc3RhdGljIFNWR0xlbmd0aCBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWUqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGgmKTsKICAgICBzdGF0aWMgU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCisgICAgU1ZHTGVuZ3RoIGJsZW5kKGNvbnN0IFNWR0xlbmd0aCYgZnJv
bSwgZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWZyb20uaXNaZXJv
KCkgJiYgIWlzWmVybygpICYmIGZyb20udW5pdFR5cGUoKSAhPSB1bml0VHlwZSgpKQorICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworCisgICAgICAgIGlmIChmcm9tLmlzWmVybygpICYmIGlzWmVy
bygpKQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgICAgIFNWR0xlbmd0aFR5cGUg
cmVzdWx0VHlwZSA9IHVuaXRUeXBlKCk7CisgICAgICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAg
ICAgIHJlc3VsdFR5cGUgPSBmcm9tLnVuaXRUeXBlKCk7CisKKyAgICAgICAgU1ZHTGVuZ3RoIGxl
bmd0aDsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisKKyAgICAgICAgaWYgKHJlc3Vs
dFR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKKyAgICAgICAgICAgIGZsb2F0IGZyb21Q
ZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpOworICAgICAgICAgICAgZmxvYXQgdG9Q
ZXJjZW50ID0gdmFsdWVBc1BlcmNlbnRhZ2UoKTsKKyAgICAgICAgICAgIGxlbmd0aC5uZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVQZXJjZW50YWdlLCBmcm9tUGVyY2VudCArICh0b1Bl
cmNlbnQgLSBmcm9tUGVyY2VudCkgKiBwcm9ncmVzcywgZWMpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgICAgIGZsb2F0IHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsK
KyAgICAgICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHJlc3VsdFR5cGUsIGZy
b21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHByb2dyZXNzLCBlYyk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoKCk7CisK
KyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBkZXRl
cm1pbmVWaWV3cG9ydChjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBmbG9hdCYgd2lkdGgsIGZs
b2F0JiBoZWlnaHQpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104805</attachid>
            <date>2011-08-23 02:06:35 -0700</date>
            <delta_ts>2011-08-23 04:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21586-20110823190632.patch</filename>
            <type>text/plain</type>
            <size>34272</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MzYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTlkNGE0NDlhMDlkMGY0OTE0NjQ4
MzMyOTgxMGU5MDllNTJlOGEwLi40MTQ1ZTBhZTIxNmVlOTY3OWJmMTQ2MjM1ZWFmNjA4NzRlOGEy
YjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdCBmb3IgdGhlIFNWRyBwcm9wZXJ0aWVzIHRoYXQgY2FuIG5v
dyBhbmltYXRlLiBBbHNvCisgICAgICAgIHVwZGF0ZWQgdGhlIHRlc3QgaGVscGVyIHNjcmlwdCB0
byBoYW5kbGUgY29sb3JzIGFuZAorICAgICAgICBwZXJjZW50YWdlcy4KKworICAgICAgICAqIHRy
YW5zaXRpb25zL3Jlc291cmNlcy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qczoKKyAgICAgICAg
KGV4cGVjdGVkKToKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRt
bDogQWRkZWQuCisKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgor
CisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0cmFuc2l0
aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanM6CisgICAgICAgIChleHBl
Y3RlZCk6CisKIDIwMTEtMDgtMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIE1hcmsgdG91Y2ggdGVzdHMgYXMgZmFpbGluZyBvbiBPU1ggMTAu
NS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNlcy90cmFuc2l0
aW9uLXRlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNlcy90
cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwppbmRleCBmNDk0ZGE0MjI2YzgwN2NmMjJhMjE5NWEz
ZGVmYTFjYWZkZWYwZmRmLi5iMzc2Njg4MGUxMjYxNjM4ODkyNTkwNDdlNzNmYjZmMDE3YWQ4NTY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlv
bi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVzb3VyY2Vz
L3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC04MSw2ICs4MSwyOCBAQCBmdW5jdGlvbiBj
aGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocHJvcGVydHkg
PT0gImZpbGwiIHx8IHByb3BlcnR5ID09ICJzdHJva2UiKSB7CisgICAgICAgIGNvbXB1dGVkVmFs
dWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5yZ2JDb2xvcjsKKyAgICAgICAg
aWYgKGlzQ2xvc2VFbm91Z2gocGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5yZWQuY3NzVGV4dCksIGV4
cGVjdGVkVmFsdWVbMF0sIHRvbGVyYW5jZSkgJiYKKyAgICAgICAgICAgIGlzQ2xvc2VFbm91Z2go
cGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5ncmVlbi5jc3NUZXh0KSwgZXhwZWN0ZWRWYWx1ZVsxXSwg
dG9sZXJhbmNlKSAmJgorICAgICAgICAgICAgaXNDbG9zZUVub3VnaChwYXJzZUludChjb21wdXRl
ZFZhbHVlLmJsdWUuY3NzVGV4dCksIGV4cGVjdGVkVmFsdWVbMl0sIHRvbGVyYW5jZSkpCisgICAg
ICAgICAgICBwYXNzID0gdHJ1ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBm
YWlsZWQuIE1ha2Ugc3VyZSBjb21wdXRlZCB2YWx1ZSBpcyBzb21ldGhpbmcgd2UgY2FuIHJlYWQg
aW4gdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5jc3NUZXh0OworICAgICAgICB9CisgICAgfSBlbHNl
IGlmIChwcm9wZXJ0eSA9PSAic3RvcC1jb2xvciIgfHwgcHJvcGVydHkgPT0gImZsb29kLWNvbG9y
IiB8fCBwcm9wZXJ0eSA9PSAibGlnaHRpbmctY29sb3IiKSB7CisgICAgICAgIGNvbXB1dGVkVmFs
dWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgLy8gVGhlIGNv
bXB1dGVkVmFsdWUgY3NzVGV4dCBpcyByZ2IobnVtLCBudW0sIG51bSkKKyAgICAgICAgdmFyIGNv
bXBvbmVudHMgPSBjb21wdXRlZFZhbHVlLmNzc1RleHQuc3BsaXQoIigiKVsxXS5zcGxpdCgiKSIp
WzBdLnNwbGl0KCIsIik7CisgICAgICAgIGlmIChpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBv
bmVudHNbMF0pLCBleHBlY3RlZFZhbHVlWzBdLCB0b2xlcmFuY2UpICYmCisgICAgICAgICAgICBp
c0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBvbmVudHNbMV0pLCBleHBlY3RlZFZhbHVlWzFdLCB0
b2xlcmFuY2UpICYmCisgICAgICAgICAgICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBvbmVu
dHNbMl0pLCBleHBlY3RlZFZhbHVlWzJdLCB0b2xlcmFuY2UpKQorICAgICAgICAgICAgcGFzcyA9
IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gV2UgZmFpbGVkLiBNYWtlIHN1
cmUgY29tcHV0ZWQgdmFsdWUgaXMgc29tZXRoaW5nIHdlIGNhbiByZWFkIGluIHRoZSBlcnJvciBt
ZXNzYWdlCisgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRWYWx1ZS5jc3NUZXh0
OworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIpIHsK
ICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQpOwogICAgICAg
ICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0b2xl
cmFuY2UpOwpAQCAtMTMzLDYgKzE1NSwxMCBAQCBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWUo
ZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0OyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Nsb3NlRW5vdWdo
KGNvbXB1dGVkVmFsdWVbaV0sIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX1BFUkNFTlRBR0U6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBw
YXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuY3NzVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHBh
c3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVyYW5j
ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdldEZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7CiAgICAgICAgICAgICAgICAg
ICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRv
bGVyYW5jZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNp
dGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3ZnLXRyYW5zaXRp
b25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzVmMDBjZjljMGI5MjlhODczMTE4NDUzNDdi
NDk3OWY0OGUzMjEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
c3ZnLXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitFeGFtcGxlCitQ
QVNTIC0gImZpbGwtb3BhY2l0eSIgcHJvcGVydHkgZm9yICJyZWN0MSIgZWxlbWVudCBhdCAxcyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjYKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0
eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDMKK1BB
U1MgLSAic3Ryb2tlLW9wYWNpdHkiIHByb3BlcnR5IGZvciAicmVjdDEiIGVsZW1lbnQgYXQgMXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC42CitQQVNTIC0gInN0cm9rZS1kYXNob2Zmc2V0IiBw
cm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDUKK1BBU1MgLSAiZmlsbCIgcHJvcGVydHkgZm9yICJyZWN0MiIgZWxlbWVudCBhdCAxcyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAwLDEyNywxMjcKK1BBU1MgLSAic3Ryb2tlIiBwcm9wZXJ0eSBm
b3IgInJlY3QyIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEyNywwLDAK
K1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3Q0IiBlbGVtZW50IGF0IDFz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDgKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0
eSBmb3IgInJlY3Q1IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BB
U1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3Q2IiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitQQVNTIC0gInN0b3AtY29sb3IiIHByb3BlcnR5IGZv
ciAic3RvcDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTI3LDEyNyww
CitQQVNTIC0gInN0b3Atb3BhY2l0eSIgcHJvcGVydHkgZm9yICJzdG9wMSIgZWxlbWVudCBhdCAx
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjc1CitQQVNTIC0gInN0cm9rZS1taXRlcmxpbWl0
IiBwcm9wZXJ0eSBmb3IgInBvbHlsaW5lMSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxMQorUEFTUyAtICJrZXJuaW5nIiBwcm9wZXJ0eSBmb3IgInRleHQxIiBlbGVtZW50
IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAiYmFzZWxpbmUtc2hpZnQi
IHByb3BlcnR5IGZvciAidGV4dDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogNQorUEFTUyAtICJmbG9vZC1vcGFjaXR5IiBwcm9wZXJ0eSBmb3IgImZsb29kMSIgZWxlbWVu
dCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjUKK1BBU1MgLSAiZmxvb2QtY29sb3Ii
IHByb3BlcnR5IGZvciAiZmxvb2QxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDEyNywxMjcsMAorUEFTUyAtICJsaWdodGluZy1jb2xvciIgcHJvcGVydHkgZm9yICJsaWdo
dDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTI3LDEyNywwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sIGIv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3ZnLXRyYW5zaXRpb25zLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODA4ZmQ4Y2YwN2VmNzc5MTU1NjVhOGYyNGYwZTJiNzBhZWZlM2NmYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sCkBAIC0wLDAg
KzEsMTc2IEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisKKyAgc3ZnICogeworICAgICAg
LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBmaWxsLCBzdHJva2UsIGZpbGwtb3BhY2l0eSwg
c3Ryb2tlLW9wYWNpdHksIHN0cm9rZS13aWR0aCwgc3Ryb2tlLWRhc2hvZmZzZXQsIHN0cm9rZS1t
aXRlcmxpbWl0LCBrZXJuaW5nLCBiYXNlbGluZS1zaGlmdCwgZmxvb2QtY29sb3IsIGZsb29kLW9w
YWNpdHksIHN0b3AtY29sb3IsIHN0b3Atb3BhY2l0eSwgbGlnaHRpbmctY29sb3I7CisgICAgICAt
d2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDJzOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9u
LXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICB9CisKKyAgI3JlY3QxIHsKKyAgICAgIGZpbGw6
IHJnYigwLCAwLCAyNTUpOworICAgICAgc3Ryb2tlOiByZWQ7CisgICAgICBmaWxsLW9wYWNpdHk6
IDE7CisgICAgICBzdHJva2Utb3BhY2l0eTogMTsKKyAgICAgIHN0cm9rZS13aWR0aDogMjsKKyAg
ICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwOworICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMTA7Cisg
IH0KKyAgLmFuaW1hdGluZyAjcmVjdDEgeworICAgICAgZmlsbDogcmdiKDAsIDI1NSwgMCk7Cisg
ICAgICBzdHJva2U6IGJsYWNrOworICAgICAgZmlsbC1vcGFjaXR5OiAwLjI7CisgICAgICBzdHJv
a2Utb3BhY2l0eTogMC4yOworICAgICAgc3Ryb2tlLXdpZHRoOiA0OworICAgICAgc3Ryb2tlLWRh
c2hvZmZzZXQ6IDEwOworICB9CisKKyAgI3JlY3QyIHsKKyAgICAgIGZpbGw6IHJnYigwLCAwLCAy
NTUpOworICAgICAgc3Ryb2tlOiByZ2IoMjU1LCAwLCAwKTsKKyAgfQorICAuYW5pbWF0aW5nICNy
ZWN0MiB7CisgICAgICBmaWxsOiByZ2IoMCwgMjU1LCAwKTsKKyAgICAgIHN0cm9rZTogcmdiKDAs
IDAsIDApOworICB9CisKKyAgI3JlY3QzIHsKKyAgICAgIGZpbGw6IHVybCgjZ3JhZGllbnQxKTsK
KyAgfQorICAuYW5pbWF0aW5nICNyZWN0MyB7CisgICAgICBmaWxsOiB1cmwoI2dyYWRpZW50Mik7
CisgIH0KKworICAjc3RvcDEgeworICAgICAgc3RvcC1jb2xvcjogcmdiKDI1NSwwLDApOworICAg
ICAgc3RvcC1vcGFjaXR5OiAxOworICB9CisgIC5hbmltYXRpbmcgI3N0b3AxIHsKKyAgICAgIHN0
b3AtY29sb3I6IHJnYigwLDI1NSwwKTsKKyAgICAgIHN0b3Atb3BhY2l0eTogMC41OworICB9CisK
KyAgI3JlY3Q0IHsKKyAgICAgIHN0cm9rZTogcmVkOworICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7
CisgIH0KKyAgLmFuaW1hdGluZyAjcmVjdDQgeworICAgICAgc3Ryb2tlLXdpZHRoOiA0bW07Cisg
IH0KKworICAjcmVjdDUgeworICAgICAgc3Ryb2tlOiBibGFjazsKKyAgICAgIHN0cm9rZS13aWR0
aDogMDsKKyAgfQorICAuYW5pbWF0aW5nICNyZWN0NSB7CisgICAgICBzdHJva2Utd2lkdGg6IDEw
cHg7CisgIH0KKworICAjcmVjdDYgeworICAgICAgc3Ryb2tlOiBibGFjazsKKyAgICAgIHN0cm9r
ZS13aWR0aDogMTAlOworICB9CisgIC5hbmltYXRpbmcgI3JlY3Q2IHsKKyAgICAgIHN0cm9rZS13
aWR0aDogMjAlOworICB9CisKKyAgI3BvbHlsaW5lMSB7CisgICAgICBmaWxsOiBub25lOworICAg
ICAgc3Ryb2tlOiBibGFjazsKKyAgICAgIHN0cm9rZS13aWR0aDogNDsKKyAgICAgIHN0cm9rZS1t
aXRlcmxpbWl0OiAxMjsKKyAgfQorICAuYW5pbWF0aW5nICNwb2x5bGluZTEgeworICAgICAgc3Ry
b2tlLW1pdGVybGltaXQ6IDEwOworICB9CisKKyAgI3RleHQxIHsKKyAgICAgIGtlcm5pbmc6IDA7
CisgICAgICBiYXNlbGluZS1zaGlmdDogMDsKKyAgfQorICAuYW5pbWF0aW5nICN0ZXh0MSB7Cisg
ICAgICBrZXJuaW5nOiAxMHB4OworICAgICAgYmFzZWxpbmUtc2hpZnQ6IDEwcHg7CisgIH0KKwor
ICAjZmxvb2QxIHsKKyAgICAgIGZsb29kLW9wYWNpdHk6IDE7CisgICAgICBmbG9vZC1jb2xvcjog
cmdiKDI1NSwgMCwgMCk7CisgIH0KKyAgLmFuaW1hdGluZyAjZmxvb2QxIHsKKyAgICAgIGZsb29k
LW9wYWNpdHk6IDA7CisgICAgICBmbG9vZC1jb2xvcjogcmdiKDAsIDI1NSwgMCk7CisgIH0KKwor
ICAjbGlnaHQxIHsKKyAgICAgIGxpZ2h0aW5nLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsKKyAgfQor
ICAuYW5pbWF0aW5nICNsaWdodDEgeworICAgICAgbGlnaHRpbmctY29sb3I6IHJnYigwLCAyNTUs
IDApOworICB9CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlv
bi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PgorICBjb25zdCBleHBlY3Rl
ZFZhbHVlcyA9IFsKKyAgLy8gW3RpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12
YWx1ZSwgdG9sZXJhbmNlXQorICBbMSwgInJlY3QxIiwgImZpbGwtb3BhY2l0eSIsIDAuNiwgMC4x
XSwgLy8gMSAtPiAwLjIKKyAgWzEsICJyZWN0MSIsICJzdHJva2Utd2lkdGgiLCAzLCAwLjVdLCAg
IC8vIDIgLT4gNAorICBbMSwgInJlY3QxIiwgInN0cm9rZS1vcGFjaXR5IiwgMC42LCAwLjFdLCAv
LyAxIC0+IDAuMgorICBbMSwgInJlY3QxIiwgInN0cm9rZS1kYXNob2Zmc2V0IiwgNSwgMV0sIC8v
IDAgLT4gMTAKKyAgWzEsICJyZWN0MiIsICJmaWxsIiwgWzAsIDEyNywgMTI3XSwgMjBdLCAvLyBy
Z2IoMCwgMCwgMjU1KSAtPiByZ2IoMCwgMjU1LCAwKQorICBbMSwgInJlY3QyIiwgInN0cm9rZSIs
IFsxMjcsIDAsIDBdLCAyMF0sICAvLyByZ2IoMjU1LCAwLCAwKSAtPiByZ2IoMCwgMCwgMCkKKyAg
WzEsICJyZWN0NCIsICJzdHJva2Utd2lkdGgiLCA4LCAxXSwgIC8vIDFweCB0byA0bW0KKyAgWzEs
ICJyZWN0NSIsICJzdHJva2Utd2lkdGgiLCA1LCAxXSwgIC8vIDAgdG8gMTBweAorICBbMSwgInJl
Y3Q2IiwgInN0cm9rZS13aWR0aCIsIDE1LCAyXSwgIC8vIDEwJSB0byAyMCUKKyAgWzEsICJzdG9w
MSIsICJzdG9wLWNvbG9yIiwgWzEyNywgMTI3LCAwXSwgMjBdLCAvLyByZ2IoMjU1LDAsMCkgLT4g
cmdiKDAsIDI1NSwgMCkKKyAgWzEsICJzdG9wMSIsICJzdG9wLW9wYWNpdHkiLCAwLjc1LCAwLjFd
LCAvLyAxIC0+IDAuNQorICBbMSwgInBvbHlsaW5lMSIsICJzdHJva2UtbWl0ZXJsaW1pdCIsIDEx
LCAwLjVdLCAvLyAxMiAtPiAxMCAodGhpcyBpcyBhbiBhYnJ1cHQgY2hhbmdlIGluIHJlbmRlcmlu
ZyBldmVuIHRob3VnaCB0aGUgcHJvcGVydHkgYW5pbWF0aW9uIGlzIHNtb290aCkKKyAgWzEsICJ0
ZXh0MSIsICJrZXJuaW5nIiwgNSwgMV0sIC8vIDAgLT4gMTBweAorICBbMSwgInRleHQxIiwgImJh
c2VsaW5lLXNoaWZ0IiwgNSwgMV0sIC8vIDAgLT4gMTBweAorICBbMSwgImZsb29kMSIsICJmbG9v
ZC1vcGFjaXR5IiwgMC41LCAwLjFdLCAvLyAxIC0+IDAKKyAgWzEsICJmbG9vZDEiLCAiZmxvb2Qt
Y29sb3IiLCBbMTI3LCAxMjcsIDBdLCAyMF0sIC8vIHJnYigwLCAyNTUsIDApIC0+IHJnYigyNTUs
IDAsIDApCisgIFsxLCAibGlnaHQxIiwgImxpZ2h0aW5nLWNvbG9yIiwgWzEyNywgMTI3LCAwXSwg
MjBdLCAvLyByZ2IoMjU1LCAwLCAwKSAtPiByZ2IoMCwgMjU1LCAwKQorICBdOworICAgIAorICBm
dW5jdGlvbiBzZXR1cFRlc3QoKQorICB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJykuY2xhc3NOYW1lID0gJ2FuaW1hdGluZyc7CisgIH0KKworICBydW5UcmFuc2l0
aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBUZXN0LCB1c2VQYXVzZUFQSSk7CisgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxzdmcgdmll
d0JveD0iMCAwIDE2MCAxMjAiIHdpZHRoPSI0MDBweCIgaGVpZ2h0PSIzMDBweCI+CisgICAgPGRl
ZnM+CisgICAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWRpZW50MSI+CisgICAgICAgIDxzdG9w
IGlkPSJzdG9wMSIgb2Zmc2V0PSI1JSIvPgorICAgICAgICA8c3RvcCBvZmZzZXQ9Ijk1JSIgc3Rv
cC1jb2xvcj0icmdiKDAsMCwyNTUpIiAvPgorICAgICAgPC9saW5lYXJHcmFkaWVudD4KKyAgICAg
IDxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZGllbnQyIj4KKyAgICAgICAgPHN0b3Agb2Zmc2V0PSIx
MCUiIHN0b3AtY29sb3I9InJnYigwLDI1NSwyNTUpIiAvPgorICAgICAgICA8c3RvcCBvZmZzZXQ9
Ijk1JSIgc3RvcC1jb2xvcj0icmdiKDI1NSwgMCwyNTUpIiAvPgorICAgICAgPC9saW5lYXJHcmFk
aWVudD4KKyAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcjEiPgorICAgICAgICA8ZmVGbG9vZCBpZD0i
Zmxvb2QxIi8+CisgICAgICAgIDxmZURpZmZ1c2VMaWdodGluZyBpZD0ibGlnaHQxIi8+CisgICAg
ICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisgICAgPHJlY3QgaWQ9InJlY3QxIiB4PSIxMCIgeT0i
MTAiIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIvPgorICAgIDxyZWN0IGlkPSJyZWN0MiIgeD0iOTAi
IHk9IjEwIiB3aWR0aD0iMzAiIGhlaWdodD0iMzAiLz4KKyAgICA8cmVjdCBpZD0icmVjdDMiIHg9
IjkwIiB5PSI2MCIgd2lkdGg9IjMwIiBoZWlnaHQ9IjIwIi8+CisgICAgPHJlY3QgaWQ9InJlY3Q0
IiB4PSIxMCIgeT0iMTAwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICA8cmVjdCBpZD0i
cmVjdDUiIHg9IjUwIiB5PSIxMDAiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIvPgorICAgIDxyZWN0
IGlkPSJyZWN0NiIgeD0iOTAiIHk9IjEwMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIi8+CisgICAg
PHBvbHlsaW5lIGlkPSJwb2x5bGluZTEiIHBvaW50cz0iMTAsNzAgNjAsNzUgMTAsODAiLz4KKyAg
ICA8dGV4dCBpZD0idGV4dDEiIHg9IjEwMCIgeT0iNjAiPkV4YW1wbGU8L3RleHQ+CisgIDwvc3Zn
PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1MjcxZjJlZGE0MmYw
YTRmYTZlZmIxZTJmYzRmYmIxNWY2YTU5NC4uNjhiYmYyZmJmYzMwNjc3ZGViZDk2ZDQyZmM4YTA2
MzA2OGNlNWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTA4LTIzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODYKKyAgICAgICAgQXBwbHkgQ1NTIGFuaW1hdGlvbnMg
YW5kIHRyYW5zaXRpb25zIHRvIFNWRyBwcm9wZXJ0aWVzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIHRoZSBhcHBsaWNhYmxlIFNWRyBwcm9w
ZXJ0aWVzIGZyb20gU1ZHUmVuZGVyU3R5bGUgdG8KKyAgICAgICAgUmVuZGVyU3R5bGUgYW5kIGFk
ZCB0aGVtIHRvIHRoZSBsaXN0IG9mIGFuaW1hdGFibGUKKyAgICAgICAgcHJvcGVydGllcy4gVGhl
cmUgYXJlbid0IG1hbnkgU1ZHIHByb3BlcnRpZXMgdGhhdCBhcmUKKyAgICAgICAgYW5pbWF0YWJs
ZSBkaXJlY3RseS4gU1ZHUGFpbnQgKHVzZWQgaW4gImZpbGwiIGFuZCAic3Ryb2tlIikKKyAgICAg
ICAgaXMgc3VwcG9ydGVkIG9ubHkgd2hlbiBib3RoIGVuZHMgb2YgdGhlIGFuaW1hdGlvbiBhcmUK
KyAgICAgICAgYSBDb2xvci4gQWxzbyB1cGRhdGVkIFNWR0xlbmd0aCB0byBoYXZlIHNvbWUgbWV0
aG9kcworICAgICAgICBmb3IgY29udmVydGluZyB0byBhbmQgZnJvbSB1c2VyIHNwYWNlIHVuaXRz
LgorCisgICAgICAgIFRlc3Q6IHRyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sCisKKyAg
ICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJsZW5kRnVuYyk6CisgICAgICAgICAgICBDYWxscyB0aGUgYmxlbmQgbWV0aG9kIG9uIFNW
R0xlbmd0aAorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OlByb3Bl
cnR5V3JhcHBlclNWR1BhaW50KToKKyAgICAgICAgICAgIE5ldyBwcm9wZXJ0eSB3cmFwcGVyIHR5
cGUgZm9yIFNWR1BhaW50CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTVkdQYWlu
dDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50Ojpi
bGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1h
cCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6ZmlsbFBhaW50VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6ZmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5o
ZXJpdGVkRmxhZ3M6OnNldEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVy
aXRlZEZsYWdzOjpzdHJva2VQYWludFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVk
RmxhZ3M6OnN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6OnNldFN0cm9rZVBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6OnN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRT
dHJva2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlRGFz
aE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tlRGFz
aE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlTWl0ZXJM
aW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tlTWl0ZXJM
aW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3RvcE9wYWNpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFN0b3BPcGFjaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdG9wQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SW5oZXJpdGVkRmxhZ3M6OnNldExpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5o
ZXJpdGVkRmxhZ3M6OmJhc2VsaW5lU2hpZnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0QmFzZWxpbmVTaGlmdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aGVyaXRlZEZsYWdzOjprZXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpzZXRLZXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdG9wQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmZsb29kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyU3R5bGU6OnN0b3BDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHls
ZTo6Zmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6bGlnaHRp
bmdDb2xvcik6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6Y29udmVydFZhbHVlVG9Vc2VyVW5p
dHMpOgorICAgICAgICAgICAgTmV3IGNvbnZlcnNpb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBzZXR0
aW5nIGFuZCBnZXR0aW5nIHZhbHVlcworICAgICAgICAqIHN2Zy9TVkdMZW5ndGguaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6aXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aDo6YmxlbmQpOgorICAgICAgICAgICAgQ3VzdG9tIGJsZW5kIGZ1bmN0aW9uIHRoYXQgdGFr
ZXMgaW50byBhY2NvdW50CisgICAgICAgICAgICB3aGV0aGVyIHRoZSB1bml0cyBvZiBhIGxlbmd0
aCBjYW4gYmUgY29udmVydGVkCisgICAgICAgICAgICBpbiBhbiBhbmltYXRpb24sIHdoZXJlIHlv
dSBkb24ndCBuZWNlc3NhcmlseSBoYXZlCisgICAgICAgICAgICBhbiBTVkdFbGVtZW50IGZvciBj
b250ZXh0LgorCiAyMDExLTA4LTE5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBTd2l0Y2ggUmVuZGVyQmxvY2sgdG8gdG8gbmV3IGxheW91dCB0eXBlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBl
ZTE3ODMzNGNiZDllZTI5YTM5MjVlYzM2NDRkYmRjNzRkNzcxMDA5Li5hZDNjNTkyODI1N2MyYTQx
ODQxZjM3YjYwZDM2ZGQ5MDJiYTcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtMjE3LDYgKzIxNywxMyBAQCBzdGF0aWMgaW5s
aW5lIExlbmd0aEJveCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3Qg
TGVuZ3RoQm94JiBmcgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBFTkFCTEUoU1ZHKQor
c3RhdGljIGlubGluZSBTVkdMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBj
b25zdCBTVkdMZW5ndGgmIGZyb20sIGNvbnN0IFNWR0xlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVz
cykKK3sgIAorICAgIHJldHVybiB0by5ibGVuZChmcm9tLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHByb2dyZXNzKSk7Cit9CisjZW5kaWYKKwogY2xhc3MgUHJvcGVydHlXcmFwcGVyQmFzZTsKIAog
c3RhdGljIHZvaWQgYWRkU2hvcnRoYW5kUHJvcGVydGllcygpOwpAQCAtNjYzLDYgKzY3MCw2NyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxQcm9wZXJ0eVdyYXBwZXJCYXNlKj4gbV9wcm9wZXJ0eVdy
YXBwZXJzOwogfTsKIAorI2lmIEVOQUJMRShTVkcpCitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTVkdQ
YWludCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0
eVdyYXBwZXJTVkdQYWludChpbnQgcHJvcCwgY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSYg
KFJlbmRlclN0eWxlOjoqcGFpbnRUeXBlR2V0dGVyKSgpIGNvbnN0LCBjb25zdCBDb2xvciYgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSkKKyAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCisgICAg
ICAgICwgbV9wYWludFR5cGVHZXR0ZXIocGFpbnRUeXBlR2V0dGVyKQorICAgICAgICAsIG1fZ2V0
dGVyKGdldHRlcikKKyAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRl
clN0eWxlKiBiKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKChhLT4qbV9wYWludFR5cGVHZXR0
ZXIpKCkgIT0gKGItPiptX3BhaW50VHlwZUdldHRlcikoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBhbmltYXRpb25zIGJl
dHdlZW4gU1ZHUGFpbnRzIHRoYXQgYXJlIHB1cmUgQ29sb3IgdmFsdWVzLgorICAgICAgICAvLyBG
b3IgZXZlcnl0aGluZyBlbHNlIHdlIG11c3QgcmV0dXJuIHRydWUgZm9yIHRoaXMgbWV0aG9kLCBv
dGhlcndpc2UKKyAgICAgICAgLy8gd2Ugd2lsbCB0cnkgdG8gYW5pbWF0ZSBiZXR3ZWVuIHZhbHVl
cyBmb3JldmVyLgorICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSA9PSBTVkdQ
YWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikgeworICAgICAgICAgICAgQ29sb3IgZnJvbUNv
bG9yID0gKGEtPiptX2dldHRlcikoKTsKKyAgICAgICAgICAgIENvbG9yIHRvQ29sb3IgPSAoYi0+
Km1fZ2V0dGVyKSgpOworCisgICAgICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYg
IXRvQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgZnJvbUNv
bG9yID0gQ29sb3IoKTsKKyAgICAgICAgICAgIGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICAgICAgdG9Db2xvciA9IENvbG9yKCk7CisKKyAgICAgICAgICAgIHJldHVybiBmcm9t
Q29sb3IgPT0gdG9Db2xvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVu
ZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBi
LCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50
VHlwZUdldHRlcikoKSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUgorICAgICAg
ICAgICAgfHwgKGItPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSBTVkdQYWludDo6U1ZHX1BBSU5U
VFlQRV9SR0JDT0xPUikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDb2xvciBmcm9t
Q29sb3IgPSAoYS0+Km1fZ2V0dGVyKSgpOworICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPipt
X2dldHRlcikoKTsKKworICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29s
b3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghZnJvbUNv
bG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGZyb21Db2xvciA9IENvbG9yKCk7CisgICAgICAg
IGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICB0b0NvbG9yID0gQ29sb3IoKTsK
KyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgZnJvbUNvbG9yLCB0b0Nv
bG9yLCBwcm9ncmVzcykpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBTVkdQYWludDo6
U1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6OiptX3BhaW50VHlwZUdldHRlcikoKSBjb25zdDsK
KyAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7CisgICAg
dm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3ImKTsKK307CisjZW5kaWYK
IAogc3RhdGljIFZlY3RvcjxQcm9wZXJ0eVdyYXBwZXJCYXNlKj4qIGdQcm9wZXJ0eVdyYXBwZXJz
ID0gMDsKIHN0YXRpYyBpbnQgZ1Byb3BlcnR5V3JhcHBlck1hcFtudW1DU1NQcm9wZXJ0aWVzXTsK
QEAgLTc2Nyw5ICs4MzUsMjUgQEAgdm9pZCBBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1h
cCgpCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBl
clNoYWRvdyhDU1NQcm9wZXJ0eVRleHRTaGFkb3csICZSZW5kZXJTdHlsZTo6dGV4dFNoYWRvdywg
JlJlbmRlclN0eWxlOjpzZXRUZXh0U2hhZG93KSk7CiAKICNpZiBFTkFCTEUoU1ZHKQorICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJTVkdQYWludChD
U1NQcm9wZXJ0eUZpbGwsICZSZW5kZXJTdHlsZTo6ZmlsbFBhaW50VHlwZSwgJlJlbmRlclN0eWxl
OjpmaWxsUGFpbnRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRGaWxsUGFpbnRDb2xvcikpOwogICAg
ICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+
KENTU1Byb3BlcnR5RmlsbE9wYWNpdHksICZSZW5kZXJTdHlsZTo6ZmlsbE9wYWNpdHksICZSZW5k
ZXJTdHlsZTo6c2V0RmlsbE9wYWNpdHkpKTsKLSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFw
cGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwg
JlJlbmRlclN0eWxlOjpmbG9vZE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5
KSk7CisKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFw
cGVyU1ZHUGFpbnQoQ1NTUHJvcGVydHlTdHJva2UsICZSZW5kZXJTdHlsZTo6c3Ryb2tlUGFpbnRU
eXBlLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVBhaW50Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0U3Ry
b2tlUGFpbnRDb2xvcikpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSwgJlJlbmRlclN0
eWxlOjpzdHJva2VPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnNldFN0cm9rZU9wYWNpdHkpKTsKKyAg
ICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPFNWR0xl
bmd0aD4oQ1NTUHJvcGVydHlTdHJva2VXaWR0aCwgJlJlbmRlclN0eWxlOjpzdHJva2VXaWR0aCwg
JlJlbmRlclN0eWxlOjpzZXRTdHJva2VXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eVN0cm9r
ZURhc2hvZmZzZXQsICZSZW5kZXJTdHlsZTo6c3Ryb2tlRGFzaE9mZnNldCwgJlJlbmRlclN0eWxl
OjpzZXRTdHJva2VEYXNoT2Zmc2V0KSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBl
bmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0
LCAmUmVuZGVyU3R5bGU6OnN0cm9rZU1pdGVyTGltaXQsICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tl
TWl0ZXJMaW1pdCkpOworCisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFBy
b3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHksICZSZW5kZXJTdHls
ZTo6Zmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnNldEZsb29kT3BhY2l0eSkpOworICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFs
aWRDb2xvcihDU1NQcm9wZXJ0eUZsb29kQ29sb3IsICZSZW5kZXJTdHlsZTo6Zmxvb2RDb2xvciwg
JlJlbmRlclN0eWxlOjpzZXRGbG9vZENvbG9yKSk7CisKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBl
cnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVN0b3BPcGFj
aXR5LCAmUmVuZGVyU3R5bGU6OnN0b3BPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnNldFN0b3BPcGFj
aXR5KSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3Jh
cHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5U3RvcENvbG9yLCAmUmVuZGVyU3R5bGU6
OnN0b3BDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRTdG9wQ29sb3IpKTsKKworICAgICAgICBnUHJv
cGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xv
cihDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IsICZSZW5kZXJTdHlsZTo6bGlnaHRpbmdDb2xvciwg
JlJlbmRlclN0eWxlOjpzZXRMaWdodGluZ0NvbG9yKSk7CisKKyAgICAgICAgZ1Byb3BlcnR5V3Jh
cHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPFNWR0xlbmd0aD4oQ1NTUHJvcGVydHlC
YXNlbGluZVNoaWZ0LCAmUmVuZGVyU3R5bGU6OmJhc2VsaW5lU2hpZnRWYWx1ZSwgJlJlbmRlclN0
eWxlOjpzZXRCYXNlbGluZVNoaWZ0VmFsdWUpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMt
PmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPFNWR0xlbmd0aD4oQ1NTUHJvcGVydHlLZXJuaW5n
LCAmUmVuZGVyU3R5bGU6Omtlcm5pbmcsICZSZW5kZXJTdHlsZTo6c2V0S2VybmluZykpOwogI2Vu
ZGlmCiAKICAgICAgICAgLy8gVE9ETzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggNmZiNjc2Nzc2ODk5NWViMmMwMTA5YzI4NzE2YTM3MTk2ZDY4
NDRmOC4uOTA3OWFmZWZkNTMwMDQyYTkwNWIxZTkzYzFjODA0NzJiMGNiYjhiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc1LDYgKzc1LDcg
QEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYWludC5oIgogI2lu
Y2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjZW5kaWYKIApAQCAtMTE2MSwxNSArMTE2MiwzOSBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNWRykKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3Zn
U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N2Z1N0eWxlLmdldCgpOyB9CiAgICAgU1ZHUmVuZGVy
U3R5bGUqIGFjY2Vzc1NWR1N0eWxlKCkgeyByZXR1cm4gbV9zdmdTdHlsZS5hY2Nlc3MoKTsgfQot
ICAgIAorCisgICAgY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmZpbGxQYWludFR5cGUoKTsgfQorICAgIGNvbnN0
IENvbG9yJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmZpbGxQ
YWludENvbG9yKCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYWludENvbG9yKGNvbnN0IENvbG9yJiBj
KSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZpbGxQYWludChTVkdQYWludDo6U1ZHX1BBSU5UVFlQ
RV9SR0JDT0xPUiwgYywgIiIpOyB9CiAgICAgZmxvYXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLT5maWxsT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsT3BhY2l0
eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZpbGxPcGFjaXR5KGYpOyB9Ci0gICAg
CisKKyAgICBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VQYWludFR5cGUoKTsgfQorICAgIGNvbnN0
IENvbG9yJiBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+c3Ry
b2tlUGFpbnRDb2xvcigpOyB9CisgICAgdm9pZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldFN0cm9rZVBhaW50KFNWR1BhaW50OjpTVkdf
UEFJTlRUWVBFX1JHQkNPTE9SLCBjLCAiIik7IH0KICAgICBmbG9hdCBzdHJva2VPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+c3Ryb2tlT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBz
ZXRTdHJva2VPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlT3Bh
Y2l0eShmKTsgfQotICAgIAorICAgIFNWR0xlbmd0aCBzdHJva2VXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCktPnN0cm9rZVdpZHRoKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVdpZHRo
KFNWR0xlbmd0aCB3KSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldFN0cm9rZVdpZHRoKHcpOyB9Cisg
ICAgU1ZHTGVuZ3RoIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgp
LT5zdHJva2VEYXNoT2Zmc2V0KCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZURhc2hPZmZzZXQoU1ZH
TGVuZ3RoIGQpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlRGFzaE9mZnNldChkKTsgfQor
ICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5z
dHJva2VNaXRlckxpbWl0KCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZU1pdGVyTGltaXQoZmxvYXQg
ZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VNaXRlckxpbWl0KGYpOyB9CisKICAgICBm
bG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5mbG9vZE9wYWNp
dHkoKTsgfQogICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5
bGUoKS0+c2V0Rmxvb2RPcGFjaXR5KGYpOyB9CisKKyAgICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0b3BPcGFjaXR5KCk7IH0KKyAgICB2b2lkIHNldFN0
b3BPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3RvcE9wYWNpdHkoZik7
IH0KKworICAgIHZvaWQgc2V0U3RvcENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0
eWxlKCktPnNldFN0b3BDb2xvcihjKTsgfQorICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBD
b2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRGbG9vZENvbG9yKGMpOyB9CisgICAgdm9p
ZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNl
dExpZ2h0aW5nQ29sb3IoYyk7IH0KKworICAgIFNWR0xlbmd0aCBiYXNlbGluZVNoaWZ0VmFsdWUo
KSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5iYXNlbGluZVNoaWZ0VmFsdWUoKTsgfQorICAg
IHZvaWQgc2V0QmFzZWxpbmVTaGlmdFZhbHVlKFNWR0xlbmd0aCBzKSB7IGFjY2Vzc1NWR1N0eWxl
KCktPnNldEJhc2VsaW5lU2hpZnRWYWx1ZShzKTsgfQorICAgIFNWR0xlbmd0aCBrZXJuaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+a2VybmluZygpOyB9CisgICAgdm9pZCBzZXRLZXJu
aW5nKFNWR0xlbmd0aCBrKSB7IGFjY2Vzc1NWR1N0eWxlKCktPnNldEtlcm5pbmcoayk7IH0KICNl
bmRpZgogCiAgICAgdm9pZCBzZXRXcmFwU2hhcGUoUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IHNo
YXBlKQpAQCAtMTQwNiw2ICsxNDMxLDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgY29uc3QgQ29s
b3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5zdG9wQ29sb3IoKTsgfQorICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+Zmxvb2RDb2xvcigpOyB9CisgICAgY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5saWdodGlu
Z0NvbG9yKCk7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBhcHBlbmRDb250ZW50KFBhc3NPd25QdHI8
Q29udGVudERhdGE+KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmgKaW5kZXggMGZlNGE4MGNkZmNkNTIxZjQ3MzdkMzdmYzJmMWM1YjVj
MzMyZTlkOC4uNGFhZGVlYWJjMDdjZjViZmVhZjkyZmY4MDcwM2VjZGVmYjA2YjQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKQEAgLTMx
NSwxMCArMzE1LDEwIEBAIHB1YmxpYzoKICAgICBTVkdMZW5ndGggc3Ryb2tlRGFzaE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+ZGFzaE9mZnNldDsgfQogICAgIFNWR0xlbmd0aCBrZXJu
aW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dC0+a2VybmluZzsgfQogICAgIGZsb2F0IHN0b3BPcGFj
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RvcHMtPm9wYWNpdHk7IH0KLSAgICBDb2xvciBzdG9wQ29s
b3IoKSBjb25zdCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KKyAgICBjb25zdCBDb2xvciYgc3Rv
cENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3RvcHMtPmNvbG9yOyB9CiAgICAgZmxvYXQgZmxvb2RP
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RPcGFjaXR5OyB9Ci0gICAgQ29sb3Ig
Zmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmZsb29kQ29sb3I7IH0KLSAgICBDb2xv
ciBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+bGlnaHRpbmdDb2xvcjsgfQor
ICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RD
b2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bWlzYy0+bGlnaHRpbmdDb2xvcjsgfQogICAgIFNWR0xlbmd0aCBiYXNlbGluZVNoaWZ0VmFsdWUo
KSBjb25zdCB7IHJldHVybiBtaXNjLT5iYXNlbGluZVNoaWZ0VmFsdWU7IH0KICAgICBTaGFkb3dE
YXRhKiBzaGFkb3coKSBjb25zdCB7IHJldHVybiBzaGFkb3dTVkctPnNoYWRvdy5nZXQoKTsgfQog
ICAgIFN0cmluZyBjbGlwcGVyUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiByZXNvdXJjZXMtPmNs
aXBwZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKaW5kZXggNmIyMWE4MjE2ZTUzYzZmZmM3
YzE4Zjc2NWNkMWMyZGFjYThmMmY2OC4uOTU3MmFlMjQ2ZmEzYzI1MjNkOGMzNDVlOTBjMDNiNmFm
Yzg1NTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKQEAgLTE5NCw4OCArMTk0LDEwOCBA
QCBmbG9hdCBTVkdMZW5ndGg6OnZhbHVlKGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQpIGNvbnN0
CiAKIGZsb2F0IFNWR0xlbmd0aDo6dmFsdWUoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChleHRyYWN0VHlwZShtX3VuaXQp
KSB7CisgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzLCBleHRyYWN0VHlwZShtX3VuaXQpLCBjb250ZXh0LCBlYyk7Cit9CisKK3ZvaWQgU1ZH
TGVuZ3RoOjpzZXRWYWx1ZShjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwg
U1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQobW9kZSwgdW5pdFR5cGUpOworICAgIHNl
dFZhbHVlKHZhbHVlLCBjb250ZXh0LCBlYyk7Cit9CisKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1
ZShmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2Fs
IHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCisgICAgaWYgKGV4dHJh
Y3RUeXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIHZhbHVlID0g
dmFsdWUgLyAxMDA7CisKKyAgICBmbG9hdCBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnZlcnRWYWx1ZUZy
b21Vc2VyVW5pdHModmFsdWUsIGV4dHJhY3RUeXBlKG1fdW5pdCksIGNvbnRleHQsIGVjKTsKKyAg
ICBpZiAoIWVjKQorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZlcnRlZFZh
bHVlOworfQorCitmbG9hdCBTVkdMZW5ndGg6OmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0
IHZhbHVlLCBTVkdMZW5ndGhUeXBlIGZyb21Vbml0LCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGZyb21Vbml0KSB7CiAg
ICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93bjoKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlw
ZU51bWJlcjoKLSAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRv
VXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMTAwLCBjb250ZXh0LCBlYyk7Cisg
ICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKHZhbHVl
IC8gMTAwLCBjb250ZXh0LCBlYyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlw
ZUVNUzoKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21FTVNUb1VzZXJVbml0cyhtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cywgY29udGV4dCwgZWMpOworICAgICAgICByZXR1cm4gY29udmVy
dFZhbHVlRnJvbUVNU1RvVXNlclVuaXRzKHZhbHVlLCBjb250ZXh0LCBlYyk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1
ZUZyb21FWFNUb1VzZXJVbml0cyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cywgY29udGV4dCwgZWMp
OwotICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHM7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tRVhTVG9Vc2VyVW5pdHMo
dmFsdWUsIGNvbnRleHQsIGVjKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBl
Q006Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTRmICogY3Nz
UGl4ZWxzUGVySW5jaDsKKyAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAv
IDIuNTRmOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5cGVNTToKLSAgICAgICAg
cmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMjUuNGYgKiBjc3NQaXhlbHNQZXJJbmNo
OworICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gMjUuNGY7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgotICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgKiBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFs
dWUgKiBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5
cGVQVDoKLSAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gNzIgKiBjc3NQ
aXhlbHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8g
NzI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgotICAgICAgICByZXR1
cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2ICogY3NzUGl4ZWxzUGVySW5jaDsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDY7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZShjb25z
dCBTVkdFbGVtZW50KiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlLCBT
VkdMZW5ndGhUeXBlIHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK2Zsb2F0IFNWR0xlbmd0
aDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSB0
b1VuaXQsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogewotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7Ci0gICAgc2V0VmFs
dWUodmFsdWUsIGNvbnRleHQsIGVjKTsKLX0KLQotdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlKGZs
b2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBzd2l0Y2ggKGV4dHJhY3RUeXBlKG1fdW5pdCkpIHsKKyAgICBzd2l0Y2ggKHRvVW5p
dCkgewogICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CiAgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExl
bmd0aFR5cGVOdW1iZXI6Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7
CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhU
eXBlUGVyY2VudGFnZTogewotICAgICAgICBmbG9hdCByZXN1bHQgPSBjb252ZXJ0VmFsdWVGcm9t
VXNlclVuaXRzVG9QZXJjZW50YWdlKHZhbHVlLCBjb250ZXh0LCBlYyk7Ci0gICAgICAgIGlmICgh
ZWMpCi0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHJlc3VsdDsgCisgICAg
Y2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZy
b21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UodmFsdWUgKiAxMDAsIGNvbnRleHQsIGVjKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzogewotICAgICAgICBmbG9h
dCByZXN1bHQgPSBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FTVModmFsdWUsIGNvbnRleHQs
IGVjKTsKLSAgICAgICAgaWYgKCFlYykKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gcmVzdWx0OworICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VNUyh2YWx1ZSwgY29udGV4dCwgZWMpOwogICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBMZW5ndGhUeXBlRVhTOiB7Ci0gICAgICAgIGZsb2F0
IHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VYUyh2YWx1ZSwgY29udGV4dCwg
ZWMpOwotICAgICAgICBpZiAoIWVjKQotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSByZXN1bHQ7IAorICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VYUyh2YWx1ZSwgY29udGV4dCwgZWMpOwogICAgICAg
ICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBMZW5ndGhUeXBlUFg6Ci0gICAgICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWU7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBlQ006Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzID0gdmFsdWUgKiAyLjU0ZiAvIGNzc1BpeGVsc1BlckluY2g7CisgICAgICAgIHJldHVy
biB2YWx1ZSAqIDIuNTRmIC8gY3NzUGl4ZWxzUGVySW5jaDsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBMZW5ndGhUeXBlTU06Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFs
dWUgKiAyNS40ZiAvIGNzc1BpeGVsc1BlckluY2g7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIDI1
LjRmIC8gY3NzUGl4ZWxzUGVySW5jaDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZW5ndGhU
eXBlSU46Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgLyBjc3NQaXhl
bHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFsdWUgLyBjc3NQaXhlbHNQZXJJbmNoOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5cGVQVDoKLSAgICAgICAgbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDcyIC8gY3NzUGl4ZWxzUGVySW5jaDsKKyAgICAgICAgcmV0
dXJuIHZhbHVlICogNzIgLyBjc3NQaXhlbHNQZXJJbmNoOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExlbmd0aFR5cGVQQzoKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1
ZSAqIDYgLyBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFsdWUgKiA2IC8gY3Nz
UGl4ZWxzUGVySW5jaDsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgcmV0dXJuIDA7CiB9CiAKIGZsb2F0IFNWR0xlbmd0aDo6dmFsdWVBc1Bl
cmNlbnRhZ2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCmluZGV4IDI2MzJhNTA4NzM0NzJl
Y2RjZjA5ZTI1ZDI0ZGEzOTUwYjM5ZmIxOTkuLjA3NGZmZWZlNGFlZTQ5NGRlNWRiYWFiYTc5MjE3
MjgwYTQ2M2JiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKQEAgLTExMCwxMyArMTEwLDY5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwg
dHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVYUzsKICAgICB9CiAK
KyAgICBib29sIGlzWmVybygpIGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiAhbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgfQorCiAgICAgc3RhdGljIFNWR0xlbmd0aCBmcm9tQ1NT
UHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGgm
KTsKICAgICBzdGF0aWMgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgU1ZHTGVuZ3RoIGJsZW5kKGNv
bnN0IFNWR0xlbmd0aCYgZnJvbSwgZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0CisgICAgeworICAgICAg
ICBTVkdMZW5ndGhUeXBlIHRvVHlwZSA9IHVuaXRUeXBlKCk7CisgICAgICAgIFNWR0xlbmd0aFR5
cGUgZnJvbVR5cGUgPSBmcm9tLnVuaXRUeXBlKCk7CisKKyAgICAgICAgaWYgKChmcm9tLmlzWmVy
bygpICYmIGlzWmVybygpKQorICAgICAgICAgICAgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVVu
a25vd24KKyAgICAgICAgICAgIHx8IHRvVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgorICAgICAg
ICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmIGZyb21UeXBlICE9IExlbmd0aFR5cGVQZXJjZW50
YWdlICYmIHRvVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgICAgIHx8ICgh
aXNaZXJvKCkgJiYgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBlICE9
IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYm
ICFpc1plcm8oKSAmJiAoZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBM
ZW5ndGhUeXBlRVhTKSAmJiBmcm9tVHlwZSAhPSB0b1R5cGUpKQorICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworCisgICAgICAgIFNWR0xlbmd0aCBsZW5ndGg7CisgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworCisgICAgICAgIGlmIChmcm9tVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFn
ZSB8fCB0b1R5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKKyAgICAgICAgICAgIGZsb2F0
IGZyb21QZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOworICAgICAgICAg
ICAgZmxvYXQgdG9QZXJjZW50ID0gdmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEwMDsKKyAgICAgICAg
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVQZXJjZW50YWdlLCBm
cm9tUGVyY2VudCArICh0b1BlcmNlbnQgLSBmcm9tUGVyY2VudCkgKiBwcm9ncmVzcywgZWMpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGZyb21UeXBlID09IHRvVHlwZSB8fCBm
cm9tLmlzWmVybygpIHx8IGlzWmVybygpIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFTVMgfHwg
ZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVYUykgeworICAgICAgICAgICAgICAgIGZsb2F0IGZyb21W
YWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgICAgICAgICAgZmxv
YXQgdG9WYWx1ZSA9IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICAgICAgICAgIGlm
IChpc1plcm8oKSkKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVk
VW5pdHMoZnJvbVR5cGUsIGZyb21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHByb2dy
ZXNzLCBlYyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsZW5n
dGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUsIGZyb21WYWx1ZSArICh0b1ZhbHVlIC0g
ZnJvbVZhbHVlKSAqIHByb2dyZXNzLCBlYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIEFTU0VSVCghaXNSZWxhdGl2ZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
IWZyb20uaXNSZWxhdGl2ZSgpKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBmcm9tVmFsdWVJblVz
ZXJVbml0cyA9IGNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZyb20udmFsdWVJblNwZWNpZmllZFVu
aXRzKCksIGZyb21UeXBlLCAwLCBlYyk7CisgICAgICAgICAgICAgICAgaWYgKCFlYykgeworICAg
ICAgICAgICAgICAgICAgICBmbG9hdCBmcm9tVmFsdWUgPSBjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzKGZyb21WYWx1ZUluVXNlclVuaXRzLCB0b1R5cGUsIDAsIGVjKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFlYykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdG9WYWx1ZSA9
IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModG9UeXBlLCBmcm9tVmFsdWUgKyAodG9WYWx1ZSAtIGZy
b21WYWx1ZSkgKiBwcm9ncmVzcywgZWMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGVjKQor
ICAgICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aCgpOworCisgICAgICAgIHJldHVybiBsZW5ndGg7
CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgZGV0ZXJtaW5lVmlld3BvcnQoY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dCwgZmxvYXQmIHdpZHRoLCBmbG9hdCYgaGVpZ2h0KSBjb25zdDsKIAor
ICAgIGZsb2F0IGNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhU
eXBlIGZyb21Vbml0LCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CisgICAgZmxvYXQgY29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmbG9hdCB2YWx1ZSwg
U1ZHTGVuZ3RoVHlwZSB0b1VuaXQsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKKwogICAgIGZsb2F0IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9V
c2VyVW5pdHMoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKICAgICBmbG9hdCBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJj
ZW50YWdlKGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104814</attachid>
            <date>2011-08-23 04:24:28 -0700</date>
            <delta_ts>2011-08-24 17:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21586-20110823212425.patch</filename>
            <type>text/plain</type>
            <size>34487</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MzYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTlkNGE0NDlhMDlkMGY0OTE0NjQ4
MzMyOTgxMGU5MDllNTJlOGEwLi5lYjc5MjcxMGE5MjQxNjhiZTM2N2U3NTRkNjBhZDg1ZDZhYWMx
NzUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdCBmb3IgdGhlIFNWRyBwcm9wZXJ0aWVzIHRoYXQgY2FuIG5v
dyBhbmltYXRlLiBBbHNvCisgICAgICAgIHVwZGF0ZWQgdGhlIHRlc3QgaGVscGVyIHNjcmlwdCB0
byBoYW5kbGUgY29sb3JzIGFuZAorICAgICAgICBwZXJjZW50YWdlcy4KKworICAgICAgICAqIHRy
YW5zaXRpb25zL3Jlc291cmNlcy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qczoKKyAgICAgICAg
KGV4cGVjdGVkKToKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRt
bDogQWRkZWQuCisKIDIwMTEtMDgtMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIE1hcmsgdG91Y2ggdGVzdHMgYXMgZmFpbGluZyBvbiBPU1gg
MTAuNS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNlcy90cmFu
c2l0aW9uLXRlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNl
cy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwppbmRleCBmNDk0ZGE0MjI2YzgwN2NmMjJhMjE5
NWEzZGVmYTFjYWZkZWYwZmRmLi5iMzc2Njg4MGUxMjYxNjM4ODkyNTkwNDdlNzNmYjZmMDE3YWQ4
NTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNp
dGlvbi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVzb3Vy
Y2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC04MSw2ICs4MSwyOCBAQCBmdW5jdGlv
biBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocHJvcGVy
dHkgPT0gImZpbGwiIHx8IHByb3BlcnR5ID09ICJzdHJva2UiKSB7CisgICAgICAgIGNvbXB1dGVk
VmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5yZ2JDb2xvcjsKKyAgICAg
ICAgaWYgKGlzQ2xvc2VFbm91Z2gocGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5yZWQuY3NzVGV4dCks
IGV4cGVjdGVkVmFsdWVbMF0sIHRvbGVyYW5jZSkgJiYKKyAgICAgICAgICAgIGlzQ2xvc2VFbm91
Z2gocGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5ncmVlbi5jc3NUZXh0KSwgZXhwZWN0ZWRWYWx1ZVsx
XSwgdG9sZXJhbmNlKSAmJgorICAgICAgICAgICAgaXNDbG9zZUVub3VnaChwYXJzZUludChjb21w
dXRlZFZhbHVlLmJsdWUuY3NzVGV4dCksIGV4cGVjdGVkVmFsdWVbMl0sIHRvbGVyYW5jZSkpCisg
ICAgICAgICAgICBwYXNzID0gdHJ1ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBmYWlsZWQuIE1ha2Ugc3VyZSBjb21wdXRlZCB2YWx1ZSBpcyBzb21ldGhpbmcgd2UgY2FuIHJl
YWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5jc3NUZXh0OworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eSA9PSAic3RvcC1jb2xvciIgfHwgcHJvcGVydHkgPT0gImZsb29kLWNv
bG9yIiB8fCBwcm9wZXJ0eSA9PSAibGlnaHRpbmctY29sb3IiKSB7CisgICAgICAgIGNvbXB1dGVk
VmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgLy8gVGhl
IGNvbXB1dGVkVmFsdWUgY3NzVGV4dCBpcyByZ2IobnVtLCBudW0sIG51bSkKKyAgICAgICAgdmFy
IGNvbXBvbmVudHMgPSBjb21wdXRlZFZhbHVlLmNzc1RleHQuc3BsaXQoIigiKVsxXS5zcGxpdCgi
KSIpWzBdLnNwbGl0KCIsIik7CisgICAgICAgIGlmIChpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNv
bXBvbmVudHNbMF0pLCBleHBlY3RlZFZhbHVlWzBdLCB0b2xlcmFuY2UpICYmCisgICAgICAgICAg
ICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBvbmVudHNbMV0pLCBleHBlY3RlZFZhbHVlWzFd
LCB0b2xlcmFuY2UpICYmCisgICAgICAgICAgICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBv
bmVudHNbMl0pLCBleHBlY3RlZFZhbHVlWzJdLCB0b2xlcmFuY2UpKQorICAgICAgICAgICAgcGFz
cyA9IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gV2UgZmFpbGVkLiBNYWtl
IHN1cmUgY29tcHV0ZWQgdmFsdWUgaXMgc29tZXRoaW5nIHdlIGNhbiByZWFkIGluIHRoZSBlcnJv
ciBtZXNzYWdlCisgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRWYWx1ZS5jc3NU
ZXh0OworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIp
IHsKICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQpOwogICAg
ICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0
b2xlcmFuY2UpOwpAQCAtMTMzLDYgKzE1NSwxMCBAQCBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFs
dWUoZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA0OyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Nsb3NlRW5v
dWdoKGNvbXB1dGVkVmFsdWVbaV0sIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX1BFUkNFTlRBR0U6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUg
PSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuY3NzVGV4dCk7CisgICAgICAgICAgICAgICAgICAg
IHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVy
YW5jZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7CiAgICAgICAgICAgICAg
ICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUs
IHRvbGVyYW5jZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJh
bnNpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3ZnLXRyYW5z
aXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjdhMjEyYjA4MTk3ZjQ5NjIxMWQ5OWQ1
MzU2NDYzNzc0NGE1NTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvc3ZnLXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjA5OiBGYWlsZWQgdG8gcGF1c2UgJ2ZpbGwnIHRyYW5zaXRpb24gb24g
ZWxlbWVudCAncmVjdDcnCitFeGFtcGxlCitQQVNTIC0gImZpbGwtb3BhY2l0eSIgcHJvcGVydHkg
Zm9yICJyZWN0MSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjYKK1BB
U1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDMKK1BBU1MgLSAic3Ryb2tlLW9wYWNpdHkiIHByb3BlcnR5
IGZvciAicmVjdDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC42CitQ
QVNTIC0gInN0cm9rZS1kYXNob2Zmc2V0IiBwcm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0
IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAiZmlsbCIgcHJvcGVydHkgZm9y
ICJyZWN0MiIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLDEyNywxMjcK
K1BBU1MgLSAic3Ryb2tlIiBwcm9wZXJ0eSBmb3IgInJlY3QyIiBlbGVtZW50IGF0IDFzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDEyNywwLDAKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0
eSBmb3IgInJlY3Q0IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDgKK1BB
U1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3Q1IiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBm
b3IgInJlY3Q2IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitGQUlM
IC0gImZpbGwiIHByb3BlcnR5IGZvciAicmVjdDciIGVsZW1lbnQgYXQgMXMgZXhwZWN0ZWQ6IDAs
MCwxMjcgYnV0IHNhdzogI2ludmFsaWQgIzAwMDBmZgorUEFTUyAtICJzdG9wLWNvbG9yIiBwcm9w
ZXJ0eSBmb3IgInN0b3AxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEy
NywxMjcsMAorUEFTUyAtICJzdG9wLW9wYWNpdHkiIHByb3BlcnR5IGZvciAic3RvcDEiIGVsZW1l
bnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC43NQorUEFTUyAtICJzdHJva2UtbWl0
ZXJsaW1pdCIgcHJvcGVydHkgZm9yICJwb2x5bGluZTEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogMTEKK1BBU1MgLSAia2VybmluZyIgcHJvcGVydHkgZm9yICJ0ZXh0MSIg
ZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA1CitQQVNTIC0gImJhc2VsaW5l
LXNoaWZ0IiBwcm9wZXJ0eSBmb3IgInRleHQxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDUKK1BBU1MgLSAiZmxvb2Qtb3BhY2l0eSIgcHJvcGVydHkgZm9yICJmbG9vZDEi
IGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC41CitQQVNTIC0gImZsb29k
LWNvbG9yIiBwcm9wZXJ0eSBmb3IgImZsb29kMSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxMjcsMTI3LDAKK1BBU1MgLSAibGlnaHRpbmctY29sb3IiIHByb3BlcnR5IGZv
ciAibGlnaHQxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEyNywxMjcs
MAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMu
aHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYyOThhNWRlOTcyY2I2NGQ2MDlmNWRkZWZhMjNmNzYwYzIwMDc1MjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRtbApA
QCAtMCwwICsxLDE4NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorCisgIHN2ZyAqIHsK
KyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogZmlsbCwgc3Ryb2tlLCBmaWxsLW9w
YWNpdHksIHN0cm9rZS1vcGFjaXR5LCBzdHJva2Utd2lkdGgsIHN0cm9rZS1kYXNob2Zmc2V0LCBz
dHJva2UtbWl0ZXJsaW1pdCwga2VybmluZywgYmFzZWxpbmUtc2hpZnQsIGZsb29kLWNvbG9yLCBm
bG9vZC1vcGFjaXR5LCBzdG9wLWNvbG9yLCBzdG9wLW9wYWNpdHksIGxpZ2h0aW5nLWNvbG9yOwor
ICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAyczsKKyAgICAgIC13ZWJraXQtdHJh
bnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgfQorCisgICNyZWN0MSB7CisgICAg
ICBmaWxsOiByZ2IoMCwgMCwgMjU1KTsKKyAgICAgIHN0cm9rZTogcmVkOworICAgICAgZmlsbC1v
cGFjaXR5OiAxOworICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CisgICAgICBzdHJva2Utd2lkdGg6
IDI7CisgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDsKKyAgICAgIHN0cm9rZS1kYXNoYXJyYXk6
IDEwOworICB9CisgIC5hbmltYXRpbmcgI3JlY3QxIHsKKyAgICAgIGZpbGw6IHJnYigwLCAyNTUs
IDApOworICAgICAgc3Ryb2tlOiBibGFjazsKKyAgICAgIGZpbGwtb3BhY2l0eTogMC4yOworICAg
ICAgc3Ryb2tlLW9wYWNpdHk6IDAuMjsKKyAgICAgIHN0cm9rZS13aWR0aDogNDsKKyAgICAgIHN0
cm9rZS1kYXNob2Zmc2V0OiAxMDsKKyAgfQorCisgICNyZWN0MiB7CisgICAgICBmaWxsOiByZ2Io
MCwgMCwgMjU1KTsKKyAgICAgIHN0cm9rZTogcmdiKDI1NSwgMCwgMCk7CisgIH0KKyAgLmFuaW1h
dGluZyAjcmVjdDIgeworICAgICAgZmlsbDogcmdiKDAsIDI1NSwgMCk7CisgICAgICBzdHJva2U6
IHJnYigwLCAwLCAwKTsKKyAgfQorCisgICNyZWN0MyB7CisgICAgICBmaWxsOiB1cmwoI2dyYWRp
ZW50MSk7CisgIH0KKyAgLmFuaW1hdGluZyAjcmVjdDMgeworICAgICAgZmlsbDogdXJsKCNncmFk
aWVudDIpOworICB9CisKKyAgI3N0b3AxIHsKKyAgICAgIHN0b3AtY29sb3I6IHJnYigyNTUsMCww
KTsKKyAgICAgIHN0b3Atb3BhY2l0eTogMTsKKyAgfQorICAuYW5pbWF0aW5nICNzdG9wMSB7Cisg
ICAgICBzdG9wLWNvbG9yOiByZ2IoMCwyNTUsMCk7CisgICAgICBzdG9wLW9wYWNpdHk6IDAuNTsK
KyAgfQorCisgICNyZWN0NCB7CisgICAgICBzdHJva2U6IHJlZDsKKyAgICAgIHN0cm9rZS13aWR0
aDogMXB4OworICB9CisgIC5hbmltYXRpbmcgI3JlY3Q0IHsKKyAgICAgIHN0cm9rZS13aWR0aDog
NG1tOworICB9CisKKyAgI3JlY3Q1IHsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAgICBzdHJv
a2Utd2lkdGg6IDA7CisgIH0KKyAgLmFuaW1hdGluZyAjcmVjdDUgeworICAgICAgc3Ryb2tlLXdp
ZHRoOiAxMHB4OworICB9CisKKyAgI3JlY3Q2IHsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAg
ICBzdHJva2Utd2lkdGg6IDEwJTsKKyAgfQorICAuYW5pbWF0aW5nICNyZWN0NiB7CisgICAgICBz
dHJva2Utd2lkdGg6IDIwJTsKKyAgfQorCisgICNyZWN0NyB7CisgICAgICBmaWxsOiB1cmwoI2lu
dmFsaWQpIGJsYWNrOworICB9CisgIC5hbmltYXRpbmcgI3JlY3Q3IHsKKyAgICAgIGZpbGw6IHVy
bCgjaW52YWxpZCkgYmx1ZTsKKyAgfQorCisgICNwb2x5bGluZTEgeworICAgICAgZmlsbDogbm9u
ZTsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAgICBzdHJva2Utd2lkdGg6IDQ7CisgICAgICBz
dHJva2UtbWl0ZXJsaW1pdDogMTI7CisgIH0KKyAgLmFuaW1hdGluZyAjcG9seWxpbmUxIHsKKyAg
ICAgIHN0cm9rZS1taXRlcmxpbWl0OiAxMDsKKyAgfQorCisgICN0ZXh0MSB7CisgICAgICBrZXJu
aW5nOiAwOworICAgICAgYmFzZWxpbmUtc2hpZnQ6IDA7CisgIH0KKyAgLmFuaW1hdGluZyAjdGV4
dDEgeworICAgICAga2VybmluZzogMTBweDsKKyAgICAgIGJhc2VsaW5lLXNoaWZ0OiAxMHB4Owor
ICB9CisKKyAgI2Zsb29kMSB7CisgICAgICBmbG9vZC1vcGFjaXR5OiAxOworICAgICAgZmxvb2Qt
Y29sb3I6IHJnYigyNTUsIDAsIDApOworICB9CisgIC5hbmltYXRpbmcgI2Zsb29kMSB7CisgICAg
ICBmbG9vZC1vcGFjaXR5OiAwOworICAgICAgZmxvb2QtY29sb3I6IHJnYigwLCAyNTUsIDApOwor
ICB9CisKKyAgI2xpZ2h0MSB7CisgICAgICBsaWdodGluZy1jb2xvcjogcmdiKDI1NSwgMCwgMCk7
CisgIH0KKyAgLmFuaW1hdGluZyAjbGlnaHQxIHsKKyAgICAgIGxpZ2h0aW5nLWNvbG9yOiByZ2Io
MCwgMjU1LCAwKTsKKyAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Ry
YW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgY29uc3Qg
ZXhwZWN0ZWRWYWx1ZXMgPSBbCisgIC8vIFt0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhw
ZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgWzEsICJyZWN0MSIsICJmaWxsLW9wYWNpdHkiLCAw
LjYsIDAuMV0sIC8vIDEgLT4gMC4yCisgIFsxLCAicmVjdDEiLCAic3Ryb2tlLXdpZHRoIiwgMywg
MC41XSwgICAvLyAyIC0+IDQKKyAgWzEsICJyZWN0MSIsICJzdHJva2Utb3BhY2l0eSIsIDAuNiwg
MC4xXSwgLy8gMSAtPiAwLjIKKyAgWzEsICJyZWN0MSIsICJzdHJva2UtZGFzaG9mZnNldCIsIDUs
IDFdLCAvLyAwIC0+IDEwCisgIFsxLCAicmVjdDIiLCAiZmlsbCIsIFswLCAxMjcsIDEyN10sIDIw
XSwgLy8gcmdiKDAsIDAsIDI1NSkgLT4gcmdiKDAsIDI1NSwgMCkKKyAgWzEsICJyZWN0MiIsICJz
dHJva2UiLCBbMTI3LCAwLCAwXSwgMjBdLCAgLy8gcmdiKDI1NSwgMCwgMCkgLT4gcmdiKDAsIDAs
IDApCisgIFsxLCAicmVjdDQiLCAic3Ryb2tlLXdpZHRoIiwgOCwgMV0sICAvLyAxcHggdG8gNG1t
CisgIFsxLCAicmVjdDUiLCAic3Ryb2tlLXdpZHRoIiwgNSwgMV0sICAvLyAwIHRvIDEwcHgKKyAg
WzEsICJyZWN0NiIsICJzdHJva2Utd2lkdGgiLCAxNSwgMl0sICAvLyAxMCUgdG8gMjAlCisgIFsx
LCAicmVjdDciLCAiZmlsbCIsIFswLCAwLCAxMjddLCAyMF0sICAvLyB1cmwoI2ludmFsaWQpIGJs
YWNrIC0+IHVybCgjaW52YWxpZCkgYmx1ZQorICBbMSwgInN0b3AxIiwgInN0b3AtY29sb3IiLCBb
MTI3LCAxMjcsIDBdLCAyMF0sIC8vIHJnYigyNTUsMCwwKSAtPiByZ2IoMCwgMjU1LCAwKQorICBb
MSwgInN0b3AxIiwgInN0b3Atb3BhY2l0eSIsIDAuNzUsIDAuMV0sIC8vIDEgLT4gMC41CisgIFsx
LCAicG9seWxpbmUxIiwgInN0cm9rZS1taXRlcmxpbWl0IiwgMTEsIDAuNV0sIC8vIDEyIC0+IDEw
ICh0aGlzIGlzIGFuIGFicnVwdCBjaGFuZ2UgaW4gcmVuZGVyaW5nIGV2ZW4gdGhvdWdoIHRoZSBw
cm9wZXJ0eSBhbmltYXRpb24gaXMgc21vb3RoKQorICBbMSwgInRleHQxIiwgImtlcm5pbmciLCA1
LCAxXSwgLy8gMCAtPiAxMHB4CisgIFsxLCAidGV4dDEiLCAiYmFzZWxpbmUtc2hpZnQiLCA1LCAx
XSwgLy8gMCAtPiAxMHB4CisgIFsxLCAiZmxvb2QxIiwgImZsb29kLW9wYWNpdHkiLCAwLjUsIDAu
MV0sIC8vIDEgLT4gMAorICBbMSwgImZsb29kMSIsICJmbG9vZC1jb2xvciIsIFsxMjcsIDEyNywg
MF0sIDIwXSwgLy8gcmdiKDAsIDI1NSwgMCkgLT4gcmdiKDI1NSwgMCwgMCkKKyAgWzEsICJsaWdo
dDEiLCAibGlnaHRpbmctY29sb3IiLCBbMTI3LCAxMjcsIDBdLCAyMF0sIC8vIHJnYigyNTUsIDAs
IDApIC0+IHJnYigwLCAyNTUsIDApCisgIF07CisgICAgCisgIGZ1bmN0aW9uIHNldHVwVGVzdCgp
CisgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05h
bWUgPSAnYW5pbWF0aW5nJzsKKyAgfQorCisgIHJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFs
dWVzLCBzZXR1cFRlc3QsIHVzZVBhdXNlQVBJKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPHN2ZyB2aWV3Qm94PSIwIDAgMTYwIDEyMCIg
d2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjMwMHB4Ij4KKyAgICA8ZGVmcz4KKyAgICAgIDxsaW5lYXJH
cmFkaWVudCBpZD0iZ3JhZGllbnQxIj4KKyAgICAgICAgPHN0b3AgaWQ9InN0b3AxIiBvZmZzZXQ9
IjUlIi8+CisgICAgICAgIDxzdG9wIG9mZnNldD0iOTUlIiBzdG9wLWNvbG9yPSJyZ2IoMCwwLDI1
NSkiIC8+CisgICAgICA8L2xpbmVhckdyYWRpZW50PgorICAgICAgPGxpbmVhckdyYWRpZW50IGlk
PSJncmFkaWVudDIiPgorICAgICAgICA8c3RvcCBvZmZzZXQ9IjEwJSIgc3RvcC1jb2xvcj0icmdi
KDAsMjU1LDI1NSkiIC8+CisgICAgICAgIDxzdG9wIG9mZnNldD0iOTUlIiBzdG9wLWNvbG9yPSJy
Z2IoMjU1LCAwLDI1NSkiIC8+CisgICAgICA8L2xpbmVhckdyYWRpZW50PgorICAgICAgPGZpbHRl
ciBpZD0iZmlsdGVyMSI+CisgICAgICAgIDxmZUZsb29kIGlkPSJmbG9vZDEiLz4KKyAgICAgICAg
PGZlRGlmZnVzZUxpZ2h0aW5nIGlkPSJsaWdodDEiLz4KKyAgICAgIDwvZmlsdGVyPgorICAgIDwv
ZGVmcz4KKyAgICA8cmVjdCBpZD0icmVjdDEiIHg9IjEwIiB5PSIxMCIgd2lkdGg9IjMwIiBoZWln
aHQ9IjMwIi8+CisgICAgPHJlY3QgaWQ9InJlY3QyIiB4PSI5MCIgeT0iMTAiIHdpZHRoPSIzMCIg
aGVpZ2h0PSIzMCIvPgorICAgIDxyZWN0IGlkPSJyZWN0MyIgeD0iOTAiIHk9IjYwIiB3aWR0aD0i
MzAiIGhlaWdodD0iMjAiLz4KKyAgICA8cmVjdCBpZD0icmVjdDQiIHg9IjEwIiB5PSIxMDAiIHdp
ZHRoPSIxMCIgaGVpZ2h0PSIxMCIvPgorICAgIDxyZWN0IGlkPSJyZWN0NSIgeD0iNTAiIHk9IjEw
MCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIi8+CisgICAgPHJlY3QgaWQ9InJlY3Q2IiB4PSI5MCIg
eT0iMTAwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICA8cmVjdCBpZD0icmVjdDciIHg9
IjEzMCIgeT0iMTAwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICA8cG9seWxpbmUgaWQ9
InBvbHlsaW5lMSIgcG9pbnRzPSIxMCw3MCA2MCw3NSAxMCw4MCIvPgorICAgIDx0ZXh0IGlkPSJ0
ZXh0MSIgeD0iMTAwIiB5PSI2MCI+RXhhbXBsZTwvdGV4dD4KKyAgPC9zdmc+Cis8L2Rpdj4KKwor
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZjUyNzFmMmVkYTQyZjBhNGZhNmVmYjFlMmZj
NGZiYjE1ZjZhNTk0Li42OGJiZjJmYmZjMzA2NzdkZWJkOTZkNDJmYzhhMDYzMDY4Y2U1YzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHBvc2UgdGhlIGFwcGxpY2FibGUgU1ZHIHByb3BlcnRpZXMgZnJvbSBT
VkdSZW5kZXJTdHlsZSB0bworICAgICAgICBSZW5kZXJTdHlsZSBhbmQgYWRkIHRoZW0gdG8gdGhl
IGxpc3Qgb2YgYW5pbWF0YWJsZQorICAgICAgICBwcm9wZXJ0aWVzLiBUaGVyZSBhcmVuJ3QgbWFu
eSBTVkcgcHJvcGVydGllcyB0aGF0IGFyZQorICAgICAgICBhbmltYXRhYmxlIGRpcmVjdGx5LiBT
VkdQYWludCAodXNlZCBpbiAiZmlsbCIgYW5kICJzdHJva2UiKQorICAgICAgICBpcyBzdXBwb3J0
ZWQgb25seSB3aGVuIGJvdGggZW5kcyBvZiB0aGUgYW5pbWF0aW9uIGFyZQorICAgICAgICBhIENv
bG9yLiBBbHNvIHVwZGF0ZWQgU1ZHTGVuZ3RoIHRvIGhhdmUgc29tZSBtZXRob2RzCisgICAgICAg
IGZvciBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIHVzZXIgc3BhY2UgdW5pdHMuCisKKyAgICAgICAg
VGVzdDogdHJhbnNpdGlvbnMvc3ZnLXRyYW5zaXRpb25zLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5j
KToKKyAgICAgICAgICAgIENhbGxzIHRoZSBibGVuZCBtZXRob2Qgb24gU1ZHTGVuZ3RoCisgICAg
ICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTVkdQYWludDo6UHJvcGVydHlXcmFwcGVyU1ZH
UGFpbnQpOgorICAgICAgICAgICAgTmV3IHByb3BlcnR5IHdyYXBwZXIgdHlwZSBmb3IgU1ZHUGFp
bnQKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjplcXVhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaGVy
aXRlZEZsYWdzOjpmaWxsUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjpmaWxsUGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
c2V0RmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnN0
cm9rZVBhaW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tl
UGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tl
UGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFN0cm9rZVdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdHJva2VEYXNoT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJva2VEYXNoT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdHJva2VNaXRlckxpbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJva2VNaXRlckxpbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdG9wT3BhY2l0eSk6CisgICAgICAgIChXZWJD
b3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3RvcE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
SW5oZXJpdGVkRmxhZ3M6OnNldFN0b3BDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6c2V0Rmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFn
czo6c2V0TGlnaHRpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
YmFzZWxpbmVTaGlmdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpz
ZXRCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
Omtlcm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEtlcm5pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnN0b3BDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Zmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6bGlnaHRpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
c3RvcENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpmbG9vZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpsaWdodGluZ0NvbG9yKToKKyAg
ICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6
dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyk6CisgICAgICAg
ICAgICBOZXcgY29udmVyc2lvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIHNldHRpbmcgYW5kIGdldHRp
bmcgdmFsdWVzCisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpibGVuZCk6
CisgICAgICAgICAgICBDdXN0b20gYmxlbmQgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbnRvIGFjY291
bnQKKyAgICAgICAgICAgIHdoZXRoZXIgdGhlIHVuaXRzIG9mIGEgbGVuZ3RoIGNhbiBiZSBjb252
ZXJ0ZWQKKyAgICAgICAgICAgIGluIGFuIGFuaW1hdGlvbiwgd2hlcmUgeW91IGRvbid0IG5lY2Vz
c2FyaWx5IGhhdmUKKyAgICAgICAgICAgIGFuIFNWR0VsZW1lbnQgZm9yIGNvbnRleHQuCisKIDIw
MTEtMDgtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3
aXRjaCBSZW5kZXJCbG9jayB0byB0byBuZXcgbGF5b3V0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGVlMTc4MzM0Y2JkOWVl
MjlhMzkyNWVjMzY0NGRiZGM3NGQ3NzEwMDkuLmFkM2M1OTI4MjU3YzJhNDE4NDFmMzdiNjBkMzZk
ZDkwMmJhNzAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC0yMTcsNiArMjE3LDEzIEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhCb3gmIGZy
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVOQUJMRShTVkcpCitzdGF0aWMgaW5saW5l
IFNWR0xlbmd0aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFNWR0xlbmd0
aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgCisgICAg
cmV0dXJuIHRvLmJsZW5kKGZyb20sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsK
K30KKyNlbmRpZgorCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJCYXNlOwogCiBzdGF0aWMgdm9pZCBh
ZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCk7CkBAIC02NjMsNiArNjcwLDY3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFByb3BlcnR5V3JhcHBlckJhc2UqPiBtX3Byb3BlcnR5V3JhcHBlcnM7CiB9Owog
CisjaWYgRU5BQkxFKFNWRykKK2NsYXNzIFByb3BlcnR5V3JhcHBlclNWR1BhaW50IDogcHVibGlj
IFByb3BlcnR5V3JhcHBlckJhc2UgeworcHVibGljOgorICAgIFByb3BlcnR5V3JhcHBlclNWR1Bh
aW50KGludCBwcm9wLCBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6
OipwYWludFR5cGVHZXR0ZXIpKCkgY29uc3QsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oipn
ZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYp
KQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKKyAgICAgICAgLCBtX3BhaW50
VHlwZUdldHRlcihwYWludFR5cGVHZXR0ZXIpCisgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQor
ICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBi
b29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSAoYi0+
Km1fcGFpbnRUeXBlR2V0dGVyKSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGFuaW1hdGlvbnMgYmV0d2VlbiBTVkdQYWlu
dHMgdGhhdCBhcmUgcHVyZSBDb2xvciB2YWx1ZXMuCisgICAgICAgIC8vIEZvciBldmVyeXRoaW5n
IGVsc2Ugd2UgbXVzdCByZXR1cm4gdHJ1ZSBmb3IgdGhpcyBtZXRob2QsIG90aGVyd2lzZQorICAg
ICAgICAvLyB3ZSB3aWxsIHRyeSB0byBhbmltYXRlIGJldHdlZW4gdmFsdWVzIGZvcmV2ZXIuCisg
ICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpID09IFNWR1BhaW50OjpTVkdfUEFJ
TlRUWVBFX1JHQkNPTE9SKSB7CisgICAgICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1f
Z2V0dGVyKSgpOworICAgICAgICAgICAgQ29sb3IgdG9Db2xvciA9IChiLT4qbV9nZXR0ZXIpKCk7
CisKKyAgICAgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmICgh
ZnJvbUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBmcm9tQ29sb3IgPSBDb2xvcigp
OworICAgICAgICAgICAgaWYgKCF0b0NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICB0
b0NvbG9yID0gQ29sb3IoKTsKKworICAgICAgICAgICAgcmV0dXJuIGZyb21Db2xvciA9PSB0b0Nv
bG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0
LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9n
cmVzcykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgp
ICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCisgICAgICAgICAgICB8fCAoYi0+
Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4q
bV9nZXR0ZXIpKCk7CisgICAgICAgIENvbG9yIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwor
CisgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgZnJvbUNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgaWYgKCF0b0NvbG9y
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHRvQ29sb3IgPSBDb2xvcigpOworICAgICAgICAoZHN0
LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNz
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUm
IChSZW5kZXJTdHlsZTo6Km1fcGFpbnRUeXBlR2V0dGVyKSgpIGNvbnN0OworICAgIGNvbnN0IENv
bG9yJiAoUmVuZGVyU3R5bGU6OiptX2dldHRlcikoKSBjb25zdDsKKyAgICB2b2lkIChSZW5kZXJT
dHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOworfTsKKyNlbmRpZgogCiBzdGF0aWMgVmVj
dG9yPFByb3BlcnR5V3JhcHBlckJhc2UqPiogZ1Byb3BlcnR5V3JhcHBlcnMgPSAwOwogc3RhdGlj
IGludCBnUHJvcGVydHlXcmFwcGVyTWFwW251bUNTU1Byb3BlcnRpZXNdOwpAQCAtNzY3LDkgKzgz
NSwyNSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKCkKICAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyU2hhZG93KENTU1By
b3BlcnR5VGV4dFNoYWRvdywgJlJlbmRlclN0eWxlOjp0ZXh0U2hhZG93LCAmUmVuZGVyU3R5bGU6
OnNldFRleHRTaGFkb3cpKTsKIAogI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlclNWR1BhaW50KENTU1Byb3BlcnR5Rmls
bCwgJlJlbmRlclN0eWxlOjpmaWxsUGFpbnRUeXBlLCAmUmVuZGVyU3R5bGU6OmZpbGxQYWludENv
bG9yLCAmUmVuZGVyU3R5bGU6OnNldEZpbGxQYWludENvbG9yKSk7CiAgICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlG
aWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmaWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRG
aWxsT3BhY2l0eSkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5bGU6
OmZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRGbG9vZE9wYWNpdHkpKTsKKworICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJTVkdQYWludChD
U1NQcm9wZXJ0eVN0cm9rZSwgJlJlbmRlclN0eWxlOjpzdHJva2VQYWludFR5cGUsICZSZW5kZXJT
dHlsZTo6c3Ryb2tlUGFpbnRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VQYWludENvbG9y
KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBl
cjxmbG9hdD4oQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0cm9rZU9w
YWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlT3BhY2l0eSkpOworICAgICAgICBnUHJvcGVy
dHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9w
ZXJ0eVN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6
OnNldFN0cm9rZVdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxTVkdMZW5ndGg+KENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldCwg
JlJlbmRlclN0eWxlOjpzdHJva2VEYXNoT2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnNldFN0cm9rZURh
c2hPZmZzZXQpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVy
dHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsICZSZW5kZXJTdHls
ZTo6c3Ryb2tlTWl0ZXJMaW1pdCwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VNaXRlckxpbWl0KSk7
CisKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVy
PGZsb2F0PihDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmbG9vZE9wYWNp
dHksICZSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5KSk7CisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1By
b3BlcnR5Rmxvb2RDb2xvciwgJlJlbmRlclN0eWxlOjpmbG9vZENvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldEZsb29kQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5U3RvcE9wYWNpdHksICZSZW5kZXJT
dHlsZTo6c3RvcE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3RvcE9wYWNpdHkpKTsKKyAgICAg
ICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZh
bGlkQ29sb3IoQ1NTUHJvcGVydHlTdG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c3RvcENvbG9yLCAm
UmVuZGVyU3R5bGU6OnNldFN0b3BDb2xvcikpOworCisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJz
LT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5
TGlnaHRpbmdDb2xvciwgJlJlbmRlclN0eWxlOjpsaWdodGluZ0NvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldExpZ2h0aW5nQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5k
KG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQs
ICZSZW5kZXJTdHlsZTo6YmFzZWxpbmVTaGlmdFZhbHVlLCAmUmVuZGVyU3R5bGU6OnNldEJhc2Vs
aW5lU2hpZnRWYWx1ZSkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUtlcm5pbmcsICZSZW5kZXJTdHls
ZTo6a2VybmluZywgJlJlbmRlclN0eWxlOjpzZXRLZXJuaW5nKSk7CiAjZW5kaWYKIAogICAgICAg
ICAvLyBUT0RPOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCA2ZmI2NzY3NzY4OTk1ZWIyYzAxMDljMjg3MTZhMzcxOTZkNjg0NGY4Li45MDc5YWZl
ZmQ1MzAwNDJhOTA1YjFlOTNjMWM4MDQ3MmIwY2JiOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzUsNiArNzUsNyBAQAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3R5bGUuaCIKICNlbmRpZgogCkBAIC0xMTYxLDE1ICsxMTYyLDM5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoU1ZHKQogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3ZnU3R5bGUuZ2V0KCk7IH0KICAgICBTVkdSZW5kZXJTdHlsZSogYWNjZXNz
U1ZHU3R5bGUoKSB7IHJldHVybiBtX3N2Z1N0eWxlLmFjY2VzcygpOyB9Ci0gICAgCisKKyAgICBj
b25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxQ
YWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50Q29sb3IoKTsg
fQorICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZH
U3R5bGUoKS0+c2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBj
LCAiIik7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCktPmZpbGxPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsg
YWNjZXNzU1ZHU3R5bGUoKS0+c2V0RmlsbE9wYWNpdHkoZik7IH0KLSAgICAKKworICAgIGNvbnN0
IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN2Z1N0eWxlKCktPnN0cm9rZVBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIHN0cm9r
ZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VQYWludENvbG9y
KCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdC
Q09MT1IsIGMsICIiKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5zdHJva2VPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU9wYWNp
dHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VPcGFjaXR5KGYpOyB9Ci0g
ICAgCisgICAgU1ZHTGVuZ3RoIHN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS0+c3Ryb2tlV2lkdGgoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoU1ZHTGVuZ3RoIHcp
IHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAgICBTVkdMZW5ndGgg
c3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZURhc2hP
ZmZzZXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChTVkdMZW5ndGggZCkgeyBh
Y2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9CisgICAgZmxvYXQgc3Ry
b2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZU1pdGVyTGlt
aXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBmKSB7IGFjY2Vzc1NW
R1N0eWxlKCktPnNldFN0cm9rZU1pdGVyTGltaXQoZik7IH0KKwogICAgIGZsb2F0IGZsb29kT3Bh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpOyB9CiAgICAg
dm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRGbG9v
ZE9wYWNpdHkoZik7IH0KKworICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS0+c3RvcE9wYWNpdHkoKTsgfQorICAgIHZvaWQgc2V0U3RvcE9wYWNpdHkoZmxv
YXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdG9wT3BhY2l0eShmKTsgfQorCisgICAgdm9p
ZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Rv
cENvbG9yKGMpOyB9CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFj
Y2Vzc1NWR1N0eWxlKCktPnNldEZsb29kQ29sb3IoYyk7IH0KKyAgICB2b2lkIHNldExpZ2h0aW5n
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0TGlnaHRpbmdDb2xv
cihjKTsgfQorCisgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCktPmJhc2VsaW5lU2hpZnRWYWx1ZSgpOyB9CisgICAgdm9pZCBzZXRCYXNl
bGluZVNoaWZ0VmFsdWUoU1ZHTGVuZ3RoIHMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0QmFzZWxp
bmVTaGlmdFZhbHVlKHMpOyB9CisgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5rZXJuaW5nKCk7IH0KKyAgICB2b2lkIHNldEtlcm5pbmcoU1ZHTGVuZ3Ro
IGspIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0S2VybmluZyhrKTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNldFdyYXBTaGFwZShQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGUpCkBAIC0xNDA2
LDYgKzE0MzEsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBjb25zdCBDb2xvciBjb2xvckluY2x1
ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKIAorI2lmIEVOQUJMRShTVkcp
CisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkt
PnN0b3BDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsgfQor
I2VuZGlmCisKICAgICB2b2lkIGFwcGVuZENvbnRlbnQoUGFzc093blB0cjxDb250ZW50RGF0YT4p
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGUuaAppbmRleCAwZmU0YTgwY2RmY2Q1MjFmNDczN2QzN2ZjMmYxYzViNWMzMzJlOWQ4Li40YWFk
ZWVhYmMwN2NmNWJmZWFmOTJmZjgwNzAzZWNkZWZiMDZiNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMzE1LDEwICszMTUsMTAg
QEAgcHVibGljOgogICAgIFNWR0xlbmd0aCBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gc3Ryb2tlLT5kYXNoT2Zmc2V0OyB9CiAgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7
IHJldHVybiB0ZXh0LT5rZXJuaW5nOyB9CiAgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBzdG9wcy0+b3BhY2l0eTsgfQotICAgIENvbG9yIHN0b3BDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHN0b3BzLT5jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25z
dCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBDb2xvciBmbG9vZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RDb2xvcjsgfQotICAgIENvbG9yIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9CisgICAgY29uc3QgQ29s
b3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9CisgICAg
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGlu
Z0NvbG9yOyB9CiAgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZTsgfQogICAgIFNoYWRvd0RhdGEqIHNoYWRvdygp
IGNvbnN0IHsgcmV0dXJuIHNoYWRvd1NWRy0+c2hhZG93LmdldCgpOyB9CiAgICAgU3RyaW5nIGNs
aXBwZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xpcHBlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCA2YjIxYTgyMTZlNTNjNmZmYzdjMThmNzY1Y2QxYzJk
YWNhOGYyZjY4Li45NTcyYWUyNDZmYTNjMjUyM2Q4YzM0NWU5MGMwM2I2YWZjODU1MWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMTk0LDg4ICsxOTQsMTA4IEBAIGZsb2F0IFNWR0xl
bmd0aDo6dmFsdWUoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCkgY29uc3QKIAogZmxvYXQgU1ZH
TGVuZ3RoOjp2YWx1ZShjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKLSAgICBzd2l0Y2ggKGV4dHJhY3RUeXBlKG1fdW5pdCkpIHsKKyAgICByZXR1
cm4gY29udmVydFZhbHVlVG9Vc2VyVW5pdHMobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMsIGV4dHJh
Y3RUeXBlKG1fdW5pdCksIGNvbnRleHQsIGVjKTsKK30KKwordm9pZCBTVkdMZW5ndGg6OnNldFZh
bHVlKGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2Rl
IG1vZGUsIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IG1fdW5pdCA9IHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7CisgICAgc2V0VmFsdWUodmFsdWUs
IGNvbnRleHQsIGVjKTsKK30KKwordm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlKGZsb2F0IHZhbHVl
LCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAv
LyAxMDAlID0gMTAwLjAgaW5zdGVhZCBvZiAxLjAgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhp
cyBjb3VsZCBldmVudHVhbGx5IGJlIGNoYW5nZWQKKyAgICBpZiAoZXh0cmFjdFR5cGUobV91bml0
KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZSAvIDEwMDsK
KworICAgIGZsb2F0IGNvbnZlcnRlZFZhbHVlID0gY29udmVydFZhbHVlRnJvbVVzZXJVbml0cyh2
YWx1ZSwgZXh0cmFjdFR5cGUobV91bml0KSwgY29udGV4dCwgZWMpOworICAgIGlmICghZWMpCisg
ICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29udmVydGVkVmFsdWU7Cit9CisKK2Zs
b2F0IFNWR0xlbmd0aDo6Y29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xl
bmd0aFR5cGUgZnJvbVVuaXQsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAoreworICAgIHN3aXRjaCAoZnJvbVVuaXQpIHsKICAgICBjYXNlIExlbmd0
aFR5cGVVbmtub3duOgogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgotICAg
ICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToK
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAsIGNvbnRleHQsIGVjKTsKKyAgICAgICAgcmV0dXJu
IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUgLyAxMDAsIGNvbnRl
eHQsIGVjKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBlRU1TOgotICAgICAg
ICByZXR1cm4gY29udmVydFZhbHVlRnJvbUVNU1RvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzLCBjb250ZXh0LCBlYyk7CisgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tRU1T
VG9Vc2VyVW5pdHModmFsdWUsIGNvbnRleHQsIGVjKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBMZW5ndGhUeXBlRVhTOgotICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbUVYU1RvVXNl
clVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzLCBjb250ZXh0LCBlYyk7Ci0gICAgY2FzZSBM
ZW5ndGhUeXBlUFg6Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKKyAg
ICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21FWFNUb1VzZXJVbml0cyh2YWx1ZSwgY29udGV4
dCwgZWMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5cGVDTToKLSAgICAgICAg
cmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMi41NGYgKiBjc3NQaXhlbHNQZXJJbmNo
OworICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gMi41NGY7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgotICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgLyAyNS40ZiAqIGNzc1BpeGVsc1BlckluY2g7CisgICAgICAgIHJl
dHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40ZjsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMZW5ndGhUeXBlSU46Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyAqIGNzc1BpeGVsc1BlckluY2g7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVs
c1BlckluY2g7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgotICAgICAg
ICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA3MiAqIGNzc1BpeGVsc1BlckluY2g7
CisgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBMZW5ndGhUeXBlUEM6Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAvIDYgKiBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFs
dWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gNjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlKGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUg
dW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorZmxvYXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFs
dWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhUeXBlIHRvVW5pdCwgY29uc3Qg
U1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgbV91
bml0ID0gc3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKTsKLSAgICBzZXRWYWx1ZSh2YWx1ZSwgY29u
dGV4dCwgZWMpOwotfQotCi12b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHN3aXRj
aCAoZXh0cmFjdFR5cGUobV91bml0KSkgeworICAgIHN3aXRjaCAodG9Vbml0KSB7CiAgICAgY2Fz
ZSBMZW5ndGhUeXBlVW5rbm93bjoKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJl
cjoKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdl
OiB7Ci0gICAgICAgIGZsb2F0IHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1Bl
cmNlbnRhZ2UodmFsdWUsIGNvbnRleHQsIGVjKTsKLSAgICAgICAgaWYgKCFlYykKLSAgICAgICAg
ICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gcmVzdWx0OyAKKyAgICBjYXNlIExlbmd0aFR5
cGVQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1Rv
UGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgY29udGV4dCwgZWMpOwogICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOiB7Ci0gICAgICAgIGZsb2F0IHJlc3VsdCA9IGNv
bnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VNUyh2YWx1ZSwgY29udGV4dCwgZWMpOwotICAgICAg
ICBpZiAoIWVjKQotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByZXN1bHQ7
CisgICAgY2FzZSBMZW5ndGhUeXBlRU1TOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJv
bVVzZXJVbml0c1RvRU1TKHZhbHVlLCBjb250ZXh0LCBlYyk7CiAgICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6IHsKLSAgICAgICAgZmxvYXQgcmVzdWx0ID0gY29u
dmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRVhTKHZhbHVlLCBjb250ZXh0LCBlYyk7Ci0gICAgICAg
IGlmICghZWMpCi0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHJlc3VsdDsg
CisgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJv
bVVzZXJVbml0c1RvRVhTKHZhbHVlLCBjb250ZXh0LCBlYyk7CiAgICAgICAgIGJyZWFrOwotICAg
IH0KICAgICBjYXNlIExlbmd0aFR5cGVQWDoKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExlbmd0aFR5cGVDTToKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1
ZSAqIDIuNTRmIC8gY3NzUGl4ZWxzUGVySW5jaDsKKyAgICAgICAgcmV0dXJuIHZhbHVlICogMi41
NGYgLyBjc3NQaXhlbHNQZXJJbmNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5
cGVNTToKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDI1LjRmIC8g
Y3NzUGl4ZWxzUGVySW5jaDsKKyAgICAgICAgcmV0dXJuIHZhbHVlICogMjUuNGYgLyBjc3NQaXhl
bHNQZXJJbmNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExlbmd0aFR5cGVJTjoKLSAgICAg
ICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAvIGNzc1BpeGVsc1BlckluY2g7Cisg
ICAgICAgIHJldHVybiB2YWx1ZSAvIGNzc1BpeGVsc1BlckluY2g7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgotICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9
IHZhbHVlICogNzIgLyBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICByZXR1cm4gdmFsdWUgKiA3
MiAvIGNzc1BpeGVsc1BlckluY2g7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVuZ3RoVHlw
ZVBDOgotICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlICogNiAvIGNzc1Bp
eGVsc1BlckluY2g7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIDYgLyBjc3NQaXhlbHNQZXJJbmNo
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICByZXR1cm4gMDsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoOjp2YWx1ZUFzUGVyY2VudGFnZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKaW5kZXggMjYzMmE1MDg3MzQ3MmVjZGNmMDllMjVkMjRk
YTM5NTBiMzlmYjE5OS4uMDc0ZmZlZmU0YWVlNDk0ZGU1ZGJhYWJhNzkyMTcyODBhNDYzYmI5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApAQCAtMTEwLDEzICsxMTAsNjkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fCB0eXBlID09IExlbmd0
aFR5cGVFTVMgfHwgdHlwZSA9PSBMZW5ndGhUeXBlRVhTOwogICAgIH0KIAorICAgIGJvb2wgaXNa
ZXJvKCkgY29uc3QgCisgICAgeyAKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0czsKKyAgICB9CisKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGZyb21DU1NQcmltaXRpdmVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZSopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYpOwogICAgIHN0YXRp
YyBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBTVkdMZW5ndGggYmxlbmQoY29uc3QgU1ZHTGVuZ3Ro
JiBmcm9tLCBmbG9hdCBwcm9ncmVzcykgY29uc3QKKyAgICB7CisgICAgICAgIFNWR0xlbmd0aFR5
cGUgdG9UeXBlID0gdW5pdFR5cGUoKTsKKyAgICAgICAgU1ZHTGVuZ3RoVHlwZSBmcm9tVHlwZSA9
IGZyb20udW5pdFR5cGUoKTsKKworICAgICAgICBpZiAoKGZyb20uaXNaZXJvKCkgJiYgaXNaZXJv
KCkpCisgICAgICAgICAgICB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgorICAgICAg
ICAgICAgfHwgdG9UeXBlID09IExlbmd0aFR5cGVVbmtub3duCisgICAgICAgICAgICB8fCAoIWZy
b20uaXNaZXJvKCkgJiYgZnJvbVR5cGUgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBl
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICAgICAgfHwgKCFpc1plcm8oKSAmJiBm
cm9tVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSAmJiB0b1R5cGUgIT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UpCisgICAgICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgIWlzWmVybygpICYm
IChmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFWFMp
ICYmIGZyb21UeXBlICE9IHRvVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAg
ICAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisK
KyAgICAgICAgaWYgKGZyb21UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8IHRvVHlwZSA9
PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkgeworICAgICAgICAgICAgZmxvYXQgZnJvbVBlcmNlbnQg
PSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7CisgICAgICAgICAgICBmbG9hdCB0b1Bl
cmNlbnQgPSB2YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOworICAgICAgICAgICAgbGVuZ3RoLm5l
d1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZVBlcmNlbnRhZ2UsIGZyb21QZXJjZW50ICsg
KHRvUGVyY2VudCAtIGZyb21QZXJjZW50KSAqIHByb2dyZXNzLCBlYyk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAoZnJvbVR5cGUgPT0gdG9UeXBlIHx8IGZyb20uaXNaZXJvKCkg
fHwgaXNaZXJvKCkgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBM
ZW5ndGhUeXBlRVhTKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlID0gZnJvbS52
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB0b1ZhbHVlID0g
dmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzWmVybygpKQor
ICAgICAgICAgICAgICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhmcm9tVHlw
ZSwgZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICogcHJvZ3Jlc3MsIGVjKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKHRvVHlwZSwgZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFsdWUpICog
cHJvZ3Jlc3MsIGVjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKCFpc1JlbGF0aXZlKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZnJvbS5pc1JlbGF0
aXZlKCkpOworICAgICAgICAgICAgICAgIGZsb2F0IGZyb21WYWx1ZUluVXNlclVuaXRzID0gY29u
dmVydFZhbHVlVG9Vc2VyVW5pdHMoZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSwgZnJvbVR5
cGUsIDAsIGVjKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVjKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IGZyb21WYWx1ZSA9IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVl
SW5Vc2VyVW5pdHMsIHRvVHlwZSwgMCwgZWMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWVj
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0b1ZhbHVlID0gdmFsdWVJblNwZWNp
ZmllZFVuaXRzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVj
aWZpZWRVbml0cyh0b1R5cGUsIGZyb21WYWx1ZSArICh0b1ZhbHVlIC0gZnJvbVZhbHVlKSAqIHBy
b2dyZXNzLCBlYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICBy
ZXR1cm4gU1ZHTGVuZ3RoKCk7CisKKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgYm9vbCBkZXRlcm1pbmVWaWV3cG9ydChjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0LCBmbG9hdCYgd2lkdGgsIGZsb2F0JiBoZWlnaHQpIGNvbnN0OwogCisgICAgZmxvYXQgY29u
dmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBm
bG9hdCBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhUeXBl
IHRvVW5pdCwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OworCiAgICAgZmxvYXQgY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhmbG9h
dCB2YWx1ZSwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIGZsb2F0IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UoZmxvYXQg
dmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105100</attachid>
            <date>2011-08-24 17:21:24 -0700</date>
            <delta_ts>2011-08-25 11:29:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21586-20110825102122.patch</filename>
            <type>text/plain</type>
            <size>34315</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MzYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTlkNGE0NDlhMDlkMGY0OTE0NjQ4
MzMyOTgxMGU5MDllNTJlOGEwLi5lYjc5MjcxMGE5MjQxNjhiZTM2N2U3NTRkNjBhZDg1ZDZhYWMx
NzUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdCBmb3IgdGhlIFNWRyBwcm9wZXJ0aWVzIHRoYXQgY2FuIG5v
dyBhbmltYXRlLiBBbHNvCisgICAgICAgIHVwZGF0ZWQgdGhlIHRlc3QgaGVscGVyIHNjcmlwdCB0
byBoYW5kbGUgY29sb3JzIGFuZAorICAgICAgICBwZXJjZW50YWdlcy4KKworICAgICAgICAqIHRy
YW5zaXRpb25zL3Jlc291cmNlcy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qczoKKyAgICAgICAg
KGV4cGVjdGVkKToKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRt
bDogQWRkZWQuCisKIDIwMTEtMDgtMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIE1hcmsgdG91Y2ggdGVzdHMgYXMgZmFpbGluZyBvbiBPU1gg
MTAuNS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNlcy90cmFu
c2l0aW9uLXRlc3QtaGVscGVycy5qcyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3Jlc291cmNl
cy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcwppbmRleCBmNDk0ZGE0MjI2YzgwN2NmMjJhMjE5
NWEzZGVmYTFjYWZkZWYwZmRmLi5iMzc2Njg4MGUxMjYxNjM4ODkyNTkwNDdlNzNmYjZmMDE3YWQ4
NTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNp
dGlvbi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVzb3Vy
Y2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzCkBAIC04MSw2ICs4MSwyOCBAQCBmdW5jdGlv
biBjaGVja0V4cGVjdGVkVmFsdWUoZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocHJvcGVy
dHkgPT0gImZpbGwiIHx8IHByb3BlcnR5ID09ICJzdHJva2UiKSB7CisgICAgICAgIGNvbXB1dGVk
VmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5yZ2JDb2xvcjsKKyAgICAg
ICAgaWYgKGlzQ2xvc2VFbm91Z2gocGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5yZWQuY3NzVGV4dCks
IGV4cGVjdGVkVmFsdWVbMF0sIHRvbGVyYW5jZSkgJiYKKyAgICAgICAgICAgIGlzQ2xvc2VFbm91
Z2gocGFyc2VJbnQoY29tcHV0ZWRWYWx1ZS5ncmVlbi5jc3NUZXh0KSwgZXhwZWN0ZWRWYWx1ZVsx
XSwgdG9sZXJhbmNlKSAmJgorICAgICAgICAgICAgaXNDbG9zZUVub3VnaChwYXJzZUludChjb21w
dXRlZFZhbHVlLmJsdWUuY3NzVGV4dCksIGV4cGVjdGVkVmFsdWVbMl0sIHRvbGVyYW5jZSkpCisg
ICAgICAgICAgICBwYXNzID0gdHJ1ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBmYWlsZWQuIE1ha2Ugc3VyZSBjb21wdXRlZCB2YWx1ZSBpcyBzb21ldGhpbmcgd2UgY2FuIHJl
YWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KS5jc3NUZXh0OworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eSA9PSAic3RvcC1jb2xvciIgfHwgcHJvcGVydHkgPT0gImZsb29kLWNv
bG9yIiB8fCBwcm9wZXJ0eSA9PSAibGlnaHRpbmctY29sb3IiKSB7CisgICAgICAgIGNvbXB1dGVk
VmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SWQpKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5KTsKKyAgICAgICAgLy8gVGhl
IGNvbXB1dGVkVmFsdWUgY3NzVGV4dCBpcyByZ2IobnVtLCBudW0sIG51bSkKKyAgICAgICAgdmFy
IGNvbXBvbmVudHMgPSBjb21wdXRlZFZhbHVlLmNzc1RleHQuc3BsaXQoIigiKVsxXS5zcGxpdCgi
KSIpWzBdLnNwbGl0KCIsIik7CisgICAgICAgIGlmIChpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNv
bXBvbmVudHNbMF0pLCBleHBlY3RlZFZhbHVlWzBdLCB0b2xlcmFuY2UpICYmCisgICAgICAgICAg
ICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBvbmVudHNbMV0pLCBleHBlY3RlZFZhbHVlWzFd
LCB0b2xlcmFuY2UpICYmCisgICAgICAgICAgICBpc0Nsb3NlRW5vdWdoKHBhcnNlSW50KGNvbXBv
bmVudHNbMl0pLCBleHBlY3RlZFZhbHVlWzJdLCB0b2xlcmFuY2UpKQorICAgICAgICAgICAgcGFz
cyA9IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gV2UgZmFpbGVkLiBNYWtl
IHN1cmUgY29tcHV0ZWQgdmFsdWUgaXMgc29tZXRoaW5nIHdlIGNhbiByZWFkIGluIHRoZSBlcnJv
ciBtZXNzYWdlCisgICAgICAgICAgICBjb21wdXRlZFZhbHVlID0gY29tcHV0ZWRWYWx1ZS5jc3NU
ZXh0OworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAibGluZUhlaWdodCIp
IHsKICAgICAgICAgY29tcHV0ZWRWYWx1ZSA9IHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkpLmxpbmVIZWlnaHQpOwogICAg
ICAgICBwYXNzID0gaXNDbG9zZUVub3VnaChjb21wdXRlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCB0
b2xlcmFuY2UpOwpAQCAtMTMzLDYgKzE1NSwxMCBAQCBmdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFs
dWUoZXhwZWN0ZWQsIGluZGV4KQogICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA0OyArK2kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAmPSBpc0Nsb3NlRW5v
dWdoKGNvbXB1dGVkVmFsdWVbaV0sIGV4cGVjdGVkVmFsdWVbaV0sIHRvbGVyYW5jZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWUuQ1NTX1BFUkNFTlRBR0U6CisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUg
PSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuY3NzVGV4dCk7CisgICAgICAgICAgICAgICAgICAg
IHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIHRvbGVy
YW5jZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZFN0eWxlLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7CiAgICAgICAgICAgICAg
ICAgICAgIHBhc3MgPSBpc0Nsb3NlRW5vdWdoKGNvbXB1dGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUs
IHRvbGVyYW5jZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJh
bnNpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3ZnLXRyYW5z
aXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjdhMjEyYjA4MTk3ZjQ5NjIxMWQ5OWQ1
MzU2NDYzNzc0NGE1NTBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlv
bnMvc3ZnLXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjA5OiBGYWlsZWQgdG8gcGF1c2UgJ2ZpbGwnIHRyYW5zaXRpb24gb24g
ZWxlbWVudCAncmVjdDcnCitFeGFtcGxlCitQQVNTIC0gImZpbGwtb3BhY2l0eSIgcHJvcGVydHkg
Zm9yICJyZWN0MSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjYKK1BB
U1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDMKK1BBU1MgLSAic3Ryb2tlLW9wYWNpdHkiIHByb3BlcnR5
IGZvciAicmVjdDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC42CitQ
QVNTIC0gInN0cm9rZS1kYXNob2Zmc2V0IiBwcm9wZXJ0eSBmb3IgInJlY3QxIiBlbGVtZW50IGF0
IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAiZmlsbCIgcHJvcGVydHkgZm9y
ICJyZWN0MiIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLDEyNywxMjcK
K1BBU1MgLSAic3Ryb2tlIiBwcm9wZXJ0eSBmb3IgInJlY3QyIiBlbGVtZW50IGF0IDFzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDEyNywwLDAKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0
eSBmb3IgInJlY3Q0IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDgKK1BB
U1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3Q1IiBlbGVtZW50IGF0IDFzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDUKK1BBU1MgLSAic3Ryb2tlLXdpZHRoIiBwcm9wZXJ0eSBm
b3IgInJlY3Q2IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitGQUlM
IC0gImZpbGwiIHByb3BlcnR5IGZvciAicmVjdDciIGVsZW1lbnQgYXQgMXMgZXhwZWN0ZWQ6IDAs
MCwxMjcgYnV0IHNhdzogI2ludmFsaWQgIzAwMDBmZgorUEFTUyAtICJzdG9wLWNvbG9yIiBwcm9w
ZXJ0eSBmb3IgInN0b3AxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEy
NywxMjcsMAorUEFTUyAtICJzdG9wLW9wYWNpdHkiIHByb3BlcnR5IGZvciAic3RvcDEiIGVsZW1l
bnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC43NQorUEFTUyAtICJzdHJva2UtbWl0
ZXJsaW1pdCIgcHJvcGVydHkgZm9yICJwb2x5bGluZTEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogMTEKK1BBU1MgLSAia2VybmluZyIgcHJvcGVydHkgZm9yICJ0ZXh0MSIg
ZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA1CitQQVNTIC0gImJhc2VsaW5l
LXNoaWZ0IiBwcm9wZXJ0eSBmb3IgInRleHQxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDUKK1BBU1MgLSAiZmxvb2Qtb3BhY2l0eSIgcHJvcGVydHkgZm9yICJmbG9vZDEi
IGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC41CitQQVNTIC0gImZsb29k
LWNvbG9yIiBwcm9wZXJ0eSBmb3IgImZsb29kMSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxMjcsMTI3LDAKK1BBU1MgLSAibGlnaHRpbmctY29sb3IiIHByb3BlcnR5IGZv
ciAibGlnaHQxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEyNywxMjcs
MAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMu
aHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N2Zy10cmFuc2l0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYyOThhNWRlOTcyY2I2NGQ2MDlmNWRkZWZhMjNmNzYwYzIwMDc1MjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdmctdHJhbnNpdGlvbnMuaHRtbApA
QCAtMCwwICsxLDE4NSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorCisgIHN2ZyAqIHsK
KyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogZmlsbCwgc3Ryb2tlLCBmaWxsLW9w
YWNpdHksIHN0cm9rZS1vcGFjaXR5LCBzdHJva2Utd2lkdGgsIHN0cm9rZS1kYXNob2Zmc2V0LCBz
dHJva2UtbWl0ZXJsaW1pdCwga2VybmluZywgYmFzZWxpbmUtc2hpZnQsIGZsb29kLWNvbG9yLCBm
bG9vZC1vcGFjaXR5LCBzdG9wLWNvbG9yLCBzdG9wLW9wYWNpdHksIGxpZ2h0aW5nLWNvbG9yOwor
ICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAyczsKKyAgICAgIC13ZWJraXQtdHJh
bnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgfQorCisgICNyZWN0MSB7CisgICAg
ICBmaWxsOiByZ2IoMCwgMCwgMjU1KTsKKyAgICAgIHN0cm9rZTogcmVkOworICAgICAgZmlsbC1v
cGFjaXR5OiAxOworICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CisgICAgICBzdHJva2Utd2lkdGg6
IDI7CisgICAgICBzdHJva2UtZGFzaG9mZnNldDogMDsKKyAgICAgIHN0cm9rZS1kYXNoYXJyYXk6
IDEwOworICB9CisgIC5hbmltYXRpbmcgI3JlY3QxIHsKKyAgICAgIGZpbGw6IHJnYigwLCAyNTUs
IDApOworICAgICAgc3Ryb2tlOiBibGFjazsKKyAgICAgIGZpbGwtb3BhY2l0eTogMC4yOworICAg
ICAgc3Ryb2tlLW9wYWNpdHk6IDAuMjsKKyAgICAgIHN0cm9rZS13aWR0aDogNDsKKyAgICAgIHN0
cm9rZS1kYXNob2Zmc2V0OiAxMDsKKyAgfQorCisgICNyZWN0MiB7CisgICAgICBmaWxsOiByZ2Io
MCwgMCwgMjU1KTsKKyAgICAgIHN0cm9rZTogcmdiKDI1NSwgMCwgMCk7CisgIH0KKyAgLmFuaW1h
dGluZyAjcmVjdDIgeworICAgICAgZmlsbDogcmdiKDAsIDI1NSwgMCk7CisgICAgICBzdHJva2U6
IHJnYigwLCAwLCAwKTsKKyAgfQorCisgICNyZWN0MyB7CisgICAgICBmaWxsOiB1cmwoI2dyYWRp
ZW50MSk7CisgIH0KKyAgLmFuaW1hdGluZyAjcmVjdDMgeworICAgICAgZmlsbDogdXJsKCNncmFk
aWVudDIpOworICB9CisKKyAgI3N0b3AxIHsKKyAgICAgIHN0b3AtY29sb3I6IHJnYigyNTUsMCww
KTsKKyAgICAgIHN0b3Atb3BhY2l0eTogMTsKKyAgfQorICAuYW5pbWF0aW5nICNzdG9wMSB7Cisg
ICAgICBzdG9wLWNvbG9yOiByZ2IoMCwyNTUsMCk7CisgICAgICBzdG9wLW9wYWNpdHk6IDAuNTsK
KyAgfQorCisgICNyZWN0NCB7CisgICAgICBzdHJva2U6IHJlZDsKKyAgICAgIHN0cm9rZS13aWR0
aDogMXB4OworICB9CisgIC5hbmltYXRpbmcgI3JlY3Q0IHsKKyAgICAgIHN0cm9rZS13aWR0aDog
NG1tOworICB9CisKKyAgI3JlY3Q1IHsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAgICBzdHJv
a2Utd2lkdGg6IDA7CisgIH0KKyAgLmFuaW1hdGluZyAjcmVjdDUgeworICAgICAgc3Ryb2tlLXdp
ZHRoOiAxMHB4OworICB9CisKKyAgI3JlY3Q2IHsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAg
ICBzdHJva2Utd2lkdGg6IDEwJTsKKyAgfQorICAuYW5pbWF0aW5nICNyZWN0NiB7CisgICAgICBz
dHJva2Utd2lkdGg6IDIwJTsKKyAgfQorCisgICNyZWN0NyB7CisgICAgICBmaWxsOiB1cmwoI2lu
dmFsaWQpIGJsYWNrOworICB9CisgIC5hbmltYXRpbmcgI3JlY3Q3IHsKKyAgICAgIGZpbGw6IHVy
bCgjaW52YWxpZCkgYmx1ZTsKKyAgfQorCisgICNwb2x5bGluZTEgeworICAgICAgZmlsbDogbm9u
ZTsKKyAgICAgIHN0cm9rZTogYmxhY2s7CisgICAgICBzdHJva2Utd2lkdGg6IDQ7CisgICAgICBz
dHJva2UtbWl0ZXJsaW1pdDogMTI7CisgIH0KKyAgLmFuaW1hdGluZyAjcG9seWxpbmUxIHsKKyAg
ICAgIHN0cm9rZS1taXRlcmxpbWl0OiAxMDsKKyAgfQorCisgICN0ZXh0MSB7CisgICAgICBrZXJu
aW5nOiAwOworICAgICAgYmFzZWxpbmUtc2hpZnQ6IDA7CisgIH0KKyAgLmFuaW1hdGluZyAjdGV4
dDEgeworICAgICAga2VybmluZzogMTBweDsKKyAgICAgIGJhc2VsaW5lLXNoaWZ0OiAxMHB4Owor
ICB9CisKKyAgI2Zsb29kMSB7CisgICAgICBmbG9vZC1vcGFjaXR5OiAxOworICAgICAgZmxvb2Qt
Y29sb3I6IHJnYigyNTUsIDAsIDApOworICB9CisgIC5hbmltYXRpbmcgI2Zsb29kMSB7CisgICAg
ICBmbG9vZC1vcGFjaXR5OiAwOworICAgICAgZmxvb2QtY29sb3I6IHJnYigwLCAyNTUsIDApOwor
ICB9CisKKyAgI2xpZ2h0MSB7CisgICAgICBsaWdodGluZy1jb2xvcjogcmdiKDI1NSwgMCwgMCk7
CisgIH0KKyAgLmFuaW1hdGluZyAjbGlnaHQxIHsKKyAgICAgIGxpZ2h0aW5nLWNvbG9yOiByZ2Io
MCwgMjU1LCAwKTsKKyAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Ry
YW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgY29uc3Qg
ZXhwZWN0ZWRWYWx1ZXMgPSBbCisgIC8vIFt0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhw
ZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgWzEsICJyZWN0MSIsICJmaWxsLW9wYWNpdHkiLCAw
LjYsIDAuMV0sIC8vIDEgLT4gMC4yCisgIFsxLCAicmVjdDEiLCAic3Ryb2tlLXdpZHRoIiwgMywg
MC41XSwgICAvLyAyIC0+IDQKKyAgWzEsICJyZWN0MSIsICJzdHJva2Utb3BhY2l0eSIsIDAuNiwg
MC4xXSwgLy8gMSAtPiAwLjIKKyAgWzEsICJyZWN0MSIsICJzdHJva2UtZGFzaG9mZnNldCIsIDUs
IDFdLCAvLyAwIC0+IDEwCisgIFsxLCAicmVjdDIiLCAiZmlsbCIsIFswLCAxMjcsIDEyN10sIDIw
XSwgLy8gcmdiKDAsIDAsIDI1NSkgLT4gcmdiKDAsIDI1NSwgMCkKKyAgWzEsICJyZWN0MiIsICJz
dHJva2UiLCBbMTI3LCAwLCAwXSwgMjBdLCAgLy8gcmdiKDI1NSwgMCwgMCkgLT4gcmdiKDAsIDAs
IDApCisgIFsxLCAicmVjdDQiLCAic3Ryb2tlLXdpZHRoIiwgOCwgMV0sICAvLyAxcHggdG8gNG1t
CisgIFsxLCAicmVjdDUiLCAic3Ryb2tlLXdpZHRoIiwgNSwgMV0sICAvLyAwIHRvIDEwcHgKKyAg
WzEsICJyZWN0NiIsICJzdHJva2Utd2lkdGgiLCAxNSwgMl0sICAvLyAxMCUgdG8gMjAlCisgIFsx
LCAicmVjdDciLCAiZmlsbCIsIFswLCAwLCAxMjddLCAyMF0sICAvLyB1cmwoI2ludmFsaWQpIGJs
YWNrIC0+IHVybCgjaW52YWxpZCkgYmx1ZQorICBbMSwgInN0b3AxIiwgInN0b3AtY29sb3IiLCBb
MTI3LCAxMjcsIDBdLCAyMF0sIC8vIHJnYigyNTUsMCwwKSAtPiByZ2IoMCwgMjU1LCAwKQorICBb
MSwgInN0b3AxIiwgInN0b3Atb3BhY2l0eSIsIDAuNzUsIDAuMV0sIC8vIDEgLT4gMC41CisgIFsx
LCAicG9seWxpbmUxIiwgInN0cm9rZS1taXRlcmxpbWl0IiwgMTEsIDAuNV0sIC8vIDEyIC0+IDEw
ICh0aGlzIGlzIGFuIGFicnVwdCBjaGFuZ2UgaW4gcmVuZGVyaW5nIGV2ZW4gdGhvdWdoIHRoZSBw
cm9wZXJ0eSBhbmltYXRpb24gaXMgc21vb3RoKQorICBbMSwgInRleHQxIiwgImtlcm5pbmciLCA1
LCAxXSwgLy8gMCAtPiAxMHB4CisgIFsxLCAidGV4dDEiLCAiYmFzZWxpbmUtc2hpZnQiLCA1LCAx
XSwgLy8gMCAtPiAxMHB4CisgIFsxLCAiZmxvb2QxIiwgImZsb29kLW9wYWNpdHkiLCAwLjUsIDAu
MV0sIC8vIDEgLT4gMAorICBbMSwgImZsb29kMSIsICJmbG9vZC1jb2xvciIsIFsxMjcsIDEyNywg
MF0sIDIwXSwgLy8gcmdiKDAsIDI1NSwgMCkgLT4gcmdiKDI1NSwgMCwgMCkKKyAgWzEsICJsaWdo
dDEiLCAibGlnaHRpbmctY29sb3IiLCBbMTI3LCAxMjcsIDBdLCAyMF0sIC8vIHJnYigyNTUsIDAs
IDApIC0+IHJnYigwLCAyNTUsIDApCisgIF07CisgICAgCisgIGZ1bmN0aW9uIHNldHVwVGVzdCgp
CisgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5jbGFzc05h
bWUgPSAnYW5pbWF0aW5nJzsKKyAgfQorCisgIHJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFs
dWVzLCBzZXR1cFRlc3QsIHVzZVBhdXNlQVBJKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPHN2ZyB2aWV3Qm94PSIwIDAgMTYwIDEyMCIg
d2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjMwMHB4Ij4KKyAgICA8ZGVmcz4KKyAgICAgIDxsaW5lYXJH
cmFkaWVudCBpZD0iZ3JhZGllbnQxIj4KKyAgICAgICAgPHN0b3AgaWQ9InN0b3AxIiBvZmZzZXQ9
IjUlIi8+CisgICAgICAgIDxzdG9wIG9mZnNldD0iOTUlIiBzdG9wLWNvbG9yPSJyZ2IoMCwwLDI1
NSkiIC8+CisgICAgICA8L2xpbmVhckdyYWRpZW50PgorICAgICAgPGxpbmVhckdyYWRpZW50IGlk
PSJncmFkaWVudDIiPgorICAgICAgICA8c3RvcCBvZmZzZXQ9IjEwJSIgc3RvcC1jb2xvcj0icmdi
KDAsMjU1LDI1NSkiIC8+CisgICAgICAgIDxzdG9wIG9mZnNldD0iOTUlIiBzdG9wLWNvbG9yPSJy
Z2IoMjU1LCAwLDI1NSkiIC8+CisgICAgICA8L2xpbmVhckdyYWRpZW50PgorICAgICAgPGZpbHRl
ciBpZD0iZmlsdGVyMSI+CisgICAgICAgIDxmZUZsb29kIGlkPSJmbG9vZDEiLz4KKyAgICAgICAg
PGZlRGlmZnVzZUxpZ2h0aW5nIGlkPSJsaWdodDEiLz4KKyAgICAgIDwvZmlsdGVyPgorICAgIDwv
ZGVmcz4KKyAgICA8cmVjdCBpZD0icmVjdDEiIHg9IjEwIiB5PSIxMCIgd2lkdGg9IjMwIiBoZWln
aHQ9IjMwIi8+CisgICAgPHJlY3QgaWQ9InJlY3QyIiB4PSI5MCIgeT0iMTAiIHdpZHRoPSIzMCIg
aGVpZ2h0PSIzMCIvPgorICAgIDxyZWN0IGlkPSJyZWN0MyIgeD0iOTAiIHk9IjYwIiB3aWR0aD0i
MzAiIGhlaWdodD0iMjAiLz4KKyAgICA8cmVjdCBpZD0icmVjdDQiIHg9IjEwIiB5PSIxMDAiIHdp
ZHRoPSIxMCIgaGVpZ2h0PSIxMCIvPgorICAgIDxyZWN0IGlkPSJyZWN0NSIgeD0iNTAiIHk9IjEw
MCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIi8+CisgICAgPHJlY3QgaWQ9InJlY3Q2IiB4PSI5MCIg
eT0iMTAwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICA8cmVjdCBpZD0icmVjdDciIHg9
IjEzMCIgeT0iMTAwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICA8cG9seWxpbmUgaWQ9
InBvbHlsaW5lMSIgcG9pbnRzPSIxMCw3MCA2MCw3NSAxMCw4MCIvPgorICAgIDx0ZXh0IGlkPSJ0
ZXh0MSIgeD0iMTAwIiB5PSI2MCI+RXhhbXBsZTwvdGV4dD4KKyAgPC9zdmc+Cis8L2Rpdj4KKwor
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZjUyNzFmMmVkYTQyZjBhNGZhNmVmYjFlMmZj
NGZiYjE1ZjZhNTk0Li42OGJiZjJmYmZjMzA2NzdkZWJkOTZkNDJmYzhhMDYzMDY4Y2U1YzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMDgtMjMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4NgorICAgICAgICBBcHBseSBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlv
bnMgdG8gU1ZHIHByb3BlcnRpZXMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHBvc2UgdGhlIGFwcGxpY2FibGUgU1ZHIHByb3BlcnRpZXMgZnJvbSBT
VkdSZW5kZXJTdHlsZSB0bworICAgICAgICBSZW5kZXJTdHlsZSBhbmQgYWRkIHRoZW0gdG8gdGhl
IGxpc3Qgb2YgYW5pbWF0YWJsZQorICAgICAgICBwcm9wZXJ0aWVzLiBUaGVyZSBhcmVuJ3QgbWFu
eSBTVkcgcHJvcGVydGllcyB0aGF0IGFyZQorICAgICAgICBhbmltYXRhYmxlIGRpcmVjdGx5LiBT
VkdQYWludCAodXNlZCBpbiAiZmlsbCIgYW5kICJzdHJva2UiKQorICAgICAgICBpcyBzdXBwb3J0
ZWQgb25seSB3aGVuIGJvdGggZW5kcyBvZiB0aGUgYW5pbWF0aW9uIGFyZQorICAgICAgICBhIENv
bG9yLiBBbHNvIHVwZGF0ZWQgU1ZHTGVuZ3RoIHRvIGhhdmUgc29tZSBtZXRob2RzCisgICAgICAg
IGZvciBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIHVzZXIgc3BhY2UgdW5pdHMuCisKKyAgICAgICAg
VGVzdDogdHJhbnNpdGlvbnMvc3ZnLXRyYW5zaXRpb25zLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5j
KToKKyAgICAgICAgICAgIENhbGxzIHRoZSBibGVuZCBtZXRob2Qgb24gU1ZHTGVuZ3RoCisgICAg
ICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTVkdQYWludDo6UHJvcGVydHlXcmFwcGVyU1ZH
UGFpbnQpOgorICAgICAgICAgICAgTmV3IHByb3BlcnR5IHdyYXBwZXIgdHlwZSBmb3IgU1ZHUGFp
bnQKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjplcXVhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFpbnQ6OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaGVy
aXRlZEZsYWdzOjpmaWxsUGFpbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjpmaWxsUGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
c2V0RmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnN0
cm9rZVBhaW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tl
UGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3Ryb2tl
UGFpbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c3Ryb2tlV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFN0cm9rZVdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdHJva2VEYXNoT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJva2VEYXNoT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdHJva2VNaXRlckxpbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRTdHJva2VNaXRlckxpbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzdG9wT3BhY2l0eSk6CisgICAgICAgIChXZWJD
b3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0U3RvcE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
SW5oZXJpdGVkRmxhZ3M6OnNldFN0b3BDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6c2V0Rmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFn
czo6c2V0TGlnaHRpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
YmFzZWxpbmVTaGlmdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpz
ZXRCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
Omtlcm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEtlcm5pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnN0b3BDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Zmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6bGlnaHRpbmdDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
c3RvcENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpmbG9vZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpsaWdodGluZ0NvbG9yKToKKyAg
ICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6
dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyk6CisgICAgICAg
ICAgICBOZXcgY29udmVyc2lvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIHNldHRpbmcgYW5kIGdldHRp
bmcgdmFsdWVzCisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpibGVuZCk6
CisgICAgICAgICAgICBDdXN0b20gYmxlbmQgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbnRvIGFjY291
bnQKKyAgICAgICAgICAgIHdoZXRoZXIgdGhlIHVuaXRzIG9mIGEgbGVuZ3RoIGNhbiBiZSBjb252
ZXJ0ZWQKKyAgICAgICAgICAgIGluIGFuIGFuaW1hdGlvbiwgd2hlcmUgeW91IGRvbid0IG5lY2Vz
c2FyaWx5IGhhdmUKKyAgICAgICAgICAgIGFuIFNWR0VsZW1lbnQgZm9yIGNvbnRleHQuCisKIDIw
MTEtMDgtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN3
aXRjaCBSZW5kZXJCbG9jayB0byB0byBuZXcgbGF5b3V0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGVlMTc4MzM0Y2JkOWVl
MjlhMzkyNWVjMzY0NGRiZGM3NGQ3NzEwMDkuLmFkM2M1OTI4MjU3YzJhNDE4NDFmMzdiNjBkMzZk
ZDkwMmJhNzAyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC0yMTcsNiArMjE3LDEzIEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhCb3gmIGZy
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVOQUJMRShTVkcpCitzdGF0aWMgaW5saW5l
IFNWR0xlbmd0aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFNWR0xlbmd0
aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQoreyAgCisgICAg
cmV0dXJuIHRvLmJsZW5kKGZyb20sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsK
K30KKyNlbmRpZgorCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJCYXNlOwogCiBzdGF0aWMgdm9pZCBh
ZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCk7CkBAIC02NjMsNiArNjcwLDY3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFByb3BlcnR5V3JhcHBlckJhc2UqPiBtX3Byb3BlcnR5V3JhcHBlcnM7CiB9Owog
CisjaWYgRU5BQkxFKFNWRykKK2NsYXNzIFByb3BlcnR5V3JhcHBlclNWR1BhaW50IDogcHVibGlj
IFByb3BlcnR5V3JhcHBlckJhc2UgeworcHVibGljOgorICAgIFByb3BlcnR5V3JhcHBlclNWR1Bh
aW50KGludCBwcm9wLCBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiAoUmVuZGVyU3R5bGU6
OipwYWludFR5cGVHZXR0ZXIpKCkgY29uc3QsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oipn
ZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYp
KQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKKyAgICAgICAgLCBtX3BhaW50
VHlwZUdldHRlcihwYWludFR5cGVHZXR0ZXIpCisgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQor
ICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBi
b29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoKGEtPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSAoYi0+
Km1fcGFpbnRUeXBlR2V0dGVyKSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGFuaW1hdGlvbnMgYmV0d2VlbiBTVkdQYWlu
dHMgdGhhdCBhcmUgcHVyZSBDb2xvciB2YWx1ZXMuCisgICAgICAgIC8vIEZvciBldmVyeXRoaW5n
IGVsc2Ugd2UgbXVzdCByZXR1cm4gdHJ1ZSBmb3IgdGhpcyBtZXRob2QsIG90aGVyd2lzZQorICAg
ICAgICAvLyB3ZSB3aWxsIHRyeSB0byBhbmltYXRlIGJldHdlZW4gdmFsdWVzIGZvcmV2ZXIuCisg
ICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgpID09IFNWR1BhaW50OjpTVkdfUEFJ
TlRUWVBFX1JHQkNPTE9SKSB7CisgICAgICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1f
Z2V0dGVyKSgpOworICAgICAgICAgICAgQ29sb3IgdG9Db2xvciA9IChiLT4qbV9nZXR0ZXIpKCk7
CisKKyAgICAgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGlmICgh
ZnJvbUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBmcm9tQ29sb3IgPSBDb2xvcigp
OworICAgICAgICAgICAgaWYgKCF0b0NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICB0
b0NvbG9yID0gQ29sb3IoKTsKKworICAgICAgICAgICAgcmV0dXJuIGZyb21Db2xvciA9PSB0b0Nv
bG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0
LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9n
cmVzcykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBlR2V0dGVyKSgp
ICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SCisgICAgICAgICAgICB8fCAoYi0+
Km1fcGFpbnRUeXBlR2V0dGVyKSgpICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4q
bV9nZXR0ZXIpKCk7CisgICAgICAgIENvbG9yIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwor
CisgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICAgICAgZnJvbUNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgaWYgKCF0b0NvbG9y
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHRvQ29sb3IgPSBDb2xvcigpOworICAgICAgICAoZHN0
LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNz
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUm
IChSZW5kZXJTdHlsZTo6Km1fcGFpbnRUeXBlR2V0dGVyKSgpIGNvbnN0OworICAgIGNvbnN0IENv
bG9yJiAoUmVuZGVyU3R5bGU6OiptX2dldHRlcikoKSBjb25zdDsKKyAgICB2b2lkIChSZW5kZXJT
dHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOworfTsKKyNlbmRpZgogCiBzdGF0aWMgVmVj
dG9yPFByb3BlcnR5V3JhcHBlckJhc2UqPiogZ1Byb3BlcnR5V3JhcHBlcnMgPSAwOwogc3RhdGlj
IGludCBnUHJvcGVydHlXcmFwcGVyTWFwW251bUNTU1Byb3BlcnRpZXNdOwpAQCAtNzY3LDkgKzgz
NSwyNSBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKCkKICAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyU2hhZG93KENTU1By
b3BlcnR5VGV4dFNoYWRvdywgJlJlbmRlclN0eWxlOjp0ZXh0U2hhZG93LCAmUmVuZGVyU3R5bGU6
OnNldFRleHRTaGFkb3cpKTsKIAogI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlclNWR1BhaW50KENTU1Byb3BlcnR5Rmls
bCwgJlJlbmRlclN0eWxlOjpmaWxsUGFpbnRUeXBlLCAmUmVuZGVyU3R5bGU6OmZpbGxQYWludENv
bG9yLCAmUmVuZGVyU3R5bGU6OnNldEZpbGxQYWludENvbG9yKSk7CiAgICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlG
aWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmaWxsT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRG
aWxsT3BhY2l0eSkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5LCAmUmVuZGVyU3R5bGU6
OmZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpzZXRGbG9vZE9wYWNpdHkpKTsKKworICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXJTVkdQYWludChD
U1NQcm9wZXJ0eVN0cm9rZSwgJlJlbmRlclN0eWxlOjpzdHJva2VQYWludFR5cGUsICZSZW5kZXJT
dHlsZTo6c3Ryb2tlUGFpbnRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VQYWludENvbG9y
KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBl
cjxmbG9hdD4oQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0cm9rZU9w
YWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlT3BhY2l0eSkpOworICAgICAgICBnUHJvcGVy
dHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9w
ZXJ0eVN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6
OnNldFN0cm9rZVdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxTVkdMZW5ndGg+KENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldCwg
JlJlbmRlclN0eWxlOjpzdHJva2VEYXNoT2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnNldFN0cm9rZURh
c2hPZmZzZXQpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVy
dHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQsICZSZW5kZXJTdHls
ZTo6c3Ryb2tlTWl0ZXJMaW1pdCwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VNaXRlckxpbWl0KSk7
CisKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVy
PGZsb2F0PihDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgJlJlbmRlclN0eWxlOjpmbG9vZE9wYWNp
dHksICZSZW5kZXJTdHlsZTo6c2V0Rmxvb2RPcGFjaXR5KSk7CisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1By
b3BlcnR5Rmxvb2RDb2xvciwgJlJlbmRlclN0eWxlOjpmbG9vZENvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldEZsb29kQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5U3RvcE9wYWNpdHksICZSZW5kZXJT
dHlsZTo6c3RvcE9wYWNpdHksICZSZW5kZXJTdHlsZTo6c2V0U3RvcE9wYWNpdHkpKTsKKyAgICAg
ICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyTWF5YmVJbnZh
bGlkQ29sb3IoQ1NTUHJvcGVydHlTdG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c3RvcENvbG9yLCAm
UmVuZGVyU3R5bGU6OnNldFN0b3BDb2xvcikpOworCisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJz
LT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yKENTU1Byb3BlcnR5
TGlnaHRpbmdDb2xvciwgJlJlbmRlclN0eWxlOjpsaWdodGluZ0NvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldExpZ2h0aW5nQ29sb3IpKTsKKworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5k
KG5ldyBQcm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQs
ICZSZW5kZXJTdHlsZTo6YmFzZWxpbmVTaGlmdFZhbHVlLCAmUmVuZGVyU3R5bGU6OnNldEJhc2Vs
aW5lU2hpZnRWYWx1ZSkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eUtlcm5pbmcsICZSZW5kZXJTdHls
ZTo6a2VybmluZywgJlJlbmRlclN0eWxlOjpzZXRLZXJuaW5nKSk7CiAjZW5kaWYKIAogICAgICAg
ICAvLyBUT0RPOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCA2ZmI2NzY3NzY4OTk1ZWIyYzAxMDljMjg3MTZhMzcxOTZkNjg0NGY4Li45MDc5YWZl
ZmQ1MzAwNDJhOTA1YjFlOTNjMWM4MDQ3MmIwY2JiOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzUsNiArNzUsNyBAQAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhaW50LmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3R5bGUuaCIKICNlbmRpZgogCkBAIC0xMTYxLDE1ICsxMTYyLDM5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoU1ZHKQogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3ZnU3R5bGUuZ2V0KCk7IH0KICAgICBTVkdSZW5kZXJTdHlsZSogYWNjZXNz
U1ZHU3R5bGUoKSB7IHJldHVybiBtX3N2Z1N0eWxlLmFjY2VzcygpOyB9Ci0gICAgCisKKyAgICBj
b25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxQ
YWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS0+ZmlsbFBhaW50Q29sb3IoKTsg
fQorICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZH
U3R5bGUoKS0+c2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCBj
LCAiIik7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxl
KCktPmZpbGxPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldEZpbGxPcGFjaXR5KGZsb2F0IGYpIHsg
YWNjZXNzU1ZHU3R5bGUoKS0+c2V0RmlsbE9wYWNpdHkoZik7IH0KLSAgICAKKworICAgIGNvbnN0
IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN2Z1N0eWxlKCktPnN0cm9rZVBhaW50VHlwZSgpOyB9CisgICAgY29uc3QgQ29sb3ImIHN0cm9r
ZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLT5zdHJva2VQYWludENvbG9y
KCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdC
Q09MT1IsIGMsICIiKTsgfQogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5zdHJva2VPcGFjaXR5KCk7IH0KICAgICB2b2lkIHNldFN0cm9rZU9wYWNp
dHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VPcGFjaXR5KGYpOyB9Ci0g
ICAgCisgICAgU1ZHTGVuZ3RoIHN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUo
KS0+c3Ryb2tlV2lkdGgoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoU1ZHTGVuZ3RoIHcp
IHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Ryb2tlV2lkdGgodyk7IH0KKyAgICBTVkdMZW5ndGgg
c3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZURhc2hP
ZmZzZXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlRGFzaE9mZnNldChTVkdMZW5ndGggZCkgeyBh
Y2Nlc3NTVkdTdHlsZSgpLT5zZXRTdHJva2VEYXNoT2Zmc2V0KGQpOyB9CisgICAgZmxvYXQgc3Ry
b2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPnN0cm9rZU1pdGVyTGlt
aXQoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlTWl0ZXJMaW1pdChmbG9hdCBmKSB7IGFjY2Vzc1NW
R1N0eWxlKCktPnNldFN0cm9rZU1pdGVyTGltaXQoZik7IH0KKwogICAgIGZsb2F0IGZsb29kT3Bh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpOyB9CiAgICAg
dm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRGbG9v
ZE9wYWNpdHkoZik7IH0KKworICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
c3ZnU3R5bGUoKS0+c3RvcE9wYWNpdHkoKTsgfQorICAgIHZvaWQgc2V0U3RvcE9wYWNpdHkoZmxv
YXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLT5zZXRTdG9wT3BhY2l0eShmKTsgfQorCisgICAgdm9p
ZCBzZXRTdG9wQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0U3Rv
cENvbG9yKGMpOyB9CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFj
Y2Vzc1NWR1N0eWxlKCktPnNldEZsb29kQ29sb3IoYyk7IH0KKyAgICB2b2lkIHNldExpZ2h0aW5n
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0TGlnaHRpbmdDb2xv
cihjKTsgfQorCisgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHN2Z1N0eWxlKCktPmJhc2VsaW5lU2hpZnRWYWx1ZSgpOyB9CisgICAgdm9pZCBzZXRCYXNl
bGluZVNoaWZ0VmFsdWUoU1ZHTGVuZ3RoIHMpIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0QmFzZWxp
bmVTaGlmdFZhbHVlKHMpOyB9CisgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7IHJldHVy
biBzdmdTdHlsZSgpLT5rZXJuaW5nKCk7IH0KKyAgICB2b2lkIHNldEtlcm5pbmcoU1ZHTGVuZ3Ro
IGspIHsgYWNjZXNzU1ZHU3R5bGUoKS0+c2V0S2VybmluZyhrKTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNldFdyYXBTaGFwZShQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGUpCkBAIC0xNDA2
LDYgKzE0MzEsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICBjb25zdCBDb2xvciBjb2xvckluY2x1
ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKIAorI2lmIEVOQUJMRShTVkcp
CisgICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkt
PnN0b3BDb2xvcigpOyB9CisgICAgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBzdmdTdHlsZSgpLT5mbG9vZENvbG9yKCk7IH0KKyAgICBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsgfQor
I2VuZGlmCisKICAgICB2b2lkIGFwcGVuZENvbnRlbnQoUGFzc093blB0cjxDb250ZW50RGF0YT4p
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGUuaAppbmRleCAwZmU0YTgwY2RmY2Q1MjFmNDczN2QzN2ZjMmYxYzViNWMzMzJlOWQ4Li40YWFk
ZWVhYmMwN2NmNWJmZWFmOTJmZjgwNzAzZWNkZWZiMDZiNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtMzE1LDEwICszMTUsMTAg
QEAgcHVibGljOgogICAgIFNWR0xlbmd0aCBzdHJva2VEYXNoT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gc3Ryb2tlLT5kYXNoT2Zmc2V0OyB9CiAgICAgU1ZHTGVuZ3RoIGtlcm5pbmcoKSBjb25zdCB7
IHJldHVybiB0ZXh0LT5rZXJuaW5nOyB9CiAgICAgZmxvYXQgc3RvcE9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBzdG9wcy0+b3BhY2l0eTsgfQotICAgIENvbG9yIHN0b3BDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHN0b3BzLT5jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yJiBzdG9wQ29sb3IoKSBjb25z
dCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBDb2xvciBmbG9vZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RDb2xvcjsgfQotICAgIENvbG9yIGxpZ2h0aW5nQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9yOyB9CisgICAgY29uc3QgQ29s
b3ImIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9CisgICAg
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGlu
Z0NvbG9yOyB9CiAgICAgU1ZHTGVuZ3RoIGJhc2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1pc2MtPmJhc2VsaW5lU2hpZnRWYWx1ZTsgfQogICAgIFNoYWRvd0RhdGEqIHNoYWRvdygp
IGNvbnN0IHsgcmV0dXJuIHNoYWRvd1NWRy0+c2hhZG93LmdldCgpOyB9CiAgICAgU3RyaW5nIGNs
aXBwZXJSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlcy0+Y2xpcHBlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCA2YjIxYTgyMTZlNTNjNmZmYzdjMThmNzY1Y2QxYzJk
YWNhOGYyZjY4Li5hZDQyZjVlOWU3MTg2MjY4YmIxNGJiMzFkZDFlNTFlZWRhNTgxNjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMTk0LDg4ICsxOTQsODYgQEAgZmxvYXQgU1ZHTGVu
Z3RoOjp2YWx1ZShjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0KSBjb25zdAogCiBmbG9hdCBTVkdM
ZW5ndGg6OnZhbHVlKGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewotICAgIHN3aXRjaCAoZXh0cmFjdFR5cGUobV91bml0KSkgeworICAgIHJldHVy
biBjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cywgZXh0cmFj
dFR5cGUobV91bml0KSwgY29udGV4dCwgZWMpOworfQorCit2b2lkIFNWR0xlbmd0aDo6c2V0VmFs
dWUoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUg
bW9kZSwgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
bV91bml0ID0gc3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKTsKKyAgICBzZXRWYWx1ZSh2YWx1ZSwg
Y29udGV4dCwgZWMpOworfQorCit2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlz
IGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hhbmdlZAorICAgIGlmIChleHRyYWN0VHlwZShtX3VuaXQp
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICB2YWx1ZSA9IHZhbHVlIC8gMTAwOwor
CisgICAgZmxvYXQgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKHZh
bHVlLCBleHRyYWN0VHlwZShtX3VuaXQpLCBjb250ZXh0LCBlYyk7CisgICAgaWYgKCFlYykKKyAg
ICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBjb252ZXJ0ZWRWYWx1ZTsKK30KKworZmxv
YXQgU1ZHTGVuZ3RoOjpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoVHlwZSBmcm9tVW5pdCwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0Cit7CisgICAgc3dpdGNoIChmcm9tVW5pdCkgewogICAgIGNhc2UgTGVuZ3Ro
VHlwZVVua25vd246CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKLSAgICAgICAgcmV0dXJuIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgY2FzZSBMZW5n
dGhUeXBlUFg6CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBjYXNlIExlbmd0aFR5cGVQZXJj
ZW50YWdlOgotICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJV
bml0cyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMCwgY29udGV4dCwgZWMpOworICAgICAg
ICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEw
MCwgY29udGV4dCwgZWMpOwogICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRWYWx1ZUZyb21FTVNUb1VzZXJVbml0cyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cywg
Y29udGV4dCwgZWMpOworICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbUVNU1RvVXNlclVu
aXRzKHZhbHVlLCBjb250ZXh0LCBlYyk7CiAgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgotICAgICAg
ICByZXR1cm4gY29udmVydFZhbHVlRnJvbUVYU1RvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzLCBjb250ZXh0LCBlYyk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6Ci0gICAgICAgIHJl
dHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1
ZUZyb21FWFNUb1VzZXJVbml0cyh2YWx1ZSwgY29udGV4dCwgZWMpOwogICAgIGNhc2UgTGVuZ3Ro
VHlwZUNNOgotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyLjU0ZiAq
IGNzc1BpeGVsc1BlckluY2g7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1Blcklu
Y2ggLyAyLjU0ZjsKICAgICBjYXNlIExlbmd0aFR5cGVNTToKLSAgICAgICAgcmV0dXJuIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzIC8gMjUuNGYgKiBjc3NQaXhlbHNQZXJJbmNoOworICAgICAgICBy
ZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gMjUuNGY7CiAgICAgY2FzZSBMZW5ndGhU
eXBlSU46Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIGNzc1BpeGVs
c1BlckluY2g7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2g7CiAgICAg
Y2FzZSBMZW5ndGhUeXBlUFQ6Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyAvIDcyICogY3NzUGl4ZWxzUGVySW5jaDsKKyAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4
ZWxzUGVySW5jaCAvIDcyOwogICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgotICAgICAgICByZXR1cm4g
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2ICogY3NzUGl4ZWxzUGVySW5jaDsKKyAgICAgICAg
cmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDY7CiAgICAgfQotCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRW
YWx1ZShjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9k
ZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK2Zsb2F0
IFNWR0xlbmd0aDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoVHlwZSB0b1VuaXQsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogewotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7Ci0g
ICAgc2V0VmFsdWUodmFsdWUsIGNvbnRleHQsIGVjKTsKLX0KLQotdm9pZCBTVkdMZW5ndGg6OnNl
dFZhbHVlKGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBzd2l0Y2ggKGV4dHJhY3RUeXBlKG1fdW5pdCkpIHsKKyAgICBzd2l0
Y2ggKHRvVW5pdCkgewogICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gMDsKICAg
ICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
ID0gdmFsdWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6
IHsKLSAgICAgICAgZmxvYXQgcmVzdWx0ID0gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVy
Y2VudGFnZSh2YWx1ZSwgY29udGV4dCwgZWMpOwotICAgICAgICBpZiAoIWVjKQotICAgICAgICAg
ICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByZXN1bHQ7IAotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOiB7Ci0gICAgICAgIGZsb2F0IHJlc3VsdCA9IGNv
bnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VNUyh2YWx1ZSwgY29udGV4dCwgZWMpOwotICAgICAg
ICBpZiAoIWVjKQotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByZXN1bHQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6IHsKLSAgICAg
ICAgZmxvYXQgcmVzdWx0ID0gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRVhTKHZhbHVlLCBj
b250ZXh0LCBlYyk7Ci0gICAgICAgIGlmICghZWMpCi0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyA9IHJlc3VsdDsgCi0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVy
biBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJjZW50YWdlKHZhbHVlICogMTAwLCBjb250
ZXh0LCBlYyk7CisgICAgY2FzZSBMZW5ndGhUeXBlRU1TOgorICAgICAgICByZXR1cm4gY29udmVy
dFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TKHZhbHVlLCBjb250ZXh0LCBlYyk7CisgICAgY2FzZSBM
ZW5ndGhUeXBlRVhTOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1Rv
RVhTKHZhbHVlLCBjb250ZXh0LCBlYyk7CiAgICAgY2FzZSBMZW5ndGhUeXBlUFg6Ci0gICAgICAg
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgY2FzZSBMZW5ndGhUeXBlQ006Ci0gICAgICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiAyLjU0ZiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdmFsdWUgKiAyLjU0ZiAvIGNzc1BpeGVsc1Blcklu
Y2g7CiAgICAgY2FzZSBMZW5ndGhUeXBlTU06Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gdmFsdWUgKiAyNS40ZiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gdmFsdWUgKiAyNS40ZiAvIGNzc1BpeGVsc1BlckluY2g7CiAgICAgY2Fz
ZSBMZW5ndGhUeXBlSU46Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUg
LyBjc3NQaXhlbHNQZXJJbmNoOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHZhbHVl
IC8gY3NzUGl4ZWxzUGVySW5jaDsKICAgICBjYXNlIExlbmd0aFR5cGVQVDoKLSAgICAgICAgbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDcyIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAg
ICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB2YWx1ZSAqIDcyIC8gY3NzUGl4ZWxzUGVySW5j
aDsKICAgICBjYXNlIExlbmd0aFR5cGVQQzoKLSAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSB2YWx1ZSAqIDYgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlICogNiAvIGNzc1BpeGVsc1BlckluY2g7CiAgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwogfQogCiBmbG9hdCBTVkdMZW5ndGg6OnZh
bHVlQXNQZXJjZW50YWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAppbmRleCAyNjMyYTUw
ODczNDcyZWNkY2YwOWUyNWQyNGRhMzk1MGIzOWZiMTk5Li5mMzZjYzE1ZmE1OWRlMjQ2NjFlMGM3
YzU2YzZkZGJlZGQ1YzI1MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCkBAIC0xMTAsMTMgKzEx
MCw3NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0eXBlID09IExlbmd0aFR5cGVQZXJjZW50
YWdlIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCB0eXBlID09IExlbmd0aFR5cGVFWFM7CiAg
ICAgfQogCisgICAgYm9vbCBpc1plcm8oKSBjb25zdCAKKyAgICB7IAorICAgICAgICByZXR1cm4g
IW1fdmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIH0KKwogICAgIHN0YXRpYyBTVkdMZW5ndGgg
ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKik7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZH
TGVuZ3RoJik7CiAgICAgc3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZvckFuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIFNWR0xlbmd0aCBi
bGVuZChjb25zdCBTVkdMZW5ndGgmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25zdAorICAgIHsK
KyAgICAgICAgU1ZHTGVuZ3RoVHlwZSB0b1R5cGUgPSB1bml0VHlwZSgpOworICAgICAgICBTVkdM
ZW5ndGhUeXBlIGZyb21UeXBlID0gZnJvbS51bml0VHlwZSgpOworCisgICAgICAgIGlmICgoZnJv
bS5pc1plcm8oKSAmJiBpc1plcm8oKSkKKyAgICAgICAgICAgIHx8IGZyb21UeXBlID09IExlbmd0
aFR5cGVVbmtub3duCisgICAgICAgICAgICB8fCB0b1R5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24K
KyAgICAgICAgICAgIHx8ICghZnJvbS5pc1plcm8oKSAmJiBmcm9tVHlwZSAhPSBMZW5ndGhUeXBl
UGVyY2VudGFnZSAmJiB0b1R5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgICAg
ICB8fCAoIWlzWmVybygpICYmIGZyb21UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlICYmIHRv
VHlwZSAhPSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgICAgIHx8ICghZnJvbS5pc1pl
cm8oKSAmJiAhaXNaZXJvKCkgJiYgKGZyb21UeXBlID09IExlbmd0aFR5cGVFTVMgfHwgZnJvbVR5
cGUgPT0gTGVuZ3RoVHlwZUVYUykgJiYgZnJvbVR5cGUgIT0gdG9UeXBlKSkKKyAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKworICAgICAgICBTVkdMZW5ndGggbGVuZ3RoOworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKworICAgICAgICBpZiAoZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UgfHwgdG9UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSB7CisgICAgICAgICAg
ICBmbG9hdCBmcm9tUGVyY2VudCA9IGZyb20udmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEwMDsKKyAg
ICAgICAgICAgIGZsb2F0IHRvUGVyY2VudCA9IHZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7Cisg
ICAgICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlUGVyY2Vu
dGFnZSwgZnJvbVBlcmNlbnQgKyAodG9QZXJjZW50IC0gZnJvbVBlcmNlbnQpICogcHJvZ3Jlc3Ms
IGVjKTsKKyAgICAgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgICAgICByZXR1cm4gU1ZHTGVu
Z3RoKCk7CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGZyb21UeXBlID09IHRvVHlwZSB8fCBmcm9tLmlzWmVybygpIHx8IGlzWmVybygpIHx8IGZy
b21UeXBlID09IExlbmd0aFR5cGVFTVMgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVYUykgewor
ICAgICAgICAgICAgZmxvYXQgZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgICAgIGZsb2F0IHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsK
KyAgICAgICAgICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAgICAgICAgICBsZW5ndGgubmV3VmFs
dWVTcGVjaWZpZWRVbml0cyhmcm9tVHlwZSwgZnJvbVZhbHVlICsgKHRvVmFsdWUgLSBmcm9tVmFs
dWUpICogcHJvZ3Jlc3MsIGVjKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBs
ZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUsIGZyb21WYWx1ZSArICh0b1ZhbHVl
IC0gZnJvbVZhbHVlKSAqIHByb2dyZXNzLCBlYyk7CisgICAgICAgICAgICBpZiAoZWMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aCgpOworICAgICAgICAgICAgcmV0dXJuIGxlbmd0
aDsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCghaXNSZWxhdGl2ZSgpKTsKKyAgICAgICAg
QVNTRVJUKCFmcm9tLmlzUmVsYXRpdmUoKSk7CisgICAgICAgIGZsb2F0IGZyb21WYWx1ZUluVXNl
clVuaXRzID0gY29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKSwgZnJvbVR5cGUsIDAsIGVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0
dXJuIFNWR0xlbmd0aCgpOworCisgICAgICAgIGZsb2F0IGZyb21WYWx1ZSA9IGNvbnZlcnRWYWx1
ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVlSW5Vc2VyVW5pdHMsIHRvVHlwZSwgMCwgZWMpOworICAg
ICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoKCk7CisKKyAgICAgICAg
ZmxvYXQgdG9WYWx1ZSA9IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBsZW5ndGgu
bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUsIGZyb21WYWx1ZSArICh0b1ZhbHVlIC0gZnJv
bVZhbHVlKSAqIHByb2dyZXNzLCBlYyk7CisKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAg
cmV0dXJuIFNWR0xlbmd0aCgpOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKwogcHJp
dmF0ZToKICAgICBib29sIGRldGVybWluZVZpZXdwb3J0KGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHQsIGZsb2F0JiB3aWR0aCwgZmxvYXQmIGhlaWdodCkgY29uc3Q7CiAKKyAgICBmbG9hdCBjb252
ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSBmcm9tVW5pdCwg
Y29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIGZs
b2F0IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUg
dG9Vbml0LCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisKICAgICBmbG9hdCBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKGZsb2F0
IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CiAgICAgZmxvYXQgY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZShmbG9hdCB2
YWx1ZSwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
Cg==
</data>
<flag name="review"
          id="101156"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>