<?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>52200</bug_id>
          
          <creation_ts>2011-01-11 02:42:06 -0800</creation_ts>
          <short_desc>Repaint SVG elements with filter instead of relayout where possible</short_desc>
          <delta_ts>2011-01-25 07:12:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332205</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-11 02:42:06 -0800</bug_when>
    <thetext>Working towards adding primitive renderers in small steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332210</commentid>
    <comment_count>1</comment_count>
      <attachid>78507</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-11 02:53:52 -0800</bug_when>
    <thetext>Created attachment 78507
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332252</commentid>
    <comment_count>2</comment_count>
      <attachid>78514</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-11 03:58:44 -0800</bug_when>
    <thetext>Created attachment 78514
patch after update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332253</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 03:59:26 -0800</bug_when>
    <thetext>Attachment 78514 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:329:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:330:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:332:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332265</commentid>
    <comment_count>4</comment_count>
      <attachid>78517</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-11 04:43:10 -0800</bug_when>
    <thetext>Created attachment 78517
patch after update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332420</commentid>
    <comment_count>5</comment_count>
      <attachid>78517</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-11 10:03:46 -0800</bug_when>
    <thetext>Comment on attachment 78517
patch after update

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

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:333
&gt; +void RenderSVGResourceFilter::repaintFilterPrimitve(RenderObject* object)
&gt; +{
&gt; +    RenderObject* filter = object-&gt;parent();
&gt; +    if (!filter || !filter-&gt;isSVGResourceFilter())
&gt; +        return;
&gt; +    filter-&gt;repaint();
&gt; +}

This function is never called right now, can describe what you plan to do with it please?

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp:43
&gt; +    SVGFilter* filter = reinterpret_cast&lt;SVGFilter*&gt;(effect-&gt;filter());

We normally use static_casts

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:51
&gt; +    void invalidate(bool repaint = false);

do you really mean repaint or relayout?

&gt; Source/WebCore/svg/SVGFEOffsetElement.cpp:69
&gt; +    if (attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr)
&gt; +        invalidate(true);

This is unclear to me. Do we want to repaint or relayout? Changing dx or dy definitely affects the repaintRect size of following filter primitives, ergo relayout, right?

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:58
&gt;          if (RenderObject* primitiveRenderer = renderer())
&gt; -            RenderSVGResource::markForLayoutAndParentResourceInvalidation(primitiveRenderer);
&gt; +            reinterpret_cast&lt;RenderSVGResourceFilterPrimitive*&gt;(primitiveRenderer)-&gt;invalidate(repaint);
&gt;      }

Why no static_cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332955</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-12 00:45:42 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:333
&gt; &gt; +void RenderSVGResourceFilter::repaintFilterPrimitve(RenderObject* object)
&gt; &gt; +{
&gt; &gt; +    RenderObject* filter = object-&gt;parent();
&gt; &gt; +    if (!filter || !filter-&gt;isSVGResourceFilter())
&gt; &gt; +        return;
&gt; &gt; +    filter-&gt;repaint();
&gt; &gt; +}
&gt; 
&gt; This function is never called right now, can describe what you plan to do with it please?

Repainting somehow. No idea yet. But somehow when a change happens, which does not affect layout, but needs repaint, this function should invalidate all rects, where the filter is used (absoluteBoundingBoxes). Since it would be too difficult to determine its affected subregion, I would invalidate the whole (at least for now -&gt; image copy is cheap). I could remove this function if you wish, not important for now. Unfortunately clippedOverflowRectForRepaint can return only 1 rect. I could unite all absoluteBoundingBoxes, but I would prefer something more clever.

&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:51
&gt; &gt; +    void invalidate(bool repaint = false);
&gt; 
&gt; do you really mean repaint or relayout?

Repaint. Anyway I have no strong opinion here. Should I reverse them? (bool relayout = true) ?

&gt; &gt; Source/WebCore/svg/SVGFEOffsetElement.cpp:69
&gt; &gt; +    if (attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr)
&gt; &gt; +        invalidate(true);
&gt; 
&gt; This is unclear to me. Do we want to repaint or relayout? Changing dx or dy definitely affects the repaintRect size of following filter primitives, ergo relayout, right?

Hm, forgot about it. Thanks for mentioning it. I should find another filter to work on this feature. Perhaps diffuseConstant for lightning. Remove this from the future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333056</commentid>
    <comment_count>7</comment_count>
      <attachid>78684</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-12 06:26:14 -0800</bug_when>
    <thetext>Created attachment 78684
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333620</commentid>
    <comment_count>8</comment_count>
      <attachid>78684</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-13 03:14:47 -0800</bug_when>
    <thetext>Comment on attachment 78684
patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:334
&gt; +void RenderSVGResourceFilter::repaintFilterPrimitve(RenderObject* object)
&gt; +{
&gt; +    RenderObject* filter = object-&gt;parent();
&gt; +    if (!filter || !filter-&gt;isSVGResourceFilter())
&gt; +        return;
&gt; +    filter-&gt;repaint();
&gt; +}
&gt; +

We&apos;ll definitely need this function later. But the policy wants us not to commit dead code. And it is not in use atm.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp:43
&gt; +    SVGFilter* filter = static_cast&lt;SVGFilter*&gt;(effect-&gt;filter());

Please add an assert for effect-&gt;filter() before this line.

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:76
&gt; +    RefPtr&lt;FilterEffect&gt; effectReference = passEffectReference;
&gt;      ASSERT(!m_effectReferences.contains(effectReference));
&gt; +    ASSERT(object &amp;&amp; !m_effectRenderer.contains(object));

You&apos;re right, a functions should always take the ownership, but IIRC you don&apos;t touch passEffectReference in this function, but just save it in m_effectRenderer. So do we need to store it in effectReference? Can&apos;t we just store it m_effectRenderer? Also, do all callers of appendEffectToEffectRef...() release the passed effect? - Ah you store RefPtr in two member variables, m_effectReferences and m_effectRenderer. Hm, not sure what behavior is correct here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333651</commentid>
    <comment_count>9</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-13 05:53:27 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:76
&gt; &gt; +    RefPtr&lt;FilterEffect&gt; effectReference = passEffectReference;
&gt; &gt;      ASSERT(!m_effectReferences.contains(effectReference));
&gt; &gt; +    ASSERT(object &amp;&amp; !m_effectRenderer.contains(object));
&gt; 
&gt; You&apos;re right, a functions should always take the ownership, but IIRC you don&apos;t touch passEffectReference in this function, but just save it in m_effectRenderer. So do we need to store it in effectReference? Can&apos;t we just store it m_effectRenderer? Also, do all callers of appendEffectToEffectRef...() release the passed effect? - Ah you store RefPtr in two member variables, m_effectReferences and m_effectRenderer. Hm, not sure what behavior is correct here.

No idea about the best solution here. I think passing RefPtr-s is against the style (not sure...). Directly using PassRefPtr-s cause a segfault, so I need to define a local variable before use. Of course I could revert these lines to the original one if you prefer them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333661</commentid>
    <comment_count>10</comment_count>
      <attachid>78804</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-13 06:41:28 -0800</bug_when>
    <thetext>Created attachment 78804
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335179</commentid>
    <comment_count>11</comment_count>
      <attachid>78804</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-17 00:12:32 -0800</bug_when>
    <thetext>Comment on attachment 78804
patch

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

I&apos;d like to see Niko to look at this patch as well. Maybe he has some more proposals.

PS: Why do you add cq flag? You have commit rights and in my opinion it is better to land a patch yourself, you have to be available on landing anyway to fix problems.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:114
&gt; +        builder-&gt;appendEffectToEffectReferences(effect, effectElement-&gt;renderer());

effect needs to be release if you change RefPtr to PassRefPtr in appendEffectToEffectReferences(...). Because with PassRefPtr you give over the ownership. This is maybe not what you want.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:48
&gt; +    // They depend on the RenderObject argument of RenderSVGResourceFilter::applyResource.

They is unclear, do you mean FilterEffects or the subregion of a filter effect?

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:71
&gt; +void SVGFilterBuilder::appendEffectToEffectReferences(PassRefPtr&lt;FilterEffect&gt; passEffectReference, RenderObject* object)

I wouldn&apos;t change RefPtr to PassRefPtr, as long as we don&apos;t know who should take the ownership.

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:57
&gt; +    inline PassRefPtr&lt;FilterEffect&gt; getEffectByRenderer(RenderObject* object) { return m_effectRenderer.get(object); }

getters don&apos;t begin with &apos;get&apos; for WebCore, just effectByRenderer. You&apos;re not calling this function anywhere, as far as I can see. Why did you add this here? Can you change the name of getEffectReferences() as well?

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:76
&gt;      HashMap&lt;RefPtr&lt;FilterEffect&gt;, FilterEffectSet&gt; m_effectReferences;
&gt; +    HashMap&lt;RenderObject*, RefPtr&lt;FilterEffect&gt; &gt; m_effectRenderer;

Do both hashmaps need to take RefPtr&lt;FilterEffect&gt;? Can we garantee somehow, that if A has the element B has it as well? Would be better to save a pointer in at least one map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335297</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-17 06:47:29 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:57
&gt; &gt; +    inline PassRefPtr&lt;FilterEffect&gt; getEffectByRenderer(RenderObject* object) { return m_effectRenderer.get(object); }
&gt; 
&gt; You&apos;re not calling this function anywhere, as far as I can see. Why did you add this here? 

We need this function to find the filter primitive objects for each renderer when they are repainted. Since the FilterEffect objects store the arguments by themself, we need to call their setters with the new value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335345</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-01-17 08:28:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 78804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78804&amp;action=review
&gt; 
&gt; I&apos;d like to see Niko to look at this patch as well. Maybe he has some more proposals.
&gt; 
Good review, I think it covers all issues I have as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335799</commentid>
    <comment_count>14</comment_count>
      <attachid>79273</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-18 06:10:22 -0800</bug_when>
    <thetext>Created attachment 79273
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335801</commentid>
    <comment_count>15</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-18 06:19:46 -0800</bug_when>
    <thetext>I moved one step further to actually use these new functions, but still calling the relayout. So you can see how I plan to use them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336390</commentid>
    <comment_count>16</comment_count>
      <attachid>79273</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-19 01:25:11 -0800</bug_when>
    <thetext>Comment on attachment 79273
patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        calls relayout (Thus, this is just a performance overhead
&gt; +        at this moment).

Please make a detailed description how you plan to reach the goal and what you&apos;re doing right now: What happens if an attribute change? What does the renderer of the primitive element do?

&gt; Source/WebCore/ChangeLog:42
&gt; +        Demoing the new attribute setting mechanism.

Demonstration of ...

&gt; Source/WebCore/ChangeLog:49
&gt; +        Scanning the FilterBuilder list, and calls the necessary callbacks.

s/calls/call/

&gt; Source/WebCore/ChangeLog:57
&gt; +        FilterEffect belongs to this RenderObject.

that belongs or maybe belonging

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:334
&gt; +        HashSet&lt;FilterEffect*&gt;::iterator end = effectReferences.end();
&gt; +        for (HashSet&lt;FilterEffect*&gt;::iterator it = effectReferences.begin(); it != end; ++it)

In other SVG files, we often use 
HashSet&lt;FilterEffect*&gt;::iterator it  = effectReferences.begin();
HashSet&lt;FilterEffect*&gt;::iterator end = effectReferences.end();
for (; it != end; ++it)

but it does not really matter.

Makes it really sense to clear all effects this way? I mean this function just makes sense if you want to clear _all_ effects. But isn&apos;t it already covered by calling the DTor of FilterBuilder?

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:339
&gt; +void RenderSVGResourceFilter::setAllFilterEffectsAttribute(RenderObject* object, const QualifiedName&amp; attribute)

s/setAllFilterEffectsAttribute/setAllFilterEffectAttributes/

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:351
&gt; +        if (effect) {
&gt; +            primitve-&gt;setFilterEffectAttribute(effect, attribute);
&gt; +            recursiveClearResult(builder, effect);
&gt; +        }
&gt; +    }

if (!effect)
   continue;

...

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:40
&gt; -    explicit RenderSVGResourceFilterPrimitive(SVGFilterPrimitiveStandardAttributes* filterPrimitiveElement)
&gt; +    explicit RenderSVGResourceFilterPrimitive(SVGStyledElement* filterPrimitiveElement)

Why did you change the elements type?

&gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:108
&gt; +    if (attrName == SVGNames::diffuseConstantAttr
&gt; +        || attrName == SVGNames::surfaceScaleAttr
&gt; +        || attrName == SVGNames::lighting_colorAttr)
&gt; +        setAllFilterEffectsAttribute(attrName);
&gt; +

This should be in a separate patch, together with dynamic update tests.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:76
&gt; +    // When all filters support this method, it will be changed to a pure virtual method.
&gt; +    ASSERT_NOT_REACHED();

If not all filters implemented this function, don&apos;t we run into this assert?

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:61
&gt; +    inline void setAllFilterEffectsAttribute(const QualifiedName&amp; attribute)

arh. setFilterEffectAttribute and setAllFilterEffectsAttribute sounds to simular for me. I even don&apos;t see a difference in the behavior if I just look at the names. setAttributeToAllFilterEffects? Hm. even that sounds a bit strange. Of course you should rename the function in the renderer as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336424</commentid>
    <comment_count>17</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-19 04:12:06 -0800</bug_when>
    <thetext>Krit, you asked me not to introduce unused functions, but you want to see the work in small steps in the same time. This is impossible because of the dependencies.

I try to explain you the concept.

The issue:

   Filter     1 --- 1  Filter Renderer         1 --- n  List of FilterBuilder
      | 1 - n               | 1 - n                              | 1 - n
FilterElement 1 --- 1 Filter Primitve Renderer              FilterEffects

When an attribute of the FilterElement changes, it needs to update its FilterEffects (created by this FilterElement before).

Since only the FilterRenderer access the currently existing FilterEffects, all FilterElements needs to implement this function:

void SVGFE*::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)

The function is called when we call setAllFilterEffectsAttribute(attrName) in svgAttributeChanged (thus we can put the assert to SVGFilterPrimitiveStandardAttributes.cpp:76)

Note: the other way, accessing the FilterElement from a FilterEffect would cause layering violation.

This patch demonstrates the concept of updating the FilterEffects when the diffuseConstant of DiffuseLighting updates (and invalidates all filter images dependent of this particular DiffuseLighting FilterEffect - this is done automatically). So the FilterBuilders are not changed at all, only some attributes changed, and some existing images freed.

However, the repainting is not implemented, so we do the relayaout as before. This is the smallest step I can think of. Do you wish to implement this a different way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336437</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-19 05:15:06 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Krit, you asked me not to introduce unused functions, but you want to see the work in small steps in the same time. This is impossible because of the dependencies.
I did not ask you to delete more functions?

&gt; 
&gt; I try to explain you the concept.
&gt; 
&gt; The issue:
&gt; 
&gt;    Filter     1 --- 1  Filter Renderer         1 --- n  List of FilterBuilder
&gt;       | 1 - n               | 1 - n                              | 1 - n
&gt; FilterElement 1 --- 1 Filter Primitve Renderer              FilterEffects
&gt; 
&gt; When an attribute of the FilterElement changes, it needs to update its FilterEffects (created by this FilterElement before).
Right.

&gt; 
&gt; Since only the FilterRenderer access the currently existing FilterEffects, all FilterElements needs to implement this function:
&gt; 
&gt; void SVGFE*::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
&gt; 
&gt; The function is called when we call setAllFilterEffectsAttribute(attrName) in svgAttributeChanged (thus we can put the assert to SVGFilterPrimitiveStandardAttributes.cpp:76)
Ok, looks like I misunderstand your code. For clarification:
* An attribute of an effect changes state, lets say surface-scale on the diffuseLigthning effect.
* SVGFEDiffuseLightingElement::svgAttributeChanged calls setAllFilterEffectsAttribute(attrName)
* inline void setAllFilterEffectsAttribute calls setAllFilterEffectsAttribute(primitiveRenderer, attribute); of the parent renderer RenderSVGFilterResource (primitiveRenderer is the renderer of the effect element)
* here we run through all FilterBuilder and call setFilterEffectAttribute(effect, attribute); in the DiffuseLightning element of above for setting the new value in FilterEffect*, and clear all results of all effects.

A bit confusing. But the problem is that we can have different instances of FilterEffect* for one SVGFE*Element and its RenderSVGResourceFilterPrimitive :-/

I&apos;d like to change your concept a bit:

* SVGFEDiffuseLightingElement::svgAttributeChanged calls renderer()-&gt;primitiveAttributeChanged(attrName);
* RenderSVGResourceFilterPrimitive::primitiveAttributeChanged(const QualifiedName&amp; attrName) calls parent()-&gt;primitveAttributeChanged(this, const QualifiedName&amp; attrName);
* RenderSVGResourceFilter::primitveAttributeChanged(const RenderSVGResourceFilterPrimitive* renderer, const QualifiedName&amp; attrName) is basically your RenderSVGResourceFilter::setAllFilterEffectsAttribute

Would that work? I think it is better to do it that way instead of calling a function in SVGFilterPrimitiveAttr.

&gt; 
&gt; Note: the other way, accessing the FilterElement from a FilterEffect would cause layering violation.
Would this even be possible? Nevertheless this is not the way to go, since FilterEffect must be independent of SVG. - Ah, thats what you mean with layering violation :-P

&gt; 
&gt; This patch demonstrates the concept of updating the FilterEffects when the diffuseConstant of DiffuseLighting updates (and invalidates all filter images dependent of this particular DiffuseLighting FilterEffect - this is done automatically). So the FilterBuilders are not changed at all, only some attributes changed, and some existing images freed.
Yes. And the last point confused me, but now I understand your concept. There is still a problem I guess. What if an attribute causes the smallest effect rect to be bigger? E.g. The stdDeviation of feGaussianBlur increases. Doesn&apos;t it mean, that the results of determineFilterPrimitiveSubregion() are wrong? Doesn&apos;t this cause an invalidation, because our code in RenderSVGResourceFilter::applyResource() depends on these results? Something I haven&apos;t thought about yet :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336443</commentid>
    <comment_count>19</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-19 05:46:50 -0800</bug_when>
    <thetext>&gt; Yes. And the last point confused me, but now I understand your concept. There is still a problem I guess. What if an attribute causes the smallest effect rect to be bigger? E.g. The stdDeviation of feGaussianBlur increases. Doesn&apos;t it mean, that the results of determineFilterPrimitiveSubregion() are wrong? Doesn&apos;t this cause an invalidation, because our code in RenderSVGResourceFilter::applyResource() depends on these results? Something I haven&apos;t thought about yet :-(

I think we can leave this later. First, I would focus on attributes which does not change layout, only repainting is enough. Although repainting is still difficult, since one Filter(Primitive)Renderer can be referenced by multiple SVG elements, and renderer-&gt;repaint() only support one rectangle. Do you have any idea to invalidate multiple rects?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336449</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-19 05:57:13 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Yes. And the last point confused me, but now I understand your concept. There is still a problem I guess. What if an attribute causes the smallest effect rect to be bigger? E.g. The stdDeviation of feGaussianBlur increases. Doesn&apos;t it mean, that the results of determineFilterPrimitiveSubregion() are wrong? Doesn&apos;t this cause an invalidation, because our code in RenderSVGResourceFilter::applyResource() depends on these results? Something I haven&apos;t thought about yet :-(
&gt; 
&gt; I think we can leave this later. First, I would focus on attributes which does not change layout, only repainting is enough. Although repainting is still difficult, since one Filter(Primitive)Renderer can be referenced by multiple SVG elements, and renderer-&gt;repaint() only support one rectangle. Do you have any idea to invalidate multiple rects?

Is this necessary? Your idea was to clear all ImageBuffers an ImageData of the effects that needs to get repainted and of all of its childs, the last filterEffect should be affected as well. RenderSVGResourceFilter asks the last FilterEffect for its ImageBuffer, if it hasn&apos;t one, It calls FilterEffect::apply. apply calls FilterEffect::apply recursively up to that filterEffect that already has a result. So there isn&apos;t even a change necessary on applyResource or postApply, and repaint isn&apos;t necessary as well for the moment, right?  If the last effect isn&apos;t affected, we don&apos;t need to relayout or repaint at all, because the effect that changed is not needed for our result.

Hope it helps :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336453</commentid>
    <comment_count>21</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-19 06:05:42 -0800</bug_when>
    <thetext>&gt; Is this necessary? Your idea was to clear all ImageBuffers an ImageData of the effects that needs to get repainted and of all of its childs, the last filterEffect should be affected as well. RenderSVGResourceFilter asks the last FilterEffect for its ImageBuffer, if it hasn&apos;t one, It calls FilterEffect::apply. apply calls FilterEffect::apply recursively up to that filterEffect that already has a result. So there isn&apos;t even a change necessary on applyResource or postApply, and repaint isn&apos;t necessary as well for the moment, right?  If the last effect isn&apos;t affected, we don&apos;t need to relayout or repaint at all, because the effect that changed is not needed for our result.
&gt; 
&gt; Hope it helps :-P

Exactly, but the issue is not here. Somehow something must tell WebKit, that an area must be repainted. Of course, the repainting itself happens with the unmodified code (applyResource, etc), but still, WebKit should knows about that an area must be repainted. Basically render-&gt;repaint() should do that, I think. All renderers has a virtual function, which returns the bounding box when you call this repaint(). However, SVGHiddenContainer returns with an empty box, so no repaint happens on the screen. Still, even one bounding box is not enough. A filter can have multiple painting boxes. I could unite them, but I don&apos;t think that is the best option, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337922</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-21 00:38:57 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Exactly, but the issue is not here. Somehow something must tell WebKit, that an area must be repainted. Of course, the repainting itself happens with the unmodified code (applyResource, etc), but still, WebKit should knows about that an area must be repainted. Basically render-&gt;repaint() should do that, I think. All renderers has a virtual function, which returns the bounding box when you call this repaint(). However, SVGHiddenContainer returns with an empty box, so no repaint happens on the screen. Still, even one bounding box is not enough. A filter can have multiple painting boxes. I could unite them, but I don&apos;t think that is the best option, isn&apos;t it?

For filters we have SVGResource and RenderSVGResource that manages this. We have to think about this after your patch got landed. At the moment, one of the both call &apos;needsLayout&apos; of the target element. This need to be changed somehow. I think this doesn&apos;t influence your patch for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338032</commentid>
    <comment_count>23</comment_count>
      <attachid>79729</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-21 06:44:29 -0800</bug_when>
    <thetext>Created attachment 79729
patch again

Full patch including repaint.

We recently updated our mac, and seems I cannot do pixel tests anymore with it :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338036</commentid>
    <comment_count>24</comment_count>
      <attachid>79729</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-21 06:59:36 -0800</bug_when>
    <thetext>Comment on attachment 79729
patch again

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

&gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:108
&gt; +        primitiveAttributeChanged(attrName);

Did you miss my comment about calling the renderer directly here? https://bugs.webkit.org/show_bug.cgi?id=52200#c18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338075</commentid>
    <comment_count>25</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-21 08:41:55 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 79729 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79729&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:108
&gt; &gt; +        primitiveAttributeChanged(attrName);
&gt; 
&gt; Did you miss my comment about calling the renderer directly here? https://bugs.webkit.org/show_bug.cgi?id=52200#c18

Hm? Perhaps I misunderstood you, but I added a

inline void primitiveAttributeChanged(const QualifiedName&amp; attribute)
{
if (RenderObject* primitiveRenderer = renderer())
    static_cast&lt;RenderSVGResourceFilterPrimitive*&gt;
      (primitiveRenderer)-&gt;primitiveAttributeChanged(attribute);
}

to the SVGFilterPrimitiveStandardAttributes.h. Would you prefer this in a different way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338120</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-21 09:53:49 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 79729 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79729&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:108
&gt; &gt; &gt; +        primitiveAttributeChanged(attrName);
&gt; &gt; 
&gt; &gt; Did you miss my comment about calling the renderer directly here? https://bugs.webkit.org/show_bug.cgi?id=52200#c18
&gt; 
&gt; Hm? Perhaps I misunderstood you, but I added a
&gt; 
&gt; inline void primitiveAttributeChanged(const QualifiedName&amp; attribute)
&gt; {
&gt; if (RenderObject* primitiveRenderer = renderer())
&gt;     static_cast&lt;RenderSVGResourceFilterPrimitive*&gt;
&gt;       (primitiveRenderer)-&gt;primitiveAttributeChanged(attribute);
&gt; }
&gt; 
&gt; to the SVGFilterPrimitiveStandardAttributes.h. Would you prefer this in a different way?

Yes, like I wrote it in https://bugs.webkit.org/show_bug.cgi?id=52200#c18. This is the common way like  we do it for all elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338245</commentid>
    <comment_count>27</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-21 12:14:14 -0800</bug_when>
    <thetext>&gt; Yes, like I wrote it in https://bugs.webkit.org/show_bug.cgi?id=52200#c18. This is the common way like  we do it for all elements.

??? still I don&apos;t undestand you.

You said:

* SVGFEDiffuseLightingElement::svgAttributeChanged calls renderer()-&gt;primitiveAttributeChanged(attrName);
* RenderSVGResourceFilterPrimitive::primitiveAttributeChanged(const QualifiedName&amp; attrName) calls parent()-&gt;primitveAttributeChanged(this, const QualifiedName&amp; attrName);

That is exactly what the code snippet do I copied in my previous comment.

SVGFEDiffuseLightingElement calls its render()-&gt;primitiveAttributeChanged(...) but renderer() requires a static_cast to RenderSVGResourceFilterPrimitive, so I made an inline function in the base class to make the code more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338287</commentid>
    <comment_count>28</comment_count>
      <attachid>79729</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-21 13:21:55 -0800</bug_when>
    <thetext>Comment on attachment 79729
patch again

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

(In reply to comment #27)
&gt; &gt; Yes, like I wrote it in https://bugs.webkit.org/show_bug.cgi?id=52200#c18. This is the common way like  we do it for all elements.
&gt; 
&gt; ??? still I don&apos;t undestand you.
&gt; 
&gt; You said:
&gt; 
&gt; * SVGFEDiffuseLightingElement::svgAttributeChanged calls renderer()-&gt;primitiveAttributeChanged(attrName);
&gt; * RenderSVGResourceFilterPrimitive::primitiveAttributeChanged(const QualifiedName&amp; attrName) calls parent()-&gt;primitveAttributeChanged(this, const QualifiedName&amp; attrName);
&gt; 
&gt; That is exactly what the code snippet do I copied in my previous comment.
&gt; 
&gt; SVGFEDiffuseLightingElement calls its render()-&gt;primitiveAttributeChanged(...) but renderer() requires a static_cast to RenderSVGResourceFilterPrimitive, so I made an inline function in the base class to make the code more readable.

Thats true, I was more thinking about consistency across other elements and avoid as much calls of functions from other files as possible to have a better overview. But in this case, and also because you create the renderer in SVGFilterPrimitiveAttribute) it might be better to use your code as is. The patch already looks great. Still some notes.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:151
&gt; -            return false;
&gt; +            return true;

This is difficult. If you return true, the filtered object continues drawing on to the context: the real context! Means we&apos;ll draw the target on to the context and on top of it we draw the filter result. Thats bad because of couple of reasons. At first, because we draw the result of the filter with conpositeOver to the context we may see both drawings. Second, the repaintRect of the target depends on the filter area. If the filter area is outside of the objectBoundingBox from the target, we won&apos;t clear the results on animations or what ever. Third, we do unnecessary drawings. The filtered target element might be the root element of thounds of childs, that is inefficient. Why do you have to return true here? Shouldn&apos;t it work with false as well? We would enter postApply() even it we return false here.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:300
&gt; +            filterData-&gt;builded = true;
&gt; +        }
&gt; +
&gt; +        if (!lastEffect-&gt;hasResult()) {
&gt; +            // Always true if filterData is just built.

Why did you move &apos;filterData-&gt;builded = true;&apos; atop of &apos;if (!lastEffect-&gt;hasResult())&apos; Isn&apos;t it build after we called apply() the first time? and the &apos;if&apos; doesn&apos;t even check filterData-&gt;builded so it shouldn&apos;t matter here, but makes more sense in general to set it as true, if we really built it.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:363
&gt; +        repaintRectangle(filterData-&gt;absoluteDrawingRegion);

Interesting, but you couldn&apos;t check it on your mac?

what if you have another element that is drawn on top of the filtered object? will it get repainted as well? (Unsure right now, a test case would help) Also isn&apos;t the parent renderer hierarchy RenderSVGResourceContainer-&gt; RenderSVGHiddenContainer? Does it even affect any redrawings? I&apos;d move this to another patch an invalidate like we did before. So you cann add more tests to check the correct behavior of the code.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h:54
&gt; +        static_cast&lt;RenderSVGResourceFilter*&gt;(parent())-&gt;primitiveAttributeChanged(this, attribute);

please check if the parent exists and if it is really a RenderSVGResourceFilter, IIRC it don&apos;t needs to be a RenderSVGResourceFilter. We even create a renderer in this case:
&lt;g&gt;
&lt;feOffset/&gt;
&lt;/g&gt;

parent() would be RenderSVGContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338887</commentid>
    <comment_count>29</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-24 01:01:18 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:151
&gt; &gt; -            return false;
&gt; &gt; +            return true;
&gt; 
&gt; This is difficult. If you return true, the filtered object continues drawing on to the context: the real context! Means we&apos;ll draw the target on to the context and on top of it we draw the filter result. Thats bad because of couple of reasons. At first, because we draw the result of the filter with conpositeOver to the context we may see both drawings. Second, the repaintRect of the target depends on the filter area. If the filter area is outside of the objectBoundingBox from the target, we won&apos;t clear the results on animations or what ever. Third, we do unnecessary drawings. The filtered target element might be the root element of thounds of childs, that is inefficient. Why do you have to return true here? Shouldn&apos;t it work with false as well? We would enter postApply() even it we return false here.

Is it? I think I misunderstood the return value. Hm, it looks like it is working with &quot;return false&quot;. Great.

&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:300
&gt; &gt; +            filterData-&gt;builded = true;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        if (!lastEffect-&gt;hasResult()) {
&gt; &gt; +            // Always true if filterData is just built.
&gt; 
&gt; Why did you move &apos;filterData-&gt;builded = true;&apos; atop of &apos;if (!lastEffect-&gt;hasResult())&apos; Isn&apos;t it build after we called apply() the first time? and the &apos;if&apos; doesn&apos;t even check filterData-&gt;builded so it shouldn&apos;t matter here, but makes more sense in general to set it as true, if we really built it.

Ok I moved it after the apply(). Anyway, why it is &quot;builded&quot; instead of &quot;built&quot; ?

&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:363
&gt; &gt; +        repaintRectangle(filterData-&gt;absoluteDrawingRegion);
&gt; 
&gt; Interesting, but you couldn&apos;t check it on your mac?

Yeah, our mac has been recently updated and now pixel tests fail with 0.49% difference. Since the image is the same, I think the font was changed. After a clean build, I will check this again, but I don&apos;t expect this will change sincs non-filter related images are fail as well.

&gt; what if you have another element that is drawn on top of the filtered object? will it get repainted as well? (Unsure right now, a test case would help) Also isn&apos;t the parent renderer hierarchy RenderSVGResourceContainer-&gt; RenderSVGHiddenContainer? Does it even affect any redrawings? I&apos;d move this to another patch an invalidate like we did before. So you cann add more tests to check the correct behavior of the code.

It is ok for me, but how should the code look like? Keeping the functions, but not modify the DiffuseLighting? Or removing the code? Without repainting, the patch does nothing useful, so I think disabling the call in DiffuseLighting would make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338897</commentid>
    <comment_count>30</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-24 01:38:24 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Ok I moved it after the apply(). Anyway, why it is &quot;builded&quot; instead of &quot;built&quot; ?
Oops! my fault :-) 

&gt; &gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:363
&gt; &gt; &gt; +        repaintRectangle(filterData-&gt;absoluteDrawingRegion);
&gt; &gt; 
&gt; &gt; Interesting, but you couldn&apos;t check it on your mac?
&gt; 
&gt; Yeah, our mac has been recently updated and now pixel tests fail with 0.49% difference. Since the image is the same, I think the font was changed. After a clean build, I will check this again, but I don&apos;t expect this will change sincs non-filter related images are fail as well.
Likely that it is a problem with Nikos patch. :-(

&gt; 
&gt; &gt; what if you have another element that is drawn on top of the filtered object? will it get repainted as well? (Unsure right now, a test case would help) Also isn&apos;t the parent renderer hierarchy RenderSVGResourceContainer-&gt; RenderSVGHiddenContainer? Does it even affect any redrawings? I&apos;d move this to another patch an invalidate like we did before. So you cann add more tests to check the correct behavior of the code.
&gt; 
&gt; It is ok for me, but how should the code look like? Keeping the functions, but not modify the DiffuseLighting? Or removing the code? Without repainting, the patch does nothing useful, so I think disabling the call in DiffuseLighting would make sense.
Unsure right now. But like I said before, we have to _mark_ the targets for repaint. And shouldn&apos;t call repaint directly. Anyway, make a complete invalidation now and try to find out how to repaint in a second patch ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338961</commentid>
    <comment_count>31</comment_count>
      <attachid>79914</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-24 05:49:06 -0800</bug_when>
    <thetext>Created attachment 79914
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339616</commentid>
    <comment_count>32</comment_count>
      <attachid>80055</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-25 05:51:20 -0800</bug_when>
    <thetext>Created attachment 80055
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339632</commentid>
    <comment_count>33</comment_count>
      <attachid>80061</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-25 06:53:57 -0800</bug_when>
    <thetext>Created attachment 80061
final patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339633</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-25 06:55:27 -0800</bug_when>
    <thetext>Attachment 80061 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h:60:  The parameter name &quot;effect&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339635</commentid>
    <comment_count>35</comment_count>
      <attachid>80061</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-25 06:58:42 -0800</bug_when>
    <thetext>Comment on attachment 80061
final patch

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

r=me with two notes. great work!

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:340
&gt; +static void recursiveClearResult(SVGFilterBuilder* builder, FilterEffect* effect)
&gt; +{
&gt; +    if (effect-&gt;hasResult()) {
&gt; +        effect-&gt;clearResult();
&gt; +
&gt; +        HashSet&lt;FilterEffect*&gt;&amp; effectReferences = builder-&gt;effectReferences(effect);
&gt; +        HashSet&lt;FilterEffect*&gt;::iterator end = effectReferences.end();
&gt; +        for (HashSet&lt;FilterEffect*&gt;::iterator it = effectReferences.begin(); it != end; ++it)
&gt; +            recursiveClearResult(builder, *it);
&gt; +    }
&gt; +}

please reomve this before landing

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:105
&gt; +    if (effect-&gt;hasResult()) {
&gt; +        effect-&gt;clearResult();
&gt; +
&gt; +        HashSet&lt;FilterEffect*&gt;&amp; effectReferences = this-&gt;effectReferences(effect);
&gt; +        HashSet&lt;FilterEffect*&gt;::iterator end = effectReferences.end();
&gt; +        for (HashSet&lt;FilterEffect*&gt;::iterator it = effectReferences.begin(); it != end; ++it)
&gt; +            clearResultsRecursive(*it);
&gt; +    }

make a early return here:
if (!effect-&gt;hasResult())
  return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339639</commentid>
    <comment_count>36</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-25 07:12:08 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/76590

Thank you again for the review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78507</attachid>
            <date>2011-01-11 02:53:52 -0800</date>
            <delta_ts>2011-01-11 03:58:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>11635</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBmOTI4N2ZjZjFhMDUwZTVkYzk0NGE1ZDg1NmVhNjUwZDI1NGEzYzRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDExIEphbiAyMDExIDExOjUyOjUyICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAxICsKIC4uLi9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAxMiArKysr
KystCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oICAgICAgICB8
ICAgIDMgKysKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwICAg
ICAgIHwgICAxNSArKysrKystLQogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oICAgICAgICAgfCAgIDE2ICsrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwICAgICAgICAgIHwgICAgNyArKy0tCiAuLi4vc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oICAgICB8ICAgIDYgKystLQogOCBmaWxlcyBj
aGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2JmYzgzOS4uODU4YjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTAxLTEx
ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU21hbGwgZmlsdGVyIHByaW1pdGl2ZSBy
ZW5kZXJlciBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyMjAwCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHks
IG5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNTVkdSZXNvdXJjZUZpbHRlcik6
IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJpbWl0aXZlcywKKyAgICAgICAgYnV0IGZpbHRlcnMgc2hv
dWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8gYWxsb3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0aW5nLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQ
cmltaXR2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzU1ZHUmVz
b3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAg
ICAgIFRoZSBmaWx0ZXIgYXJndW1lbnQgaXMgdW5uZWNlc3NhcnkgYW55bW9yZS4gQnV0IGlzIGlz
IHN0aWxsIGtlcHQgYXMgYSBzdGF0aWMKKyAgICAgICAgbWVtYmVyLCBzaW5jZSB0aGUgcHJpbWl0
aXZlIHJlbmRlcmVyIHN0aWxsIGRvZXMgbm90IGtub3cgYWJvdXQgdGhlCisgICAgICAgIEZpbHRl
ckVmZmVjdCBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmludmFsaWRhdGUpOiB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGlzIG1vdmVk
IGhlcmUgZnJvbSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuCisgICAgICAg
IEFsdGhvdWdoIGEgbmV3IGFyZ3VtZW50IGlzIGFkZGVkLCB0aGUgZnVuY3Rpb25hbGl0eSBoYXMg
bm90IHlldCBjaGFuZ2VkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBDaGFuZ2luZworICAgICAgICBk
eCBvciBkeSBhdHRyaWJ1dGUgZG9lcyBub3QgcmVxdWlyZSBhIHJlbGF5b3V0LgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6
IGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaXMgbW92ZWQgdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuCisKIDIwMTEtMDEtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NTMzNy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAyZjQ0M2VmLi5mZjk1
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzEsNiAr
MzMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRh
aW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVz
b3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNGJhNGUwYS4uNWYxZDUwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTIwOCwxMyArMjA4LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxl
KiwKICAgICBpZiAoIWxhc3RFZmZlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKGxhc3RFZmZlY3QpOwogICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0
LT5tYXhFZmZlY3RSZWN0KCk7CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMg
YSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXpl
cyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgogICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6
ZShzdWJSZWdpb24uc2l6ZSgpLCBzY2FsZSkpIHsKICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVy
LT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxlKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZm
ZWN0LCBmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RF
ZmZlY3QpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5LCB3
ZSBoYXZlIHNvbWV0aGluZyBsaWtlIDxnIGZpbHRlcj0iLi4iLz4uCkBAIC0zMjQsNSArMzI0LDEz
IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0Jv
eChSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKK3Zv
aWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQcmltaXR2ZShSZW5kZXJP
YmplY3QqIG9iamVjdCkKK3sKKyAgIFJlbmRlck9iamVjdCogZmlsdGVyID0gb2JqZWN0LT5wYXJl
bnQoKTsKKyAgIGlmICghZmlsdGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkK
KyAgICAgcmV0dXJuCisgICBmaWx0ZXItPnJlcGFpbnQoKTsKK30KKwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmgKaW5kZXggZjlhMTVjZS4uNmM5ZmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaApAQCAtNjQsNiArNjQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlciI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBt
YXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CkBAIC04MSw2ICs4Miw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUg
c19yZXNvdXJjZVR5cGU7CiAKKyAgICBzdGF0aWMgdm9pZCByZXBhaW50RmlsdGVyUHJpbWl0dmUo
UmVuZGVyT2JqZWN0Kik7CisKIHByaXZhdGU6CiAgICAgYm9vbCBmaXRzSW5NYXhpbXVtSW1hZ2VT
aXplKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUuY3BwCmluZGV4IGZjNzM2MmUuLmM4ZGU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwCkBAIC0yNywyNyArMjcsMjkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQorI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
aCIKLQogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3Qq
IGVmZmVjdCwgU1ZHRmlsdGVyKiBmaWx0ZXIpCitGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCkKIHsKICAgICBGbG9hdFJlY3QgdW5pdGVSZWN0OwogICAgIEZsb2F0UmVj
dCBzdWJyZWdpb25Cb3VuZGluZ0JveCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOwogICAg
IEZsb2F0UmVjdCBzdWJyZWdpb24gPSBzdWJyZWdpb25Cb3VuZGluZ0JveDsKKyAgICBTVkdGaWx0
ZXIqIGZpbHRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHRmlsdGVyKj4oZWZmZWN0LT5maWx0ZXIo
KSk7CiAKICAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0gRmlsdGVyRWZmZWN0
VHlwZVRpbGUpIHsKICAgICAgICAgLy8gRkVUdXJidWxlbmNlLCBGRUltYWdlIGFuZCBGRUZsb29k
IGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBhcyB1bml0
ZSByZWN0LgogICAgICAgICBpZiAodW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpLnNpemUoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgICAgICAgICAgdW5p
dGVSZWN0LnVuaXRlKGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlu
cHV0RWZmZWN0KGkpLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUo
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZpbHRl
clJlZ2lvbkluVXNlclNwYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRlcik7Cisg
ICAgICAgIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZm
ZWN0KDApKTsKICAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJT
cGFjZSgpOwogICAgIH0KIApAQCAtMTAxLDYgKzEwMywxMSBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihGaQogICAgIHJldHVybiBzdWJyZWdpb247CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmludmFsaWRhdGUoYm9vbCkKK3sKKyAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHRoaXMpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBmMjVmNjJlLi5k
ZWU4YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zMCwyNSArMzAsMjUg
QEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2luY2x1ZGUgIlJlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgotI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEZpbHRlckVmZmVjdDsKKwogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1Ymxp
YzoKLQotICAgIGV4cGxpY2l0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkK
KyAgICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdTdHlsZWRF
bGVtZW50KiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQogICAgICAgICA6IFJlbmRlclNWR0hpZGRl
bkNvbnRhaW5lcihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICAv
LyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgotICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCosIFNWR0ZpbHRlciopOwot
Ci1wcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKworICAgIC8vIFRoZXkgZGVwZW5kIG9uIHRoZSBSZW5kZXJPYmplY3QgYXJndW1lbnQgb2Yg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UuCisgICAgc3RhdGljIEZsb2F0
UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0Kik7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoYm9vbCByZXBhaW50ID0gZmFsc2UpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAppbmRleCBkNDFlNmRiLi4yNmVkMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcApAQCAtNjAsMTAgKzYwLDExIEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cgot
ICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyCi0gICAgICAgIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpkeUF0dHIpCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIpCiAgICAgICAgIGludmFsaWRhdGUoKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZHhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIpCisgICAgICAgIGlu
dmFsaWRhdGUodHJ1ZSk7CiB9CiAKIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CmluZGV4IGIxMzA4NGIuLjU5ZTBjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTIzLDcgKzIz
LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCisjaW5jbHVkZSAi
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJFbGVtZW50LmgiCkBAIC00OSwxMCArNDksMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKIHByb3RlY3RlZDoKLSAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkK
KyAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKGJvb2wgcmVwYWludCA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigp
KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbihwcmltaXRpdmVSZW5kZXJlcik7CisgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKj4ocHJpbWl0aXZl
UmVuZGVyZXIpLT5pbnZhbGlkYXRlKHJlcGFpbnQpOwogICAgIH0KIAogcHJpdmF0ZToKLS0gCjEu
Ni4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78514</attachid>
            <date>2011-01-11 03:58:44 -0800</date>
            <delta_ts>2011-01-11 04:43:10 -0800</delta_ts>
            <desc>patch after update</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>11639</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA5OWRjNjNiZjMzNjJiNWQyNzYxNjAzYzI3ZDA3YzE5YTBjYmM3MmE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDExIEphbiAyMDExIDExOjUyOjUyICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAxICsKIC4uLi9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAxMiArKysr
KystCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oICAgICAgICB8
ICAgIDMgKysKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwICAg
ICAgIHwgICAxNSArKysrKystLQogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oICAgICAgICAgfCAgIDE2ICsrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwICAgICAgICAgIHwgICAgNyArKy0tCiAuLi4vc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oICAgICB8ICAgIDYgKystLQogOCBmaWxlcyBj
aGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWU1MzUwNS4uYTZlMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTAxLTEx
ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU21hbGwgZmlsdGVyIHByaW1pdGl2ZSBy
ZW5kZXJlciBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyMjAwCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHks
IG5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNTVkdSZXNvdXJjZUZpbHRlcik6
IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJpbWl0aXZlcywKKyAgICAgICAgYnV0IGZpbHRlcnMgc2hv
dWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8gYWxsb3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0aW5nLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQ
cmltaXR2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzU1ZHUmVz
b3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAg
ICAgIFRoZSBmaWx0ZXIgYXJndW1lbnQgaXMgdW5uZWNlc3NhcnkgYW55bW9yZS4gQnV0IGlzIGlz
IHN0aWxsIGtlcHQgYXMgYSBzdGF0aWMKKyAgICAgICAgbWVtYmVyLCBzaW5jZSB0aGUgcHJpbWl0
aXZlIHJlbmRlcmVyIHN0aWxsIGRvZXMgbm90IGtub3cgYWJvdXQgdGhlCisgICAgICAgIEZpbHRl
ckVmZmVjdCBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmludmFsaWRhdGUpOiB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGlzIG1vdmVk
IGhlcmUgZnJvbSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuCisgICAgICAg
IEFsdGhvdWdoIGEgbmV3IGFyZ3VtZW50IGlzIGFkZGVkLCB0aGUgZnVuY3Rpb25hbGl0eSBoYXMg
bm90IHlldCBjaGFuZ2VkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBDaGFuZ2luZworICAgICAgICBk
eCBvciBkeSBhdHRyaWJ1dGUgZG9lcyBub3QgcmVxdWlyZSBhIHJlbGF5b3V0LgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6
IGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaXMgbW92ZWQgdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuCisKIDIwMTAtMTAtMTAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAyZjQ0M2VmLi5mZjk1N2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzEsNiArMzMxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggNGJhNGUwYS4uNWYxZDUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAg
LTIwOCwxMyArMjA4LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKiwKICAgICBpZiAoIWxhc3RF
ZmZlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVj
dCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3Qp
OwogICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7
CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNp
emUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBm
YWN0b3JzLgogICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6ZShzdWJSZWdpb24uc2l6ZSgp
LCBzY2FsZSkpIHsKICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0
aW9uKHNjYWxlKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0LCBmaWx0ZXJEYXRhLT5m
aWx0ZXIuZ2V0KCkpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QpOwogICAgIH0KIAog
ICAgIC8vIElmIHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5LCB3ZSBoYXZlIHNvbWV0aGluZyBs
aWtlIDxnIGZpbHRlcj0iLi4iLz4uCkBAIC0zMjQsNSArMzI0LDEzIEBAIEZsb2F0UmVjdCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqIG9i
amVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQcmltaXR2ZShSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sK
KyAgIFJlbmRlck9iamVjdCogZmlsdGVyID0gb2JqZWN0LT5wYXJlbnQoKTsKKyAgIGlmICghZmls
dGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKKyAgICAgcmV0dXJuCisgICBm
aWx0ZXItPnJlcGFpbnQoKTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggZjlhMTVj
ZS4uNmM5ZmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoKTsKIAogICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ciI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hl
KGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9u
ID0gdHJ1ZSk7CkBAIC04MSw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlw
ZTsgfQogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAK
KyAgICBzdGF0aWMgdm9pZCByZXBhaW50RmlsdGVyUHJpbWl0dmUoUmVuZGVyT2JqZWN0Kik7CisK
IHByaXZhdGU6CiAgICAgYm9vbCBmaXRzSW5NYXhpbXVtSW1hZ2VTaXplKGNvbnN0IEZsb2F0U2l6
ZSYsIEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4
IGZjNzM2MmUuLmM4ZGU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCkBA
IC0yNywyNyArMjcsMjkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKLQogI2luY2x1ZGUgIlNW
R0ZFSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgU1ZHRmlsdGVy
KiBmaWx0ZXIpCitGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKIHsK
ICAgICBGbG9hdFJlY3QgdW5pdGVSZWN0OwogICAgIEZsb2F0UmVjdCBzdWJyZWdpb25Cb3VuZGlu
Z0JveCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOwogICAgIEZsb2F0UmVjdCBzdWJyZWdp
b24gPSBzdWJyZWdpb25Cb3VuZGluZ0JveDsKKyAgICBTVkdGaWx0ZXIqIGZpbHRlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8U1ZHRmlsdGVyKj4oZWZmZWN0LT5maWx0ZXIoKSk7CiAKICAgICBpZiAoZWZm
ZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0gRmlsdGVyRWZmZWN0VHlwZVRpbGUpIHsKICAgICAg
ICAgLy8gRkVUdXJidWxlbmNlLCBGRUltYWdlIGFuZCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQg
ZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBhcyB1bml0ZSByZWN0LgogICAgICAgICBp
ZiAodW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMgPSBlZmZlY3QtPmlucHV0RWZmZWN0cygp
LnNpemUoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
SW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgICAgICAgICAgdW5pdGVSZWN0LnVuaXRlKGRldGVy
bWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZmZWN0KGkpLCBmaWx0
ZXIpKTsKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUoZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkpKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZpbHRlclJlZ2lvbkluVXNlclNwYWNl
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRlcik7CisgICAgICAgIGRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZmZWN0KDApKTsKICAgICAgICAg
dW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOwogICAgIH0KIApA
QCAtMTAxLDYgKzEwMywxMSBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaQogICAgIHJldHVybiBz
dWJyZWdpb247CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6Omlu
dmFsaWRhdGUoYm9vbCkKK3sKKyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFu
ZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBmMjVmNjJlLi5kZWU4YzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zMCwyNSArMzAsMjUgQEAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2luY2x1ZGUgIlJlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZp
bHRlckVmZmVjdDsKKwogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgOiBw
dWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLQotICAgIGV4cGxpY2l0
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKKyAgICBleHBsaWNpdCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdTdHlsZWRFbGVtZW50KiBmaWx0ZXJQcmlt
aXRpdmVFbGVtZW50KQogICAgICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQ
cmltaXRpdmVFbGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICAvLyBUaGV5IGRlcGVuZCBvbiB0
aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlLgotICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKEZpbHRlckVmZmVjdCosIFNWR0ZpbHRlciopOwotCi1wcml2YXRlOgogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIFRoZXkg
ZGVwZW5kIG9uIHRoZSBSZW5kZXJPYmplY3QgYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UuCisgICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0Kik7CisKKyAgICB2b2lkIGludmFsaWRh
dGUoYm9vbCByZXBhaW50ID0gZmFsc2UpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAyYmQ4YWVlLi43
ZWVmZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAt
NjIsMTAgKzYyLDExIEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cgotICAgICAgICB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6ZHhBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpk
eUF0dHIpCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCiAgICAgICAgIGlu
dmFsaWRhdGUoKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIpCisgICAgICAgIGludmFsaWRhdGUodHJ1ZSk7CiB9
CiAKIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDM0ZTE5ZWEuLmE2
NWQyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNkZWZpbmUgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzX2gKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtNTEsMTAgKzUxLDEwIEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCiBwcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIHZvaWQgaW52YWxpZGF0
ZSgpCisgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZShib29sIHJlcGFpbnQgPSBmYWxzZSkKICAg
ICB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocHJpbWl0aXZlUmVuZGVyZXIpOworICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSo+KHByaW1p
dGl2ZVJlbmRlcmVyKS0+aW52YWxpZGF0ZShyZXBhaW50KTsKICAgICB9CiAKIHByaXZhdGU6Ci0t
IAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78517</attachid>
            <date>2011-01-11 04:43:10 -0800</date>
            <delta_ts>2011-01-12 06:26:14 -0800</delta_ts>
            <desc>patch after update</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>11623</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBkNzIyNjVkNDQwNzQ1YTRlYjlkMDczNmQ1YjI3NGJiMjEwYzViY2EyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDExIEphbiAyMDExIDEzOjI3OjU0ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAxICsKIC4uLi9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAxMiArKysr
KystCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oICAgICAgICB8
ICAgIDMgKysKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwICAg
ICAgIHwgICAxNCArKysrKystLQogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oICAgICAgICAgfCAgIDE2ICsrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwICAgICAgICAgIHwgICAgNyArKy0tCiAuLi4vc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oICAgICB8ICAgIDYgKystLQogOCBmaWxlcyBj
aGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWU1MzUwNS4uYTZlMjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTAxLTEx
ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU21hbGwgZmlsdGVyIHByaW1pdGl2ZSBy
ZW5kZXJlciBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyMjAwCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHks
IG5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNTVkdSZXNvdXJjZUZpbHRlcik6
IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJpbWl0aXZlcywKKyAgICAgICAgYnV0IGZpbHRlcnMgc2hv
dWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8gYWxsb3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0aW5nLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQ
cmltaXR2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzU1ZHUmVz
b3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAg
ICAgIFRoZSBmaWx0ZXIgYXJndW1lbnQgaXMgdW5uZWNlc3NhcnkgYW55bW9yZS4gQnV0IGlzIGlz
IHN0aWxsIGtlcHQgYXMgYSBzdGF0aWMKKyAgICAgICAgbWVtYmVyLCBzaW5jZSB0aGUgcHJpbWl0
aXZlIHJlbmRlcmVyIHN0aWxsIGRvZXMgbm90IGtub3cgYWJvdXQgdGhlCisgICAgICAgIEZpbHRl
ckVmZmVjdCBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmludmFsaWRhdGUpOiB0aGlzCisgICAgICAgIGZ1bmN0aW9uIGlzIG1vdmVk
IGhlcmUgZnJvbSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuCisgICAgICAg
IEFsdGhvdWdoIGEgbmV3IGFyZ3VtZW50IGlzIGFkZGVkLCB0aGUgZnVuY3Rpb25hbGl0eSBoYXMg
bm90IHlldCBjaGFuZ2VkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBDaGFuZ2luZworICAgICAgICBk
eCBvciBkeSBhdHRyaWJ1dGUgZG9lcyBub3QgcmVxdWlyZSBhIHJlbGF5b3V0LgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6
IGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgaXMgbW92ZWQgdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuCisKIDIwMTAtMTAtMTAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAyZjQ0M2VmLi5mZjk1N2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzEsNiArMzMxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggNGJhNGUwYS4uOWU4ZTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAg
LTIwOCwxMyArMjA4LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKiwKICAgICBpZiAoIWxhc3RF
ZmZlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVj
dCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3Qp
OwogICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7
CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNp
emUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBm
YWN0b3JzLgogICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6ZShzdWJSZWdpb24uc2l6ZSgp
LCBzY2FsZSkpIHsKICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0
aW9uKHNjYWxlKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0LCBmaWx0ZXJEYXRhLT5m
aWx0ZXIuZ2V0KCkpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QpOwogICAgIH0KIAog
ICAgIC8vIElmIHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5LCB3ZSBoYXZlIHNvbWV0aGluZyBs
aWtlIDxnIGZpbHRlcj0iLi4iLz4uCkBAIC0zMjQsNSArMzI0LDEzIEBAIEZsb2F0UmVjdCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqIG9i
amVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQcmltaXR2ZShSZW5kZXJPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBSZW5kZXJPYmplY3QqIGZpbHRlciA9IG9iamVjdC0+cGFyZW50KCk7CisgICAgaWYgKCFm
aWx0ZXIgfHwgIWZpbHRlci0+aXNTVkdSZXNvdXJjZUZpbHRlcigpKQorICAgICAgICByZXR1cm47
CisgICAgZmlsdGVyLT5yZXBhaW50KCk7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4
IGY5YTE1Y2UuLjZjOWZlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIiOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zy
b21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCosIGJvb2wgbWFya0ZvckludmFs
aWRhdGlvbiA9IHRydWUpOwpAQCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBS
ZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNv
dXJjZVR5cGU7IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VU
eXBlOwogCisgICAgc3RhdGljIHZvaWQgcmVwYWludEZpbHRlclByaW1pdHZlKFJlbmRlck9iamVj
dCopOworCiBwcml2YXRlOgogICAgIGJvb2wgZml0c0luTWF4aW11bUltYWdlU2l6ZShjb25zdCBG
bG9hdFNpemUmLCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNw
cAppbmRleCBmYzczNjJlLi40N2ZjNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmNwcApAQCAtMjksMjUgKzI5LDI4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRF
UlMpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKIAorI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgorI2lu
Y2x1ZGUgIlNWR0ZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZsb2F0UmVjdCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0LCBTVkdGaWx0ZXIqIGZpbHRlcikKK0Zsb2F0
UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0KQogewogICAgIEZsb2F0UmVjdCB1
bml0ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHN1YnJlZ2lvbkJvdW5kaW5nQm94ID0gZWZmZWN0LT5l
ZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgRmxvYXRSZWN0IHN1YnJlZ2lvbiA9IHN1YnJlZ2lvbkJv
dW5kaW5nQm94OworICAgIFNWR0ZpbHRlciogZmlsdGVyID0gcmVpbnRlcnByZXRfY2FzdDxTVkdG
aWx0ZXIqPihlZmZlY3QtPmZpbHRlcigpKTsKIAogICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVj
dFR5cGUoKSAhPSBGaWx0ZXJFZmZlY3RUeXBlVGlsZSkgewogICAgICAgICAvLyBGRVR1cmJ1bGVu
Y2UsIEZFSW1hZ2UgYW5kIEZFRmxvb2QgZG9uJ3QgaGF2ZSBpbnB1dCBlZmZlY3RzLCB0YWtlIHRo
ZSBmaWx0ZXIgcmVnaW9uIGFzIHVuaXRlIHJlY3QuCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1i
ZXJPZklucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuc2l6ZSgpKSB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsr
aSkKLSAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUoZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSksIGZpbHRlcikpOworICAgICAgICAg
ICAgICAgIHVuaXRlUmVjdC51bml0ZShkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
ZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHVu
aXRlUmVjdCA9IGZpbHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1
dEVmZmVjdCgwKSwgZmlsdGVyKTsKKyAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCkpOwogICAgICAgICB1bml0ZVJlY3QgPSBmaWx0
ZXItPmZpbHRlclJlZ2lvbkluVXNlclNwYWNlKCk7CiAgICAgfQogCkBAIC0xMDEsNiArMTA0LDEx
IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpCiAgICAgcmV0dXJuIHN1YnJlZ2lvbjsKIH0KIAor
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6aW52YWxpZGF0ZShib29sKQor
eworICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24odGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oCmluZGV4IGYyNWY2MmUuLmRlZThjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmgKQEAgLTMwLDI1ICszMCwyNSBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQogCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAi
U1ZHRmlsdGVyLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsdGVyRWZmZWN0OworCiBj
bGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSA6IHB1YmxpYyBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIgewogcHVibGljOgotCi0gICAgZXhwbGljaXQgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBm
aWx0ZXJQcmltaXRpdmVFbGVtZW50KQorICAgIGV4cGxpY2l0IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlKFNWR1N0eWxlZEVsZW1lbnQqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCiAg
ICAgICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQp
CiAgICAgewogICAgIH0KIAotICAgIC8vIFRoZXkgZGVwZW5kIG9uIHRoZSBSZW5kZXJPYmplY3Qg
YXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UuCi0gICAg
c3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVy
RWZmZWN0KiwgU1ZHRmlsdGVyKik7Ci0KLXByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJl
bmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZS4KKyAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbihGaWx0ZXJFZmZlY3QqKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZShib29sIHJlcGFpbnQg
PSBmYWxzZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCmluZGV4IDJiZDhhZWUuLjdlZWZmNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBAIC02MiwxMCArNjIsMTEgQEAg
dm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIAotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpk
eEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikKKyAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAgICAgaW52YWxpZGF0ZSgpOworCisg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmR5QXR0cikKKyAgICAgICAgaW52YWxpZGF0ZSh0cnVlKTsKIH0KIAogdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggMzRlMTllYS4uYTY1ZDIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXNfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
Ci0jaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50
LmgiCkBAIC01MSwxMCArNTEsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKIHByb3RlY3RlZDoKLSAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICBpbmxpbmUg
dm9pZCBpbnZhbGlkYXRlKGJvb2wgcmVwYWludCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQotICAgICAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbihwcmltaXRpdmVSZW5kZXJlcik7CisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKj4ocHJpbWl0aXZlUmVuZGVyZXIpLT5p
bnZhbGlkYXRlKHJlcGFpbnQpOwogICAgIH0KIAogcHJpdmF0ZToKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78684</attachid>
            <date>2011-01-12 06:26:14 -0800</date>
            <delta_ts>2011-01-13 06:41:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>15216</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAzYTMzZjNhM2RkYTQ1OWYzM2FkNmFhZTc0ZTNkYTFmNjU3YzIyMDUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDEyIEphbiAyMDExIDE1OjI0OjEzICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzNiArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAxICsKIC4uLi9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAxNCArKysr
KystLQogLi4uL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCAgICAgICAg
fCAgICAzICsrCiAuLi4vc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCAg
ICAgICB8ICAgMTYgKysrKysrLS0KIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuaCAgICAgICAgIHwgICAxNiArKysrLS0tLQogLi4uL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCAgICAgfCAgICA2ICsrLS0KIC4uLi9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCAgICAgIHwgICAgNiArKystCiAuLi4vc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oICAgICAgICB8ICAgIDcgKysrLQogOSBm
aWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMTZkOGJhYy4uNWQ3ZDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEx
LTAxLTEyICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU21hbGwgZmlsdGVyIHByaW1p
dGl2ZSByZW5kZXJlciBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMjAwCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9u
YWxpdHksIG5vIG5ldyB0ZXN0cyBhZGRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNTVkdSZXNvdXJjZUZp
bHRlcik6IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJpbWl0aXZlcywKKyAgICAgICAgYnV0IGZpbHRl
cnMgc2hvdWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8gYWxsb3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0
aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0
aXZlcyk6IFBhc3NpbmcgdGhlIHJlbmRlcmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnJlcGFpbnRGaWx0ZXJQcmltaXR2ZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzU1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAgIFRoZSBmaWx0ZXIgYXJndW1lbnQg
aXMgdW5uZWNlc3NhcnkgYW55bW9yZS4gQnV0IGlzIGlzIHN0aWxsIGtlcHQgYXMgYSBzdGF0aWMK
KyAgICAgICAgbWVtYmVyLCBzaW5jZSB0aGUgcHJpbWl0aXZlIHJlbmRlcmVyIHN0aWxsIGRvZXMg
bm90IGtub3cgYWJvdXQgdGhlCisgICAgICAgIEZpbHRlckVmZmVjdCBvYmplY3RzLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmludmFsaWRhdGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlKTogRnVuY3Rpb25h
bGl0eQorICAgICAgICBpcyBtb3ZlZCB0byBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyk6IFRoZQorICAgICAgICByZW5kZXJlcnMgYXJlIGFzc2lnbmVkIHRvIHRoZSBm
aWx0ZXIgZWZmZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFy
RWZmZWN0cyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlSZW5k
ZXJlcik6CisKIDIwMTEtMDEtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAyZjQ0M2VmLi5mZjk1N2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzEsNiArMzMxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKaW5kZXggNGJhNGUwYS4uZmU3ZGNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoRmlsdGVyKiBmaQogICAgICAgICAgICAg
YnVpbGRlci0+Y2xlYXJFZmZlY3RzKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fQotICAgICAgICBidWlsZGVyLT5hcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0
KTsKKyAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVj
dCwgZWZmZWN0RWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGVmZmVjdEVsZW1lbnQtPnNl
dFN0YW5kYXJkQXR0cmlidXRlcyhwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUsIGVmZmVjdC5nZXQo
KSk7CiAgICAgICAgIGJ1aWxkZXItPmFkZChlZmZlY3RFbGVtZW50LT5yZXN1bHQoKSwgZWZmZWN0
KTsKICAgICB9CkBAIC0yMDgsMTMgKzIwOCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjphcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAg
ICAgaWYgKCFsYXN0RWZmZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKGxhc3RFZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihsYXN0RWZmZWN0KTsKICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4
RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9v
IGJpZyBpbWFnZSBzaXplLAogICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0
aCBuZXcgc2NhbGUgZmFjdG9ycy4KICAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3Vi
UmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0
RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwg
ZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0
KTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2
ZSBzb21ldGhpbmcgbGlrZSA8ZyBmaWx0ZXI9Ii4uIi8+LgpAQCAtMzI0LDUgKzMyNCwxMyBAQCBG
bG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVu
ZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCit2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZXBhaW50RmlsdGVyUHJpbWl0dmUoUmVuZGVyT2JqZWN0
KiBvYmplY3QpCit7CisgICAgUmVuZGVyT2JqZWN0KiBmaWx0ZXIgPSBvYmplY3QtPnBhcmVudCgp
OworICAgIGlmICghZmlsdGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZpbHRlci0+cmVwYWludCgpOworfQorCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuaAppbmRleCBmOWExNWNlLi42YzlmZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC02NCw2ICs2
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUZpbHRlcigpOwog
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNl
RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBib29s
IG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSBzX3Jlc291cmNlVHlwZTsKIAorICAgIHN0YXRpYyB2b2lkIHJlcGFpbnRGaWx0ZXJQcmltaXR2
ZShSZW5kZXJPYmplY3QqKTsKKwogcHJpdmF0ZToKICAgICBib29sIGZpdHNJbk1heGltdW1JbWFn
ZVNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5jcHAKaW5kZXggZmM3MzYyZS4uMjYwMDRlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5jcHAKQEAgLTI5LDI1ICsyOSwyOCBAQAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmgiCiAKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0ZF
SW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1GbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgU1ZHRmlsdGVyKiBm
aWx0ZXIpCitGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVy
bWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKIHsKICAg
ICBGbG9hdFJlY3QgdW5pdGVSZWN0OwogICAgIEZsb2F0UmVjdCBzdWJyZWdpb25Cb3VuZGluZ0Jv
eCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOwogICAgIEZsb2F0UmVjdCBzdWJyZWdpb24g
PSBzdWJyZWdpb25Cb3VuZGluZ0JveDsKKyAgICBTVkdGaWx0ZXIqIGZpbHRlciA9IHN0YXRpY19j
YXN0PFNWR0ZpbHRlcio+KGVmZmVjdC0+ZmlsdGVyKCkpOwogCiAgICAgaWYgKGVmZmVjdC0+Zmls
dGVyRWZmZWN0VHlwZSgpICE9IEZpbHRlckVmZmVjdFR5cGVUaWxlKSB7CiAgICAgICAgIC8vIEZF
VHVyYnVsZW5jZSwgRkVJbWFnZSBhbmQgRkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMs
IHRha2UgdGhlIGZpbHRlciByZWdpb24gYXMgdW5pdGUgcmVjdC4KICAgICAgICAgaWYgKHVuc2ln
bmVkIG51bWJlck9mSW5wdXRFZmZlY3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5zaXplKCkp
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZm
ZWN0czsgKytpKQotICAgICAgICAgICAgICAgIHVuaXRlUmVjdC51bml0ZShkZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdChpKSwgZmlsdGVyKSk7Cisg
ICAgICAgICAgICAgICAgdW5pdGVSZWN0LnVuaXRlKGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZmZWN0KGkpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZl
Y3QtPmlucHV0RWZmZWN0KDApLCBmaWx0ZXIpOworICAgICAgICBkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdCgwKSk7CiAgICAgICAgIHVuaXRlUmVj
dCA9IGZpbHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKICAgICB9CiAKQEAgLTkwLDcg
KzkzLDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmkKICAgICAvLyBGRUltYWdlIG5lZWRzIHRo
ZSB1bmNsaXBwZWQgc3VicmVnaW9uIGluIGFic29sdXRlIGNvb3JkaW5hdGVzIHRvIGRldGVybWlu
ZSB0aGUgY29ycmVjdAogICAgIC8vIGRlc3RpbmF0aW9uIHJlY3QgaW4gY29tYmluYXRpb24gd2l0
aCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLgogICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUo
KSA9PSBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2UpCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RkVJ
bWFnZSo+KGVmZmVjdCktPnNldEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8RkVJbWFnZSo+KGVmZmVjdCktPnNldEFic29sdXRlU3VicmVn
aW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVj
dCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KICAgICBGbG9hdFJlY3QgYWJzb2x1dGVTY2FsZWRGaWx0
ZXJSZWdpb24gPSBmaWx0ZXItPmZpbHRlclJlZ2lvbigpOwpAQCAtMTAxLDYgKzEwNCwxMSBAQCBG
bG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbihGaQogICAgIHJldHVybiBzdWJyZWdpb247CiB9CiAKK3ZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmludmFsaWRhdGUoYm9vbCkKK3sKKyAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
aAppbmRleCBmMjVmNjJlLi5kZWU4YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5o
CkBAIC0zMCwyNSArMzAsMjUgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykK
IAogI2luY2x1ZGUgIlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlNWR0Zp
bHRlci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbHRlckVmZmVjdDsKKwogY2xhc3Mg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyIHsKIHB1YmxpYzoKLQotICAgIGV4cGxpY2l0IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVy
UHJpbWl0aXZlRWxlbWVudCkKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZShTVkdTdHlsZWRFbGVtZW50KiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQogICAgICAg
ICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQogICAg
IHsKICAgICB9CiAKLSAgICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFyZ3Vt
ZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgotICAgIHN0YXRp
YyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVj
dCosIFNWR0ZpbHRlciopOwotCi1wcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZSI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIFRoZXkgZGVwZW5kIG9uIHRoZSBSZW5kZXJP
YmplY3QgYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Uu
CisgICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
RmlsdGVyRWZmZWN0Kik7CisKKyAgICB2b2lkIGludmFsaWRhdGUoYm9vbCByZXBhaW50ID0gZmFs
c2UpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4
IDM0ZTE5ZWEuLjdiZmUyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTIyLDcgKzIyLDcgQEAK
ICNkZWZpbmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzX2gKIAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtNTEsMTAgKzUxLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiBwcm90ZWN0ZWQ6Ci0gICAgaW5saW5lIHZv
aWQgaW52YWxpZGF0ZSgpCisgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZShib29sIHJlcGFpbnQg
PSBmYWxzZSkKICAgICB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1pdGl2ZVJlbmRl
cmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocHJpbWl0aXZlUmVuZGVyZXIpOwor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUq
PihwcmltaXRpdmVSZW5kZXJlciktPmludmFsaWRhdGUocmVwYWludCk7CiAgICAgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCBiMzFiOTk0Li5iNjUzYTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcApAQCAtNjgsMTAgKzY4LDEyIEBAIEZpbHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6
Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAogICAgIHJldHVybiBt
X25hbWVkRWZmZWN0cy5nZXQoaWQpLmdldCgpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6
OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3RSZWZlcmVuY2UpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcGFzc0VmZmVjdFJlZmVyZW5jZSwg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3
bHkgY3JlYXRlZCBmaWx0ZXIgZWZmZWN0LgorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dFJlZmVyZW5jZSA9IHBhc3NFZmZlY3RSZWZlcmVuY2U7CiAgICAgQVNTRVJUKCFtX2VmZmVjdFJl
ZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0UmVmZXJlbmNlKSk7CisgICAgQVNTRVJUKG9iamVjdCAm
JiAhbV9lZmZlY3RSZW5kZXJlci5jb250YWlucyhvYmplY3QpKTsKICAgICBtX2VmZmVjdFJlZmVy
ZW5jZXMuYWRkKGVmZmVjdFJlZmVyZW5jZSwgRmlsdGVyRWZmZWN0U2V0KCkpOwogCiAgICAgRmls
dGVyRWZmZWN0KiBlZmZlY3QgPSBlZmZlY3RSZWZlcmVuY2UuZ2V0KCk7CkBAIC04MCw2ICs4Miw3
IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2Vz
KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjCiAgICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRv
IGFkZCB0aGUgc2FtZSB2YWx1ZSB0byBhIHNldCB0d2ljZS4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKICAgICAgICAgZ2V0RWZmZWN0UmVm
ZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQoZWZmZWN0KTsKKyAgICBtX2VmZmVj
dFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdFJlZmVyZW5jZSk7CiB9CiAKIHZvaWQgU1ZHRmls
dGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKQEAgLTg3LDYgKzkwLDcgQEAgdm9pZCBTVkdGaWx0
ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMoKQogICAgIG1fbGFzdEVmZmVjdCA9IDA7CiAgICAgbV9u
YW1lZEVmZmVjdHMuY2xlYXIoKTsKICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuY2xlYXIoKTsKKyAg
ICBtX2VmZmVjdFJlbmRlcmVyLmNsZWFyKCk7CiAgICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oCmluZGV4IGEzYzEyNDQuLjRkNzI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI0
LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0
KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRl
ckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsg
fQogCi0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRl
ckVmZmVjdD4pOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBpbmxpbmUgRmlsdGVy
RWZmZWN0U2V0JiBnZXRFZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQogICAg
IHsKQEAgLTUyLDYgKzUzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lZmZlY3RSZWZl
cmVuY2VzLmZpbmQoZWZmZWN0KS0+c2Vjb25kOwogICAgIH0KIAorICAgIC8vIFJlcXVpcmVkIHRv
IGNoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbHRlciBkdXJpbmcgYW4gc3ZnQXR0cmlidXRl
Q2hhbmdlZC4KKyAgICBpbmxpbmUgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGdldEVmZmVjdEJ5
UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpIHsgcmV0dXJuIG1fZWZmZWN0UmVuZGVyZXIu
Z2V0KG9iamVjdCk7IH0KKwogICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7CiAKIHByaXZhdGU6CkBA
IC02OSw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlzdCwgd2hp
Y2ggY29udGFpbnMgdGhvc2UgZmlsdGVyIGVmZmVjdHMsCiAgICAgLy8gd2hpY2ggZGVwZW5kcyBv
biB0aGUga2V5IGZpbHRlciBlZmZlY3QuCiAgICAgSGFzaE1hcDxSZWZQdHI8RmlsdGVyRWZmZWN0
PiwgRmlsdGVyRWZmZWN0U2V0PiBtX2VmZmVjdFJlZmVyZW5jZXM7CisgICAgSGFzaE1hcDxSZW5k
ZXJPYmplY3QqLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fZWZmZWN0UmVuZGVyZXI7CiAKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7CiB9OwotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="70033"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="70034"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78804</attachid>
            <date>2011-01-13 06:41:28 -0800</date>
            <delta_ts>2011-01-18 06:10:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>14503</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBmOTRjMGRiYzQ5NjZmMjdhYmIxNTJjYTZkM2Q0ZmU4OTEwNjI1ZTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDEzIEphbiAyMDExIDE1OjMxOjU2ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzNSArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAgICAgfCAgICAxICsKIC4uLi9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAgNiArKy0t
CiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oICAgICAgICB8ICAg
IDEgKwogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAgICAgICAg
fCAgIDE3ICsrKysrKystLQogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5oICAgICAgICAgfCAgIDE2ICsrKystLS0tCiAuLi4vc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oICAgICB8ICAgIDYgKystLQogLi4uL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwICAgICAgfCAgICA2ICsrKy0KIC4uLi9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggICAgICAgIHwgICAgNyArKystCiA5IGZpbGVz
IGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjYzVmYTM3Li4zNzAyZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDEt
MTIgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbWFsbCBmaWx0ZXIgcHJpbWl0aXZl
IHJlbmRlcmVyIGltcHJvdmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTIyMDAKKworICAgICAgICBObyBjaGFuZ2Ugb2YgZnVuY3Rpb25hbGl0
eSwgbm8gbmV3IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1NWR1Jlc291cmNlRmlsdGVy
KTogTm90IG9ubHkgdGhlIGZpbHRlciBwcmltaXRpdmVzLAorICAgICAgICBidXQgZmlsdGVycyBz
aG91bGQgYWxzbyBiZSBkZXRlY3RlZCB0byBhbGxvdyBzYWZlIHRlc3RpbmcgYW5kIGNhc3Rpbmcu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVz
KTogUGFzc2luZyB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmlzU1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbik6CisgICAgICAgIFRoZSBmaWx0ZXIgYXJndW1lbnQgaXMgdW5uZWNlc3Nhcnkg
YW55bW9yZS4gQnV0IGlzIGlzIHN0aWxsIGtlcHQgYXMgYSBzdGF0aWMKKyAgICAgICAgbWVtYmVy
LCBzaW5jZSB0aGUgcHJpbWl0aXZlIHJlbmRlcmVyIHN0aWxsIGRvZXMgbm90IGtub3cgYWJvdXQg
dGhlCisgICAgICAgIEZpbHRlckVmZmVjdCBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmludmFsaWRhdGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlKTogRnVuY3Rpb25hbGl0eQorICAgICAgICBp
cyBtb3ZlZCB0byBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6IFRo
ZQorICAgICAgICByZW5kZXJlcnMgYXJlIGFzc2lnbmVkIHRvIHRoZSBmaWx0ZXIgZWZmZWN0cy4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlSZW5kZXJlcik6CisKIDIwMTEt
MDEtMTMgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDJmNDQzZWYuLmZmOTU3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKQEAgLTMzMSw2ICszMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
U1ZHSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0ZvcmVpZ25PYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1NWR1Jlc291cmNlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1NoYWRvd1RyZWVSb290Q29u
dGFpbmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA0
YmE0ZTBhLi43YjllMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIFBh
c3NSZWZQdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyhGaWx0ZXIqIGZpCiAgICAgICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVjdHMo
KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXItPmFw
cGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpOworICAgICAgICBidWlsZGVyLT5h
cHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LCBlZmZlY3RFbGVtZW50LT5yZW5k
ZXJlcigpKTsKICAgICAgICAgZWZmZWN0RWxlbWVudC0+c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSwgZWZmZWN0LmdldCgpKTsKICAgICAgICAgYnVpbGRlci0+
YWRkKGVmZmVjdEVsZW1lbnQtPnJlc3VsdCgpLCBlZmZlY3QpOwogICAgIH0KQEAgLTIwOCwxMyAr
MjA4LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKiwKICAgICBpZiAoIWxhc3RFZmZlY3QpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVy
RGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QpOwogICAgIEZs
b2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7CiAgICAgLy8g
QXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAg
Ly8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgog
ICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6ZShzdWJSZWdpb24uc2l6ZSgpLCBzY2FsZSkp
IHsKICAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxl
KTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0LCBmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0
KCkpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QpOwogICAgIH0KIAogICAgIC8vIElm
IHRoZSBkcmF3aW5nUmVnaW9uIGlzIGVtcHR5LCB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIDxnIGZp
bHRlcj0iLi4iLz4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggZjlhMTVjZS4uYThjN2MyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciI7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRh
dGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVu
ZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4IGZjNzM2MmUuLjM4ZDgzZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCkBAIC0yOSwyNSArMjksMjkgQEAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJTVkdGRUltYWdlLmgiCisjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QsIFNWR0Zp
bHRlciogZmlsdGVyKQorRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3Qp
CiB7CiAgICAgRmxvYXRSZWN0IHVuaXRlUmVjdDsKICAgICBGbG9hdFJlY3Qgc3VicmVnaW9uQm91
bmRpbmdCb3ggPSBlZmZlY3QtPmVmZmVjdEJvdW5kYXJpZXMoKTsKICAgICBGbG9hdFJlY3Qgc3Vi
cmVnaW9uID0gc3VicmVnaW9uQm91bmRpbmdCb3g7CisgICAgU1ZHRmlsdGVyKiBmaWx0ZXIgPSBz
dGF0aWNfY2FzdDxTVkdGaWx0ZXIqPihlZmZlY3QtPmZpbHRlcigpKTsKKyAgICBBU1NFUlQoZmls
dGVyKTsKIAogICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSAhPSBGaWx0ZXJFZmZl
Y3RUeXBlVGlsZSkgewogICAgICAgICAvLyBGRVR1cmJ1bGVuY2UsIEZFSW1hZ2UgYW5kIEZFRmxv
b2QgZG9uJ3QgaGF2ZSBpbnB1dCBlZmZlY3RzLCB0YWtlIHRoZSBmaWx0ZXIgcmVnaW9uIGFzIHVu
aXRlIHJlY3QuCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKLSAgICAgICAgICAgICAgICB1
bml0ZVJlY3QudW5pdGUoZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+
aW5wdXRFZmZlY3QoaSksIGZpbHRlcikpOworICAgICAgICAgICAgICAgIHVuaXRlUmVjdC51bml0
ZShkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdChp
KSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHVuaXRlUmVjdCA9IGZpbHRlci0+Zmls
dGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKICAgICB9IGVsc2UgewotICAgICAgICBkZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdCgwKSwgZmlsdGVyKTsK
KyAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRF
ZmZlY3QoMCkpOwogICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZpbHRlclJlZ2lvbkluVXNl
clNwYWNlKCk7CiAgICAgfQogCkBAIC05MCw3ICs5NCw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KEZpCiAgICAgLy8gRkVJbWFnZSBuZWVkcyB0aGUgdW5jbGlwcGVkIHN1YnJlZ2lvbiBpbiBhYnNv
bHV0ZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKICAgICAvLyBkZXN0aW5h
dGlvbiByZWN0IGluIGNvbWJpbmF0aW9uIHdpdGggcHJlc2VydmVBc3BlY3RSYXRpby4KICAgICBp
ZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgPT0gRmlsdGVyRWZmZWN0VHlwZUltYWdlKQot
ICAgICAgICByZWludGVycHJldF9jYXN0PEZFSW1hZ2UqPihlZmZlY3QpLT5zZXRBYnNvbHV0ZVN1
YnJlZ2lvbihhYnNvbHV0ZVN1YnJlZ2lvbik7CisgICAgICAgIHN0YXRpY19jYXN0PEZFSW1hZ2Uq
PihlZmZlY3QpLT5zZXRBYnNvbHV0ZVN1YnJlZ2lvbihhYnNvbHV0ZVN1YnJlZ2lvbik7CiAKICAg
ICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciByZWdpb24uCiAgICAg
RmxvYXRSZWN0IGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gZmlsdGVyLT5maWx0ZXJSZWdp
b24oKTsKQEAgLTEwMSw2ICsxMDUsMTEgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmkKICAgICBy
ZXR1cm4gc3VicmVnaW9uOwogfQogCit2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlOjppbnZhbGlkYXRlKGJvb2wpCit7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbih0aGlzKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZjI1ZjYyZS4uZGVlOGMxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzAsMjUgKzMwLDI1IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNpbmNsdWRlICJSZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBGaWx0ZXJFZmZlY3Q7CisKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0KLSAgICBl
eHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCisgICAgZXhwbGlj
aXQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHU3R5bGVkRWxlbWVudCogZmls
dGVyUHJpbWl0aXZlRWxlbWVudCkKICAgICAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIo
ZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgLy8gVGhleSBkZXBl
bmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6YXBwbHlSZXNvdXJjZS4KLSAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqLCBTVkdGaWx0ZXIqKTsKLQotcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAv
LyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgorICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCopOworCisgICAgdm9pZCBp
bnZhbGlkYXRlKGJvb2wgcmVwYWludCA9IGZhbHNlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCAzNGUxOWVhLi43YmZlMmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlc19oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykK
LSNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQu
aCIKQEAgLTUxLDEwICs1MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogcHJvdGVjdGVkOgotICAgIGlubGluZSB2b2lkIGludmFsaWRhdGUoKQorICAgIGlubGluZSB2
b2lkIGludmFsaWRhdGUoYm9vbCByZXBhaW50ID0gZmFsc2UpCiAgICAgewogICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKHByaW1pdGl2ZVJlbmRlcmVyKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKj4ocHJpbWl0aXZlUmVuZGVyZXIpLT5pbnZhbGlk
YXRlKHJlcGFpbnQpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggYjMx
Yjk5NC4uYjY1M2E4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTY4LDEwICs2OCwxMiBAQCBGaWx0
ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKS5nZXQoKTsK
IH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5j
ZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVmZXJlbmNlKQordm9pZCBTVkdGaWx0ZXJC
dWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IHBhc3NFZmZlY3RSZWZlcmVuY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAg
IC8vIFRoZSBlZmZlY3QgbXVzdCBiZSBhIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGVmZmVjdC4KKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3RSZWZlcmVuY2UgPSBwYXNzRWZmZWN0UmVmZXJl
bmNlOwogICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdFJlZmVy
ZW5jZSkpOworICAgIEFTU0VSVChvYmplY3QgJiYgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMo
b2JqZWN0KSk7CiAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3RSZWZlcmVuY2UsIEZp
bHRlckVmZmVjdFNldCgpKTsKIAogICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gZWZmZWN0UmVm
ZXJlbmNlLmdldCgpOwpAQCAtODAsNiArODIsNyBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFw
cGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlYwog
ICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBhZGQgdGhlIHNhbWUgdmFsdWUgdG8gYSBzZXQg
dHdpY2UuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3Rz
OyArK2kpCiAgICAgICAgIGdldEVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChp
KSkuYWRkKGVmZmVjdCk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0LCBlZmZlY3RS
ZWZlcmVuY2UpOwogfQogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCkBA
IC04Nyw2ICs5MCw3IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKICAg
ICBtX2xhc3RFZmZlY3QgPSAwOwogICAgIG1fbmFtZWRFZmZlY3RzLmNsZWFyKCk7CiAgICAgbV9l
ZmZlY3RSZWZlcmVuY2VzLmNsZWFyKCk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5jbGVhcigpOwog
ICAgIGFkZEJ1aWx0aW5FZmZlY3RzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCBhM2MxMjQ0Li40
ZDcyODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQzLDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9F
ZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKKyAgICB2b2lkIGFwcGVuZEVm
ZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4sIFJlbmRlck9i
amVjdCopOwogCiAgICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZ2V0RWZmZWN0UmVmZXJlbmNl
cyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKICAgICB7CkBAIC01Miw2ICs1Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fZWZmZWN0UmVmZXJlbmNlcy5maW5kKGVmZmVjdCktPnNlY29uZDsK
ICAgICB9CiAKKyAgICAvLyBSZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgb2YgYSBm
aWx0ZXIgZHVyaW5nIGFuIHN2Z0F0dHJpYnV0ZUNoYW5nZWQuCisgICAgaW5saW5lIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBnZXRFZmZlY3RCeVJlbmRlcmVyKFJlbmRlck9iamVjdCogb2JqZWN0
KSB7IHJldHVybiBtX2VmZmVjdFJlbmRlcmVyLmdldChvYmplY3QpOyB9CisKICAgICB2b2lkIGNs
ZWFyRWZmZWN0cygpOwogCiBwcml2YXRlOgpAQCAtNjksNiArNzMsNyBAQCBwcml2YXRlOgogICAg
IC8vIFRoZSB2YWx1ZSBpcyBhIGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRob3NlIGZpbHRlciBlZmZl
Y3RzLAogICAgIC8vIHdoaWNoIGRlcGVuZHMgb24gdGhlIGtleSBmaWx0ZXIgZWZmZWN0LgogICAg
IEhhc2hNYXA8UmVmUHRyPEZpbHRlckVmZmVjdD4sIEZpbHRlckVmZmVjdFNldD4gbV9lZmZlY3RS
ZWZlcmVuY2VzOworICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgUmVmUHRyPEZpbHRlckVmZmVj
dD4gPiBtX2VmZmVjdFJlbmRlcmVyOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9sYXN0
RWZmZWN0OwogfTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="70168"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="70169"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79273</attachid>
            <date>2011-01-18 06:10:22 -0800</date>
            <delta_ts>2011-01-21 06:44:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>22975</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBmZjM4NjFiNjI4Njk5ODY4YTQxMTMyM2ViMzM4MjQxYWQwMmFkMWMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDE4IEphbiAyMDExIDE1OjA1OjMwICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA1OSArKysrKysrKysrKysrKysrKysrLQogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCAgICAgfCAgIDEwICsrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICAgICAgfCAgICAxICsK
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAg
MSArCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8
ICAgMzMgKysrKysrKysrKy0KIC4uLi9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmggICAgICAgIHwgICAgMyArCiAuLi4vc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmNwcCAgICAgICB8ICAgMTIgKysrLQogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oICAgICAgICAgfCAgIDE0ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCB8ICAgMTggKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggICB8ICAgIDEgKwogLi4uL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwICAgfCAgICA2ICsrCiAu
Li4vc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oICAgICB8ICAgMTEg
KysrLQogLi4uL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwICAgICAg
fCAgICA3ICsrLQogLi4uL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCAg
ICAgICAgfCAgICA5ICsrLQogMTQgZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDIy
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjMxNGE3Li42ZjM3MTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDEtMTggIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTbWFsbCBmaWx0ZXIgcHJpbWl0aXZlIHJlbmRlcmVyIGltcHJvdmVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIyMDAKKworICAgICAg
ICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBwcm9wb3NlZCByZXBhaW50IGluZnJhc3RydWN0dXJl
CisgICAgICAgIGRlbW9uc3RyYXRlZCBvbiB0aGUgZGlmZnVzZSBsaWdodGluZyBmaWx0ZXIsIGJ1
dCBzdGlsbAorICAgICAgICBjYWxscyByZWxheW91dCAoVGh1cywgdGhpcyBpcyBqdXN0IGEgcGVy
Zm9ybWFuY2Ugb3ZlcmhlYWQKKyAgICAgICAgYXQgdGhpcyBtb21lbnQpLgorCisgICAgICAgIE5v
IGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5LCBubyBuZXcgdGVzdHMgYWRkZWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KTogQ2xlYXJpbmcgdGhlIGN1cnJlbnRs
eSBzdG9yZWQgaW1hZ2UKKyAgICAgICAgYmVmb3JlIHJlcGFpbnRpbmcuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzU1ZH
UmVzb3VyY2VGaWx0ZXIpOiBOb3Qgb25seSB0aGUgZmlsdGVyIHByaW1pdGl2ZXMsCisgICAgICAg
IGJ1dCBmaWx0ZXJzIHNob3VsZCBhbHNvIGJlIGRldGVjdGVkIHRvIGFsbG93IHNhZmUgdGVzdGlu
ZyBhbmQgY2FzdGluZy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOiBQYXNzaW5nIHRoZSByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlY3Vyc2l2ZUNsZWFyUmVzdWx0KTogUmVjdXJzaXZlbHkgY2xlYXJpbmcgdGhlIHJlc3Vs
dAorICAgICAgICBpbWFnZXMgZm9yIHRob3NlIGZpbHRlcnMsIHdob3NlIGRlcGVuZCBvbiB0aGUg
c3RhcnRpbmcgZmlsdGVyLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnNldEFsbEZpbHRlckVmZmVjdHNBdHRyaWJ1dGUpOiBTZWFyY2hpbmcKKyAgICAgICAgZm9y
IGFsbCBGaWx0ZXJFZmZlY3RzLCB3aG9zZSBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IEZpbHRlckVs
ZW1lbnQuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzU1ZHUmVzb3Vy
Y2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAg
IFRoZSBmaWx0ZXIgYXJndW1lbnQgaXMgdW5uZWNlc3NhcnkgYW55bW9yZS4gQnV0IGlzIGlzIHN0
aWxsIGtlcHQgYXMgYSBzdGF0aWMKKyAgICAgICAgbWVtYmVyLCBzaW5jZSB0aGUgcHJpbWl0aXZl
IHJlbmRlcmVyIHN0aWxsIGRvZXMgbm90IGtub3cgYWJvdXQgdGhlCisgICAgICAgIEZpbHRlckVm
ZmVjdCBvYmplY3RzLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAg
IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBzaG91bGQgbm90IGJlIHByaXZhdGUu
CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBEZW1vaW5nIHRoZSBuZXcgYXR0cmlidXRl
IHNldHRpbmcgbWVjaGFuaXNtLgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaDoKKyAgICAgICAgQWRkaW5nIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZQorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c2V0QWxsRmlsdGVyRWZmZWN0c0F0dHJpYnV0ZSk6CisgICAgICAg
IFNjYW5uaW5nIHRoZSBGaWx0ZXJCdWlsZGVyIGxpc3QsIGFuZCBjYWxscyB0aGUgbmVjZXNzYXJ5
IGNhbGxiYWNrcy4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyk6IFRoZQorICAgICAgICByZW5kZXJlcnMgYXJlIGFzc2lnbmVk
IHRvIHRoZSBmaWx0ZXIgZWZmZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxk
ZXI6OmNsZWFyRWZmZWN0cyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6ZWZmZWN0
UmVmZXJlbmNlcyk6ICdnZXQnIGlzIHVubmVjZXNzYXJ5CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJCdWlsZGVyOjplZmZlY3RCeVJlbmRlcmVyKTogcmV0dXJucyB0aGUKKyAgICAgICAgRmls
dGVyRWZmZWN0IGJlbG9uZ3MgdG8gdGhpcyBSZW5kZXJPYmplY3QuCisKIDIwMTEtMDEtMTcgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGNy
YXNoIGZpeCwgd2hpY2ggaW50cm9kdWNlZCBhdCByNzU5OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRl
eCA4NTE1NGI1Li5hODRmYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC03Nyw2ICs3NywxNiBA
QCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVy
KSBjb25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQog
Cit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQoreworICAgIGlmIChtX2ltYWdlQnVm
ZmVyUmVzdWx0KQorICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CisgICAgaWYg
KG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQuY2xlYXIoKTsKKyAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmNsZWFyKCk7Cit9CisKIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogewogICAgIGlmICghaGFzUmVzdWx0KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaAppbmRleCAwNjJkZDFiLi4yZGU4YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAg
LTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgpOwogCiAg
ICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0IHx8
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgfHwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7
IH0KKyAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZm
ZXIoKTsKICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25z
dCBJbnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzUHJlbXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAppbmRleCBjZjA4YTBkLi4xMzlhMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0zMzIsNiArMzMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFkb3dUcmVlUm9vdENv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXgg
NGJhNGUwYS4uNWFjNzMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQ
YXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMoRmlsdGVyKiBmaQogICAgICAgICAgICAgYnVpbGRlci0+Y2xlYXJFZmZlY3Rz
KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBidWlsZGVyLT5h
cHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgYnVpbGRlci0+
YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCwgZWZmZWN0RWxlbWVudC0+cmVu
ZGVyZXIoKSk7CiAgICAgICAgIGVmZmVjdEVsZW1lbnQtPnNldFN0YW5kYXJkQXR0cmlidXRlcyhw
cmltaXRpdmVCb3VuZGluZ0JveE1vZGUsIGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGJ1aWxkZXIt
PmFkZChlZmZlY3RFbGVtZW50LT5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICB9CkBAIC0yMDgsMTMg
KzIwOCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFsYXN0RWZmZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QsIGZpbHRl
ckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICBG
bG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwogICAgIC8v
IEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLAogICAg
IC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFjdG9ycy4K
ICAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUp
KSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2Fs
ZSk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdl
dCgpKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICB9CiAKICAgICAvLyBJ
ZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8ZyBm
aWx0ZXI9Ii4uIi8+LgpAQCAtMzI0LDUgKzMyNCwzMiBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAg
ICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCitzdGF0aWMgdm9pZCByZWN1cnNpdmVDbGVhclJl
c3VsdChTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKK3sK
KyAgICBpZiAoZWZmZWN0LT5oYXNSZXN1bHQoKSkgeworICAgICAgICBlZmZlY3QtPmNsZWFyUmVz
dWx0KCk7CisKKyAgICAgICAgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiYgZWZmZWN0UmVmZXJlbmNl
cyA9IGJ1aWxkZXItPmVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgSGFzaFNldDxG
aWx0ZXJFZmZlY3QqPjo6aXRlcmF0b3IgZW5kID0gZWZmZWN0UmVmZXJlbmNlcy5lbmQoKTsKKyAg
ICAgICAgZm9yIChIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBpdCA9IGVmZmVjdFJl
ZmVyZW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgcmVjdXJzaXZl
Q2xlYXJSZXN1bHQoYnVpbGRlciwgKml0KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnNldEFsbEZpbHRlckVmZmVjdHNBdHRyaWJ1dGUoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKK3sKKyAgICBIYXNoTWFwPFJl
bmRlck9iamVjdCosIEZpbHRlckRhdGEqPjo6aXRlcmF0b3IgZW5kID0gbV9maWx0ZXIuZW5kKCk7
CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBwcmltaXR2ZSA9IHN0
YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyo+KG9iamVjdC0+
bm9kZSgpKTsKKworICAgIGZvciAoSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJEYXRhKj46
Oml0ZXJhdG9yIGl0ID0gbV9maWx0ZXIuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIFNWR0ZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIgPSBpdC0+c2Vjb25kLT5idWlsZGVyLmdldCgp
OworICAgICAgICBGaWx0ZXJFZmZlY3QqIGVmZmVjdCA9IGJ1aWxkZXItPmVmZmVjdEJ5UmVuZGVy
ZXIob2JqZWN0KTsKKyAgICAgICAgaWYgKGVmZmVjdCkgeworICAgICAgICAgICAgcHJpbWl0dmUt
PnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShlZmZlY3QsIGF0dHJpYnV0ZSk7CisgICAgICAgICAg
ICByZWN1cnNpdmVDbGVhclJlc3VsdChidWlsZGVyLCBlZmZlY3QpOworICAgICAgICB9CisgICAg
fQorfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCBmOWExNWNlLi5lMTUxNjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcigpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52
YWxpZGF0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNo
ZShSZW5kZXJPYmplY3QqLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKQEAgLTc4
LDYgKzc5LDggQEAgcHVibGljOgogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZmlsdGVy
VW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNWR0ZpbHRlckVs
ZW1lbnQqPihub2RlKCkpLT5maWx0ZXJVbml0cygpKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRp
Y19jYXN0PFNWR0ZpbHRlckVsZW1lbnQqPihub2RlKCkpLT5wcmltaXRpdmVVbml0cygpKTsgfQog
CisgICAgdm9pZCBzZXRBbGxGaWx0ZXJFZmZlY3RzQXR0cmlidXRlKFJlbmRlck9iamVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3Rh
dGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmNwcAppbmRleCBmYzczNjJlLi42NGRmNzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcApAQCAtMjksMjUgKzI5LDI5IEBACiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUuaCIKIAorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAi
U1ZHRkVJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0LCBTVkdGaWx0
ZXIqIGZpbHRlcikKK0Zsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0KQog
ewogICAgIEZsb2F0UmVjdCB1bml0ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHN1YnJlZ2lvbkJvdW5k
aW5nQm94ID0gZWZmZWN0LT5lZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgRmxvYXRSZWN0IHN1YnJl
Z2lvbiA9IHN1YnJlZ2lvbkJvdW5kaW5nQm94OworICAgIFNWR0ZpbHRlciogZmlsdGVyID0gc3Rh
dGljX2Nhc3Q8U1ZHRmlsdGVyKj4oZWZmZWN0LT5maWx0ZXIoKSk7CisgICAgQVNTRVJUKGZpbHRl
cik7CiAKICAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0gRmlsdGVyRWZmZWN0
VHlwZVRpbGUpIHsKICAgICAgICAgLy8gRkVUdXJidWxlbmNlLCBGRUltYWdlIGFuZCBGRUZsb29k
IGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBhcyB1bml0
ZSByZWN0LgogICAgICAgICBpZiAodW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMgPSBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpLnNpemUoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgICAgICAgICAgdW5p
dGVSZWN0LnVuaXRlKGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlu
cHV0RWZmZWN0KGkpLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUo
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZpbHRl
clJlZ2lvbkluVXNlclNwYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRlcik7Cisg
ICAgICAgIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZm
ZWN0KDApKTsKICAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJT
cGFjZSgpOwogICAgIH0KIApAQCAtOTAsNyArOTQsNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihG
aQogICAgIC8vIEZFSW1hZ2UgbmVlZHMgdGhlIHVuY2xpcHBlZCBzdWJyZWdpb24gaW4gYWJzb2x1
dGUgY29vcmRpbmF0ZXMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0CiAgICAgLy8gZGVzdGluYXRp
b24gcmVjdCBpbiBjb21iaW5hdGlvbiB3aXRoIHByZXNlcnZlQXNwZWN0UmF0aW8uCiAgICAgaWYg
KGVmZmVjdC0+ZmlsdGVyRWZmZWN0VHlwZSgpID09IEZpbHRlckVmZmVjdFR5cGVJbWFnZSkKLSAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxGRUltYWdlKj4oZWZmZWN0KS0+c2V0QWJzb2x1dGVTdWJy
ZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOworICAgICAgICBzdGF0aWNfY2FzdDxGRUltYWdlKj4o
ZWZmZWN0KS0+c2V0QWJzb2x1dGVTdWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOwogCiAgICAg
Ly8gQ2xpcCBldmVyeSBmaWx0ZXIgZWZmZWN0IHRvIHRoZSBmaWx0ZXIgcmVnaW9uLgogICAgIEZs
b2F0UmVjdCBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci0+ZmlsdGVyUmVnaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZjI1ZjYyZS4uNWZkNWRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzAsMjUgKzMwLDIzIEBACiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNpbmNsdWRlICJSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBGaWx0ZXJFZmZlY3Q7CisKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0KLSAg
ICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCisgICAgZXhw
bGljaXQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHU3R5bGVkRWxlbWVudCog
ZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKICAgICAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgLy8gVGhleSBk
ZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZS4KLSAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqLCBTVkdGaWx0ZXIqKTsKLQotcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAi
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CiAgICAgdmlydHVhbCBib29sIGlz
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlLgorICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCopOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA0OTg4OGRhLi44YTAxYjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAt
ODQsMTAgKzg0LDI4IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3Zv
aWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorewor
ICAgIEZFRGlmZnVzZUxpZ2h0aW5nKiBkaWZmdXNlTGlnaHRpbmcgPSBzdGF0aWNfY2FzdDxGRURp
ZmZ1c2VMaWdodGluZyo+KGVmZmVjdCk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyKQorICAgICAgICBkaWZmdXNlTGlnaHRpbmctPnNldFN1cmZhY2VTY2Fs
ZShzdXJmYWNlU2NhbGUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRp
ZmZ1c2VDb25zdGFudEF0dHIpCisgICAgICAgIGRpZmZ1c2VMaWdodGluZy0+c2V0RGlmZnVzZUNv
bnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKSB7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
ZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CisgICAgICAgIGRpZmZ1c2VMaWdodGlu
Zy0+c2V0TGlnaHRpbmdDb2xvcihmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xv
cigpKTsKKyAgICB9Cit9CisKIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiAKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFu
dEF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIK
KyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikKKyAg
ICAgICAgc2V0QWxsRmlsdGVyRWZmZWN0c0F0dHJpYnV0ZShhdHRyTmFtZSk7CisKICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZGlmZnVzZUNvbnN0YW50QXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IGQ1NmNlZDkuLmU1MDI4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTM5LDYgKzM5
LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDAwZjk5YzUuLjEwMzBiNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC03MCw2ICs3MCwxMiBAQCB2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogICAgICAgICByZXR1cm4gU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpCit7CisgICAgLy8gV2hlbiBhbGwgZmlsdGVycyBzdXBwb3J0IHRoaXMgbWV0
aG9kLCBpdCB3aWxsIGJlIGNoYW5nZWQgdG8gYSBwdXJlIHZpcnR1YWwgbWV0aG9kLgorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCAzNGUxOWVhLi42MTFhZWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCkBAIC0yMiw3ICsyMiw4IEBACiAjZGVmaW5lIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlc19oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykK
LSNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
U3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtNDEsNiArNDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoYm9vbCwgRmlsdGVyRWZm
ZWN0KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTUwLDEzICs1Miwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKLXByb3RlY3RlZDoK
ICAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKICAgICB7CiAgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKICAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cHJpbWl0aXZlUmVuZGVyZXIpOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIHNldEFsbEZpbHRl
ckVmZmVjdHNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQorICAgIHsK
KyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigp
KQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihwcmlt
aXRpdmVSZW5kZXJlci0+cGFyZW50KCkpLT5zZXRBbGxGaWx0ZXJFZmZlY3RzQXR0cmlidXRlKHBy
aW1pdGl2ZVJlbmRlcmVyLCBhdHRyaWJ1dGUpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHAKaW5kZXggYjMxYjk5NC4uZTQ0OGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTY4
LDEwICs2OCwxMSBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVj
dHMuZ2V0KGlkKS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZl
Y3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVmZXJlbmNl
KQordm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMo
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVmZXJlbmNlLCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKICAgICAvLyBUaGUgZWZmZWN0IG11c3QgYmUgYSBuZXdseSBjcmVhdGVkIGZpbHRlciBl
ZmZlY3QuCiAgICAgQVNTRVJUKCFtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0UmVm
ZXJlbmNlKSk7CisgICAgQVNTRVJUKG9iamVjdCAmJiAhbV9lZmZlY3RSZW5kZXJlci5jb250YWlu
cyhvYmplY3QpKTsKICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGVmZmVjdFJlZmVyZW5jZSwg
RmlsdGVyRWZmZWN0U2V0KCkpOwogCiAgICAgRmlsdGVyRWZmZWN0KiBlZmZlY3QgPSBlZmZlY3RS
ZWZlcmVuY2UuZ2V0KCk7CkBAIC03OSw3ICs4MCw4IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6
YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
CiAKICAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gYWRkIHRoZSBzYW1lIHZhbHVlIHRvIGEg
c2V0IHR3aWNlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZm
ZWN0czsgKytpKQotICAgICAgICBnZXRFZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5wdXRFZmZl
Y3QoaSkpLmFkZChlZmZlY3QpOworICAgICAgICBlZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5w
dXRFZmZlY3QoaSkpLmFkZChlZmZlY3QpOworICAgIG1fZWZmZWN0UmVuZGVyZXIuYWRkKG9iamVj
dCwgZWZmZWN0UmVmZXJlbmNlLmdldCgpKTsKIH0KIAogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpj
bGVhckVmZmVjdHMoKQpAQCAtODcsNiArODksNyBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNs
ZWFyRWZmZWN0cygpCiAgICAgbV9sYXN0RWZmZWN0ID0gMDsKICAgICBtX25hbWVkRWZmZWN0cy5j
bGVhcigpOwogICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5jbGVhcigpOworICAgIG1fZWZmZWN0UmVu
ZGVyZXIuY2xlYXIoKTsKICAgICBhZGRCdWlsdGluRWZmZWN0cygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgK
aW5kZXggYTNjMTI0NC4uOWM5ZmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjQsNiArMjQsNyBAQAog
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC00MywxNSArNDQsMTggQEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0
QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxh
c3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAotICAgIHZv
aWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
KyAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZm
ZWN0PiwgUmVuZGVyT2JqZWN0Kik7CiAKLSAgICBpbmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBnZXRF
ZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQorICAgIGlubGluZSBGaWx0ZXJF
ZmZlY3RTZXQmIGVmZmVjdFJlZmVyZW5jZXMoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiAgICAgewog
ICAgICAgICAvLyBPbmx5IGFsbG93ZWQgZm9yIGVmZmVjdHMgYmVsb25ncyB0byB0aGlzIGJ1aWxk
ZXIuCiAgICAgICAgIEFTU0VSVChtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7
CiAgICAgICAgIHJldHVybiBtX2VmZmVjdFJlZmVyZW5jZXMuZmluZChlZmZlY3QpLT5zZWNvbmQ7
CiAgICAgfQogCisgICAgLy8gUmVxdWlyZWQgdG8gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzIG9mIGEg
ZmlsdGVyIGR1cmluZyBhbiBzdmdBdHRyaWJ1dGVDaGFuZ2VkLgorICAgIGlubGluZSBGaWx0ZXJF
ZmZlY3QqIGVmZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpIHsgcmV0dXJuIG1f
ZWZmZWN0UmVuZGVyZXIuZ2V0KG9iamVjdCk7IH0KKwogICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7
CiAKIHByaXZhdGU6CkBAIC02OSw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHZhbHVl
IGlzIGEgbGlzdCwgd2hpY2ggY29udGFpbnMgdGhvc2UgZmlsdGVyIGVmZmVjdHMsCiAgICAgLy8g
d2hpY2ggZGVwZW5kcyBvbiB0aGUga2V5IGZpbHRlciBlZmZlY3QuCiAgICAgSGFzaE1hcDxSZWZQ
dHI8RmlsdGVyRWZmZWN0PiwgRmlsdGVyRWZmZWN0U2V0PiBtX2VmZmVjdFJlZmVyZW5jZXM7Cisg
ICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdFJlbmRlcmVy
OwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9sYXN0RWZmZWN0OwogfTsKLS0gCjEuNi4w
LjQKCg==
</data>
<flag name="review"
          id="70671"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79729</attachid>
            <date>2011-01-21 06:44:29 -0800</date>
            <delta_ts>2011-01-24 05:49:06 -0800</delta_ts>
            <desc>patch again</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>25310</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAwYzJmMTU4ZGVmZTExY2Y3ZTVmNzFlNzMwOTgxM2QwNDE4ODk3YTg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBGcmksIDIxIEphbiAyMDExIDE0OjI0OjMwICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCAgICAgfCAgIDEwICsrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oICAgICAgIHwgICAgMSAr
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggICAgICAgICAgICB8ICAg
IDEgKwogLi4uL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICAgICAg
fCAgIDUwICsrKysrKysrKysrKysrKy0tCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oICAgICAgICB8ICAgIDQgKysKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwICAgICAgIHwgICAxMiArKystLQogLi4uL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oICAgICAgICAgfCAgIDIxICsrKysrLS0tCiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCB8ICAgMTkgKysrKysr
LQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oICAgfCAg
ICAxICsKIC4uLi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCAg
IHwgICAgNiArKwogLi4uL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCAgICAgfCAgIDExICsrKy0KIC4uLi9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcCAgICAgIHwgICAgNyArKy0KIC4uLi9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmggICAgICAgIHwgICAgOSArKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAxODUgaW5z
ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU2ZDI0YjMuLjhhNDE2
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMS0wMS0xOCAgWm9sdGFuIEhlcmN6
ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNtYWxsIGZpbHRlciBwcmltaXRpdmUgcmVuZGVyZXIgaW1wcm92
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MjIwMAorCisgICAgICAgIFRoaXMgcGF0Y2ggY29udGFpbnMgdGhlIHByb3Bvc2VkIHJlcGFpbnQg
aW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgZGVtb25zdHJhdGVkIG9uIHRoZSBkaWZmdXNlIGxpZ2h0
aW5nIGZpbHRlciwgYnV0IHN0aWxsCisgICAgICAgIGNhbGxzIHJlbGF5b3V0IChUaHVzLCB0aGlz
IGlzIGp1c3QgYSBwZXJmb3JtYW5jZSBvdmVyaGVhZAorICAgICAgICBhdCB0aGlzIG1vbWVudCku
CisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxpdHksIG5vIG5ldyB0ZXN0cyBhZGRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQpOiBDbGVhcmlu
ZyB0aGUgY3VycmVudGx5IHN0b3JlZCBpbWFnZQorICAgICAgICBiZWZvcmUgcmVwYWludGluZy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6aXNTVkdSZXNvdXJjZUZpbHRlcik6IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJpbWl0
aXZlcywKKyAgICAgICAgYnV0IGZpbHRlcnMgc2hvdWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8gYWxs
b3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyk6IFBhc3NpbmcgdGhlIHJlbmRlcmVyLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVjdXJzaXZlQ2xlYXJSZXN1bHQpOiBSZWN1cnNpdmVseSBjbGVh
cmluZyB0aGUgcmVzdWx0CisgICAgICAgIGltYWdlcyBmb3IgdGhvc2UgZmlsdGVycywgd2hvc2Ug
ZGVwZW5kIG9uIHRoZSBzdGFydGluZyBmaWx0ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6c2V0QWxsRmlsdGVyRWZmZWN0c0F0dHJpYnV0ZSk6IFNlYXJjaGlu
ZworICAgICAgICBmb3IgYWxsIEZpbHRlckVmZmVjdHMsIHdob3NlIGNyZWF0ZWQgYnkgdGhlIGN1
cnJlbnQgRmlsdGVyRWxlbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6aXNTVkdSZXNvdXJjZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKToKKyAgICAgICAgVGhlIGZpbHRlciBhcmd1bWVudCBpcyB1bm5lY2Vzc2FyeSBhbnltb3Jl
LiBCdXQgaXMgaXMgc3RpbGwga2VwdCBhcyBhIHN0YXRpYworICAgICAgICBtZW1iZXIsIHNpbmNl
IHRoZSBwcmltaXRpdmUgcmVuZGVyZXIgc3RpbGwgZG9lcyBub3Qga25vdyBhYm91dCB0aGUKKyAg
ICAgICAgRmlsdGVyRWZmZWN0IG9iamVjdHMuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlKToKKyAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uIHNob3VsZCBu
b3QgYmUgcHJpdmF0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIERlbW9pbmcgdGhl
IG5ldyBhdHRyaWJ1dGUgc2V0dGluZyBtZWNoYW5pc20uCisgICAgICAgICogc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICBBZGRpbmcgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlCisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRBbGxGaWx0ZXJFZmZlY3RzQXR0cmli
dXRlKToKKyAgICAgICAgU2Nhbm5pbmcgdGhlIEZpbHRlckJ1aWxkZXIgbGlzdCwgYW5kIGNhbGxz
IHRoZSBuZWNlc3NhcnkgY2FsbGJhY2tzLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRl
cjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKTogVGhlCisgICAgICAgIHJlbmRlcmVy
cyBhcmUgYXNzaWduZWQgdG8gdGhlIGZpbHRlciBlZmZlY3RzLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJC
dWlsZGVyOjplZmZlY3RSZWZlcmVuY2VzKTogJ2dldCcgaXMgdW5uZWNlc3NhcnkKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdEJ5UmVuZGVyZXIpOiByZXR1cm5zIHRo
ZQorICAgICAgICBGaWx0ZXJFZmZlY3QgYmVsb25ncyB0byB0aGlzIFJlbmRlck9iamVjdC4KKwog
MjAxMS0wMS0xOSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IDg1MTU0
YjUuLmE4NGZhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTc3LDYgKzc3LDE2IEBAIEZpbHRl
ckVmZmVjdCogRmlsdGVyRWZmZWN0OjppbnB1dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW5wdXRFZmZlY3RzLmF0KG51bWJlcikuZ2V0KCk7CiB9CiAKK3ZvaWQg
RmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCit7CisgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1
bHQpCisgICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQuY2xlYXIoKTsKKyAgICBpZiAobV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCkKKyAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5j
bGVhcigpOworICAgIGlmIChtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKKyAgICAgICAgbV9w
cmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuY2xlYXIoKTsKK30KKwogSW1hZ2VCdWZmZXIqIEZpbHRl
ckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFoYXNSZXN1bHQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCmluZGV4IDA2MmRkMWIuLjJkZThhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNTMsNiAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7CiAKICAgICBib29s
IGhhc1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQgfHwgbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCB8fCBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsgfQorICAg
IHZvaWQgY2xlYXJSZXN1bHQoKTsKICAgICBJbWFnZUJ1ZmZlciogYXNJbWFnZUJ1ZmZlcigpOwog
ICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJl
Y3QmKTsKICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29u
c3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IGYyZTdmMTMuLmY2NWYyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKQEAgLTMzMiw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZvcmVp
Z25PYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NW
R1Jlc291cmNlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1NoYWRvd1RyZWVSb290Q29udGFpbmVy
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA0YmE0ZTBh
Li5kNTUwM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIFBhc3NSZWZQ
dHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0
aXZlcyhGaWx0ZXIqIGZpCiAgICAgICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXItPmFwcGVuZEVm
ZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpOworICAgICAgICBidWlsZGVyLT5hcHBlbmRF
ZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LCBlZmZlY3RFbGVtZW50LT5yZW5kZXJlcigp
KTsKICAgICAgICAgZWZmZWN0RWxlbWVudC0+c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKHByaW1pdGl2
ZUJvdW5kaW5nQm94TW9kZSwgZWZmZWN0LmdldCgpKTsKICAgICAgICAgYnVpbGRlci0+YWRkKGVm
ZmVjdEVsZW1lbnQtPnJlc3VsdCgpLCBlZmZlY3QpOwogICAgIH0KQEAgLTE0OCw3ICsxNDgsNyBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlck9iamVj
dCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKG1fZmlsdGVyLmNvbnRhaW5zKG9iamVj
dCkpIHsKICAgICAgICAgRmlsdGVyRGF0YSogZmlsdGVyRGF0YSA9IG1fZmlsdGVyLmdldChvYmpl
Y3QpOwogICAgICAgICBpZiAoZmlsdGVyRGF0YS0+YnVpbGRlZCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGRlbGV0ZSBtX2Zp
bHRlci50YWtlKG9iamVjdCk7IC8vIE9vcHMsIGhhdmUgdG8gcmVidWlsZCwgZ28gdGhyb3VnaCBu
b3JtYWwgY29kZSBwYXRoCiAgICAgfQpAQCAtMjA4LDEzICsyMDgsMTMgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVu
ZGVyU3R5bGUqLAogICAgIGlmICghbGFzdEVmZmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0LCBmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOwor
ICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCk7CiAgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGxh
c3RFZmZlY3QtPm1heEVmZmVjdFJlY3QoKTsKICAgICAvLyBBdCBsZWFzdCBvbmUgRmlsdGVyRWZm
ZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwKICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZWZm
ZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCiAgICAgaWYgKCFmaXRzSW5NYXhpbXVt
SW1hZ2VTaXplKHN1YlJlZ2lvbi5zaXplKCksIHNjYWxlKSkgewogICAgICAgICBmaWx0ZXJEYXRh
LT5maWx0ZXItPnNldEZpbHRlclJlc29sdXRpb24oc2NhbGUpOwotICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KGxhc3RFZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24obGFzdEVmZmVjdCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIGRyYXdpbmdSZWdpb24gaXMg
ZW1wdHksIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgPGcgZmlsdGVyPSIuLiIvPi4KQEAgLTI0NSw2
ICsyNDUsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAKICAgICBzb3VyY2VHcmFwaGljQ29u
dGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsK
ICAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCkpKTsKKyAgICBmaWx0ZXJEYXRhLT5hYnNv
bHV0ZURyYXdpbmdSZWdpb24gPSBJbnRSZWN0KGFic29sdXRlRHJhd2luZ1JlZ2lvbik7CiAgICAg
ZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IHNvdXJjZUdyYXBoaWMucmVsZWFzZSgp
OwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAKQEAgLTI5MiwxMyAr
MjkzLDE3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNl
KFJlbmRlck9iamVjdCogb2JqZWN0LCBHcmFwaGljc0NvCiAgICAgICAgIC8vIHNlY29uZCBkcmF3
aW5nLgogICAgICAgICBpZiAoIWZpbHRlckRhdGEtPmJ1aWxkZWQpIHsKICAgICAgICAgICAgIGZp
bHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2UoZmlsdGVyRGF0YS0+c291cmNlR3JhcGhp
Y0J1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgZmlsdGVyRGF0YS0+YnVpbGRlZCA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7
CisgICAgICAgICAgICAvLyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQu
CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogI2lmICFQTEFURk9STShDRykKICAg
ICAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkKICAgICAgICAgICAgICAgICBy
ZXN1bHRJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlTGluZWFyUkdCLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgotICAgICAgICAgICAgZmlsdGVyRGF0YS0+YnVpbGRl
ZCA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0zMjQsNSArMzI5LDQwIEBAIEZsb2F0
UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVzb3VyY2VCb3VuZGluZ0JveChSZW5kZXJP
YmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKK3N0YXRpYyB2b2lk
IHJlY3Vyc2l2ZUNsZWFyUmVzdWx0KFNWR0ZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIEZpbHRlckVm
ZmVjdCogZWZmZWN0KQoreworICAgIGlmIChlZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CisgICAgICAg
IGVmZmVjdC0+Y2xlYXJSZXN1bHQoKTsKKworICAgICAgICBIYXNoU2V0PEZpbHRlckVmZmVjdCo+
JiBlZmZlY3RSZWZlcmVuY2VzID0gYnVpbGRlci0+ZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpOwor
ICAgICAgICBIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBlbmQgPSBlZmZlY3RSZWZl
cmVuY2VzLmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj46Oml0ZXJh
dG9yIGl0ID0gZWZmZWN0UmVmZXJlbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICAgICByZWN1cnNpdmVDbGVhclJlc3VsdChidWlsZGVyLCAqaXQpOworICAgIH0KK30KKwor
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQorewor
ICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRGF0YSo+OjppdGVyYXRvciBpdCA9IG1f
ZmlsdGVyLmJlZ2luKCk7CisgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJEYXRhKj46
Oml0ZXJhdG9yIGVuZCA9IG1fZmlsdGVyLmVuZCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyogcHJpbWl0dmUgPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMqPihvYmplY3QtPm5vZGUoKSk7CisKKyAgICBmb3IgKDsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIEZpbHRlckRhdGEqIGZpbHRlckRhdGEgPSBpdC0+c2Vj
b25kOworICAgICAgICBpZiAoIWZpbHRlckRhdGEtPmJ1aWxkZWQpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyID0gZmlsdGVyRGF0YS0+
YnVpbGRlci5nZXQoKTsKKyAgICAgICAgRmlsdGVyRWZmZWN0KiBlZmZlY3QgPSBidWlsZGVyLT5l
ZmZlY3RCeVJlbmRlcmVyKG9iamVjdCk7CisgICAgICAgIGlmICghZWZmZWN0KQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIHByaW1pdHZlLT5zZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
ZWZmZWN0LCBhdHRyaWJ1dGUpOworICAgICAgICByZWN1cnNpdmVDbGVhclJlc3VsdChidWlsZGVy
LCBlZmZlY3QpOworCisgICAgICAgIC8vIFJlcGFpbnQgdGhlIGltYWdlIG9uIHRoZSBzY3JlZW4u
CisgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUoZmlsdGVyRGF0YS0+YWJzb2x1dGVEcmF3aW5nUmVn
aW9uKTsKKyAgICB9Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGY5YTE1Y2UuLjMy
ZTNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IEZpbHRlckRhdGEg
ewogICAgIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0OwogICAgIEFmZmluZVRyYW5zZm9y
bSBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgYm91bmRhcmllczsK
KyAgICBJbnRSZWN0IGFic29sdXRlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFNpemUgc2NhbGU7
CiAgICAgYm9vbCBidWlsZGVkOwogfTsKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflJlbmRlclNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIi
OyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShi
b29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCosIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9
IHRydWUpOwpAQCAtNzgsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSBmaWx0ZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIHRvVW5pdFR5cGUoc3RhdGljX2Nh
c3Q8U1ZHRmlsdGVyRWxlbWVudCo+KG5vZGUoKSktPmZpbHRlclVuaXRzKCkpOyB9CiAgICAgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cygpIGNvbnN0IHsgcmV0dXJuIHRv
VW5pdFR5cGUoc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxlbWVudCo+KG5vZGUoKSktPnByaW1pdGl2
ZVVuaXRzKCkpOyB9CiAKKyAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgdmlydHVhbCBSZW5kZXJTVkdS
ZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc19yZXNvdXJjZVR5cGU7
IH0KICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4IGZjNzM2MmUuLjY0ZGY3MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCkBAIC0yOSwyNSArMjksMjkgQEAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJTVkdGRUltYWdlLmgiCisjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsIFNWR0ZpbHRlciogZmlsdGVyKQorRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0
KiBlZmZlY3QpCiB7CiAgICAgRmxvYXRSZWN0IHVuaXRlUmVjdDsKICAgICBGbG9hdFJlY3Qgc3Vi
cmVnaW9uQm91bmRpbmdCb3ggPSBlZmZlY3QtPmVmZmVjdEJvdW5kYXJpZXMoKTsKICAgICBGbG9h
dFJlY3Qgc3VicmVnaW9uID0gc3VicmVnaW9uQm91bmRpbmdCb3g7CisgICAgU1ZHRmlsdGVyKiBm
aWx0ZXIgPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXIqPihlZmZlY3QtPmZpbHRlcigpKTsKKyAgICBB
U1NFUlQoZmlsdGVyKTsKIAogICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSAhPSBG
aWx0ZXJFZmZlY3RUeXBlVGlsZSkgewogICAgICAgICAvLyBGRVR1cmJ1bGVuY2UsIEZFSW1hZ2Ug
YW5kIEZFRmxvb2QgZG9uJ3QgaGF2ZSBpbnB1dCBlZmZlY3RzLCB0YWtlIHRoZSBmaWx0ZXIgcmVn
aW9uIGFzIHVuaXRlIHJlY3QuCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1iZXJPZklucHV0RWZm
ZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuc2l6ZSgpKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKLSAgICAgICAg
ICAgICAgICB1bml0ZVJlY3QudW5pdGUoZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KGVmZmVjdC0+aW5wdXRFZmZlY3QoaSksIGZpbHRlcikpOworICAgICAgICAgICAgICAgIHVuaXRl
UmVjdC51bml0ZShkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1
dEVmZmVjdChpKSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHVuaXRlUmVjdCA9IGZp
bHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKICAgICB9IGVsc2UgewotICAgICAgICBk
ZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdCgwKSwg
ZmlsdGVyKTsKKyAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVj
dC0+aW5wdXRFZmZlY3QoMCkpOwogICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZpbHRlclJl
Z2lvbkluVXNlclNwYWNlKCk7CiAgICAgfQogCkBAIC05MCw3ICs5NCw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZl
U3VicmVnaW9uKEZpCiAgICAgLy8gRkVJbWFnZSBuZWVkcyB0aGUgdW5jbGlwcGVkIHN1YnJlZ2lv
biBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKICAgICAv
LyBkZXN0aW5hdGlvbiByZWN0IGluIGNvbWJpbmF0aW9uIHdpdGggcHJlc2VydmVBc3BlY3RSYXRp
by4KICAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgPT0gRmlsdGVyRWZmZWN0VHlw
ZUltYWdlKQotICAgICAgICByZWludGVycHJldF9jYXN0PEZFSW1hZ2UqPihlZmZlY3QpLT5zZXRB
YnNvbHV0ZVN1YnJlZ2lvbihhYnNvbHV0ZVN1YnJlZ2lvbik7CisgICAgICAgIHN0YXRpY19jYXN0
PEZFSW1hZ2UqPihlZmZlY3QpLT5zZXRBYnNvbHV0ZVN1YnJlZ2lvbihhYnNvbHV0ZVN1YnJlZ2lv
bik7CiAKICAgICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciByZWdp
b24uCiAgICAgRmxvYXRSZWN0IGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gZmlsdGVyLT5m
aWx0ZXJSZWdpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBmMjVmNjJl
Li5kMGYzZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zMCwyNSArMzAs
MzAgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2luY2x1ZGUgIlJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgotI2luY2x1
ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RmlsdGVyRWZmZWN0OworCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSA6
IHB1YmxpYyBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIgewogcHVibGljOgotCi0gICAgZXhwbGlj
aXQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQorICAgIGV4cGxpY2l0IFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR1N0eWxlZEVsZW1lbnQqIGZpbHRlclBy
aW1pdGl2ZUVsZW1lbnQpCiAgICAgICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZpbHRl
clByaW1pdGl2ZUVsZW1lbnQpCiAgICAgewogICAgIH0KIAotICAgIC8vIFRoZXkgZGVwZW5kIG9u
IHRoZSBSZW5kZXJPYmplY3QgYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFw
cGx5UmVzb3VyY2UuCi0gICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiwgU1ZHRmlsdGVyKik7Ci0KLXByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gVGhl
eSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KKyAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqKTsKKworICAgIGlubGluZSB2b2lk
IHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
KQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihw
YXJlbnQoKSktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgYXR0cmlidXRlKTsKKyAg
ICB9CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNDk4ODhkYS4uMTBm
NzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKQEAgLTg0LDE1ICs4NCwzMCBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCit2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK3sKKyAgICBGRURpZmZ1c2VMaWdodGluZyogZGlmZnVzZUxpZ2h0aW5nID0g
c3RhdGljX2Nhc3Q8RkVEaWZmdXNlTGlnaHRpbmcqPihlZmZlY3QpOworICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKKyAgICAgICAgZGlmZnVzZUxpZ2h0aW5n
LT5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQorICAgICAgICBkaWZmdXNlTGlnaHRp
bmctPnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7CisgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgICAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IGZpbHRlclN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpOworICAgICAg
ICBkaWZmdXNlTGlnaHRpbmctPnNldExpZ2h0aW5nQ29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxl
KCktPmxpZ2h0aW5nQ29sb3IoKSk7CisgICAgfQorfQorCiB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjppbkF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKICAgICAg
ICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIKICAgICAgICAg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyCiAgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpCisgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIpCiAgICAgICAgIGludmFsaWRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IGQ1NmNlZDku
LmU1MDI4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVh
bCB2b2lkIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3Bw
CmluZGV4IDAwZjk5YzUuLjEwMzBiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC03MCw2
ICs3MCwxMiBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICByZXR1cm4gU1ZHU3R5
bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpCit7CisgICAgLy8gV2hlbiBhbGwg
ZmlsdGVycyBzdXBwb3J0IHRoaXMgbWV0aG9kLCBpdCB3aWxsIGJlIGNoYW5nZWQgdG8gYSBwdXJl
IHZpcnR1YWwgbWV0aG9kLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCAzNGUx
OWVhLi5lMDBjOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC0yMiw3ICsyMiw4IEBACiAjZGVm
aW5lIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc19oCiAKICNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxl
bWVudC5oIgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFuZGFyZEF0
dHJpYnV0ZXMoYm9vbCwgRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJvdGVjdGVkOgogICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKQEAgLTUwLDEzICs1MiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSog
YmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERl
bHRhID0gMCk7CiAKLXByb3RlY3RlZDoKICAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKICAg
ICB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocHJpbWl0aXZlUmVuZGVyZXIpOwogICAgIH0KIAorICAg
IGlubGluZSB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJpbWl0aXZl
UmVuZGVyZXIgPSByZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUqPihwcmltaXRpdmVSZW5kZXJlciktPnByaW1pdGl2ZUF0
dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwCmluZGV4IGIzMWI5OTQuLmU0NDhmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC02OCwx
MCArNjgsMTEgQEAgRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3Rz
LmdldChpZCkuZ2V0KCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0
VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdFJlZmVyZW5jZSkK
K3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdFJlZmVyZW5jZSwgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgZWZm
ZWN0LgogICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdFJlZmVy
ZW5jZSkpOworICAgIEFTU0VSVChvYmplY3QgJiYgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMo
b2JqZWN0KSk7CiAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3RSZWZlcmVuY2UsIEZp
bHRlckVmZmVjdFNldCgpKTsKIAogICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gZWZmZWN0UmVm
ZXJlbmNlLmdldCgpOwpAQCAtNzksNyArODAsOCBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFw
cGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlYwog
CiAgICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFkZCB0aGUgc2FtZSB2YWx1ZSB0byBhIHNl
dCB0d2ljZS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVj
dHM7ICsraSkKLSAgICAgICAgZ2V0RWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0
KGkpKS5hZGQoZWZmZWN0KTsKKyAgICAgICAgZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0
RWZmZWN0KGkpKS5hZGQoZWZmZWN0KTsKKyAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3Qs
IGVmZmVjdFJlZmVyZW5jZS5nZXQoKSk7CiB9CiAKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xl
YXJFZmZlY3RzKCkKQEAgLTg3LDYgKzg5LDcgQEAgdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpjbGVh
ckVmZmVjdHMoKQogICAgIG1fbGFzdEVmZmVjdCA9IDA7CiAgICAgbV9uYW1lZEVmZmVjdHMuY2xl
YXIoKTsKICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuY2xlYXIoKTsKKyAgICBtX2VmZmVjdFJlbmRl
cmVyLmNsZWFyKCk7CiAgICAgYWRkQnVpbHRpbkVmZmVjdHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmlu
ZGV4IGEzYzEyNDQuLjljOWZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNDMsMTUgKzQ0LDE4IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0
RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOyB9CiAKLSAgICB2b2lk
IGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0Pik7Cisg
ICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVj
dD4sIFJlbmRlck9iamVjdCopOwogCi0gICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZ2V0RWZm
ZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKKyAgICBpbmxpbmUgRmlsdGVyRWZm
ZWN0U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQogICAgIHsKICAg
ICAgICAgLy8gT25seSBhbGxvd2VkIGZvciBlZmZlY3RzIGJlbG9uZ3MgdG8gdGhpcyBidWlsZGVy
LgogICAgICAgICBBU1NFUlQobV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdCkpOwog
ICAgICAgICByZXR1cm4gbV9lZmZlY3RSZWZlcmVuY2VzLmZpbmQoZWZmZWN0KS0+c2Vjb25kOwog
ICAgIH0KIAorICAgIC8vIFJlcXVpcmVkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZp
bHRlciBkdXJpbmcgYW4gc3ZnQXR0cmlidXRlQ2hhbmdlZC4KKyAgICBpbmxpbmUgRmlsdGVyRWZm
ZWN0KiBlZmZlY3RCeVJlbmRlcmVyKFJlbmRlck9iamVjdCogb2JqZWN0KSB7IHJldHVybiBtX2Vm
ZmVjdFJlbmRlcmVyLmdldChvYmplY3QpOyB9CisKICAgICB2b2lkIGNsZWFyRWZmZWN0cygpOwog
CiBwcml2YXRlOgpAQCAtNjksNiArNzMsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoZSB2YWx1ZSBp
cyBhIGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRob3NlIGZpbHRlciBlZmZlY3RzLAogICAgIC8vIHdo
aWNoIGRlcGVuZHMgb24gdGhlIGtleSBmaWx0ZXIgZWZmZWN0LgogICAgIEhhc2hNYXA8UmVmUHRy
PEZpbHRlckVmZmVjdD4sIEZpbHRlckVmZmVjdFNldD4gbV9lZmZlY3RSZWZlcmVuY2VzOworICAg
IEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRWZmZWN0Kj4gbV9lZmZlY3RSZW5kZXJlcjsK
IAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsKIH07Ci0tIAoxLjYuMC40
Cgo=
</data>
<flag name="review"
          id="71157"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79914</attachid>
            <date>2011-01-24 05:49:06 -0800</date>
            <delta_ts>2011-01-25 05:51:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>25464</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAyMGViZjgyYTBhZDVmNmNjYTQ3MDVmYzFkZGEwMTczM2IyMjIwODliIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBNb24sIDI0IEphbiAyMDExIDE0OjQ2OjE2ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA2MCArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCAgICAgfCAgIDEwICsrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICAgICAgfCAgICAxICsK
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAg
MSArCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8
ICAgNDkgKysrKysrKysrKysrKystLQogLi4uL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCAgICAgICAgfCAgICA0ICsKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwICAgICAgIHwgICAxMiArKystCiAuLi4vc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggICAgICAgICB8ICAgMjMgKysrKystLS0KIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIHwgICAxOSArKysrKysKIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCAgIHwgICAgMSAr
CiAuLi4vc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgICB8ICAg
IDYgKysKIC4uLi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggICAg
IHwgICAxMSArKystCiAuLi4vc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAgICAgICB8ICAgIDcgKystCiAuLi4vc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oICAgICAgICB8ICAgIDkgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9u
cygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVhMWJiMWIuLjc2OTZiNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0wMS0yNCAgWm9sdGFuIEhlcmN6ZWcgIDx6
aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNtYWxsIGZpbHRlciBwcmltaXRpdmUgcmVuZGVyZXIgaW1wcm92ZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjIwMAor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHJlcGFpbnRpbmcgb2YgZmlsdGVycywgd2hlbiB0
aGVpcgorICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlcyBkb2VzIG5vdCByZXF1aXJlIHJlbGF5b3V0
LgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5LCBubyBuZXcgdGVzdHMgYWRk
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KTogQ2xlYXJp
bmcgdGhlIGN1cnJlbnRseSBzdG9yZWQgaW1hZ2UKKyAgICAgICAgYmVmb3JlIHJlcGFpbnRpbmcu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmlzU1ZHUmVzb3VyY2VGaWx0ZXIpOiBOb3Qgb25seSB0aGUgZmlsdGVyIHByaW1p
dGl2ZXMsCisgICAgICAgIGJ1dCBmaWx0ZXJzIHNob3VsZCBhbHNvIGJlIGRldGVjdGVkIHRvIGFs
bG93IHNhZmUgdGVzdGluZyBhbmQgY2FzdGluZy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMpOiBQYXNzaW5nIHRoZSByZW5kZXJlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKTog
UnRvcmUgYWJzb2x1dGVEcmF3aW5nUmVnaW9uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOiBSZXBhaW50CisgICAgICAgIGlmIGxh
c3RFZmZlY3QtPmhhc1Jlc3VsdCgpIGlzIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6cmVjdXJz
aXZlQ2xlYXJSZXN1bHQpOiBSZWN1cnNpdmVseSBjbGVhcmluZyB0aGUgcmVzdWx0CisgICAgICAg
IGltYWdlcyBmb3IgdGhvc2UgZmlsdGVycywgd2hvc2UgZGVwZW5kIG9uIHRoZSBzdGFydGluZyBm
aWx0ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIFNlYXJjaGluZyBmb3IgYWxsIEZpbHRlckVm
ZmVjdHMsIHdob3NlIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgRmlsdGVyRWxlbWVudCwKKyAgICAg
ICAgYW5kIGNsZWFyaW5nIGFsbCByZXN1bHRpbmcgaW1hZ2VzIGRlcGVuZGluZyBvbiB0aG9zZSBG
aWx0ZXJFZmZlY3RzLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjppc1NW
R1Jlc291cmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgor
ICAgICAgICBUaGUgZmlsdGVyIGFyZ3VtZW50IGlzIHVubmVjZXNzYXJ5IGFueW1vcmUuIEJ1dCBp
cyBpcyBzdGlsbCBrZXB0IGFzIGEgc3RhdGljCisgICAgICAgIG1lbWJlciwgc2luY2UgdGhlIHBy
aW1pdGl2ZSByZW5kZXJlciBzdGlsbCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQorICAgICAgICBG
aWx0ZXJFZmZlY3Qgb2JqZWN0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBDYWxscyBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIFNldHRpbmcgdGhlIG5ldyBhdHRyaWJ1dGUgdmFsdWUgZm9yIGVhY2ggRmlsdGVyRWZm
ZWN0LgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92
ZWQgd2hlbiBhbGwgRmlsdGVyRWxlbWVudCBpbXBsZW1lbnRzCisgICAgICAgIHRoZWlyIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZQorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMpOiBU
aGUKKyAgICAgICAgcmVuZGVyZXJzIGFyZSBhc3NpZ25lZCB0byB0aGUgZmlsdGVyIGVmZmVjdHMu
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdFJlZmVyZW5jZXMpOiAnZ2V0JyBpcyB1
bm5lY2Vzc2FyeQorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6ZWZmZWN0QnlS
ZW5kZXJlcik6IHJldHVybnMgdGhlCisgICAgICAgIEZpbHRlckVmZmVjdCBiZWxvbmdzIHRvIHRo
aXMgUmVuZGVyT2JqZWN0LgorCiAyMDExLTAxLTE5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAppbmRleCA4NTE1NGI1Li5hODRmYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC03
Nyw2ICs3NywxNiBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5z
aWduZWQgbnVtYmVyKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIp
LmdldCgpOwogfQogCit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQoreworICAgIGlm
IChtX2ltYWdlQnVmZmVyUmVzdWx0KQorICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFy
KCk7CisgICAgaWYgKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAgICAgIG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQuY2xlYXIoKTsKKyAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpCisgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmNsZWFyKCk7Cit9CisK
IEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogewogICAgIGlmICgh
aGFzUmVzdWx0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAwNjJkZDFiLi4yZGU4YWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbHRlckVm
ZmVjdCgpOwogCiAgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVm
ZmVyUmVzdWx0IHx8IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgfHwgbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQ7IH0KKyAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAgICAgSW1hZ2VCdWZmZXIq
IGFzSW1hZ2VCdWZmZXIoKTsKICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNVbm11bHRpcGxp
ZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzUHJl
bXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCBmMmU3ZjEzLi5mNjVmMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zMzIsNiArMzMyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFk
b3dUcmVlUm9vdENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKaW5kZXggNGJhNGUwYS4uNmIyNjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTExMSw3
ICsxMTEsNyBAQCBQYXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoRmlsdGVyKiBmaQogICAgICAgICAgICAgYnVpbGRlci0+
Y2xlYXJFZmZlY3RzKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAg
ICBidWlsZGVyLT5hcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAg
ICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCwgZWZmZWN0
RWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGVmZmVjdEVsZW1lbnQtPnNldFN0YW5kYXJk
QXR0cmlidXRlcyhwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUsIGVmZmVjdC5nZXQoKSk7CiAgICAg
ICAgIGJ1aWxkZXItPmFkZChlZmZlY3RFbGVtZW50LT5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICB9
CkBAIC0yMDgsMTMgKzIwOCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFs
YXN0RWZmZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RF
ZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZm
ZWN0KTsKICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVj
dCgpOwogICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFn
ZSBzaXplLAogICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2Nh
bGUgZmFjdG9ycy4KICAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3ViUmVnaW9uLnNp
emUoKSwgc2NhbGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVz
b2x1dGlvbihzY2FsZSk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0
YS0+ZmlsdGVyLmdldCgpKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICB9
CiAKICAgICAvLyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhp
bmcgbGlrZSA8ZyBmaWx0ZXI9Ii4uIi8+LgpAQCAtMjQ1LDYgKzI0NSw3IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlclN0eWxlKiwKIAogICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT5jb25jYXRDVE0oZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIHNvdXJjZUdyYXBoaWNDb250
ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVEcmF3aW5nUmVn
aW9uLnNpemUoKSkpOworICAgIGZpbHRlckRhdGEtPmFic29sdXRlRHJhd2luZ1JlZ2lvbiA9IElu
dFJlY3QoYWJzb2x1dGVEcmF3aW5nUmVnaW9uKTsKICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFw
aGljQnVmZmVyID0gc291cmNlR3JhcGhpYy5yZWxlYXNlKCk7CiAgICAgZmlsdGVyRGF0YS0+c2F2
ZWRDb250ZXh0ID0gY29udGV4dDsKIApAQCAtMjkwLDE2ICsyOTEsMTkgQEAgdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IEdyYXBoaWNzQ28KICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhl
IG9iamVjdC4gSXQganVzdCBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCiAgICAgICAgIC8vIGlu
aXRpYWwgZmlsdGVyaW5nIHByb2Nlc3MuIFdlIGp1c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciBy
ZXN1bHQgb24gYQogICAgICAgICAvLyBzZWNvbmQgZHJhd2luZy4KLSAgICAgICAgaWYgKCFmaWx0
ZXJEYXRhLT5idWlsZGVkKSB7CisgICAgICAgIGlmICghZmlsdGVyRGF0YS0+YnVpbGRlZCkKICAg
ICAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2UoZmlsdGVyRGF0YS0+
c291cmNlR3JhcGhpY0J1ZmZlci5yZWxlYXNlKCkpOworCisgICAgICAgIC8vIEFsd2F5cyB0cnVl
IGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+YnVpbGRlZCBpcyBmYWxz
ZSkuCisgICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmFwcGx5KCk7CiAjaWYgIVBMQVRGT1JNKENHKQogICAgICAgICAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdEltYWdlKQogICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT50
cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2VMaW5lYXJSR0IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogI2VuZGlmCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKICAg
ICAgICAgfQorICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKIAogICAgICAgICBJ
bWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAg
ICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewpAQCAtMzI0LDUgKzMyOCw0MCBAQCBGbG9hdFJlY3Qg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0
KiBvYmplY3QpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCitzdGF0aWMgdm9pZCByZWN1
cnNpdmVDbGVhclJlc3VsdChTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBGaWx0ZXJFZmZlY3Qq
IGVmZmVjdCkKK3sKKyAgICBpZiAoZWZmZWN0LT5oYXNSZXN1bHQoKSkgeworICAgICAgICBlZmZl
Y3QtPmNsZWFyUmVzdWx0KCk7CisKKyAgICAgICAgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiYgZWZm
ZWN0UmVmZXJlbmNlcyA9IGJ1aWxkZXItPmVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAg
ICAgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPjo6aXRlcmF0b3IgZW5kID0gZWZmZWN0UmVmZXJlbmNl
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBp
dCA9IGVmZmVjdFJlZmVyZW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAg
ICAgcmVjdXJzaXZlQ2xlYXJSZXN1bHQoYnVpbGRlciwgKml0KTsKKyAgICB9Cit9CisKK3ZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKK3sKKyAgICBI
YXNoTWFwPFJlbmRlck9iamVjdCosIEZpbHRlckRhdGEqPjo6aXRlcmF0b3IgaXQgPSBtX2ZpbHRl
ci5iZWdpbigpOworICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRGF0YSo+OjppdGVy
YXRvciBlbmQgPSBtX2ZpbHRlci5lbmQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkpOworCisgICAgZm9yICg7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gaXQtPnNlY29uZDsK
KyAgICAgICAgaWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVkKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciogYnVpbGRlciA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXIuZ2V0KCk7CisgICAgICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gYnVpbGRlci0+ZWZmZWN0
QnlSZW5kZXJlcihvYmplY3QpOworICAgICAgICBpZiAoIWVmZmVjdCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBwcmltaXR2ZS0+c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKGVmZmVj
dCwgYXR0cmlidXRlKTsKKyAgICAgICAgcmVjdXJzaXZlQ2xlYXJSZXN1bHQoYnVpbGRlciwgZWZm
ZWN0KTsKKworICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVuLgorICAg
ICAgICByZXBhaW50UmVjdGFuZ2xlKGZpbHRlckRhdGEtPmFic29sdXRlRHJhd2luZ1JlZ2lvbik7
CisgICAgfQorfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCBmOWExNWNlLi4zMmUzZjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oCkBAIC01Miw2ICs1Miw3IEBAIHN0cnVjdCBGaWx0ZXJEYXRhIHsKICAg
ICBHcmFwaGljc0NvbnRleHQqIHNhdmVkQ29udGV4dDsKICAgICBBZmZpbmVUcmFuc2Zvcm0gc2hl
YXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CisgICAg
SW50UmVjdCBhYnNvbHV0ZURyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwogICAg
IGJvb2wgYnVpbGRlZDsKIH07CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5SZW5kZXJTVkdSZXNvdXJjZUZpbHRlcigpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBt
YXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVu
dEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVl
KTsKQEAgLTc4LDYgKzgwLDggQEAgcHVibGljOgogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgZmlsdGVyVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNW
R0ZpbHRlckVsZW1lbnQqPihub2RlKCkpLT5maWx0ZXJVbml0cygpKTsgfQogICAgIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRU
eXBlKHN0YXRpY19jYXN0PFNWR0ZpbHRlckVsZW1lbnQqPihub2RlKCkpLT5wcmltaXRpdmVVbml0
cygpKTsgfQogCisgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAg
ICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAppbmRleCBmYzczNjJlLi42NGRmNzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcApAQCAtMjksMjUgKzI5LDI5IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaCIKIAorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5j
bHVkZSAiU1ZHRkVJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0LCBT
VkdGaWx0ZXIqIGZpbHRlcikKK0Zsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZm
ZWN0KQogewogICAgIEZsb2F0UmVjdCB1bml0ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHN1YnJlZ2lv
bkJvdW5kaW5nQm94ID0gZWZmZWN0LT5lZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgRmxvYXRSZWN0
IHN1YnJlZ2lvbiA9IHN1YnJlZ2lvbkJvdW5kaW5nQm94OworICAgIFNWR0ZpbHRlciogZmlsdGVy
ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyKj4oZWZmZWN0LT5maWx0ZXIoKSk7CisgICAgQVNTRVJU
KGZpbHRlcik7CiAKICAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0gRmlsdGVy
RWZmZWN0VHlwZVRpbGUpIHsKICAgICAgICAgLy8gRkVUdXJidWxlbmNlLCBGRUltYWdlIGFuZCBG
RUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBh
cyB1bml0ZSByZWN0LgogICAgICAgICBpZiAodW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMg
PSBlZmZlY3QtPmlucHV0RWZmZWN0cygpLnNpemUoKSkgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgICAgICAg
ICAgdW5pdGVSZWN0LnVuaXRlKGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZl
Y3QtPmlucHV0RWZmZWN0KGkpLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3Qu
dW5pdGUoZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZl
Y3QoaSkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXIt
PmZpbHRlclJlZ2lvbkluVXNlclNwYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRl
cik7CisgICAgICAgIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlu
cHV0RWZmZWN0KDApKTsKICAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpOwogICAgIH0KIApAQCAtOTAsNyArOTQsNyBAQCBGbG9hdFJlY3QgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbihGaQogICAgIC8vIEZFSW1hZ2UgbmVlZHMgdGhlIHVuY2xpcHBlZCBzdWJyZWdpb24gaW4g
YWJzb2x1dGUgY29vcmRpbmF0ZXMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0CiAgICAgLy8gZGVz
dGluYXRpb24gcmVjdCBpbiBjb21iaW5hdGlvbiB3aXRoIHByZXNlcnZlQXNwZWN0UmF0aW8uCiAg
ICAgaWYgKGVmZmVjdC0+ZmlsdGVyRWZmZWN0VHlwZSgpID09IEZpbHRlckVmZmVjdFR5cGVJbWFn
ZSkKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxGRUltYWdlKj4oZWZmZWN0KS0+c2V0QWJzb2x1
dGVTdWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOworICAgICAgICBzdGF0aWNfY2FzdDxGRUlt
YWdlKj4oZWZmZWN0KS0+c2V0QWJzb2x1dGVTdWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOwog
CiAgICAgLy8gQ2xpcCBldmVyeSBmaWx0ZXIgZWZmZWN0IHRvIHRoZSBmaWx0ZXIgcmVnaW9uLgog
ICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci0+ZmlsdGVy
UmVnaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZjI1ZjYyZS4uODE3
NmQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzAsMjUgKzMwLDMyIEBA
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNpbmNsdWRlICJSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKLSNpbmNsdWRlICJT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbHRl
ckVmZmVjdDsKKwogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgOiBwdWJs
aWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLQotICAgIGV4cGxpY2l0IFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKKyAgICBleHBsaWNpdCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdTdHlsZWRFbGVtZW50KiBmaWx0ZXJQcmltaXRp
dmVFbGVtZW50KQogICAgICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmlt
aXRpdmVFbGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUg
UmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJl
c291cmNlLgotICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKEZpbHRlckVmZmVjdCosIFNWR0ZpbHRlciopOwotCi1wcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIFRoZXkgZGVw
ZW5kIG9uIHRoZSBSZW5kZXJPYmplY3QgYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OmFwcGx5UmVzb3VyY2UuCisgICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0Kik7CisKKyAgICBpbmxpbmUgdm9pZCBwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKKyAg
ICB7CisgICAgICAgIFJlbmRlck9iamVjdCogZmlsdGVyID0gcGFyZW50KCk7CisgICAgICAgIGlm
ICghZmlsdGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihm
aWx0ZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJpYnV0ZSk7CisgICAg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA0OTg4OGRhLi5mYTRlMmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcApAQCAtODQsMTAgKzg0LDI5IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CiB9CiAKK3ZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQoreworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKiBkaWZmdXNlTGlnaHRpbmcgPSBzdGF0
aWNfY2FzdDxGRURpZmZ1c2VMaWdodGluZyo+KGVmZmVjdCk7CisgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQorICAgICAgICBkaWZmdXNlTGlnaHRpbmctPnNl
dFN1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpCisgICAgICAgIGRpZmZ1c2VMaWdodGluZy0+
c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsKKyAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKSB7CisgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CisgICAgICAgIGRp
ZmZ1c2VMaWdodGluZy0+c2V0TGlnaHRpbmdDb2xvcihmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+
bGlnaHRpbmdDb2xvcigpKTsKKyAgICB9Cit9CisKIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VD
b25zdGFudEF0dHIKKyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRM
ZW5ndGhBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xv
ckF0dHIpCisgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworCiAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCBkNTZjZWQ5Li5lNTAyODMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCkBAIC0z
OSw2ICszOSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAwMGY5OWM1Li4x
MDMwYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzAsNiArNzAsMTIgQEAgdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKQoreworICAgIC8vIFdoZW4gYWxsIGZpbHRlcnMgc3VwcG9ydCB0
aGlzIG1ldGhvZCwgaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgcHVyZSB2aXJ0dWFsIG1ldGhvZC4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggMzRlMTllYS4uZTAwYzljMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaApAQCAtMjIsNyArMjIsOCBAQAogI2RlZmluZSBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCi0jaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTQxLDYg
KzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGJvb2wsIEZp
bHRlckVmZmVjdCopIGNvbnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAKIHByb3RlY3RlZDoKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01MCwx
MyArNTIsMTggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAs
IE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi1wcm90
ZWN0ZWQ6CiAgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgewogICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkpCiAgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKHByaW1pdGl2ZVJlbmRlcmVyKTsKICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKKyAg
ICB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlKj4ocHJpbWl0aXZlUmVuZGVyZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJpYnV0ZSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVm
ZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCBiMzFi
OTk0Li5lNDQ4ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNjgsMTAgKzY4LDExIEBAIEZpbHRl
ckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpLmdldCgpOwog
fQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNl
cyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3RSZWZlcmVuY2UpCit2b2lkIFNWR0ZpbHRlckJ1
aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3RSZWZlcmVuY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIC8vIFRoZSBl
ZmZlY3QgbXVzdCBiZSBhIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGVmZmVjdC4KICAgICBBU1NFUlQo
IW1fZWZmZWN0UmVmZXJlbmNlcy5jb250YWlucyhlZmZlY3RSZWZlcmVuY2UpKTsKKyAgICBBU1NF
UlQob2JqZWN0ICYmICFtX2VmZmVjdFJlbmRlcmVyLmNvbnRhaW5zKG9iamVjdCkpOwogICAgIG1f
ZWZmZWN0UmVmZXJlbmNlcy5hZGQoZWZmZWN0UmVmZXJlbmNlLCBGaWx0ZXJFZmZlY3RTZXQoKSk7
CiAKICAgICBGaWx0ZXJFZmZlY3QqIGVmZmVjdCA9IGVmZmVjdFJlZmVyZW5jZS5nZXQoKTsKQEAg
LTc5LDcgKzgwLDggQEAgdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVj
dFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWMKIAogICAgIC8vIEl0IGlzIG5v
dCBwb3NzaWJsZSB0byBhZGQgdGhlIHNhbWUgdmFsdWUgdG8gYSBzZXQgdHdpY2UuCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAg
IGdldEVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRkKGVmZmVjdCk7
CisgICAgICAgIGVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LT5pbnB1dEVmZmVjdChpKSkuYWRkKGVm
ZmVjdCk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQob2JqZWN0LCBlZmZlY3RSZWZlcmVuY2Uu
Z2V0KCkpOwogfQogCiB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCkBAIC04
Nyw2ICs4OSw3IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKICAgICBt
X2xhc3RFZmZlY3QgPSAwOwogICAgIG1fbmFtZWRFZmZlY3RzLmNsZWFyKCk7CiAgICAgbV9lZmZl
Y3RSZWZlcmVuY2VzLmNsZWFyKCk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5jbGVhcigpOwogICAg
IGFkZEJ1aWx0aW5FZmZlY3RzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCBhM2MxMjQ0Li45Yzlm
YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQzLDE1ICs0NCwxOCBA
QCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQogCi0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0Vm
ZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4pOworICAgIHZvaWQgYXBwZW5kRWZm
ZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBSZW5kZXJPYmplY3Qq
KTsKIAotICAgIGlubGluZSBGaWx0ZXJFZmZlY3RTZXQmIGdldEVmZmVjdFJlZmVyZW5jZXMoRmls
dGVyRWZmZWN0KiBlZmZlY3QpCisgICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZWZmZWN0UmVm
ZXJlbmNlcyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgYWxs
b3dlZCBmb3IgZWZmZWN0cyBiZWxvbmdzIHRvIHRoaXMgYnVpbGRlci4KICAgICAgICAgQVNTRVJU
KG1fZWZmZWN0UmVmZXJlbmNlcy5jb250YWlucyhlZmZlY3QpKTsKICAgICAgICAgcmV0dXJuIG1f
ZWZmZWN0UmVmZXJlbmNlcy5maW5kKGVmZmVjdCktPnNlY29uZDsKICAgICB9CiAKKyAgICAvLyBS
ZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgb2YgYSBmaWx0ZXIgZHVyaW5nIGFuIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQuCisgICAgaW5saW5lIEZpbHRlckVmZmVjdCogZWZmZWN0QnlSZW5k
ZXJlcihSZW5kZXJPYmplY3QqIG9iamVjdCkgeyByZXR1cm4gbV9lZmZlY3RSZW5kZXJlci5nZXQo
b2JqZWN0KTsgfQorCiAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKIAogcHJpdmF0ZToKQEAgLTY5
LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgdmFsdWUgaXMgYSBsaXN0LCB3aGljaCBj
b250YWlucyB0aG9zZSBmaWx0ZXIgZWZmZWN0cywKICAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRo
ZSBrZXkgZmlsdGVyIGVmZmVjdC4KICAgICBIYXNoTWFwPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBG
aWx0ZXJFZmZlY3RTZXQ+IG1fZWZmZWN0UmVmZXJlbmNlczsKKyAgICBIYXNoTWFwPFJlbmRlck9i
amVjdCosIEZpbHRlckVmZmVjdCo+IG1fZWZmZWN0UmVuZGVyZXI7CiAKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7CiB9OwotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80055</attachid>
            <date>2011-01-25 05:51:20 -0800</date>
            <delta_ts>2011-01-25 06:53:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>24904</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA4OGIzZTFjYWY4MDU5NDBiYTRhZjA2ZGY2ZmNhNjkwOWRmMzhjNmJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDI1IEphbiAyMDExIDEzOjQ0OjA2ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA2MiArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCAgICAgfCAgIDEwICsrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICAgICAgfCAgICAxICsK
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAg
MSArCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8
ICAgNDggKysrKysrKysrKysrKystLQogLi4uL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCAgICAgICAgfCAgICAzICsKIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwICAgICAgIHwgICAxMiArKystCiAuLi4vc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggICAgICAgICB8ICAgMjMgKysrKystLS0KIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIHwgICAxOSArKysrKy0KIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCAgIHwgICAgMSAr
CiAuLi4vc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgICB8ICAg
IDYgKysKIC4uLi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggICAg
IHwgICAxMSArKystCiAuLi4vc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAgICAgICB8ICAgIDcgKystCiAuLi4vc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oICAgICAgICB8ICAgIDkgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9u
cygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiNDEyYWIuLjc3NTYxMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMS0wMS0yNCAgWm9sdGFuIEhlcmN6ZWcgIDx6
aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNtYWxsIGZpbHRlciBwcmltaXRpdmUgcmVuZGVyZXIgaW1wcm92ZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjIwMAor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHJlcGFpbnRpbmcgb2YgZmlsdGVycywgd2hlbiB0
aGVpcgorICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlcyBkb2VzIG5vdCByZXF1aXJlIHJlbGF5b3V0
LgorCisgICAgICAgIEV4aXN0aW5nIGR5bmFtaWMtdXBkYXRlIHRlc3RzIGNvdmVyIHRoaXMgZmVh
dHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQpOiBDbGVh
cmluZyB0aGUgY3VycmVudGx5IHN0b3JlZCBpbWFnZQorICAgICAgICBiZWZvcmUgcmVwYWludGlu
Zy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6aXNTVkdSZXNvdXJjZUZpbHRlcik6IE5vdCBvbmx5IHRoZSBmaWx0ZXIgcHJp
bWl0aXZlcywKKyAgICAgICAgYnV0IGZpbHRlcnMgc2hvdWxkIGFsc28gYmUgZGV0ZWN0ZWQgdG8g
YWxsb3cgc2FmZSB0ZXN0aW5nIGFuZCBjYXN0aW5nLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyk6IFBhc3NpbmcgdGhlIHJlbmRlcmVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gZG9lcyBub3QgcmVx
dWlyZSB0aGUgZmlsdGVyIGFueW1vcmUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOiBSZXBhaW50CisgICAgICAgIGlmIGxhc3RF
ZmZlY3QtPmhhc1Jlc3VsdCgpIGlzIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6cmVjdXJzaXZl
Q2xlYXJSZXN1bHQpOiBSZWN1cnNpdmVseSBjbGVhcmluZyB0aGUgcmVzdWx0CisgICAgICAgIGlt
YWdlcyBmb3IgdGhvc2UgZmlsdGVycywgd2hvc2UgZGVwZW5kIG9uIHRoZSBzdGFydGluZyBmaWx0
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIFNlYXJjaGluZyBmb3IgYWxsIEZpbHRlckVmZmVj
dHMsIHdob3NlIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgRmlsdGVyRWxlbWVudCwKKyAgICAgICAg
YW5kIGNsZWFyaW5nIGFsbCByZXN1bHRpbmcgaW1hZ2VzIGRlcGVuZGluZyBvbiB0aG9zZSBGaWx0
ZXJFZmZlY3RzLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjppc1NWR1Jl
c291cmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAg
ICAgICBUaGUgZmlsdGVyIGFyZ3VtZW50IGlzIHVubmVjZXNzYXJ5IGFueW1vcmUuIEJ1dCBpcyBp
cyBzdGlsbCBrZXB0IGFzIGEgc3RhdGljCisgICAgICAgIG1lbWJlciwgc2luY2UgdGhlIHByaW1p
dGl2ZSByZW5kZXJlciBzdGlsbCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQorICAgICAgICBGaWx0
ZXJFZmZlY3Qgb2JqZWN0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICBDYWxscyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgU2V0dGluZyB0
aGUgbmV3IGF0dHJpYnV0ZSB2YWx1ZSBmb3IgZWFjaCBGaWx0ZXJFZmZlY3QuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICBDYWxsaW5nIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQuCisgICAgICAgICog
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUpOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBGaWx0
ZXJFbGVtZW50IGltcGxlbWVudHMKKyAgICAgICAgdGhlaXIgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlCisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1
aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6IFRoZQorICAgICAgICByZW5k
ZXJlcnMgYXJlIGFzc2lnbmVkIHRvIHRoZSBmaWx0ZXIgZWZmZWN0cy4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cyk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyQnVpbGRlcjo6ZWZmZWN0UmVmZXJlbmNlcyk6ICdnZXQnIGlzIHVubmVjZXNzYXJ5CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjplZmZlY3RCeVJlbmRlcmVyKTogcmV0dXJu
cyB0aGUKKyAgICAgICAgRmlsdGVyRWZmZWN0IGJlbG9uZ3MgdG8gdGhpcyBSZW5kZXJPYmplY3Qu
CisKIDIwMTEtMDEtMjQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApp
bmRleCA4NTE1NGI1Li5hODRmYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC03Nyw2ICs3Nywx
NiBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVt
YmVyKSBjb25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwog
fQogCit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQoreworICAgIGlmIChtX2ltYWdl
QnVmZmVyUmVzdWx0KQorICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CisgICAg
aWYgKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQuY2xlYXIoKTsKKyAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisg
ICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmNsZWFyKCk7Cit9CisKIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogewogICAgIGlmICghaGFzUmVzdWx0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAppbmRleCAwNjJkZDFiLi4yZGU4YWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgK
QEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgpOwog
CiAgICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0
IHx8IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgfHwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQ7IH0KKyAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VC
dWZmZXIoKTsKICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShj
b25zdCBJbnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzUHJlbXVsdGlwbGll
ZEltYWdlKGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCBmMmU3ZjEzLi5mNjVmMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCkBAIC0zMzIsNiArMzMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFkb3dUcmVlUm9v
dENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5k
ZXggNGJhNGUwYS4uYTU4ODEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBQYXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMoRmlsdGVyKiBmaQogICAgICAgICAgICAgYnVpbGRlci0+Y2xlYXJFZmZl
Y3RzKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBidWlsZGVy
LT5hcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgYnVpbGRl
ci0+YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCwgZWZmZWN0RWxlbWVudC0+
cmVuZGVyZXIoKSk7CiAgICAgICAgIGVmZmVjdEVsZW1lbnQtPnNldFN0YW5kYXJkQXR0cmlidXRl
cyhwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUsIGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGJ1aWxk
ZXItPmFkZChlZmZlY3RFbGVtZW50LT5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICB9CkBAIC0yMDgs
MTMgKzIwOCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNl
KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFsYXN0RWZmZWN0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QsIGZp
bHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAg
ICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwogICAg
IC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLAog
ICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFjdG9y
cy4KICAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3ViUmVnaW9uLnNpemUoKSwgc2Nh
bGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihz
Y2FsZSk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1p
bmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVy
LmdldCgpKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVy
bWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8
ZyBmaWx0ZXI9Ii4uIi8+LgpAQCAtMjkwLDE2ICsyOTAsMTkgQEAgdm9pZCBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIEdyYXBo
aWNzQ28KICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVj
dC4gSXQganVzdCBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCiAgICAgICAgIC8vIGluaXRpYWwg
ZmlsdGVyaW5nIHByb2Nlc3MuIFdlIGp1c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciByZXN1bHQg
b24gYQogICAgICAgICAvLyBzZWNvbmQgZHJhd2luZy4KLSAgICAgICAgaWYgKCFmaWx0ZXJEYXRh
LT5idWlsZGVkKSB7CisgICAgICAgIGlmICghZmlsdGVyRGF0YS0+YnVpbGRlZCkKICAgICAgICAg
ICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2UoZmlsdGVyRGF0YS0+c291cmNl
R3JhcGhpY0J1ZmZlci5yZWxlYXNlKCkpOworCisgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZp
bHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+YnVpbGRlZCBpcyBmYWxzZSkuCisg
ICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGxhc3RF
ZmZlY3QtPmFwcGx5KCk7CiAjaWYgIVBMQVRGT1JNKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdEltYWdlKQogICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT50cmFuc2Zv
cm1Db2xvclNwYWNlKENvbG9yU3BhY2VMaW5lYXJSR0IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
I2VuZGlmCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKICAgICAgICAg
fQorICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKIAogICAgICAgICBJbWFnZUJ1
ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgICAg
IGlmIChyZXN1bHRJbWFnZSkgewpAQCAtMzI0LDUgKzMyNyw0MCBAQCBGbG9hdFJlY3QgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCitzdGF0aWMgdm9pZCByZWN1cnNpdmVD
bGVhclJlc3VsdChTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBGaWx0ZXJFZmZlY3QqIGVmZmVj
dCkKK3sKKyAgICBpZiAoZWZmZWN0LT5oYXNSZXN1bHQoKSkgeworICAgICAgICBlZmZlY3QtPmNs
ZWFyUmVzdWx0KCk7CisKKyAgICAgICAgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiYgZWZmZWN0UmVm
ZXJlbmNlcyA9IGJ1aWxkZXItPmVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgSGFz
aFNldDxGaWx0ZXJFZmZlY3QqPjo6aXRlcmF0b3IgZW5kID0gZWZmZWN0UmVmZXJlbmNlcy5lbmQo
KTsKKyAgICAgICAgZm9yIChIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBpdCA9IGVm
ZmVjdFJlZmVyZW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgcmVj
dXJzaXZlQ2xlYXJSZXN1bHQoYnVpbGRlciwgKml0KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKK3sKKyAgICBIYXNoTWFw
PFJlbmRlck9iamVjdCosIEZpbHRlckRhdGEqPjo6aXRlcmF0b3IgaXQgPSBtX2ZpbHRlci5iZWdp
bigpOworICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRGF0YSo+OjppdGVyYXRvciBl
bmQgPSBtX2ZpbHRlci5lbmQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkpOworCisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgaWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgU1ZHRmlsdGVyQnVpbGRlciogYnVpbGRlciA9IGZpbHRlckRhdGEtPmJ1aWxkZXIuZ2V0
KCk7CisgICAgICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gYnVpbGRlci0+ZWZmZWN0QnlSZW5k
ZXJlcihvYmplY3QpOworICAgICAgICBpZiAoIWVmZmVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBwcmltaXR2ZS0+c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKGVmZmVjdCwgYXR0
cmlidXRlKTsKKyAgICAgICAgcmVjdXJzaXZlQ2xlYXJSZXN1bHQoYnVpbGRlciwgZWZmZWN0KTsK
KworICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVuLgorICAgICAgICBt
YXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGl0LT5maXJzdCwgUmVwYWludEludmFsaWRhdGlvbik7
CisgICAgfQorfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCBmOWExNWNlLi5jODA5ZjIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcigpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJr
Rm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZy
b21DYWNoZShSZW5kZXJPYmplY3QqLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsK
QEAgLTc4LDYgKzc5LDggQEAgcHVibGljOgogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUg
ZmlsdGVyVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNWR0Zp
bHRlckVsZW1lbnQqPihub2RlKCkpLT5maWx0ZXJVbml0cygpKTsgfQogICAgIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBl
KHN0YXRpY19jYXN0PFNWR0ZpbHRlckVsZW1lbnQqPihub2RlKCkpLT5wcmltaXRpdmVVbml0cygp
KTsgfQogCisgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAg
c3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAppbmRleCBmYzczNjJlLi42NGRmNzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcApAQCAtMjksMjUgKzI5LDI5IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuaCIKIAorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVk
ZSAiU1ZHRkVJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0LCBTVkdG
aWx0ZXIqIGZpbHRlcikKK0Zsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0
KQogewogICAgIEZsb2F0UmVjdCB1bml0ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHN1YnJlZ2lvbkJv
dW5kaW5nQm94ID0gZWZmZWN0LT5lZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgRmxvYXRSZWN0IHN1
YnJlZ2lvbiA9IHN1YnJlZ2lvbkJvdW5kaW5nQm94OworICAgIFNWR0ZpbHRlciogZmlsdGVyID0g
c3RhdGljX2Nhc3Q8U1ZHRmlsdGVyKj4oZWZmZWN0LT5maWx0ZXIoKSk7CisgICAgQVNTRVJUKGZp
bHRlcik7CiAKICAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0gRmlsdGVyRWZm
ZWN0VHlwZVRpbGUpIHsKICAgICAgICAgLy8gRkVUdXJidWxlbmNlLCBGRUltYWdlIGFuZCBGRUZs
b29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVyIHJlZ2lvbiBhcyB1
bml0ZSByZWN0LgogICAgICAgICBpZiAodW5zaWduZWQgbnVtYmVyT2ZJbnB1dEVmZmVjdHMgPSBl
ZmZlY3QtPmlucHV0RWZmZWN0cygpLnNpemUoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRFZmZlY3RzOyArK2kpCi0gICAgICAgICAgICAgICAg
dW5pdGVSZWN0LnVuaXRlKGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3Qt
PmlucHV0RWZmZWN0KGkpLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5p
dGUoZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3Qo
aSkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB1bml0ZVJlY3QgPSBmaWx0ZXItPmZp
bHRlclJlZ2lvbkluVXNlclNwYWNlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRlcik7
CisgICAgICAgIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0
RWZmZWN0KDApKTsKICAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVz
ZXJTcGFjZSgpOwogICAgIH0KIApAQCAtOTAsNyArOTQsNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihGaQogICAgIC8vIEZFSW1hZ2UgbmVlZHMgdGhlIHVuY2xpcHBlZCBzdWJyZWdpb24gaW4gYWJz
b2x1dGUgY29vcmRpbmF0ZXMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0CiAgICAgLy8gZGVzdGlu
YXRpb24gcmVjdCBpbiBjb21iaW5hdGlvbiB3aXRoIHByZXNlcnZlQXNwZWN0UmF0aW8uCiAgICAg
aWYgKGVmZmVjdC0+ZmlsdGVyRWZmZWN0VHlwZSgpID09IEZpbHRlckVmZmVjdFR5cGVJbWFnZSkK
LSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxGRUltYWdlKj4oZWZmZWN0KS0+c2V0QWJzb2x1dGVT
dWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOworICAgICAgICBzdGF0aWNfY2FzdDxGRUltYWdl
Kj4oZWZmZWN0KS0+c2V0QWJzb2x1dGVTdWJyZWdpb24oYWJzb2x1dGVTdWJyZWdpb24pOwogCiAg
ICAgLy8gQ2xpcCBldmVyeSBmaWx0ZXIgZWZmZWN0IHRvIHRoZSBmaWx0ZXIgcmVnaW9uLgogICAg
IEZsb2F0UmVjdCBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IGZpbHRlci0+ZmlsdGVyUmVn
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZjI1ZjYyZS4uODE3NmQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzAsMjUgKzMwLDMyIEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNpbmNsdWRlICJSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKLSNpbmNsdWRlICJTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbHRlckVm
ZmVjdDsKKwogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgOiBwdWJsaWMg
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLQotICAgIGV4cGxpY2l0IFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdTdHlsZWRFbGVtZW50KiBmaWx0ZXJQcmltaXRpdmVF
bGVtZW50KQogICAgICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmltaXRp
dmVFbGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICAvLyBUaGV5IGRlcGVuZCBvbiB0aGUgUmVu
ZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlLgotICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKEZpbHRlckVmZmVjdCosIFNWR0ZpbHRlciopOwotCi1wcml2YXRlOgogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIFRoZXkgZGVwZW5k
IG9uIHRoZSBSZW5kZXJPYmplY3QgYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OmFwcGx5UmVzb3VyY2UuCisgICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0Kik7CisKKyAgICBpbmxpbmUgdm9pZCBwcmltaXRp
dmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKKyAgICB7
CisgICAgICAgIFJlbmRlck9iamVjdCogZmlsdGVyID0gcGFyZW50KCk7CisgICAgICAgIGlmICgh
ZmlsdGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihmaWx0
ZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJpYnV0ZSk7CisgICAgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA0OTg4OGRhLi4xMGY3NDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcApAQCAtODQsMTUgKzg0LDMwIEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKK3ZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQoreworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKiBkaWZmdXNlTGlnaHRpbmcgPSBzdGF0aWNf
Y2FzdDxGRURpZmZ1c2VMaWdodGluZyo+KGVmZmVjdCk7CisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQorICAgICAgICBkaWZmdXNlTGlnaHRpbmctPnNldFN1
cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpCisgICAgICAgIGRpZmZ1c2VMaWdodGluZy0+c2V0
RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKSB7CisgICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CisgICAgICAgIGRpZmZ1
c2VMaWdodGluZy0+c2V0TGlnaHRpbmdDb2xvcihmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGln
aHRpbmdDb2xvcigpKTsKKyAgICB9Cit9CisKIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cgorICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cgogICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cgogICAgICAgICB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIKICAgICAgICAgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikKKyAgICAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikKICAgICAgICAgaW52YWxpZGF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggZDU2Y2VkOS4uZTUwMjgz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuaApAQCAtMzksNiArMzksNyBAQCBwcml2YXRlOgogICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXgg
MDBmOTljNS4uMTAzMGI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTcwLDYgKzcwLDEy
IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHJldHVybiBTVkdTdHlsZWRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikKK3sKKyAgICAvLyBXaGVuIGFsbCBmaWx0ZXJz
IHN1cHBvcnQgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmUgY2hhbmdlZCB0byBhIHB1cmUgdmlydHVh
bCBtZXRob2QuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDM0ZTE5ZWEuLmUw
MGM5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTIyLDcgKzIyLDggQEAKICNkZWZpbmUgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzX2gKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50Lmgi
CkBAIC00MSw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRl
cyhib29sLCBGaWx0ZXJFZmZlY3QqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwpAQCAtNTAsMTMgKzUyLDE4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKIAotcHJvdGVjdGVkOgogICAgIGlubGluZSB2b2lkIGludmFsaWRhdGUoKQogICAgIHsKICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQog
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbihwcmltaXRpdmVSZW5kZXJlcik7CiAgICAgfQogCisgICAgaW5saW5l
IHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBwcmltaXRpdmVSZW5kZXJl
ciA9IHJlbmRlcmVyKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSo+KHByaW1pdGl2ZVJlbmRlcmVyKS0+cHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChhdHRyaWJ1dGUpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNGaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAK
aW5kZXggYjMxYjk5NC4uZTQ0OGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTY4LDEwICs2OCwx
MSBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlk
KS5nZXQoKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVj
dFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0UmVmZXJlbmNlKQordm9pZCBT
VkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0UmVmZXJlbmNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAg
ICAvLyBUaGUgZWZmZWN0IG11c3QgYmUgYSBuZXdseSBjcmVhdGVkIGZpbHRlciBlZmZlY3QuCiAg
ICAgQVNTRVJUKCFtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0UmVmZXJlbmNlKSk7
CisgICAgQVNTRVJUKG9iamVjdCAmJiAhbV9lZmZlY3RSZW5kZXJlci5jb250YWlucyhvYmplY3Qp
KTsKICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGVmZmVjdFJlZmVyZW5jZSwgRmlsdGVyRWZm
ZWN0U2V0KCkpOwogCiAgICAgRmlsdGVyRWZmZWN0KiBlZmZlY3QgPSBlZmZlY3RSZWZlcmVuY2Uu
Z2V0KCk7CkBAIC03OSw3ICs4MCw4IEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZm
ZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjCiAKICAgICAv
LyBJdCBpcyBub3QgcG9zc2libGUgdG8gYWRkIHRoZSBzYW1lIHZhbHVlIHRvIGEgc2V0IHR3aWNl
LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZmZWN0czsgKytp
KQotICAgICAgICBnZXRFZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSkpLmFk
ZChlZmZlY3QpOworICAgICAgICBlZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC0+aW5wdXRFZmZlY3Qo
aSkpLmFkZChlZmZlY3QpOworICAgIG1fZWZmZWN0UmVuZGVyZXIuYWRkKG9iamVjdCwgZWZmZWN0
UmVmZXJlbmNlLmdldCgpKTsKIH0KIAogdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVj
dHMoKQpAQCAtODcsNiArODksNyBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0
cygpCiAgICAgbV9sYXN0RWZmZWN0ID0gMDsKICAgICBtX25hbWVkRWZmZWN0cy5jbGVhcigpOwog
ICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5jbGVhcigpOworICAgIG1fZWZmZWN0UmVuZGVyZXIuY2xl
YXIoKTsKICAgICBhZGRCdWlsdGluRWZmZWN0cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggYTNj
MTI0NC4uOWM5ZmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00Mywx
NSArNDQsMTggQEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAotICAgIHZvaWQgYXBwZW5k
RWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKKyAgICB2b2lk
IGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVu
ZGVyT2JqZWN0Kik7CiAKLSAgICBpbmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBnZXRFZmZlY3RSZWZl
cmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQorICAgIGlubGluZSBGaWx0ZXJFZmZlY3RTZXQm
IGVmZmVjdFJlZmVyZW5jZXMoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiAgICAgewogICAgICAgICAv
LyBPbmx5IGFsbG93ZWQgZm9yIGVmZmVjdHMgYmVsb25ncyB0byB0aGlzIGJ1aWxkZXIuCiAgICAg
ICAgIEFTU0VSVChtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7CiAgICAgICAg
IHJldHVybiBtX2VmZmVjdFJlZmVyZW5jZXMuZmluZChlZmZlY3QpLT5zZWNvbmQ7CiAgICAgfQog
CisgICAgLy8gUmVxdWlyZWQgdG8gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZmlsdGVyIGR1
cmluZyBhbiBzdmdBdHRyaWJ1dGVDaGFuZ2VkLgorICAgIGlubGluZSBGaWx0ZXJFZmZlY3QqIGVm
ZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpIHsgcmV0dXJuIG1fZWZmZWN0UmVu
ZGVyZXIuZ2V0KG9iamVjdCk7IH0KKwogICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7CiAKIHByaXZh
dGU6CkBAIC02OSw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlz
dCwgd2hpY2ggY29udGFpbnMgdGhvc2UgZmlsdGVyIGVmZmVjdHMsCiAgICAgLy8gd2hpY2ggZGVw
ZW5kcyBvbiB0aGUga2V5IGZpbHRlciBlZmZlY3QuCiAgICAgSGFzaE1hcDxSZWZQdHI8RmlsdGVy
RWZmZWN0PiwgRmlsdGVyRWZmZWN0U2V0PiBtX2VmZmVjdFJlZmVyZW5jZXM7CisgICAgSGFzaE1h
cDxSZW5kZXJPYmplY3QqLCBGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdFJlbmRlcmVyOwogCiAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gbV9sYXN0RWZmZWN0OwogfTsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80061</attachid>
            <date>2011-01-25 06:53:57 -0800</date>
            <delta_ts>2011-01-25 06:58:42 -0800</delta_ts>
            <desc>final patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>25556</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA4NWJmOTFlMGEzZGExYWZiY2U5Mjg3M2ZiYzVkYTI2YjEyNzllMzk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDI1IEphbiAyMDExIDE1OjUyOjE5ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA2MyArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCAgICAgfCAgIDEwICsrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICAgICAgfCAgICAxICsK
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgIHwgICAg
MSArCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8
ICAgNDggKysrKysrKysrKysrKy0tCiAuLi4vcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oICAgICAgICB8ICAgIDMgKwogLi4uL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5jcHAgICAgICAgfCAgIDEyICsrKy0KIC4uLi9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaCAgICAgICAgIHwgICAyMyArKysrKy0tLQogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgfCAgIDE5ICsrKysrLQogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oICAgfCAgICAxICsK
IC4uLi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCAgIHwgICAg
NiArKwogLi4uL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCAgICAg
fCAgIDExICsrKy0KIC4uLi9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cCAgICAgIHwgICAxOSArKysrKy0KIC4uLi9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmggICAgICAgIHwgICAxMCArKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0
aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiNDEyYWIuLjBhZGIxOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxMS0wMS0yNSAgWm9sdGFuIEhlcmN6ZWcg
IDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGFpbnQgU1ZHIGVsZW1lbnRzIHdpdGggZmlsdGVyIGluc3RlYWQg
b2YgcmVsYXlvdXQgd2hlcmUgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMjAwCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgcmVw
YWludGluZyBvZiBmaWx0ZXJzLCB3aGVuIHRoZWlyCisgICAgICAgIGF0dHJpYnV0ZSBjaGFuZ2Vz
IGRvZXMgbm90IHJlcXVpcmUgcmVsYXlvdXQuCisKKyAgICAgICAgRXhpc3RpbmcgZHluYW1pYy11
cGRhdGUgdGVzdHMgY292ZXIgdGhpcyBmZWF0dXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0OjpjbGVhclJlc3VsdCk6IENsZWFyaW5nIHRoZSBjdXJyZW50bHkgc3RvcmVkIGltYWdl
CisgICAgICAgIGJlZm9yZSByZXBhaW50aW5nLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc1NWR1Jlc291cmNlRmlsdGVy
KTogTm90IG9ubHkgdGhlIGZpbHRlciBwcmltaXRpdmVzLAorICAgICAgICBidXQgZmlsdGVycyBz
aG91bGQgYWxzbyBiZSBkZXRlY3RlZCB0byBhbGxvdyBzYWZlIHRlc3RpbmcgYW5kIGNhc3Rpbmcu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVz
KTogUGFzc2luZyB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIGRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbiBkb2VzIG5vdCByZXF1aXJlIHRoZSBmaWx0ZXIgYW55bW9yZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6
IFJlcGFpbnQKKyAgICAgICAgaWYgbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkgaXMgZmFsc2UuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIFNlYXJjaGluZyBmb3IgYWxsIEZpbHRlckVmZmVjdHMsIHdo
b3NlIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgRmlsdGVyRWxlbWVudCwKKyAgICAgICAgYW5kIGNs
ZWFyaW5nIGFsbCByZXN1bHRpbmcgaW1hZ2VzIGRlcGVuZGluZyBvbiB0aG9zZSBGaWx0ZXJFZmZl
Y3RzLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjppc1NWR1Jlc291cmNl
RmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICBU
aGUgZmlsdGVyIGFyZ3VtZW50IGlzIHVubmVjZXNzYXJ5IGFueW1vcmUuIEJ1dCBpcyBpcyBzdGls
bCBrZXB0IGFzIGEgc3RhdGljCisgICAgICAgIG1lbWJlciwgc2luY2UgdGhlIHByaW1pdGl2ZSBy
ZW5kZXJlciBzdGlsbCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQorICAgICAgICBGaWx0ZXJFZmZl
Y3Qgb2JqZWN0cy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICBDYWxscyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgU2V0dGluZyB0aGUgbmV3
IGF0dHJpYnV0ZSB2YWx1ZSBmb3IgZWFjaCBGaWx0ZXJFZmZlY3QuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgQ2FsbGlu
ZyBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgor
ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBGaWx0ZXJFbGVt
ZW50IGltcGxlbWVudHMKKyAgICAgICAgdGhlaXIgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlCisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6
OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6IFRoZQorICAgICAgICByZW5kZXJlcnMg
YXJlIGFzc2lnbmVkIHRvIHRoZSBmaWx0ZXIgZWZmZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJCdWlsZGVyOjpjbGVhclJlc3VsdHNSZWN1cnNpdmUpOiBSZWN1cnNpdmVseQorICAgICAgICBj
bGVhcmluZyB0aGUgcmVzdWx0IGltYWdlcyBmb3IgdGhvc2UgZmlsdGVycywgd2hvc2UgZGVwZW5k
IG9uCisgICAgICAgIHRoZSBzdGFydGluZyBmaWx0ZXIuCisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
QnVpbGRlcjo6ZWZmZWN0UmVmZXJlbmNlcyk6ICdnZXQnIGlzIHVubmVjZXNzYXJ5CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjplZmZlY3RCeVJlbmRlcmVyKTogcmV0dXJucyB0
aGUKKyAgICAgICAgRmlsdGVyRWZmZWN0IGJlbG9uZ3MgdG8gdGhpcyBSZW5kZXJPYmplY3QuCisK
IDIwMTEtMDEtMjQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRl
eCA4NTE1NGI1Li5hODRmYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC03Nyw2ICs3NywxNiBA
QCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVy
KSBjb25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQog
Cit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQoreworICAgIGlmIChtX2ltYWdlQnVm
ZmVyUmVzdWx0KQorICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CisgICAgaWYg
KG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQuY2xlYXIoKTsKKyAgICBpZiAobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmNsZWFyKCk7Cit9CisKIEltYWdlQnVmZmVy
KiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogewogICAgIGlmICghaGFzUmVzdWx0KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaAppbmRleCAwNjJkZDFiLi4yZGU4YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAg
LTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgpOwogCiAg
ICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0IHx8
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgfHwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7
IH0KKyAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZm
ZXIoKTsKICAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25z
dCBJbnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzUHJlbXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAppbmRleCBmMmU3ZjEzLi5mNjVmMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0zMzIsNiArMzMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFkb3dUcmVlUm9vdENv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXgg
NGJhNGUwYS4uZGEwYzlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQ
YXNzUmVmUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMoRmlsdGVyKiBmaQogICAgICAgICAgICAgYnVpbGRlci0+Y2xlYXJFZmZlY3Rz
KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBidWlsZGVyLT5h
cHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgYnVpbGRlci0+
YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCwgZWZmZWN0RWxlbWVudC0+cmVu
ZGVyZXIoKSk7CiAgICAgICAgIGVmZmVjdEVsZW1lbnQtPnNldFN0YW5kYXJkQXR0cmlidXRlcyhw
cmltaXRpdmVCb3VuZGluZ0JveE1vZGUsIGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGJ1aWxkZXIt
PmFkZChlZmZlY3RFbGVtZW50LT5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICB9CkBAIC0yMDgsMTMg
KzIwOCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFsYXN0RWZmZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QsIGZpbHRl
ckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICBG
bG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwogICAgIC8v
IEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLAogICAg
IC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFjdG9ycy4K
ICAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUp
KSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2Fs
ZSk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdl
dCgpKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVybWlu
ZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0KTsKICAgICB9CiAKICAgICAvLyBJ
ZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8ZyBm
aWx0ZXI9Ii4uIi8+LgpAQCAtMjkwLDE2ICsyOTAsMTkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIEdyYXBoaWNz
Q28KICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVjdC4g
SXQganVzdCBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCiAgICAgICAgIC8vIGluaXRpYWwgZmls
dGVyaW5nIHByb2Nlc3MuIFdlIGp1c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciByZXN1bHQgb24g
YQogICAgICAgICAvLyBzZWNvbmQgZHJhd2luZy4KLSAgICAgICAgaWYgKCFmaWx0ZXJEYXRhLT5i
dWlsZGVkKSB7CisgICAgICAgIGlmICghZmlsdGVyRGF0YS0+YnVpbGRlZCkKICAgICAgICAgICAg
IGZpbHRlckRhdGEtPmZpbHRlci0+c2V0U291cmNlSW1hZ2UoZmlsdGVyRGF0YS0+c291cmNlR3Jh
cGhpY0J1ZmZlci5yZWxlYXNlKCkpOworCisgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRl
ckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+YnVpbGRlZCBpcyBmYWxzZSkuCisgICAg
ICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGxhc3RFZmZl
Y3QtPmFwcGx5KCk7CiAjaWYgIVBMQVRGT1JNKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdEltYWdlKQogICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT50cmFuc2Zvcm1D
b2xvclNwYWNlKENvbG9yU3BhY2VMaW5lYXJSR0IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2Vu
ZGlmCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKICAgICAgICAgfQor
ICAgICAgICBmaWx0ZXJEYXRhLT5idWlsZGVkID0gdHJ1ZTsKIAogICAgICAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlm
IChyZXN1bHRJbWFnZSkgewpAQCAtMzI0LDUgKzMyNyw0MCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnJlc291cmNlQm91bmRpbmdCb3goUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogfQogCitzdGF0aWMgdm9pZCByZWN1cnNpdmVDbGVh
clJlc3VsdChTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBGaWx0ZXJFZmZlY3QqIGVmZmVjdCkK
K3sKKyAgICBpZiAoZWZmZWN0LT5oYXNSZXN1bHQoKSkgeworICAgICAgICBlZmZlY3QtPmNsZWFy
UmVzdWx0KCk7CisKKyAgICAgICAgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiYgZWZmZWN0UmVmZXJl
bmNlcyA9IGJ1aWxkZXItPmVmZmVjdFJlZmVyZW5jZXMoZWZmZWN0KTsKKyAgICAgICAgSGFzaFNl
dDxGaWx0ZXJFZmZlY3QqPjo6aXRlcmF0b3IgZW5kID0gZWZmZWN0UmVmZXJlbmNlcy5lbmQoKTsK
KyAgICAgICAgZm9yIChIYXNoU2V0PEZpbHRlckVmZmVjdCo+OjppdGVyYXRvciBpdCA9IGVmZmVj
dFJlZmVyZW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgcmVjdXJz
aXZlQ2xlYXJSZXN1bHQoYnVpbGRlciwgKml0KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKK3sKKyAgICBIYXNoTWFwPFJl
bmRlck9iamVjdCosIEZpbHRlckRhdGEqPjo6aXRlcmF0b3IgaXQgPSBtX2ZpbHRlci5iZWdpbigp
OworICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRGF0YSo+OjppdGVyYXRvciBlbmQg
PSBtX2ZpbHRlci5lbmQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkpOworCisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gaXQtPnNlY29uZDsKKyAgICAgICAg
aWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgU1ZHRmlsdGVyQnVpbGRlciogYnVpbGRlciA9IGZpbHRlckRhdGEtPmJ1aWxkZXIuZ2V0KCk7
CisgICAgICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gYnVpbGRlci0+ZWZmZWN0QnlSZW5kZXJl
cihvYmplY3QpOworICAgICAgICBpZiAoIWVmZmVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBwcmltaXR2ZS0+c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKGVmZmVjdCwgYXR0cmli
dXRlKTsKKyAgICAgICAgYnVpbGRlci0+Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKGVmZmVjdCk7CisK
KyAgICAgICAgLy8gUmVwYWludCB0aGUgaW1hZ2Ugb24gdGhlIHNjcmVlbi4KKyAgICAgICAgbWFy
a0NsaWVudEZvckludmFsaWRhdGlvbihpdC0+Zmlyc3QsIFJlcGFpbnRJbnZhbGlkYXRpb24pOwor
ICAgIH0KK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggZjlhMTVjZS4uYzgwOWYyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciI7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0Zv
ckludmFsaWRhdGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9t
Q2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CkBA
IC03OCw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGZp
bHRlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gdG9Vbml0VHlwZShzdGF0aWNfY2FzdDxTVkdGaWx0
ZXJFbGVtZW50Kj4obm9kZSgpKS0+ZmlsdGVyVW5pdHMoKSk7IH0KICAgICBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKCkgY29uc3QgeyByZXR1cm4gdG9Vbml0VHlwZShz
dGF0aWNfY2FzdDxTVkdGaWx0ZXJFbGVtZW50Kj4obm9kZSgpKS0+cHJpbWl0aXZlVW5pdHMoKSk7
IH0KIAorICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7CisKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzX3Jlc291cmNlVHlwZTsgfQogICAgIHN0
YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgc19yZXNvdXJjZVR5cGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5jcHAKaW5kZXggZmM3MzYyZS4uNjRkZjcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKQEAgLTI5LDI1ICsyOSwyOSBAQAogI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmgiCiAKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlNWR0ZFSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1GbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRldGVy
bWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgU1ZHRmls
dGVyKiBmaWx0ZXIpCitGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6
OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCkK
IHsKICAgICBGbG9hdFJlY3QgdW5pdGVSZWN0OwogICAgIEZsb2F0UmVjdCBzdWJyZWdpb25Cb3Vu
ZGluZ0JveCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOwogICAgIEZsb2F0UmVjdCBzdWJy
ZWdpb24gPSBzdWJyZWdpb25Cb3VuZGluZ0JveDsKKyAgICBTVkdGaWx0ZXIqIGZpbHRlciA9IHN0
YXRpY19jYXN0PFNWR0ZpbHRlcio+KGVmZmVjdC0+ZmlsdGVyKCkpOworICAgIEFTU0VSVChmaWx0
ZXIpOwogCiAgICAgaWYgKGVmZmVjdC0+ZmlsdGVyRWZmZWN0VHlwZSgpICE9IEZpbHRlckVmZmVj
dFR5cGVUaWxlKSB7CiAgICAgICAgIC8vIEZFVHVyYnVsZW5jZSwgRkVJbWFnZSBhbmQgRkVGbG9v
ZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciByZWdpb24gYXMgdW5p
dGUgcmVjdC4KICAgICAgICAgaWYgKHVuc2lnbmVkIG51bWJlck9mSW5wdXRFZmZlY3RzID0gZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKS5zaXplKCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZmZWN0czsgKytpKQotICAgICAgICAgICAgICAgIHVu
aXRlUmVjdC51bml0ZShkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5p
bnB1dEVmZmVjdChpKSwgZmlsdGVyKSk7CisgICAgICAgICAgICAgICAgdW5pdGVSZWN0LnVuaXRl
KGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZmZWN0KGkp
KSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0
ZXJSZWdpb25JblVzZXJTcGFjZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRldGVybWluZUZp
bHRlclByaW1pdGl2ZVN1YnJlZ2lvbihlZmZlY3QtPmlucHV0RWZmZWN0KDApLCBmaWx0ZXIpOwor
ICAgICAgICBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVm
ZmVjdCgwKSk7CiAgICAgICAgIHVuaXRlUmVjdCA9IGZpbHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKICAgICB9CiAKQEAgLTkwLDcgKzk0LDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
RmkKICAgICAvLyBGRUltYWdlIG5lZWRzIHRoZSB1bmNsaXBwZWQgc3VicmVnaW9uIGluIGFic29s
dXRlIGNvb3JkaW5hdGVzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdAogICAgIC8vIGRlc3RpbmF0
aW9uIHJlY3QgaW4gY29tYmluYXRpb24gd2l0aCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLgogICAgIGlm
IChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSA9PSBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2UpCi0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RkVJbWFnZSo+KGVmZmVjdCktPnNldEFic29sdXRlU3Vi
cmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RkVJbWFnZSo+
KGVmZmVjdCktPnNldEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAogICAg
IC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KICAgICBG
bG9hdFJlY3QgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24gPSBmaWx0ZXItPmZpbHRlclJlZ2lv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCmluZGV4IGYyNWY2MmUuLjgxNzZkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTMwLDI1ICszMCwzMiBAQAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCi0jaW5jbHVkZSAiU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGaWx0ZXJFZmZl
Y3Q7CisKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIDogcHVibGljIFJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHU3R5bGVkRWxlbWVudCogZmlsdGVyUHJpbWl0aXZlRWxl
bWVudCkKICAgICAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZl
RWxlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJlbmRl
ck9iamVjdCBhcmd1bWVudCBvZiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZS4KLSAgICBzdGF0aWMgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lv
bihGaWx0ZXJFZmZlY3QqLCBTVkdGaWx0ZXIqKTsKLQotcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUiOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBUaGV5IGRlcGVuZCBv
biB0aGUgUmVuZGVyT2JqZWN0IGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlLgorICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCopOworCisgICAgaW5saW5lIHZvaWQgcHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCisgICAgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIGZpbHRlciA9IHBhcmVudCgpOworICAgICAgICBpZiAoIWZp
bHRlciB8fCAhZmlsdGVyLT5pc1NWR1Jlc291cmNlRmlsdGVyKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKj4oZmlsdGVy
KS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBhdHRyaWJ1dGUpOworICAgIH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggNDk4ODhkYS4uMTBmNzQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKQEAgLTg0LDE1ICs4NCwzMCBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwog
fQogCit2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK3sKKyAgICBGRURpZmZ1c2VMaWdodGluZyogZGlmZnVzZUxpZ2h0aW5nID0gc3RhdGljX2Nh
c3Q8RkVEaWZmdXNlTGlnaHRpbmcqPihlZmZlY3QpOworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0cikKKyAgICAgICAgZGlmZnVzZUxpZ2h0aW5nLT5zZXRTdXJm
YWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQorICAgICAgICBkaWZmdXNlTGlnaHRpbmctPnNldERp
ZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGZpbHRlclN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpOworICAgICAgICBkaWZmdXNl
TGlnaHRpbmctPnNldExpZ2h0aW5nQ29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0
aW5nQ29sb3IoKSk7CisgICAgfQorfQorCiB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIK
LSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKICAgICAgICAgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIKICAgICAgICAgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpCisgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIpCiAgICAgICAgIGludmFsaWRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IGQ1NmNlZDkuLmU1MDI4MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmgKQEAgLTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDAw
Zjk5YzUuLjEwMzBiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC03MCw2ICs3MCwxMiBA
QCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICByZXR1cm4gU1ZHU3R5bGVkRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK3ZvaWQgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpCit7CisgICAgLy8gV2hlbiBhbGwgZmlsdGVycyBz
dXBwb3J0IHRoaXMgbWV0aG9kLCBpdCB3aWxsIGJlIGNoYW5nZWQgdG8gYSBwdXJlIHZpcnR1YWwg
bWV0aG9kLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCAzNGUxOWVhLi5lMDBj
OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC0yMiw3ICsyMiw4IEBACiAjZGVmaW5lIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc19oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKLSNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUg
IlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpA
QCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
Ym9vbCwgRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
QEAgLTUwLDEzICs1MiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKLXByb3RlY3RlZDoKICAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKICAgICB7CiAgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24ocHJpbWl0aXZlUmVuZGVyZXIpOwogICAgIH0KIAorICAgIGlubGluZSB2
b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJpbWl0aXZlUmVuZGVyZXIg
PSByZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUqPihwcmltaXRpdmVSZW5kZXJlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoYXR0cmlidXRlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
RmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmlu
ZGV4IGIzMWI5OTQuLjU0YTZkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC02OCwxMCArNjgsMTEg
QEAgRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZCku
Z2V0KCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RS
ZWZlcmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdFJlZmVyZW5jZSkKK3ZvaWQgU1ZH
RmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdFJlZmVyZW5jZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
Ly8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgZWZmZWN0LgogICAg
IEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdFJlZmVyZW5jZSkpOwor
ICAgIEFTU0VSVChvYmplY3QgJiYgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMob2JqZWN0KSk7
CiAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChlZmZlY3RSZWZlcmVuY2UsIEZpbHRlckVmZmVj
dFNldCgpKTsKIAogICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gZWZmZWN0UmVmZXJlbmNlLmdl
dCgpOwpAQCAtNzksNyArODAsOCBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlYwogCiAgICAgLy8g
SXQgaXMgbm90IHBvc3NpYmxlIHRvIGFkZCB0aGUgc2FtZSB2YWx1ZSB0byBhIHNldCB0d2ljZS4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkK
LSAgICAgICAgZ2V0RWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkpKS5hZGQo
ZWZmZWN0KTsKKyAgICAgICAgZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QtPmlucHV0RWZmZWN0KGkp
KS5hZGQoZWZmZWN0KTsKKyAgICBtX2VmZmVjdFJlbmRlcmVyLmFkZChvYmplY3QsIGVmZmVjdFJl
ZmVyZW5jZS5nZXQoKSk7CiB9CiAKIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3Rz
KCkKQEAgLTg3LDkgKzg5LDIyIEBAIHZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3Rz
KCkKICAgICBtX2xhc3RFZmZlY3QgPSAwOwogICAgIG1fbmFtZWRFZmZlY3RzLmNsZWFyKCk7CiAg
ICAgbV9lZmZlY3RSZWZlcmVuY2VzLmNsZWFyKCk7CisgICAgbV9lZmZlY3RSZW5kZXJlci5jbGVh
cigpOwogICAgIGFkZEJ1aWx0aW5FZmZlY3RzKCk7CiB9CiAKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRl
cjo6Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCogZWZmZWN0KQoreworICAgIGlm
IChlZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CisgICAgICAgIGVmZmVjdC0+Y2xlYXJSZXN1bHQoKTsK
KworICAgICAgICBIYXNoU2V0PEZpbHRlckVmZmVjdCo+JiBlZmZlY3RSZWZlcmVuY2VzID0gdGhp
cy0+ZWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QpOworICAgICAgICBIYXNoU2V0PEZpbHRlckVmZmVj
dCo+OjppdGVyYXRvciBlbmQgPSBlZmZlY3RSZWZlcmVuY2VzLmVuZCgpOworICAgICAgICBmb3Ig
KEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj46Oml0ZXJhdG9yIGl0ID0gZWZmZWN0UmVmZXJlbmNlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBjbGVhclJlc3VsdHNSZWN1cnNp
dmUoKml0KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGEzYzEyNDQu
LjY0ZmUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDMsMTYgKzQ0
LDIwIEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0Pik7CisgICAgdm9pZCBhcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4sIFJlbmRlck9i
amVjdCopOwogCi0gICAgaW5saW5lIEZpbHRlckVmZmVjdFNldCYgZ2V0RWZmZWN0UmVmZXJlbmNl
cyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKKyAgICBpbmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBlZmZl
Y3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQogICAgIHsKICAgICAgICAgLy8gT25s
eSBhbGxvd2VkIGZvciBlZmZlY3RzIGJlbG9uZ3MgdG8gdGhpcyBidWlsZGVyLgogICAgICAgICBB
U1NFUlQobV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdCkpOwogICAgICAgICByZXR1
cm4gbV9lZmZlY3RSZWZlcmVuY2VzLmZpbmQoZWZmZWN0KS0+c2Vjb25kOwogICAgIH0KIAorICAg
IC8vIFJlcXVpcmVkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbHRlciBkdXJpbmcg
YW4gc3ZnQXR0cmlidXRlQ2hhbmdlZC4KKyAgICBpbmxpbmUgRmlsdGVyRWZmZWN0KiBlZmZlY3RC
eVJlbmRlcmVyKFJlbmRlck9iamVjdCogb2JqZWN0KSB7IHJldHVybiBtX2VmZmVjdFJlbmRlcmVy
LmdldChvYmplY3QpOyB9CisKICAgICB2b2lkIGNsZWFyRWZmZWN0cygpOworICAgIHZvaWQgY2xl
YXJSZXN1bHRzUmVjdXJzaXZlKEZpbHRlckVmZmVjdCogZWZmZWN0KTsKIAogcHJpdmF0ZToKICAg
ICBTVkdGaWx0ZXJCdWlsZGVyKEZpbHRlciopOwpAQCAtNjksNiArNzQsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFRoZSB2YWx1ZSBpcyBhIGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRob3NlIGZpbHRlciBl
ZmZlY3RzLAogICAgIC8vIHdoaWNoIGRlcGVuZHMgb24gdGhlIGtleSBmaWx0ZXIgZWZmZWN0Lgog
ICAgIEhhc2hNYXA8UmVmUHRyPEZpbHRlckVmZmVjdD4sIEZpbHRlckVmZmVjdFNldD4gbV9lZmZl
Y3RSZWZlcmVuY2VzOworICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRWZmZWN0Kj4g
bV9lZmZlY3RSZW5kZXJlcjsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVj
dDsKIH07Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="71527"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>