<?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>79621</bug_id>
          
          <creation_ts>2012-02-26 21:26:47 -0800</creation_ts>
          <short_desc>CSS3 calc: mixed absolute/percentages work for width, height, margin and padding</short_desc>
          <delta_ts>2012-03-07 22:49:00 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80558</dependson>
          <blocked>16662</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Lawther">mikelawther</reporter>
          <assigned_to name="Mike Lawther">mikelawther</assigned_to>
          <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565306</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-26 21:26:47 -0800</bug_when>
    <thetext>CSS3 calc: mixed absolute/percentages work for width, height, margin and padding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565309</commentid>
    <comment_count>1</comment_count>
      <attachid>128948</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-26 21:36:04 -0800</bug_when>
    <thetext>Created attachment 128948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565321</commentid>
    <comment_count>2</comment_count>
      <attachid>128952</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-26 22:08:48 -0800</bug_when>
    <thetext>Created attachment 128952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566144</commentid>
    <comment_count>3</comment_count>
      <attachid>128952</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-02-27 17:06:05 -0800</bug_when>
    <thetext>Comment on attachment 128952
Patch

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

&gt; Source/WebCore/css/CSSCalculationValue.cpp:136
&gt; +            break;

What&apos;s the case where we hit this?

&gt; Source/WebCore/platform/CalculationValue.cpp:78
&gt; +    // Skip m_index == 0 as zero key hits the assertion of HashMap.

Make this ASSERT(m_index) instead. Then you don&apos;t need to check m_index in the loop below.

&gt; Source/WebCore/platform/CalculationValue.cpp:82
&gt; +    m_index++;

Why do you need to increment here? Won&apos;t the loop above already get you the right index value?

&gt; Source/WebCore/platform/Length.cpp:225
&gt; +    float result = calcLength-&gt;evaluate(maxValue);
&gt; +    if (isnan(result))
&gt; +        return 0;
&gt; +    return result;

This is repeated three times. Maybe make this a static helper function? nonNanResult or something?

&gt; Source/WebCore/platform/Length.h:159
&gt; +    // Note: May only be called for Fixed, Percent, Auto and Calculated lengths.
&gt;      // Other types will ASSERT in order to catch invalid length calculations.

This comment isn&apos;t terribly useful given that the code makes this pretty clear.

&gt; Source/WebCore/platform/Length.h:245
&gt; +    bool isPercent() const { return type() == Percent || type() == Calculated; }

Can&apos;t Calculated be a non-percent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566145</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-02-27 17:07:04 -0800</bug_when>
    <thetext>This patch looks good to me. It&apos;s a bit tricky though, so I&apos;d prefer someone with more experience with CSS review this. Antti, would you mind taking a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566315</commentid>
    <comment_count>5</comment_count>
      <attachid>128952</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-27 20:11:17 -0800</bug_when>
    <thetext>Comment on attachment 128952
Patch

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

&gt;&gt; Source/WebCore/css/CSSCalculationValue.cpp:136
&gt;&gt; +            break;
&gt; 
&gt; What&apos;s the case where we hit this?

Good catch - we should never hit that.

&gt;&gt; Source/WebCore/platform/CalculationValue.cpp:78
&gt;&gt; +    // Skip m_index == 0 as zero key hits the assertion of HashMap.
&gt; 
&gt; Make this ASSERT(m_index) instead. Then you don&apos;t need to check m_index in the loop below.

Fair enough - this just catches the extremely unlikely case of wraparound of the index.

&gt;&gt; Source/WebCore/platform/CalculationValue.cpp:82
&gt;&gt; +    m_index++;
&gt; 
&gt; Why do you need to increment here? Won&apos;t the loop above already get you the right index value?

m_index was supposed to be the next available index. So we find the next available index, use it, and step m_index along. The loop is really there for a sanity check.

But now that I think about it, it&apos;s probably better not to step m_index along - then we better deal with the case of insertion/removal of the same element (with nothing else happening inbetween) - m_index will not continually increment. Unit tests would be nice right about now :)

&gt;&gt; Source/WebCore/platform/Length.cpp:225
&gt;&gt; +    return result;
&gt; 
&gt; This is repeated three times. Maybe make this a static helper function? nonNanResult or something?

Done.

&gt;&gt; Source/WebCore/platform/Length.h:159
&gt;&gt;      // Other types will ASSERT in order to catch invalid length calculations.
&gt; 
&gt; This comment isn&apos;t terribly useful given that the code makes this pretty clear.

OK - removed.

&gt;&gt; Source/WebCore/platform/Length.h:245
&gt;&gt; +    bool isPercent() const { return type() == Percent || type() == Calculated; }
&gt; 
&gt; Can&apos;t Calculated be a non-percent?

If it gets this far, it has to be a mixed percent/absolute expression. If it&apos;s a simple length, percent or number, it gets evaluated inside CSSPrimitiveValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566316</commentid>
    <comment_count>6</comment_count>
      <attachid>129174</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-27 20:13:30 -0800</bug_when>
    <thetext>Created attachment 129174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566317</commentid>
    <comment_count>7</comment_count>
      <attachid>129174</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-27 20:16:32 -0800</bug_when>
    <thetext>Comment on attachment 129174
Patch

Thanks for the review Ojan! I&apos;ve addressed your comments in this new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566320</commentid>
    <comment_count>8</comment_count>
      <attachid>129175</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-27 20:19:09 -0800</bug_when>
    <thetext>Created attachment 129175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566322</commentid>
    <comment_count>9</comment_count>
      <attachid>129175</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-27 20:20:31 -0800</bug_when>
    <thetext>Comment on attachment 129175
Patch

The last patch didn&apos;t remove that comment. It&apos;s gone now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567964</commentid>
    <comment_count>10</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-02-29 14:41:15 -0800</bug_when>
    <thetext>+hyatt, since this touches platform/Length.[h|cpp].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570959</commentid>
    <comment_count>11</comment_count>
      <attachid>129175</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-05 12:43:14 -0800</bug_when>
    <thetext>Comment on attachment 129175
Patch

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

A few suggestions, just trying to move the patch along.

Can this patch be made a little less massive by perhaps:
1) removing calculatedIs* stubs?
2) adding CalcExpression* incrementally?

I wonder if Hyatt and Antti will be more inclined to review in smaller bits?

&gt; Source/WebCore/css/CSSStyleSelector.h:352
&gt; +    static Length convertToIntLength(CSSPrimitiveValue*, RenderStyle*, RenderStyle* rootStyle, double multiplier = 1, bool *ok = 0);
&gt; +    static Length convertToFloatLength(CSSPrimitiveValue*, RenderStyle*, RenderStyle* rootStyle, double multiplier = 1, bool *ok = 0);

These conversion functions (including the convertToLength itself) all look like the could be factored to live on the CSSPrimitiveValue.

&gt; Source/WebCore/platform/CalculationValue.cpp:66
&gt; +    // FIXME: result is NaN when there is a division by zero which

File a bug and reference it here?

&gt; Source/WebCore/platform/CalculationValue.h:133
&gt; +class HandleMap {

The name is way too generic to be in WebCore namespace. Can this just be an implementation detail in Length.cpp?

&gt; Source/WebCore/platform/Length.cpp:179
&gt; +// FIXME: It&apos;s impossible to know the sign of calc values without

File a bug and reference it here?

&gt; Source/WebCore/platform/Length.cpp:196
&gt; +bool Length::calculatedIsZero() const
&gt; +{
&gt; +    return false;
&gt; +}
&gt; +
&gt; +bool Length::calculatedIsPositive() const
&gt; +{
&gt; +    return true;
&gt; +}
&gt; +
&gt; +bool Length::calculatedIsNegative() const
&gt; +{
&gt; +    return false;
&gt; +}

Why are these here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571801</commentid>
    <comment_count>12</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 06:31:06 -0800</bug_when>
    <thetext>Thanks for the review Dimitri.

&gt; A few suggestions, just trying to move the patch along.
&gt; 
&gt; Can this patch be made a little less massive by perhaps:
&gt; 1) removing calculatedIs* stubs?
&gt; 2) adding CalcExpression* incrementally?

This patch is already pretty pared back - everything is kinda &apos;bare minimum to function&apos;. 
 - I&apos;ve removed those stubs and replaced them directly with the current return values.
 - Adding CalcExpression* incrementally could only be done non-functionally - ie I could put those bits in in separate patches, but nothing would &apos;work&apos;.
 - I&apos;ve landed the rewritten margin.html test separately.

&gt; &gt; Source/WebCore/css/CSSStyleSelector.h:352
&gt; &gt; +    static Length convertToIntLength(CSSPrimitiveValue*, RenderStyle*, RenderStyle* rootStyle, double multiplier = 1, bool *ok = 0);
&gt; &gt; +    static Length convertToFloatLength(CSSPrimitiveValue*, RenderStyle*, RenderStyle* rootStyle, double multiplier = 1, bool *ok = 0);
&gt; 
&gt; These conversion functions (including the convertToLength itself) all look like the could be factored to live on the CSSPrimitiveValue.

Fair point. I&apos;m inclined to do this as a followup though, since those functions handle NULL CSSPrimitiveValue pointers, meaning the pointer would potentially have to be tested before calling a function on it. Or the NULL check is unnecessary/obsolete.

&gt; &gt; Source/WebCore/platform/CalculationValue.cpp:66
&gt; &gt; +    // FIXME: result is NaN when there is a division by zero which
&gt; 
&gt; File a bug and reference it here?

Done.

&gt; &gt; Source/WebCore/platform/CalculationValue.h:133
&gt; &gt; +class HandleMap {
&gt; 
&gt; The name is way too generic to be in WebCore namespace. Can this just be an implementation detail in Length.cpp?

Once upon a time it was in Length.cpp, but I pulled it out in response to some IRC comments from Hyatt. I&apos;ve put it back - it does reduce the size of this patch marginally.

&gt; &gt; Source/WebCore/platform/Length.cpp:179
&gt; &gt; +// FIXME: It&apos;s impossible to know the sign of calc values without
&gt; 
&gt; File a bug and reference it here?

Done.

&gt; &gt; Source/WebCore/platform/Length.cpp:196
&gt; &gt; +bool Length::calculatedIsZero() const
&gt; &gt; +{
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool Length::calculatedIsPositive() const
&gt; &gt; +{
&gt; &gt; +    return true;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +bool Length::calculatedIsNegative() const
&gt; &gt; +{
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; Why are these here?

Just as explicit functions saying what they do. I&apos;ve removed these and folded their return values directly into the callsites instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571804</commentid>
    <comment_count>13</comment_count>
      <attachid>130371</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 06:34:40 -0800</bug_when>
    <thetext>Created attachment 130371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571939</commentid>
    <comment_count>14</comment_count>
      <attachid>130371</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-06 10:04:18 -0800</bug_when>
    <thetext>Comment on attachment 130371
Patch

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

&gt; Source/WebCore/platform/Length.cpp:192
&gt; +    HashMap&lt;int, RefPtr&lt;CalculationValue&gt; &gt;* m_map;

It doesn&apos;t look like you&apos;re ever destroying this map? I understand the class is only allocated as static, but still that seems like something we should avoid. Does it have to be a pointer? Can it just be a member?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572074</commentid>
    <comment_count>15</comment_count>
      <attachid>130371</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-06 12:43:04 -0800</bug_when>
    <thetext>Comment on attachment 130371
Patch

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

Some drive-by comments:

&gt; Source/WebCore/css/CSSCalculationValue.cpp:135
&gt; +        case CalcPercentNumber:
&gt; +        case CalcOther:
&gt; +            ASSERT_NOT_REACHED();

This seems like a good place for a comment.

&gt; Source/WebCore/platform/Length.cpp:157
&gt; +Length::~Length()
&gt; +{
&gt; +    if (isCalculated())
&gt; +        decrementCalculatedRef();
&gt; +}   

This destructor should be inline, only decrementCalculatedRef() belongs in Length.cpp.

&gt; Source/WebCore/platform/Length.cpp:162
&gt; +    : m_index(1)

Wrong indentation here.

&gt; Source/WebCore/platform/Length.cpp:199
&gt; +static CalculationValueHandleMap* calcHandles()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(CalculationValueHandleMap, handleMap, ());
&gt; +    return &amp;handleMap;
&gt; +}

Nit: static CalculationValueHandleMap&amp; calcHandles() would be a slightly nicer signature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572357</commentid>
    <comment_count>16</comment_count>
      <attachid>130371</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 17:44:09 -0800</bug_when>
    <thetext>Comment on attachment 130371
Patch

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

Thanks for the reviews guys! Comments inline ....

&gt;&gt; Source/WebCore/css/CSSCalculationValue.cpp:135
&gt;&gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; This seems like a good place for a comment.

Done.

&gt;&gt; Source/WebCore/platform/Length.cpp:157
&gt;&gt; +}   
&gt; 
&gt; This destructor should be inline, only decrementCalculatedRef() belongs in Length.cpp.

OK - done.

&gt;&gt; Source/WebCore/platform/Length.cpp:162
&gt;&gt; +    : m_index(1)
&gt; 
&gt; Wrong indentation here.

Fixed.

&gt;&gt; Source/WebCore/platform/Length.cpp:192
&gt;&gt; +    HashMap&lt;int, RefPtr&lt;CalculationValue&gt; &gt;* m_map;
&gt; 
&gt; It doesn&apos;t look like you&apos;re ever destroying this map? I understand the class is only allocated as static, but still that seems like something we should avoid. Does it have to be a pointer? Can it just be a member?

Good point. I&apos;ve made it a member.

&gt;&gt; Source/WebCore/platform/Length.cpp:199
&gt;&gt; +}
&gt; 
&gt; Nit: static CalculationValueHandleMap&amp; calcHandles() would be a slightly nicer signature.

I&apos;m oldskool when it comes to pointers. But changed to a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572358</commentid>
    <comment_count>17</comment_count>
      <attachid>130498</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 17:45:15 -0800</bug_when>
    <thetext>Created attachment 130498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572478</commentid>
    <comment_count>18</comment_count>
      <attachid>130529</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 20:30:32 -0800</bug_when>
    <thetext>Created attachment 130529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572522</commentid>
    <comment_count>19</comment_count>
      <attachid>130541</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 21:49:37 -0800</bug_when>
    <thetext>Created attachment 130541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572525</commentid>
    <comment_count>20</comment_count>
      <attachid>130529</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-03-06 21:53:24 -0800</bug_when>
    <thetext>Comment on attachment 130529
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        Length (in platform) cannot refer to CSSCalculatedValue (in css) due to layering

The terminology is a bit confusing, maybe I&apos;m missing something. Along the patch you use CSSCalculationValue instead of of CalculatedValue, so which one will you use?

&gt; Source/WebCore/platform/Length.cpp:164
&gt; +            m_index++;

I believe at some point we could overflow this. Can&apos;t you reuse ids instead to avoid this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572533</commentid>
    <comment_count>21</comment_count>
      <attachid>130529</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 22:14:03 -0800</bug_when>
    <thetext>Comment on attachment 130529
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        Length (in platform) cannot refer to CSSCalculatedValue (in css) due to layering
&gt; 
&gt; The terminology is a bit confusing, maybe I&apos;m missing something. Along the patch you use CSSCalculationValue instead of of CalculatedValue, so which one will you use?

My mistake, I meant [CSS]CalculationValue, not [CSS]CalculatedValue.

&gt;&gt; Source/WebCore/platform/Length.cpp:164
&gt;&gt; +            m_index++;
&gt; 
&gt; I believe at some point we could overflow this. Can&apos;t you reuse ids instead to avoid this?

It will overflow, after 2 billion or so indices, hence the ASSERT. Reusing ids would be more complicated than what&apos;s here.

I&apos;d prefer to keep this patch as simple as possible until this is proven to be a problem. I&apos;ve filed a bug to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572535</commentid>
    <comment_count>22</comment_count>
      <attachid>130543</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-06 22:16:36 -0800</bug_when>
    <thetext>Created attachment 130543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573132</commentid>
    <comment_count>23</comment_count>
      <attachid>130543</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-07 12:45:53 -0800</bug_when>
    <thetext>Comment on attachment 130543
Patch

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

r=me based on prior partial approval from others, and the changes looking good to me.

It&apos;s great that you&apos;ve sprinkled FIXMEs. Makes it much easier to understand the patch.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:129
&gt; +            {
&gt; +                Length length = CSSStyleSelector::convertToFloatLength(m_value.get(), style, rootStyle, zoom);
&gt; +                return adoptPtr(new CalcExpressionLength(length));
&gt; +            }

I&apos;d write this as a single line.

&gt; Source/WebCore/platform/Length.h:246
&gt;      bool isZero() const 
&gt;      {
&gt;          ASSERT(!isUndefined());
&gt; -        return m_isFloat ? !m_floatValue : !m_intValue;
&gt; +        return isCalculated() ? false : m_isFloat ? !m_floatValue : !m_intValue;
&gt; +    }
&gt; +    bool isPositive() const
&gt; +    {
&gt; +        return isUndefined() ? false : isCalculated() ? true : getFloatValue() &gt; 0;
&gt; +    }
&gt; +    bool isNegative() const
&gt; +    {
&gt; +        return isUndefined() ? false : isCalculated() ? false : getFloatValue() &lt; 0;
&gt;      }

I feel like we can do this without abusing ternary operators.

&gt; Source/WebCore/platform/Length.h:315
&gt; +    void incrementCalculatedRef() const;
&gt; +    void decrementCalculatedRef() const;    

I don&apos;t understand why these are const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573314</commentid>
    <comment_count>24</comment_count>
      <attachid>130543</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-07 15:42:37 -0800</bug_when>
    <thetext>Comment on attachment 130543
Patch

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

Yay - thanks for the review!

&gt;&gt; Source/WebCore/css/CSSCalculationValue.cpp:129
&gt;&gt; +            }
&gt; 
&gt; I&apos;d write this as a single line.

Done.

&gt;&gt; Source/WebCore/platform/Length.h:246
&gt;&gt;      }
&gt; 
&gt; I feel like we can do this without abusing ternary operators.

OK - ternarys involving isCalculated removed.

&gt;&gt; Source/WebCore/platform/Length.h:315
&gt;&gt; +    void decrementCalculatedRef() const;    
&gt; 
&gt; I don&apos;t understand why these are const.

They will only affect the CalculationValueHandleMap, not the Length object itself. So Length can be const, as it is only holding a key into the map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573316</commentid>
    <comment_count>25</comment_count>
      <attachid>130712</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-07 15:45:08 -0800</bug_when>
    <thetext>Created attachment 130712
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573445</commentid>
    <comment_count>26</comment_count>
      <attachid>130712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 18:12:43 -0800</bug_when>
    <thetext>Comment on attachment 130712
Patch for landing

Clearing flags on attachment: 130712

Committed r110126: &lt;http://trac.webkit.org/changeset/110126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573446</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 18:12:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573570</commentid>
    <comment_count>28</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-03-07 21:24:42 -0800</bug_when>
    <thetext>Reopening as the patch was rolled out due to causing a compile error due to exit time destructors: https://bugs.webkit.org/show_bug.cgi?id=80558.

Compile error fix has landed in http://trac.webkit.org/changeset/110144, so I&apos;ll try landing this patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573630</commentid>
    <comment_count>29</comment_count>
      <attachid>130712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 22:48:53 -0800</bug_when>
    <thetext>Comment on attachment 130712
Patch for landing

Clearing flags on attachment: 130712

Committed r110148: &lt;http://trac.webkit.org/changeset/110148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573631</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 22:49:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128948</attachid>
            <date>2012-02-26 21:36:04 -0800</date>
            <delta_ts>2012-02-26 22:08:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120227163602.patch</filename>
            <type>text/plain</type>
            <size>44145</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU4NGE4MWM3MjI4ZTg0
ZGEyOTYzYTkzOTAwNWJkMWI2OTAxMGIxNC4uZTgxY2Q2N2NhOTliY2EwYjlmZDdhODU2OWYxYTI4
YzE2YTRmMGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTAyLTI2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJldHJp
Y3Rpb25zLgorCisgICAgICAgIExlbmd0aHMgY2FuIGJlIGNvcGllZCwgYW5kIHNvIHRoZSBleHBy
ZXNzaW9ucyBhcmUgc3RvcmVkIGluIGEgaGFzaG1hcCwgYW5kIG9ubHkgdGhlaXIKKyAgICAgICAg
aWRzIGFyZSBjb3BpZWQgYWxvbmcgd2l0aCBMZW5ndGguIFRoZSBleHByZXNzaW9ucyBhcmUgUmVm
Q291bnRlZCwgYW5kIHdpbGwgZ2V0IAorICAgICAgICBjbGVhbmVkIHVwIHdoZW4gdGhlIGxhc3Qg
cmVmZXJyaW5nIExlbmd0aCBpcyBkZXN0cnVjdGVkLgorCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgIChDU1NDYWxjUHJpbWl0
aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbjo6dG9D
YWxjVmFsdWUpOgorICAgICAgICAoQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbik6CisgICAgICAgICog
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9k
ZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1Zh
bHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmlu
YXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGNWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNWYWx1ZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGFuZGxlTWFwOjppbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGFuZGxlTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SGFuZGxl
TWFwOjpnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAg
ICAgKENhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bk5vZGU6On5DYWxjRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY1ZhbHVlOjpDYWxjVmFsdWUpOgor
ICAgICAgICAoQ2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4
cHJlc3Npb25OdW1iZXI6OkNhbGNFeHByZXNzaW9uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbGNFeHByZXNzaW9uTnVtYmVyOjpldmFsdWF0ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lv
bkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkxlbmd0aDo6Q2FsY0V4
cHJlc3Npb25MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25MZW5ndGg6
OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpDYWxjRXhwcmVz
c2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChIYW5kbGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6SGFuZGxlTWFwOjpIYW5kbGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6fkxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZElzWmVybyk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc1Bvc2l0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZElzTmVnYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpjYWxjdWxhdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxj
dWxhdGVkTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkRmxv
YXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmluY3JlbWVudENhbGN1bGF0ZWRS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoKKyAgICAgICAgKExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yKj0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6Y2FsY01pblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6Y2FsY0Zsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1plcm8pOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1Bvc2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6aXNOZWdhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUGVyY2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzU3BlY2lmaWVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6aXNDYWxjdWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aW5pdEZyb21MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkTGVu
Z3RoSWQpOgorCiAyMDEyLTAyLTI1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRml4IHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncyBpbiBIYXJmQnV6elNoYXBl
ckJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZTgxMmZmZmY2NWE5NDMxNTQ2MWIwOThjYzQx
YmRkYzkxZWM4MTU2ZS4uZGI3YWM3NzkxNmFmYzAwOWUyMzk2MDRmZDYxNmY3NjAzMzUwZDJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg5NSw2ICs4OTUsNyBAQCBfX1pON1dlYkNvcmU2RWRp
dG9yN0NvbW1hbmRDMUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yN2NvbW1hbmRFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yN291dGRlbnRFdgogX19aTjdXZWJDb3JlNkpTTm9kZTZz
X2luZm9FCitfX1pON1dlYkNvcmU2TGVuZ3RoRDFFdgogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0
ZUVSS1MwXwogX19aTjdXZWJDb3JlNlJlZ2lvbjhzdWJ0cmFjdEVSS1MwXwogX19aTjdXZWJDb3Jl
NlJlZ2lvbjlpbnRlcnNlY3RFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYjg5NDUwODhiOTM1OTEzNTk4MzI5ZjNiMDAw
NWJkOGI4MmNmZWMzLi44ZjViMGRhOWI0ZTNlNjA4MWM2YmNmYWEzZjlkZjJmMzczMDZmODFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zNTI3LDggKzM1MjcsOCBAQAogCQlBMTBCQjU4QjE0ODRFM0IzMDBCMkU4N0EgLyogUmVu
ZGVyU1ZHU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMEJCNTg5MTQ4NEUzQjMwMEIyRTg3QSAvKiBSZW5kZXJTVkdTaGFwZS5oICovOyB9Owog
CQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBEQzc2ODE0NzQ3QkFCMDA1
RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5jcHAgKi87IH07CiAJCUExMERDNzZCMTQ3NDdCQUIwMDVF
MjQ3MSAvKiBTdHlsZUdyaWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTBEQzc2OTE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUExMTBE
QjlEMTRGNURGODcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTEwREI5QzE0RjVERjg3MDBBMDNC
OTMgLyogU3R5bGVHcmlkSXRlbURhdGEuY3BwICovOyB9OwogCQlBMTEwREI5QjE0RjVERjc3MDBB
MDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMTBEQjlBMTRGNURGNzcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJ
dGVtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUExMTBEQjlEMTRGNURGODcwMEEwM0I5MyAvKiBTdHlsZUdyaWRJdGVtRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTEwREI5QzE0RjVE
Rjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEuY3BwICovOyB9OwogCQlBMTIwQUNBNDEz
Rjk5OENBMDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjBBQ0ExMTNGOTk4NDYwMEZFNEFDNyAvKiBM
YXlvdXRSZXBhaW50ZXIuY3BwICovOyB9OwogCQlBMTI1MzhENDEzRjlCNjBBMDAwMjQ3NTQgLyog
TGF5b3V0UmVwYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTIwQUNBMDEzRjk5ODM3MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEzNkEwMEMx
MTM0REJEMjAwQ0M4RDUwIC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMzZBMDBB
MTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5j
cHAgKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5k
ZXggODdmYTczNzgyNzI2ODE3Y2UwZjMyYmMwNjBiYWUyYjlhZmNkYTk4Yi4uOTdkNmE4Y2JmNjhk
MjFmOGRjNThiYjk5MzZiYzAyMmZlNTc3MzM1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMTE0LDYgKzExNCwzMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5jc3NUZXh0KCk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSkgY29uc3QKKyAgICB7CisgICAgICAg
IHN3aXRjaCAobV9jYXRlZ29yeSkgeworICAgICAgICBjYXNlIENhbGNOdW1iZXI6CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVtYmVyKG1fdmFsdWUtPmdl
dEZsb2F0VmFsdWUoKSkpOworICAgICAgICBjYXNlIENhbGNMZW5ndGg6CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVtYmVyKG1fdmFsdWUtPmNvbXB1dGVM
ZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5bGUsIHpvb20pKSk7CisgICAgICAgIGNhc2UgQ2Fs
Y1BlcmNlbnQ6CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRMZW5ndGg6CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICAgICAgTGVuZ3Ro
IGxlbmd0aCA9IENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKG1fdmFsdWUu
Z2V0KCksIHN0eWxlLCByb290U3R5bGUsIHpvb20sICZvayk7CisgICAgICAgICAgICAgICAgaWYg
KCFvaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChsZW5ndGgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIENhbGNPdGhlcjoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwog
ICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3
aXRjaCAobV9jYXRlZ29yeSkgewpAQCAtMjA4LDYgKzIzMiwxNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBjb25zdAorICAgIHsKKyAgICAgICAgT3du
UHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdChtX2xlZnRTaWRlLT50b0NhbGNWYWx1ZShzdHls
ZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlmICghbGVmdCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodCht
X3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpOworICAgICAg
ICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24obGVmdC5yZWxlYXNl
KCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVyYXRvcikpOworICAgIH0KKwogICAgIHZpcnR1YWwg
ZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgCiAgICAgewogICAgICAgICByZXR1cm4gZXZhbHVh
dGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUoKSwgbV9yaWdodFNpZGUtPmRvdWJsZVZhbHVlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggN2MzNjY3MTI1
YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMzNDBmMy4uYTFmYjkzOTIyOGRhODhjYTMwZTVmYzgz
Zjk5YzM1ZTIzMzExZDliNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oCkBAIC01OCw4ICs1OCw5IEBAIGVudW0gQ2FsY3VsYXRpb25DYXRlZ29yeSB7CiBjbGFzcyBD
U1NDYWxjRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lv
bk5vZGU+IHsKIHB1YmxpYzoKICAgICAKLSAgICB2aXJ0dWFsIH5DU1NDYWxjRXhwcmVzc2lvbk5v
ZGUoKSA9IDA7ICAKKyAgICB2aXJ0dWFsIH5DU1NDYWxjRXhwcmVzc2lvbk5vZGUoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzWmVybygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSosIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0gMS4wKSBjb25zdCA9IDA7ICAgIAogICAgIHZp
cnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91Ymxl
IGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6
ZSA9IGZhbHNlKSBjb25zdCA9IDA7CiAgICAgCkBAIC04MCw3ICs4MSwxMiBAQCBwcm90ZWN0ZWQ6
CiBjbGFzcyBDU1NDYWxjVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRlKENTU1BhcnNlclN0cmluZyBuYW1l
LCBDU1NQYXJzZXJWYWx1ZUxpc3QqLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRlKENhbGNWYWx1ZSopOwog
CisgICAgUGFzc1JlZlB0cjxDYWxjVmFsdWU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gQ2FsY1ZhbHVlOjpjcmVhdGUobV9leHByZXNzaW9uLT50b0NhbGNW
YWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSwgbV9ub25OZWdhdGl2ZSA/IENhbGN1bGF0aW9u
UmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgIH0KICAgICBDYWxj
dWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5j
YXRlZ29yeSgpOyB9CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lv
bi0+aXNJbnRlZ2VyKCk7IH0gICAgCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBmYzE0ZTgyMDZlODNk
OThmMjIyMmZiNDlhOGI0ODYyMjVkM2JiNmZiLi4wYThkM2QyOGRmYThiMTI5ZjQwMmMyZWNmZDc3
MGZjY2IyNzIyYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
QEAgLTI2Niw2ICsyNjYsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgICAgICAgICBBU1NFUlQoaXNmaW5pdGUobGVuZ3Ro
LnBlcmNlbnQoKSkpOwogICAgICAgICAgICAgbV92YWx1ZS5udW0gPSBsZW5ndGgucGVyY2VudCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKICAgICAgICAg
Y2FzZSBSZWxhdGl2ZToKICAgICAgICAgY2FzZSBVbmRlZmluZWQ6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5jcHAKaW5kZXggMjc0Y2ViNDgyZTcxN2NhNTg5YzA4YTVkZTlkYmJjZDIxZmJlMDVkZS4u
YjY3MDNkZjA1MmUxODU1ZjUwNjk3NzExYzVhODgyMzViYjgxMDEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKIAogI2luY2x1ZGUgIkNTU0FzcGVjdFJh
dGlvVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZsZXhWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTM4OSw2ICszOTAsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGxlbmd0aCk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkK
ICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CisgICAgICAgICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc2VsZWN0b3ItPnN0eWxlKCks
IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCkpKSk7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA4MTlmZDQ5OTIzZTM3OWI3YTc0MWM2OTBi
NTI3MmI3YjUyNDk1Y2Q2Li44NDg0NGViNWYwMzk0NDE1NTNkYzkxMDI1NmVjMzg3ODNlNDQ5YTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0zMCwxMCArMzAs
MTIgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CisjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgi
CiAjaW5jbHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCiAjaW5j
bHVkZSAiQ1NTQm9yZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNl
UnVsZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgpAQCAtMjUwNiwxMiArMjUwOCwx
MiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdAogICAgIHJldHVybiBsOwogfQogCi1zdGF0aWMg
TGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29u
dmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwg
Ym9vbCAqb2spCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwg
c3R5bGUsIHJvb3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsKIH0KIAotc3RhdGljIExl
bmd0aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29u
dmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
LCBib29sICpvaykKIHsKICAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVl
LCBzdHlsZSwgcm9vdFN0eWxlLCB0cnVlLCBtdWx0aXBsaWVyLCBvayk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCA0ZGI3ZjIyNmQ3MDQxNTY1ZWU5MDRkZWY1ZDE2
ZmUxZjA1ZWRmMmUyLi4yMmE0NmRmZWRkNWY0OTBiZTc4Yjk2ZDQ2OWU2Njg5MmU1ODZkODcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTM0OCw2ICszNDgsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZTsgfQogICAgIGJvb2wgYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZTsgfQogCisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5n
dGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKyAgICBzdGF0aWMgTGVu
Z3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUq
LCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9r
ID0gMCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzX3N0eWxlTm90WWV0
QXZhaWxhYmxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxh
dGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IGI5ZTM4NTgxYWRhZDhiMTk2NDhhZGNhZWQwZTdmNDM5NTM1MWY2MjcuLjMyMjVh
ODNlMzQxNGYzZGE5NjBlNWM4ZDVjYmQyNzFlMmFiMDdiNDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMSw2ICszMSw3MSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKIAorI2luY2x1ZGUg
PGxpbWl0cz4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitmbG9hdCBDYWxjRXhwcmVzc2lvbkJp
bmFyeU9wZXJhdGlvbjo6ZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgZmxv
YXQgbGVmdCA9IG1fbGVmdFNpZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBmbG9hdCByaWdo
dCA9IG1fcmlnaHRTaWRlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgc3dpdGNoIChtX29wZXJh
dG9yKSB7CisgICAgY2FzZSBDYWxjQWRkOgorICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0Owor
ICAgIGNhc2UgQ2FsY1N1YnRyYWN0OgorICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0OworICAg
IGNhc2UgQ2FsY011bHRpcGx5OgorICAgICAgICByZXR1cm4gbGVmdCAqIHJpZ2h0OworICAgIGNh
c2UgQ2FsY0RpdmlkZToKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7CisgICAgICAgIHJldHVybiBs
ZWZ0IC8gcmlnaHQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7Cit9CisKK1Bhc3NSZWZQ
dHI8Q2FsY1ZhbHVlPiBDYWxjVmFsdWU6OmNyZWF0ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGNWYWx1ZSh2YWx1ZSwgcmFuZ2UpKTsKK30KKworZmxv
YXQgQ2FsY1ZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9h
dCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgLy8gRklYTUU6IHJl
c3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBpcyBhIGRpdmlzaW9uIGJ5IHplcm8gd2hpY2gKKyAgICAv
LyAgICAgICAgaXNuJ3QgZm91bmQgYXQgcGFyc2UgdGltZSAoZS5nLiwgNS8oMTAwJS0yMDBweCkq
MTAwcHgpLgorICAgIC8vICAgICAgICBUaGVyZSBpcyBhIGRpc2N1c3Npb24gYWJvdXQgdGhpcyBh
bmQgaG9wZWZ1bGx5IHNwZWMKKyAgICAvLyAgICAgICAgd2lsbCBoYXZlIHRoZSBkZWNpc2lvbiBm
b3IgdGhpcyBpc3N1ZS4KKyAgICAvLyAgICAgICAgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZl
cy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBKYW4vMDAwNy5odG1sCisgICAgaWYgKGlzbmFuKHJlc3Vs
dCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lzTm9uTmVnYXRpdmUgJiYgcmVz
dWx0IDwgMCA/IDAgOiByZXN1bHQ7Cit9CisKK2ludCBIYW5kbGVNYXA6Omluc2VydChQYXNzUmVm
UHRyPENhbGNWYWx1ZT4gY2FsY1ZhbHVlKQoreworICAgIC8vIFNraXAgbV9pbmRleCA9PSAwIGFz
IHplcm8ga2V5IGhpdHMgdGhlIGFzc2VydGlvbiBvZiBIYXNoTWFwLgorICAgIHdoaWxlICghbV9p
bmRleCB8fCBtX21hcC0+Y29udGFpbnMobV9pbmRleCkpCisgICAgICAgIG1faW5kZXgrKzsKKyAg
ICBpbnQgc2V0SW5kZXggPSBtX2luZGV4OworICAgIG1faW5kZXgrKzsKKyAgICAKKyAgICBtX21h
cC0+c2V0KHNldEluZGV4LCBjYWxjVmFsdWUpOyAgIAorICAgIAorICAgIHJldHVybiBzZXRJbmRl
eDsKK30KKwordm9pZCBIYW5kbGVNYXA6OnJlbW92ZShpbnQgaW5kZXgpCit7CisgICAgQVNTRVJU
KG1fbWFwLT5jb250YWlucyhpbmRleCkpOworICAgIG1fbWFwLT5yZW1vdmUoaW5kZXgpOworfQor
CitQYXNzUmVmUHRyPENhbGNWYWx1ZT4gSGFuZGxlTWFwOjpnZXQoaW50IGluZGV4KQoreworICAg
IEFTU0VSVChtX21hcC0+Y29udGFpbnMoaW5kZXgpKTsKKyAgICByZXR1cm4gbV9tYXAtPmdldChp
bmRleCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1ZWU4MGY5ZjQxZjkwNzg3
ZjhhNWI4OWUzODJhLi5lZDVmMWNhNmU2NWM1Yjc2NTQzMzlkODRiOTdjY2MyNWU4NzBlNTcyIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC01MCw2ICs1
MCwxMDIgQEAgZW51bSBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgewogICAgIENhbGN1
bGF0aW9uUmFuZ2VBbGwsCiAgICAgQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlCiB9OworICAg
ICAgICAKK2NsYXNzIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q2FsY0V4cHJlc3Npb25Ob2RlKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgZmxv
YXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0ID0gMDsKK307CisgICAgCitjbGFzcyBD
YWxjVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjVmFsdWU+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYWxjVmFsdWU+IGNyZWF0ZShQYXNzT3duUHRyPENhbGNFeHByZXNz
aW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgZmxv
YXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBD
YWxjVmFsdWUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlv
blBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAg
ICAgICAgLCBtX2lzTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0
aXZlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4g
bV92YWx1ZTsKKyAgICBib29sIG1faXNOb25OZWdhdGl2ZTsKK307CisKK2NsYXNzIENhbGNFeHBy
ZXNzaW9uTnVtYmVyIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgQ2FsY0V4cHJlc3Npb25OdW1iZXIoZmxvYXQgdmFsdWUpCisgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShm
bG9hdCkgY29uc3QgCisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisgICAg
Citwcml2YXRlOgorICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCitjbGFzcyBDYWxjRXhwcmVzc2lv
bkxlbmd0aCA6IHB1YmxpYyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IENhbGNFeHByZXNzaW9uTGVuZ3RoKExlbmd0aCBsZW5ndGgpCisgICAgICAgIDogbV9sZW5n
dGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZs
b2F0IG1heFZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLmNhbGNG
bG9hdFZhbHVlKG1heFZhbHVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIExlbmd0aCBt
X2xlbmd0aDsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uIDogcHVi
bGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgQ2FsY0V4cHJlc3Npb25CaW5h
cnlPcGVyYXRpb24oUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNz
T3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3ApCisg
ICAgICAgIDogbV9sZWZ0U2lkZShsZWZ0U2lkZSkKKyAgICAgICAgLCBtX3JpZ2h0U2lkZShyaWdo
dFNpZGUpCisgICAgICAgICwgbV9vcGVyYXRvcihvcCkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgT3duUHRy
PENhbGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiBtX3JpZ2h0U2lkZTsKKyAgICBDYWxjT3BlcmF0b3IgbV9vcGVyYXRvcjsKK307CisK
K2VudW0gQ2FsY0xpc3RUeXBlIHsKKyAgICBDYWxjTWluLAorICAgIENhbGNNYXgsIAorfTsKKwor
Y2xhc3MgSGFuZGxlTWFwIHsKK3B1YmxpYzoKKyAgICBIYW5kbGVNYXAoKSAKKyAgICA6IG1faW5k
ZXgoMSkKKyAgICB7CisgICAgICAgIG1fbWFwID0gbmV3IEhhc2hNYXA8aW50LCBSZWZQdHI8Q2Fs
Y1ZhbHVlPiA+OworICAgIH0KKyAgICAKKyAgICBpbnQgaW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY1Zh
bHVlPik7CisgICAgdm9pZCByZW1vdmUoaW50IGluZGV4KTsKKyAgICBQYXNzUmVmUHRyPENhbGNW
YWx1ZT4gZ2V0KGludCBpbmRleCk7CisgICAgCitwcml2YXRlOiAgICAgICAgCisgICAgaW50IG1f
aW5kZXg7CisgICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxDYWxjVmFsdWU+ID4qIG1fbWFwOworfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApp
bmRleCBhNmJjMDE5MzljMDUwYzJlMWYyYzFlNTg3NDA1NmU0OGM3OGZiYzllLi43ZTcxNjdjZGIy
ZGIxODFhM2EwMzgxZDRhOTRlNzUyOGY4YmE0NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJM
ZW5ndGguaCIKIAorI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KQEAgLTE0OCw2ICsxNDksOTYgQEAgUGFzc093bkFycmF5UHRyPExlbmd0
aD4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQogCiAgICAg
cmV0dXJuIHIucmVsZWFzZSgpOwogfQorICAgIAorTGVuZ3RoOjp+TGVuZ3RoKCkKK3sKKyAgICBp
ZiAoaXNDYWxjdWxhdGVkKCkpCisgICAgICAgIGRlY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKK30g
ICAKKyAgICAKK0hhbmRsZU1hcCogTGVuZ3RoOjpjYWxjSGFuZGxlcygpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChIYW5kbGVNYXAsIGhhbmRsZU1hcCwgKCkpOworICAgIHJldHVy
biAmaGFuZGxlTWFwOworfQorCitMZW5ndGg6Okxlbmd0aChQYXNzUmVmUHRyPENhbGNWYWx1ZT4g
Y2FsYykKKyAgICA6IG1fcXVpcmsoZmFsc2UpCisgICAgLCBtX3R5cGUoQ2FsY3VsYXRlZCkKKyAg
ICAsIG1faXNGbG9hdChmYWxzZSkKK3sKKyAgICBtX2ludFZhbHVlID0gY2FsY0hhbmRsZXMoKS0+
aW5zZXJ0KGNhbGMpOworfQorICAgIAorUGFzc1JlZlB0cjxDYWxjVmFsdWU+IExlbmd0aDo6Y2Fs
Y1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIHJldHVy
biBjYWxjSGFuZGxlcygpLT5nZXQoY2FsY3VsYXRlZExlbmd0aElkKCkpOworfQorICAgIAorLy8g
RklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBrbm93IHRoZSBzaWduIG9mIGNhbGMgdmFsdWVzIHdp
dGhvdXQKKy8vICAgICAgICBtYXggdmFsdWUgaWYgdGhlIGNhbGMgZm9ybXVsYSBjb250YWlucyBw
ZXJjZW50YWdlcy4KKy8vICAgICAgICBXZSBhc3N1bWUgYWxsIGNhbGMgdmFsdWVzIGFyZSBwb3Np
dGl2ZSBmb3Igbm93LgorCitib29sIExlbmd0aDo6Y2FsY3VsYXRlZElzWmVybygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIExlbmd0aDo6Y2FsY3VsYXRlZElzUG9zaXRp
dmUoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExlbmd0aDo6Y2FsY3Vs
YXRlZElzTmVnYXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IExl
bmd0aDo6Y2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCAvKiByb3VuZFBlcmNlbnRh
Z2VzICovKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRy
PENhbGNWYWx1ZT4gY2FsY0xlbmd0aCA9IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVu
Z3RoSWQoKSk7CisgICAgZmxvYXQgcmVzdWx0ID0gY2FsY0xlbmd0aC0+ZXZhbHVhdGUobWF4VmFs
dWUpOworICAgIGlmIChpc25hbihyZXN1bHQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitpbnQgTGVuZ3RoOjpjYWxjdWxhdGVkTWluVmFsdWUoaW50IG1heFZh
bHVlLCBib29sIC8qIHJvdW5kUGVyY2VudGFnZXMgKi8pIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
Q2FsY3VsYXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY0hh
bmRsZXMoKS0+Z2V0KGNhbGN1bGF0ZWRMZW5ndGhJZCgpKTsKKyAgICBmbG9hdCByZXN1bHQgPSBj
YWxjTGVuZ3RoLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgaWYgKGlzbmFuKHJlc3VsdCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Zsb2F0IExlbmd0aDo6
Y2FsY3VsYXRlZEZsb2F0VmFsdWUoaW50IG1heFZhbHVlKSBjb25zdAoreworICAgIEFTU0VSVChp
c0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRyPENhbGNWYWx1ZT4gY2FsY0xlbmd0aCA9IGNhbGNI
YW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7CisgICAgZmxvYXQgcmVzdWx0ID0g
Y2FsY0xlbmd0aC0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChpc25hbihyZXN1bHQpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIExlbmd0aDo6
aW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRl
ZCgpKTsKKyAgICBjYWxjSGFuZGxlcygpLT5nZXQoY2FsY3VsYXRlZExlbmd0aElkKCkpLT5yZWYo
KTsKK30KKwordm9pZCBMZW5ndGg6OmRlY3JlbWVudENhbGN1bGF0ZWRSZWYoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRyPENhbGNWYWx1ZT4gY2FsY0xl
bmd0aCA9IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7CisgICAgaWYg
KGNhbGNMZW5ndGgtPmhhc09uZVJlZigpKQorICAgICAgICBjYWxjSGFuZGxlcygpLT5yZW1vdmUo
Y2FsY3VsYXRlZExlbmd0aElkKCkpOworICAgIGNhbGNMZW5ndGgtPmRlcmVmKCk7Cit9ICAgIAog
CiBjbGFzcyBTYW1lU2l6ZUFzTGVuZ3RoIHsKICAgICBpbnQzMl90IHZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguaAppbmRleCA1M2IwMjYwYzIwN2IwNzgyODk1ZWYzNzdjODRjZjYxNjQ3NTc0
OTdlLi5lMjQ5ZGZkODBkZmQzMzMwYzMwODNmMWE5ZWE0NWEwMTM4MzRlOWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAKQEAgLTM0LDggKzM1LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdm
ZmZmZmY7IC8vIG1heCB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiBjb25zdCBpbnQgaW50TWluRm9y
TGVuZ3RoID0gKC0weDdmZmZmZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZvciBhIDI4LWJpdCBpbnQK
IAotZW51bSBMZW5ndGhUeXBlIHsgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVkLCBJbnRy
aW5zaWMsIE1pbkludHJpbnNpYywgVW5kZWZpbmVkIH07Ci0KK2VudW0gTGVuZ3RoVHlwZSB7IEF1
dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIENh
bGN1bGF0ZWQsIFVuZGVmaW5lZCB9OworIAorY2xhc3MgQ2FsY1ZhbHVlOyAgICAKK2NsYXNzIEhh
bmRsZU1hcDsKKyAgICAKIHN0cnVjdCBMZW5ndGggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtNjUsMTEgKzY5LDMwIEBAIHB1YmxpYzoKICAgICAgICAgbV9mbG9h
dFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHYpOyAgICAKICAgICB9CiAKKyAgICBleHBsaWNp
dCBMZW5ndGgoUGFzc1JlZlB0cjxDYWxjVmFsdWU+KTsKKworICAgIExlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRGcm9tTGVuZ3RoKGxlbmd0aCk7CisgICAg
fQorICAgIAorICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorICAg
IHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICB+TGVuZ3RoKCk7CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVu
Z3RoJiBvKSBjb25zdCB7IHJldHVybiAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9
PSBvLm1fcXVpcmspICYmIChpc1VuZGVmaW5lZCgpIHx8IChnZXRGbG9hdFZhbHVlKCkgPT0gby5n
ZXRGbG9hdFZhbHVlKCkpKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8p
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgb3Bl
cmF0b3IqPShmbG9hdCB2KQotICAgIHsgICAgICAgIAorICAgIHsgICAgICAgCisgICAgICAgIGlm
IChpc0NhbGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlm
IChtX2lzRmxvYXQpCiAgICAgICAgICAgICBtX2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9h
dD4obV9mbG9hdFZhbHVlICogdik7CiAgICAgICAgIGVsc2UgICAgICAgIApAQCAtODAsNiArMTAz
LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBpbnQgdmFsdWUoKSBjb25zdAogICAgIHsKKyAgICAg
ICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRSBjYWxjIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTY2NjIKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdldEludFZh
bHVlKCk7CiAgICAgfQogCkBAIC04OSw2ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBnZXRGbG9hdFZhbHVlKCk7CiAgICAgfQogCisgICAgUGFzc1JlZlB0cjxDYWxjVmFsdWU+IGNh
bGNWYWx1ZSgpIGNvbnN0OworCiAgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQogICAgIGJvb2wgcXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX3F1aXJrOyB9CiAKQEAgLTEwNiw2ICsxMzYsMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxh
dGVkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKEZpeGVkLCB2YWx1ZSk7CiAgICAg
fQogCkBAIC0xMjEsNyArMTU1LDcgQEAgcHVibGljOgogICAgICAgICAqdGhpcyA9IExlbmd0aCh2
YWx1ZSwgRml4ZWQpOwogICAgIH0KIAotICAgIC8vIE5vdGU6IE1heSBvbmx5IGJlIGNhbGxlZCBm
b3IgRml4ZWQsIFBlcmNlbnQgYW5kIEF1dG8gbGVuZ3Rocy4KKyAgICAvLyBOb3RlOiBNYXkgb25s
eSBiZSBjYWxsZWQgZm9yIEZpeGVkLCBQZXJjZW50LCBBdXRvIGFuZCBDYWxjdWxhdGVkIGxlbmd0
aHMuCiAgICAgLy8gT3RoZXIgdHlwZXMgd2lsbCBBU1NFUlQgaW4gb3JkZXIgdG8gY2F0Y2ggaW52
YWxpZCBsZW5ndGggY2FsY3VsYXRpb25zLgogICAgIGludCBjYWxjVmFsdWUoaW50IG1heFZhbHVl
LCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3QKICAgICB7CkBAIC0xMzEsNiAr
MTY1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBjYWxjTWluVmFsdWUobWF4
VmFsdWUsIHJvdW5kUGVyY2VudGFnZXMpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAg
ICAgICAgICAgIHJldHVybiBtYXhWYWx1ZTsKKyAgICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlLCByb3VuZFBl
cmNlbnRhZ2VzKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgog
ICAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6CiAgICAgICAgICAgICBjYXNlIE1pbkludHJpbnNp
YzoKQEAgLTE1Miw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7
CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRvIGZsb2F0
LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5lcyB0aGF0
IHVzZSB0aGUgRlBVIHN0YWNrLgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOwor
ICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBjYWxj
dWxhdGVkTWluVmFsdWUobWF4VmFsdWUsIHJvdW5kUGVyY2VudGFnZXMpOyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CkBAIC0xNzQsNiArMjEyLDggQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50
KCkgLyAxMDAuMGYpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOworICAgICAgICAgICAgY2FzZSBDYWxj
dWxhdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkRmxvYXRWYWx1ZShtYXhW
YWx1ZSk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAg
ICAgICAgIGNhc2UgSW50cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBA
IC0xODksMTggKzIyOSwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCAKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2lz
RmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFsdWU7CisgICAgICAgIHJldHVybiBpc0Nh
bGN1bGF0ZWQoKSA/IGNhbGN1bGF0ZWRJc1plcm8oKSA6IG1faXNGbG9hdCA/ICFtX2Zsb2F0VmFs
dWUgOiAhbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQo
KSA/IGNhbGN1bGF0ZWRJc1Bvc2l0aXZlKCkgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOworICAgIH0K
KyAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVW5k
ZWZpbmVkKCkgPyBmYWxzZSA6IGlzQ2FsY3VsYXRlZCgpID8gY2FsY3VsYXRlZElzTmVnYXRpdmUo
KSA6IGdldEZsb2F0VmFsdWUoKSA8IDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNQb3NpdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGdldEZsb2F0VmFsdWUo
KSA+IDA7IH0KLSAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBpc1VuZGVmaW5l
ZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPCAwOyB9Ci0KICAgICBib29sIGlzQXV0bygp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvOyB9CiAgICAgYm9vbCBpc1JlbGF0aXZlKCkg
Y29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlbGF0aXZlOyB9Ci0gICAgYm9vbCBpc1BlcmNlbnQo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gUGVyY2VudDsgfQorICAgIGJvb2wgaXNQZXJjZW50
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENhbGN1bGF0
ZWQ7IH0KICAgICBib29sIGlzRml4ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQ7
IH0KICAgICBib29sIGlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IEF1dG8gfHwgdHlwZSgpID09IE1pbkludHJpbnNpYyB8fCB0eXBlKCkgPT0gSW50cmluc2ljOyB9
Ci0gICAgYm9vbCBpc1NwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaXhlZCB8
fCB0eXBlKCkgPT0gUGVyY2VudDsgfQorICAgIGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENh
bGN1bGF0ZWQ7IH0KKyAgICBib29sIGlzQ2FsY3VsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUo
KSA9PSBDYWxjdWxhdGVkOyB9CiAKICAgICBMZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewpAQCAtMjM5LDYgKzI4NSwzNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gbV9mbG9hdFZhbHVlIDogbV9pbnRWYWx1
ZTsKICAgICB9CiAKKyAgICB2b2lkIGluaXRGcm9tTGVuZ3RoKGNvbnN0IExlbmd0aCAmbGVuZ3Ro
KSAKKyAgICB7CisgICAgICAgIG1fcXVpcmsgPSBsZW5ndGgubV9xdWlyazsKKyAgICAgICAgbV90
eXBlID0gbGVuZ3RoLm1fdHlwZTsKKyAgICAgICAgbV9pc0Zsb2F0ID0gbGVuZ3RoLm1faXNGbG9h
dDsKKyAgICAgICAgCisgICAgICAgIGlmIChtX2lzRmxvYXQpCisgICAgICAgICAgICBtX2Zsb2F0
VmFsdWUgPSBsZW5ndGgubV9mbG9hdFZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2ludFZhbHVlID0gbGVuZ3RoLm1faW50VmFsdWU7CisgICAgICAgIAorICAgICAgICBpZiAoaXND
YWxjdWxhdGVkKCkpCisgICAgICAgICAgICBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7CisgICAg
fQorICAgIAorICAgIEhhbmRsZU1hcCogY2FsY0hhbmRsZXMoKSBjb25zdDsKKyAgICAKKyAgICBi
b29sIGNhbGN1bGF0ZWRJc1plcm8oKSBjb25zdDsKKyAgICBib29sIGNhbGN1bGF0ZWRJc1Bvc2l0
aXZlKCkgY29uc3Q7CisgICAgYm9vbCBjYWxjdWxhdGVkSXNOZWdhdGl2ZSgpIGNvbnN0OworICAg
IGludCBjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMp
IGNvbnN0OworICAgIGludCBjYWxjdWxhdGVkTWluVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJv
dW5kUGVyY2VudGFnZXMpIGNvbnN0OworICAgIGZsb2F0IGNhbGN1bGF0ZWRGbG9hdFZhbHVlKGlu
dCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZWRMZW5ndGhJZCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgICAgICByZXR1cm4gZ2V0
SW50VmFsdWUoKTsKKyAgICB9CisgICAgdm9pZCBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29u
c3Q7CisgICAgdm9pZCBkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3Q7ICAgIAorICAgIAog
ICAgIHVuaW9uIHsKICAgICAgICAgaW50IG1faW50VmFsdWU7CiAgICAgICAgIGZsb2F0IG1fZmxv
YXRWYWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBiODk2NWQ3ZjEyMjBkNWViYWY1NDM4M2YzOWI0MTdhMGE1ZmE0YjEy
Li42ZjZiNDMzOTZmMDRjYjIxYjdjM2VkM2U5Y2RiNjQzZjQ0Y2VjZDU3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDItMjYgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBDU1MzIGNhbGM6IG1peGVkIGFic29sdXRlL3BlcmNlbnRhZ2VzIHdv
cmsgZm9yIHdpZHRoLCBoZWlnaHQsIG1hcmdpbiBhbmQgcGFkZGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXdyb3RlIHRoZSBtYXJnaW4gdGVzdCwg
YXMgdGhlIG9yaWdpbmFsIGZvcm0gd291bGRuJ3Qgd29yayBmb3IgcGVyY2VudGFnZXMuCisKKyAg
ICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2Nh
bGMvbWFyZ2luLmh0bWw6CisgICAgICAgICogY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGNzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0OgorCiAyMDEy
LTAyLTI1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBVbnJldmlld2VkIGdhcmRlbmluZywgdW5yZWJhc2VsaW5lIHpvb20tcmVwbGFjZWQt
aW50cmluc2ljLXJhdGlvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2lu
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0
CmluZGV4IDE4ODU2MGI3MDc2YzJhOThiM2Y2ZWMzYjk3M2RiZTE4NjU4MTQxM2EuLjExOWQ3NzJk
ZjNiYzFhNjEwNTczNGJmOWY2NTViYzlkZGIyMjI5ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2Fs
Yy9tYXJnaW4tZXhwZWN0ZWQudHh0CkBAIC0xLDIzICsxLDQzIEBACi1QQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBpcyAyNTAK
LVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1hbGwiKS5wYXJlbnROb2RlLm9m
ZnNldEhlaWdodCBpcyAxNzAKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1s
ZWZ0IikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBpcyAyMjUKLVBBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNpbXBsZS1sZWZ0IikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTIwCi1Q
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKS5wYXJlbnROb2RlLm9m
ZnNldFdpZHRoIGlzIDIyNQotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXJp
Z2h0IikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTIwCi1QQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzaW1wbGUtdG9wIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBpcyAyMDAKLVBB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS10b3AiKS5wYXJlbnROb2RlLm9mZnNl
dEhlaWdodCBpcyAxNDUKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0
b20iKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIGlzIDIwMAotUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2ltcGxlLWJvdHRvbSIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDE0NQot
RkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKS5wYXJlbnROb2RlLm9m
ZnNldFdpZHRoIHNob3VsZCBiZSAyNTAuIFdhcyAyMDAuCi1GQUlMIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwZXJjZW50LWFsbCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IHNob3VsZCBiZSAx
NzAuIFdhcyAxMjAuCi1GQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWxlZnQi
KS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIHNob3VsZCBiZSAyMjUuIFdhcyAyMDAuCi1QQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWxlZnQiKS5wYXJlbnROb2RlLm9mZnNldEhl
aWdodCBpcyAxMjAKLUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtcmlnaHQi
KS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIHNob3VsZCBiZSAyMjUuIFdhcyAyMDAuCi1QQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXJpZ2h0IikucGFyZW50Tm9kZS5vZmZzZXRI
ZWlnaHQgaXMgMTIwCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIp
LnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMgMjAwCi1GQUlMIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwZXJjZW50LXRvcCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IHNob3VsZCBiZSAxNDUu
IFdhcyAxMjAuCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWJvdHRvbSIp
LnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMgMjAwCi1GQUlMIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwZXJjZW50LWJvdHRvbSIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IHNob3VsZCBiZSAx
NDUuIFdhcyAxMjAuCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNpbXBsZS1hbGwiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWFsbCIpLCBudWxsKS5t
YXJnaW5Ub3AgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNpbXBsZS1hbGwiKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjI1cHgiCitQQVNT
IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1hbGwiKSwg
bnVsbCkubWFyZ2luQm90dG9tIGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVmdCIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIy
NXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1w
bGUtbGVmdCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWxlZnQiKSwgbnVsbCkubWFyZ2luUmln
aHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2ltcGxlLWxlZnQiKSwgbnVsbCkubWFyZ2luQm90dG9tIGlzICIwcHgiCitQQVNTIGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLCBudWxs
KS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXJpZ2h0
IiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKSwgbnVsbCkubWFyZ2luQm90dG9t
IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNpbXBsZS10b3AiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtdG9wIiksIG51bGwpLm1hcmdp
blRvcCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2ltcGxlLXRvcCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMHB4IgorUEFTUyBnZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtdG9wIiksIG51bGwp
Lm1hcmdpbkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaW1wbGUtYm90dG9tIiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjBweCIK
K1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJv
dHRvbSIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJvdHRvbSIpLCBudWxsKS5tYXJnaW5SaWdo
dCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzaW1wbGUtYm90dG9tIiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMjVweCIKK1BBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKSwgbnVs
bCkubWFyZ2luTGVmdCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIyNXB4Igor
UEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWFs
bCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKSwgbnVsbCkubWFyZ2luQm90dG9t
IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwZXJjZW50LWxlZnQiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0IiksIG51bGwp
Lm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwZXJjZW50LWxlZnQiKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0
IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXJpZ2h0IiksIG51bGwpLm1hcmdpbkxlZnQg
aXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGVyY2VudC1yaWdodCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1yaWdodCIpLCBudWxsKS5t
YXJnaW5SaWdodCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC1yaWdodCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIK
K1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10
b3AiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMg
IjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBl
cmNlbnQtdG9wIiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtdG9wIiksIG51bGwpLm1hcmdp
bkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwZXJjZW50LWJvdHRvbSIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNT
IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYm90dG9t
IiksIG51bGwpLm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWJvdHRvbSIpLCBudWxsKS5tYXJnaW5SaWdodCBp
cyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
ZXJjZW50LWJvdHRvbSIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjI1cHgiCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4uaHRtbCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJn
aW4uaHRtbAppbmRleCA1MDkwN2UzYmRiMWUzNTViZDNiZTQ4YTkxM2NiZmQyMjI4NTIzOTQ4Li43
OGRhMGVhY2U3ZTA3ZmM2ZTA0OTk0Y2M2YmYzMmMxMjU5ZWRhNjY1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L21hcmdpbi5odG1sCkBAIC0xNiw2NSArMTYsNTcgQEAKIDwvc3R5bGU+CiAKIDxkaXYgaWQ9InRl
c3QtY29udGFpbmVyIj4KLSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUtYWxsIj5UaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48L2Rpdj48YnIv
PgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS1sZWZ0Ij5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUg
YSBsZWZ0IG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjwvZGl2Pjxici8+Ci0gICAgPGRpdj48cCBp
ZD0ic2ltcGxlLXJpZ2h0Ij5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBtYXJnaW4g
b2YgMjUgcGl4ZWxzLjwvcD48L2Rpdj48YnIvPgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS10b3Ai
PlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48
L2Rpdj48YnIvPgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS1ib3R0b20iPlRoaXMgZWxlbWVudCBz
aG91bGQgaGF2ZSBhIGJvdHRvbSBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48L2Rpdj48YnIvPgor
ICAgIDxwIGlkPSJzaW1wbGUtYWxsIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFs
bCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48YnIvPgorICAgIDxwIGlkPSJzaW1wbGUtbGVmdCI+
VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48
YnIvPgorICAgIDxwIGlkPSJzaW1wbGUtcmlnaHQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBh
IHJpZ2h0IG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjxici8+CisgICAgPHAgaWQ9InNpbXBsZS10
b3AiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwv
cD48YnIvPgorICAgIDxwIGlkPSJzaW1wbGUtYm90dG9tIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSBib3R0b20gbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KICAgICA8ZGl2IGlkPSJ3
cmFwcGVyIiBzdHlsZT0id2lkdGg6IDMwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBjb3Juc2lsazsg
ZGlzcGxheTogYmxvY2s7Ij4KLSAgICAgICAgPGRpdj48cCBpZD0icGVyY2VudC1hbGwiPlRoaXMg
ZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBv
ZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PC9kaXY+PGJyLz4KLSAgICAg
ICAgPGRpdj48cCBpZD0icGVyY2VudC1sZWZ0Ij5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBs
ZWZ0IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWlu
dXMgNXB4KS48L3A+PC9kaXY+PGJyLz4KLSAgICAgICAgPGRpdj48cCBpZD0icGVyY2VudC1yaWdo
dCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgbWFyZ2luIG9mIDI1IHBpeGVscyAo
MTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48L2Rpdj48YnIvPgot
ICAgICAgICA8ZGl2PjxwIGlkPSJwZXJjZW50LXRvcCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZl
IGEgdG9wIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHgg
bWludXMgNXB4KS48L3A+PC9kaXY+PGJyLz4KLSAgICAgICAgPGRpdj48cCBpZD0icGVyY2VudC1i
b3R0b20iPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBtYXJnaW4gb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjwvZGl2Pjxi
ci8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50LWFsbCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZl
IGFuIG92ZXJhbGwgbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAz
MDBweCBtaW51cyA1cHgpLjwvcD48YnIvPgorICAgICAgICA8cCBpZD0icGVyY2VudC1sZWZ0Ij5U
aGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBsZWZ0IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBv
ZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PGJyLz4KKyAgICAgICAgPHAg
aWQ9InBlcmNlbnQtcmlnaHQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IG1hcmdp
biBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48
L3A+PGJyLz4KKyAgICAgICAgPHAgaWQ9InBlcmNlbnQtdG9wIj5UaGlzIGVsZW1lbnQgc2hvdWxk
IGhhdmUgYSB0b3AgbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAz
MDBweCBtaW51cyA1cHgpLjwvcD48YnIvPgorICAgICAgICA8cCBpZD0icGVyY2VudC1ib3R0b20i
PlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBtYXJnaW4gb2YgMjUgcGl4ZWxzICgx
MCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjxici8+CiAgICAgPC9k
aXY+CiA8L2Rpdj4KIDxzY3JpcHQ+CiAgICAgdmFyIGlubmVyV2lkdGggPSAyMDA7CiAgICAgdmFy
IGlubmVySGVpZ2h0ID0gMTIwOwotICAgIHZhciBtYXJnaW4gPSAyNTsKKyAgICB2YXIgbWFyZ2lu
ID0gIjI1cHgiOworICAgIHZhciBub01hcmdpbiA9ICIwcHgiOwogCiAgICAgdmFyIHRlc3RzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInAiKTsKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRlc3RzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBvdXRlckVsZW1lbnQgPSB0ZXN0
c1tpXS5wYXJlbnROb2RlOwotICAgICAgICB2YXIgaW5uZXJFbGVtZW50ID0gdGVzdHNbaV07Ci0g
ICAgICAgIHZhciB3aWR0aCA9IG91dGVyRWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAgdmFy
IGhlaWdodCA9IG91dGVyRWxlbWVudC5vZmZzZXRIZWlnaHQ7Ci0KLSAgICAgICAgdmFyIGV4cGVj
dGVkV2lkdGggPSBpbm5lcldpZHRoOwotICAgICAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBpbm5l
ckhlaWdodDsKLSAgICAKKyAgICAgICAgdmFyIGlubmVyRWxlbWVudCA9IHRlc3RzW2ldCisgICAg
ICAgIHZhciBleHBlY3RlZExlZnQgPSBub01hcmdpbjsKKyAgICAgICAgdmFyIGV4cGVjdGVkVG9w
ID0gbm9NYXJnaW47CisgICAgICAgIHZhciBleHBlY3RlZFJpZ2h0ID0gbm9NYXJnaW47CisgICAg
ICAgIHZhciBleHBlY3RlZEJvdHRvbSA9IG5vTWFyZ2luOwogICAgICAgICBzd2l0Y2ggKGlubmVy
RWxlbWVudC5pZC5zcGxpdCgiLSIpWzFdKSB7CiAgICAgICAgIGNhc2UgImFsbCI6Ci0gICAgICAg
ICAgICBleHBlY3RlZFdpZHRoICs9IDIgKiBtYXJnaW47Ci0gICAgICAgICAgICBleHBlY3RlZEhl
aWdodCArPSAyICogbWFyZ2luOworICAgICAgICAgICAgZXhwZWN0ZWRMZWZ0ID0gbWFyZ2luOwor
ICAgICAgICAgICAgZXhwZWN0ZWRUb3AgPSBtYXJnaW47CisgICAgICAgICAgICBleHBlY3RlZFJp
Z2h0ID0gbWFyZ2luOworICAgICAgICAgICAgZXhwZWN0ZWRCb3R0b20gPSBtYXJnaW47CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAidG9wIjoKKyAgICAgICAgICAgIGV4cGVjdGVk
VG9wID0gbWFyZ2luOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgImJvdHRvbSI6
Ci0gICAgICAgICAgICBleHBlY3RlZEhlaWdodCArPSBtYXJnaW47CisgICAgICAgICAgICBleHBl
Y3RlZEJvdHRvbSA9IG1hcmdpbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJs
ZWZ0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkTGVmdCA9IG1hcmdpbjsKKyAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlICJyaWdodCI6Ci0gICAgICAgICAgICBleHBlY3RlZFdpZHRoICs9
IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVkUmlnaHQgPSBtYXJnaW47CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCInICsgaW5uZXJFbGVtZW50LmlkICsgJyIpLnBhcmVudE5vZGUub2Zm
c2V0V2lkdGgnLCBleHBlY3RlZFdpZHRoKTsKLSAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicgKyBpbm5lckVsZW1lbnQuaWQgKyAnIikucGFyZW50Tm9k
ZS5vZmZzZXRIZWlnaHQnLCBleHBlY3RlZEhlaWdodCk7Ci0gICAgCi0gICAgICAgIHZhciBlcnJv
ciA9IFtdOwotICAgICAgICBpZiAod2lkdGggIT0gZXhwZWN0ZWRXaWR0aCkKLSAgICAgICAgICAg
IGVycm9yLnB1c2goImV4cGVjdGVkIHdpZHRoICIgKyBleHBlY3RlZFdpZHRoICsgIiwgd2FzICIg
KyB3aWR0aCk7Ci0gICAgICAgIGlmIChoZWlnaHQgIT0gZXhwZWN0ZWRIZWlnaHQpCi0gICAgICAg
ICAgICBlcnJvci5wdXNoKCJleHBlY3RlZCBoZWlnaHQgIiArIGV4cGVjdGVkSGVpZ2h0ICsgIiwg
d2FzICIgKyBoZWlnaHQpOwotCi0gICAgICAgIGlmIChlcnJvciA9PSAiIikgewotICAgICAgICAg
ICAgaW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7Ci0gICAgICAg
ICAgICBpbm5lckVsZW1lbnQuaW5uZXJIVE1MICs9ICIgPT4gUEFTUyI7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpbm5lckVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gInJl
ZCI7Ci0gICAgICAgICAgICBpbm5lckVsZW1lbnQuaW5uZXJIVE1MICs9ICIgPT4gRkFJTDogIiAr
IGVycm9yLmpvaW4oIiwgIik7Ci0gICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInICsgaW5uZXJF
bGVtZW50LmlkICsgJyIpLCBudWxsKS5tYXJnaW5MZWZ0JywgZXhwZWN0ZWRMZWZ0KTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCInICsgaW5uZXJFbGVtZW50LmlkICsgJyIpLCBudWxsKS5tYXJnaW5Ub3AnLCBl
eHBlY3RlZFRvcCk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICciKSwg
bnVsbCkubWFyZ2luUmlnaHQnLCBleHBlY3RlZFJpZ2h0KTsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInICsg
aW5uZXJFbGVtZW50LmlkICsgJyIpLCBudWxsKS5tYXJnaW5Cb3R0b20nLCBleHBlY3RlZEJvdHRv
bSk7CiAgICAgfQogICAgIAogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dAppbmRleCA4M2VlMjY3
YjkwZWU4YWRkNjYwNDFiNWNlZjhhYjg5YWI4M2I3ZWJjLi4wYjhlM2E3NDQ0NTI4NzA4M2NkYzUy
YmI2NDZlYjVkMjA1Nzc5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFk
ZGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhw
ZWN0ZWQudHh0CkBAIC04LDEyICs4LDEyIEBAIFRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRv
cCBwYWRkaW5nIG9mIDI1IHBpeGVscy4gPT4gUEFTUwogCiBUaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAotVGhpcyBlbGVtZW50
IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJl
bnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcgd2lkdGgsIHdyb25n
IGhlaWdodAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgcGFkZGluZyBvZiAy
NSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFT
UwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBsZWZ0IHBhZGRpbmcgb2YgMjUgcGl4ZWxz
ICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25n
IHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBsZWZ0IHBhZGRpbmcgb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAot
VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEw
JSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcgd2lk
dGgKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcgb2YgMjUgcGl4ZWxz
ICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAotVGhp
cyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2Yg
cGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIGhlaWdodAor
VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUg
b2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAotVGhpcyBlbGVt
ZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFy
ZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIGhlaWdodAorVGhp
cyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUg
b2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQKaW5kZXggNWI0NWQyZGNj
YzA4MDJhMzM3MTM5NzRhNjI2ODdiMzRkYjM1NGI1ZC4uOTdkNmQzYTNiNmFlMzNmZmM2NGJjY2M2
NDNhODE4NTIxMTJmYjQ1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBs
ZS1jYWxjcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1j
YWxjcy1leHBlY3RlZC50eHQKQEAgLTIwLDEwICsyMCwxMCBAQCBjb250cm9sID0+IFBBU1MKIDEw
cHgqICg1ICogMikgPT4gUEFTUwogNTBweCArIDEwcHggKiA1IChvcGVyYXRpb24gb3JkZXIpID0+
IFBBU1MKIDEwMCUvMiAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwotMTAwJSArIC0xMDBw
eCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBv
ZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQg
d2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2Ci04MCUg
LSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdp
ZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAs
IGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYK
LTMwMHB4IC0gMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBl
Y3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGgg
b2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3
YXMgMjU2Ci0tMTAwcHggKyAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9v
bT0xIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3Rl
ZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEw
MCwgYnV0IHdhcyAyNTYKKzEwMCUgKyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBB
U1MKKzgwJSAtIDYwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKzMwMHB4IC0gMTAw
JSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworLTEwMHB4ICsgMTAwJSAod2hlcmUgMTAw
JSBpcyAyMDBweCkgPT4gUEFTUwogMjAlICsgMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQ
QVNTCiA4MCUgLSAzMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDEwJSAqIDUgKHdo
ZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128952</attachid>
            <date>2012-02-26 22:08:48 -0800</date>
            <delta_ts>2012-02-27 20:13:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120227170845.patch</filename>
            <type>text/plain</type>
            <size>42286</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE0OWUwYjJhZmVhNjI0
MmQzYzc0ODg3YTQ5YTI2YmZiMWE2NjM3Ni4uYjk4NmY2MjRlOGUxMTUxZDQ2YTljOGEyMzNiNmRl
ZjkwYjRiNDJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTAyLTI2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJldHJp
Y3Rpb25zLgorCisgICAgICAgIExlbmd0aHMgY2FuIGJlIGNvcGllZCwgYW5kIHNvIHRoZSBleHBy
ZXNzaW9ucyBhcmUgc3RvcmVkIGluIGEgaGFzaG1hcCwgYW5kIG9ubHkgdGhlaXIKKyAgICAgICAg
aWRzIGFyZSBjb3BpZWQgYWxvbmcgd2l0aCBMZW5ndGguIFRoZSBleHByZXNzaW9ucyBhcmUgUmVm
Q291bnRlZCwgYW5kIHdpbGwgZ2V0IAorICAgICAgICBjbGVhbmVkIHVwIHdoZW4gdGhlIGxhc3Qg
cmVmZXJyaW5nIExlbmd0aCBpcyBkZXN0cnVjdGVkLgorCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgIChDU1NDYWxjUHJpbWl0
aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbjo6dG9D
YWxjVmFsdWUpOgorICAgICAgICAoQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbik6CisgICAgICAgICog
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9k
ZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1Zh
bHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmlu
YXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbGNWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNWYWx1ZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGFuZGxlTWFwOjppbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGFuZGxlTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SGFuZGxl
TWFwOjpnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAg
ICAgKENhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bk5vZGU6On5DYWxjRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY1ZhbHVlOjpDYWxjVmFsdWUpOgor
ICAgICAgICAoQ2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4
cHJlc3Npb25OdW1iZXI6OkNhbGNFeHByZXNzaW9uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbGNFeHByZXNzaW9uTnVtYmVyOjpldmFsdWF0ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lv
bkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkxlbmd0aDo6Q2FsY0V4
cHJlc3Npb25MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25MZW5ndGg6
OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpDYWxjRXhwcmVz
c2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChIYW5kbGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6SGFuZGxlTWFwOjpIYW5kbGVNYXApOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6fkxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZElzWmVybyk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc1Bvc2l0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZElzTmVnYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpjYWxjdWxhdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxj
dWxhdGVkTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkRmxv
YXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmluY3JlbWVudENhbGN1bGF0ZWRS
ZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoKKyAgICAgICAgKExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yKj0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnNl
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6Y2FsY01pblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6Y2FsY0Zsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1plcm8pOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1Bvc2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aDo6aXNOZWdhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUGVyY2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzU3BlY2lmaWVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6aXNDYWxjdWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aW5pdEZyb21MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkTGVu
Z3RoSWQpOgorCiAyMDEyLTAyLTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgc2hvdWxkIGxpdmUgaW4gaXRzIG93
biBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDMwNTRhYTI3MzZjOGRhZGM5ZmFlMmI3NDcw
MWU0NjRjZDIzZWE4MTAuLjQ4MjZmMmE3NTM2MTQ0Zjc3NWMzYTgwZGEzZTg2YjE5N2Q0ZDhlZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04OTUsNiArODk1LDcgQEAgX19aTjdXZWJDb3JlNkVk
aXRvcjdDb21tYW5kQzFFdgogX19aTjdXZWJDb3JlNkVkaXRvcjdjb21tYW5kRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYKIF9fWk43V2ViQ29yZTZKU05vZGU2
c19pbmZvRQorX19aTjdXZWJDb3JlNkxlbmd0aEQxRXYKIF9fWk43V2ViQ29yZTZSZWdpb241dW5p
dGVFUktTMF8KIF9fWk43V2ViQ29yZTZSZWdpb244c3VidHJhY3RFUktTMF8KIF9fWk43V2ViQ29y
ZTZSZWdpb245aW50ZXJzZWN0RVJLUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5jcHAKaW5kZXggODdmYTczNzgyNzI2ODE3Y2UwZjMyYmMwNjBiYWUyYjlhZmNkYTk4
Yi4uOTdkNmE4Y2JmNjhkMjFmOGRjNThiYjk5MzZiYzAyMmZlNTc3MzM1NyAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMTE0LDYgKzExNCwzMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5jc3NUZXh0KCk7CiAgICAgfQogCisgICAg
dmlydHVhbCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSkgY29uc3QK
KyAgICB7CisgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkgeworICAgICAgICBjYXNlIENhbGNO
dW1iZXI6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVt
YmVyKG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpOworICAgICAgICBjYXNlIENhbGNMZW5ndGg6
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVtYmVyKG1f
dmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5bGUsIHpvb20pKSk7Cisg
ICAgICAgIGNhc2UgQ2FsY1BlcmNlbnQ6CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRMZW5ndGg6
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAg
ICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0Zsb2F0
TGVuZ3RoKG1fdmFsdWUuZ2V0KCksIHN0eWxlLCByb290U3R5bGUsIHpvb20sICZvayk7CisgICAg
ICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0
aChsZW5ndGgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJl
cjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIENhbGNP
dGhlcjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkgewpAQCAtMjA4LDYgKzIzMiwxNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAKKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBjb25zdAorICAg
IHsKKyAgICAgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdChtX2xlZnRTaWRlLT50
b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlmICghbGVmdCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiByaWdodChtX3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwg
em9vbSkpOworICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRp
b24obGVmdC5yZWxlYXNlKCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVyYXRvcikpOworICAgIH0K
KwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgCiAgICAgewogICAgICAg
ICByZXR1cm4gZXZhbHVhdGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUoKSwgbV9yaWdodFNpZGUt
PmRvdWJsZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgK
aW5kZXggN2MzNjY3MTI1YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMzNDBmMy4uYTFmYjkzOTIy
OGRhODhjYTMwZTVmYzgzZjk5YzM1ZTIzMzExZDliNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5oCkBAIC01OCw4ICs1OCw5IEBAIGVudW0gQ2FsY3VsYXRpb25DYXRl
Z29yeSB7CiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoKICAgICAKLSAgICB2aXJ0dWFsIH5DU1ND
YWxjRXhwcmVzc2lvbk5vZGUoKSA9IDA7ICAKKyAgICB2aXJ0dWFsIH5DU1NDYWxjRXhwcmVzc2lv
bk5vZGUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzWmVybygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJT
dHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0gMS4wKSBjb25zdCA9
IDA7ICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
LCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBj
b21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdCA9IDA7CiAgICAgCkBAIC04MCw3ICs4MSwx
MiBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBDU1NDYWxjVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRlKENTU1Bh
cnNlclN0cmluZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QqLCBDYWxjdWxhdGlvblBlcm1pdHRl
ZFZhbHVlUmFuZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRl
KENhbGNWYWx1ZSopOwogCisgICAgUGFzc1JlZlB0cjxDYWxjVmFsdWU+IHRvQ2FsY1ZhbHVlKFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAx
LjApIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gQ2FsY1ZhbHVlOjpjcmVhdGUobV9leHBy
ZXNzaW9uLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSwgbV9ub25OZWdhdGl2
ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwor
ICAgIH0KICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4g
bV9leHByZXNzaW9uLT5jYXRlZ29yeSgpOyB9CiAgICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbi0+aXNJbnRlZ2VyKCk7IH0gICAgCiAgICAgZG91YmxlIGRvdWJsZVZh
bHVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRl
eCBmYzE0ZTgyMDZlODNkOThmMjIyMmZiNDlhOGI0ODYyMjVkM2JiNmZiLi4wYThkM2QyOGRmYThi
MTI5ZjQwMmMyZWNmZDc3MGZjY2IyNzIyYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKQEAgLTI2Niw2ICsyNjYsNyBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgICAgICAgICBBU1NFUlQo
aXNmaW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOwogICAgICAgICAgICAgbV92YWx1ZS5udW0gPSBs
ZW5ndGgucGVyY2VudCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2FsY3Vs
YXRlZDoKICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAgICAgY2FzZSBVbmRlZmluZWQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKaW5kZXggMjc0Y2ViNDgyZTcxN2NhNTg5YzA4YTVkZTlk
YmJjZDIxZmJlMDVkZS4uYjY3MDNkZjA1MmUxODU1ZjUwNjk3NzExYzVhODgyMzViYjgxMDEyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKIAogI2luY2x1
ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZsZXhW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTM4OSw2
ICszOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0
eWxlKCksIGxlbmd0aCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFn
ZVdpdGhMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc2Vs
ZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5z
dHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKSk7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBmNmM4OTllMTNi
ZDI5ODdhZTk0YmFkOGQ3Y2IyODk3M2I2M2ExYjAzLi5lMTk0Yjg3Yzg0YzAxZmQ3YmUzN2ExNTEy
MjBhNDIwYjZhMmNhOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnREYXRhLmgiCiAjaW5jbHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJD
b250ZW50LmgiCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NDYWxj
dWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgpAQCAt
MjUwNSwxMiArMjUwNywxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdAogICAgIHJldHVybiBs
OwogfQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5
bGVTZWxlY3Rvcjo6Y29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciwgYm9vbCAqb2spCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChw
cmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIsIG9rKTsK
IH0KIAotc3RhdGljIExlbmd0aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5
bGVTZWxlY3Rvcjo6Y29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyLCBib29sICpvaykKIHsKICAgICByZXR1cm4gY29udmVydFRvTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB0cnVlLCBtdWx0aXBsaWVyLCBvayk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCA0ZGI3ZjIyNmQ3MDQx
NTY1ZWU5MDRkZWY1ZDE2ZmUxZjA1ZWRmMmUyLi4yMmE0NmRmZWRkNWY0OTBiZTc4Yjk2ZDQ2OWU2
Njg5MmU1ODZkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTM0
OCw2ICszNDgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZTsgfQogICAg
IGJvb2wgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsgfQogCisgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsK
KyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVl
KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciA9IDEsIGJvb2wgKm9rID0gMCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxl
KiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGI5ZTM4NTgxYWRhZDhiMTk2NDhhZGNhZWQwZTdmNDM5
NTM1MWY2MjcuLjMyMjVhODNlMzQxNGYzZGE5NjBlNWM4ZDVjYmQyNzFlMmFiMDdiNDEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMSw2ICsz
MSw3MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUu
aCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitmbG9hdCBD
YWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbjo6ZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNv
bnN0Cit7CisgICAgZmxvYXQgbGVmdCA9IG1fbGVmdFNpZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsK
KyAgICBmbG9hdCByaWdodCA9IG1fcmlnaHRTaWRlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAg
c3dpdGNoIChtX29wZXJhdG9yKSB7CisgICAgY2FzZSBDYWxjQWRkOgorICAgICAgICByZXR1cm4g
bGVmdCArIHJpZ2h0OworICAgIGNhc2UgQ2FsY1N1YnRyYWN0OgorICAgICAgICByZXR1cm4gbGVm
dCAtIHJpZ2h0OworICAgIGNhc2UgQ2FsY011bHRpcGx5OgorICAgICAgICByZXR1cm4gbGVmdCAq
IHJpZ2h0OworICAgIGNhc2UgQ2FsY0RpdmlkZToKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7Cisg
ICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7
Cit9CisKK1Bhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBDYWxjVmFsdWU6OmNyZWF0ZShQYXNzT3duUHRy
PENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5n
ZSByYW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGNWYWx1ZSh2YWx1ZSwgcmFu
Z2UpKTsKK30KKworZmxvYXQgQ2FsY1ZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29u
c3QKK3sKKyAgICBmbG9hdCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7Cisg
ICAgLy8gRklYTUU6IHJlc3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBpcyBhIGRpdmlzaW9uIGJ5IHpl
cm8gd2hpY2gKKyAgICAvLyAgICAgICAgaXNuJ3QgZm91bmQgYXQgcGFyc2UgdGltZSAoZS5nLiwg
NS8oMTAwJS0yMDBweCkqMTAwcHgpLgorICAgIC8vICAgICAgICBUaGVyZSBpcyBhIGRpc2N1c3Np
b24gYWJvdXQgdGhpcyBhbmQgaG9wZWZ1bGx5IHNwZWMKKyAgICAvLyAgICAgICAgd2lsbCBoYXZl
IHRoZSBkZWNpc2lvbiBmb3IgdGhpcyBpc3N1ZS4KKyAgICAvLyAgICAgICAgaHR0cDovL2xpc3Rz
LnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBKYW4vMDAwNy5odG1sCisgICAg
aWYgKGlzbmFuKHJlc3VsdCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lzTm9u
TmVnYXRpdmUgJiYgcmVzdWx0IDwgMCA/IDAgOiByZXN1bHQ7Cit9CisKK2ludCBIYW5kbGVNYXA6
Omluc2VydChQYXNzUmVmUHRyPENhbGNWYWx1ZT4gY2FsY1ZhbHVlKQoreworICAgIC8vIFNraXAg
bV9pbmRleCA9PSAwIGFzIHplcm8ga2V5IGhpdHMgdGhlIGFzc2VydGlvbiBvZiBIYXNoTWFwLgor
ICAgIHdoaWxlICghbV9pbmRleCB8fCBtX21hcC0+Y29udGFpbnMobV9pbmRleCkpCisgICAgICAg
IG1faW5kZXgrKzsKKyAgICBpbnQgc2V0SW5kZXggPSBtX2luZGV4OworICAgIG1faW5kZXgrKzsK
KyAgICAKKyAgICBtX21hcC0+c2V0KHNldEluZGV4LCBjYWxjVmFsdWUpOyAgIAorICAgIAorICAg
IHJldHVybiBzZXRJbmRleDsKK30KKwordm9pZCBIYW5kbGVNYXA6OnJlbW92ZShpbnQgaW5kZXgp
Cit7CisgICAgQVNTRVJUKG1fbWFwLT5jb250YWlucyhpbmRleCkpOworICAgIG1fbWFwLT5yZW1v
dmUoaW5kZXgpOworfQorCitQYXNzUmVmUHRyPENhbGNWYWx1ZT4gSGFuZGxlTWFwOjpnZXQoaW50
IGluZGV4KQoreworICAgIEFTU0VSVChtX21hcC0+Y29udGFpbnMoaW5kZXgpKTsKKyAgICByZXR1
cm4gbV9tYXAtPmdldChpbmRleCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1
ZWU4MGY5ZjQxZjkwNzg3ZjhhNWI4OWUzODJhLi5lZDVmMWNhNmU2NWM1Yjc2NTQzMzlkODRiOTdj
Y2MyNWU4NzBlNTcyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxh
dGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5oCkBAIC01MCw2ICs1MCwxMDIgQEAgZW51bSBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFu
Z2UgewogICAgIENhbGN1bGF0aW9uUmFuZ2VBbGwsCiAgICAgQ2FsY3VsYXRpb25SYW5nZU5vbk5l
Z2F0aXZlCiB9OworICAgICAgICAKK2NsYXNzIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q2FsY0V4cHJlc3Npb25Ob2RlKCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0ID0gMDsKK307
CisgICAgCitjbGFzcyBDYWxjVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjVmFsdWU+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxjVmFsdWU+IGNyZWF0ZShQYXNzT3du
UHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVS
YW5nZSk7CisgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OworICAgIAor
cHJpdmF0ZToKKyAgICBDYWxjVmFsdWUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZh
bHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCisgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX2lzTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRp
b25SYW5nZU5vbk5lZ2F0aXZlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgT3duUHRyPENhbGNF
eHByZXNzaW9uTm9kZT4gbV92YWx1ZTsKKyAgICBib29sIG1faXNOb25OZWdhdGl2ZTsKK307CisK
K2NsYXNzIENhbGNFeHByZXNzaW9uTnVtYmVyIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Npb25OdW1iZXIoZmxvYXQgdmFsdWUp
CisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBm
bG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3QgCisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1
ZTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCitjbGFz
cyBDYWxjRXhwcmVzc2lvbkxlbmd0aCA6IHB1YmxpYyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IENhbGNFeHByZXNzaW9uTGVuZ3RoKExlbmd0aCBsZW5ndGgpCisg
ICAgICAgIDogbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZs
b2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsKKyAgICB9CisgICAgCitwcml2YXRl
OgorICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgQ2Fs
Y0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
IGxlZnRTaWRlLCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxj
T3BlcmF0b3Igb3ApCisgICAgICAgIDogbV9sZWZ0U2lkZShsZWZ0U2lkZSkKKyAgICAgICAgLCBt
X3JpZ2h0U2lkZShyaWdodFNpZGUpCisgICAgICAgICwgbV9vcGVyYXRvcihvcCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKKyAgICBPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsKKyAgICBDYWxjT3BlcmF0b3IgbV9v
cGVyYXRvcjsKK307CisKK2VudW0gQ2FsY0xpc3RUeXBlIHsKKyAgICBDYWxjTWluLAorICAgIENh
bGNNYXgsIAorfTsKKworY2xhc3MgSGFuZGxlTWFwIHsKK3B1YmxpYzoKKyAgICBIYW5kbGVNYXAo
KSAKKyAgICA6IG1faW5kZXgoMSkKKyAgICB7CisgICAgICAgIG1fbWFwID0gbmV3IEhhc2hNYXA8
aW50LCBSZWZQdHI8Q2FsY1ZhbHVlPiA+OworICAgIH0KKyAgICAKKyAgICBpbnQgaW5zZXJ0KFBh
c3NSZWZQdHI8Q2FsY1ZhbHVlPik7CisgICAgdm9pZCByZW1vdmUoaW50IGluZGV4KTsKKyAgICBQ
YXNzUmVmUHRyPENhbGNWYWx1ZT4gZ2V0KGludCBpbmRleCk7CisgICAgCitwcml2YXRlOiAgICAg
ICAgCisgICAgaW50IG1faW5kZXg7CisgICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxDYWxjVmFsdWU+
ID4qIG1fbWFwOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoLmNwcAppbmRleCBhNmJjMDE5MzljMDUwYzJlMWYyYzFlNTg3NDA1NmU0OGM3OGZi
YzllLi43ZTcxNjdjZGIyZGIxODFhM2EwMzgxZDRhOTRlNzUyOGY4YmE0NDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJMZW5ndGguaCIKIAorI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTE0OCw2ICsxNDksOTYgQEAgUGFzc093
bkFycmF5UHRyPExlbmd0aD4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGlu
dCYgbGVuKQogCiAgICAgcmV0dXJuIHIucmVsZWFzZSgpOwogfQorICAgIAorTGVuZ3RoOjp+TGVu
Z3RoKCkKK3sKKyAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCisgICAgICAgIGRlY3JlbWVudENhbGN1
bGF0ZWRSZWYoKTsKK30gICAKKyAgICAKK0hhbmRsZU1hcCogTGVuZ3RoOjpjYWxjSGFuZGxlcygp
IGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYW5kbGVNYXAsIGhhbmRsZU1hcCwg
KCkpOworICAgIHJldHVybiAmaGFuZGxlTWFwOworfQorCitMZW5ndGg6Okxlbmd0aChQYXNzUmVm
UHRyPENhbGNWYWx1ZT4gY2FsYykKKyAgICA6IG1fcXVpcmsoZmFsc2UpCisgICAgLCBtX3R5cGUo
Q2FsY3VsYXRlZCkKKyAgICAsIG1faXNGbG9hdChmYWxzZSkKK3sKKyAgICBtX2ludFZhbHVlID0g
Y2FsY0hhbmRsZXMoKS0+aW5zZXJ0KGNhbGMpOworfQorICAgIAorUGFzc1JlZlB0cjxDYWxjVmFs
dWU+IExlbmd0aDo6Y2FsY1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVk
KCkpOworICAgIHJldHVybiBjYWxjSGFuZGxlcygpLT5nZXQoY2FsY3VsYXRlZExlbmd0aElkKCkp
OworfQorICAgIAorLy8gRklYTUU6IEl0J3MgaW1wb3NzaWJsZSB0byBrbm93IHRoZSBzaWduIG9m
IGNhbGMgdmFsdWVzIHdpdGhvdXQKKy8vICAgICAgICBtYXggdmFsdWUgaWYgdGhlIGNhbGMgZm9y
bXVsYSBjb250YWlucyBwZXJjZW50YWdlcy4KKy8vICAgICAgICBXZSBhc3N1bWUgYWxsIGNhbGMg
dmFsdWVzIGFyZSBwb3NpdGl2ZSBmb3Igbm93LgorCitib29sIExlbmd0aDo6Y2FsY3VsYXRlZElz
WmVybygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIExlbmd0aDo6Y2Fs
Y3VsYXRlZElzUG9zaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IExlbmd0aDo6Y2FsY3VsYXRlZElzTmVnYXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKworaW50IExlbmd0aDo6Y2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCAv
KiByb3VuZFBlcmNlbnRhZ2VzICovKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQo
KSk7CisgICAgUmVmUHRyPENhbGNWYWx1ZT4gY2FsY0xlbmd0aCA9IGNhbGNIYW5kbGVzKCktPmdl
dChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7CisgICAgZmxvYXQgcmVzdWx0ID0gY2FsY0xlbmd0aC0+
ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChpc25hbihyZXN1bHQpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgTGVuZ3RoOjpjYWxjdWxhdGVkTWlu
VmFsdWUoaW50IG1heFZhbHVlLCBib29sIC8qIHJvdW5kUGVyY2VudGFnZXMgKi8pIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxj
TGVuZ3RoID0gY2FsY0hhbmRsZXMoKS0+Z2V0KGNhbGN1bGF0ZWRMZW5ndGhJZCgpKTsKKyAgICBm
bG9hdCByZXN1bHQgPSBjYWxjTGVuZ3RoLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgaWYgKGlz
bmFuKHJlc3VsdCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2Zsb2F0IExlbmd0aDo6Y2FsY3VsYXRlZEZsb2F0VmFsdWUoaW50IG1heFZhbHVlKSBjb25zdAor
eworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRyPENhbGNWYWx1ZT4gY2Fs
Y0xlbmd0aCA9IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7CisgICAg
ZmxvYXQgcmVzdWx0ID0gY2FsY0xlbmd0aC0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChp
c25hbihyZXN1bHQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIExlbmd0aDo6aW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICBjYWxjSGFuZGxlcygpLT5nZXQoY2FsY3VsYXRlZExl
bmd0aElkKCkpLT5yZWYoKTsKK30KKwordm9pZCBMZW5ndGg6OmRlY3JlbWVudENhbGN1bGF0ZWRS
ZWYoKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRyPENh
bGNWYWx1ZT4gY2FsY0xlbmd0aCA9IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3Ro
SWQoKSk7CisgICAgaWYgKGNhbGNMZW5ndGgtPmhhc09uZVJlZigpKQorICAgICAgICBjYWxjSGFu
ZGxlcygpLT5yZW1vdmUoY2FsY3VsYXRlZExlbmd0aElkKCkpOworICAgIGNhbGNMZW5ndGgtPmRl
cmVmKCk7Cit9ICAgIAogCiBjbGFzcyBTYW1lU2l6ZUFzTGVuZ3RoIHsKICAgICBpbnQzMl90IHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCA1M2IwMjYwYzIwN2IwNzgyODk1ZWYz
NzdjODRjZjYxNjQ3NTc0OTdlLi5lMjQ5ZGZkODBkZmQzMzMwYzMwODNmMWE5ZWE0NWEwMTM4MzRl
OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAK
QEAgLTM0LDggKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBpbnRNYXhG
b3JMZW5ndGggPSAweDdmZmZmZmY7IC8vIG1heCB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiBjb25z
dCBpbnQgaW50TWluRm9yTGVuZ3RoID0gKC0weDdmZmZmZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZv
ciBhIDI4LWJpdCBpbnQKIAotZW51bSBMZW5ndGhUeXBlIHsgQXV0bywgUmVsYXRpdmUsIFBlcmNl
bnQsIEZpeGVkLCBJbnRyaW5zaWMsIE1pbkludHJpbnNpYywgVW5kZWZpbmVkIH07Ci0KK2VudW0g
TGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBN
aW5JbnRyaW5zaWMsIENhbGN1bGF0ZWQsIFVuZGVmaW5lZCB9OworIAorY2xhc3MgQ2FsY1ZhbHVl
OyAgICAKK2NsYXNzIEhhbmRsZU1hcDsKKyAgICAKIHN0cnVjdCBMZW5ndGggewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjUsMTEgKzY5LDMwIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHYpOyAgICAKICAgICB9
CiAKKyAgICBleHBsaWNpdCBMZW5ndGgoUGFzc1JlZlB0cjxDYWxjVmFsdWU+KTsKKworICAgIExl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRGcm9tTGVuZ3Ro
KGxlbmd0aCk7CisgICAgfQorICAgIAorICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0
aCYgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB+TGVuZ3RoKCk7CisKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAobV90eXBlID09IG8ubV90eXBl
KSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspICYmIChpc1VuZGVmaW5lZCgpIHx8IChnZXRGbG9h
dFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVlKCkpKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAogICAgIGNv
bnN0IExlbmd0aCYgb3BlcmF0b3IqPShmbG9hdCB2KQotICAgIHsgICAgICAgIAorICAgIHsgICAg
ICAgCisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIGlmIChtX2lzRmxvYXQpCiAgICAgICAgICAgICBtX2Zsb2F0VmFsdWUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4obV9mbG9hdFZhbHVlICogdik7CiAgICAgICAgIGVsc2UgICAgICAg
IApAQCAtODAsNiArMTAzLDExIEBAIHB1YmxpYzoKICAgICAKICAgICBpbnQgdmFsdWUoKSBjb25z
dAogICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAgICAgICAvLyBG
SVhNRSBjYWxjIGh0dHA6Ly93ZWJraXQub3JnL2IvMTY2NjIKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGdldEludFZhbHVlKCk7CiAgICAgfQogCkBAIC04OSw2ICsxMTcsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7CiAgICAgfQogCisgICAgUGFzc1JlZlB0
cjxDYWxjVmFsdWU+IGNhbGNWYWx1ZSgpIGNvbnN0OworCiAgICAgTGVuZ3RoVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQogICAgIGJv
b2wgcXVpcmsoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrOyB9CiAKQEAgLTEwNiw2ICsxMzYsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgeworICAgICAg
ICBpZiAoaXNDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKEZpeGVk
LCB2YWx1ZSk7CiAgICAgfQogCkBAIC0xMjEsNyArMTU1LDcgQEAgcHVibGljOgogICAgICAgICAq
dGhpcyA9IExlbmd0aCh2YWx1ZSwgRml4ZWQpOwogICAgIH0KIAotICAgIC8vIE5vdGU6IE1heSBv
bmx5IGJlIGNhbGxlZCBmb3IgRml4ZWQsIFBlcmNlbnQgYW5kIEF1dG8gbGVuZ3Rocy4KKyAgICAv
LyBOb3RlOiBNYXkgb25seSBiZSBjYWxsZWQgZm9yIEZpeGVkLCBQZXJjZW50LCBBdXRvIGFuZCBD
YWxjdWxhdGVkIGxlbmd0aHMuCiAgICAgLy8gT3RoZXIgdHlwZXMgd2lsbCBBU1NFUlQgaW4gb3Jk
ZXIgdG8gY2F0Y2ggaW52YWxpZCBsZW5ndGggY2FsY3VsYXRpb25zLgogICAgIGludCBjYWxjVmFs
dWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3QKICAg
ICB7CkBAIC0xMzEsNiArMTY1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBj
YWxjTWluVmFsdWUobWF4VmFsdWUsIHJvdW5kUGVyY2VudGFnZXMpOwogICAgICAgICAgICAgY2Fz
ZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiBtYXhWYWx1ZTsKKyAgICAgICAgICAgIGNh
c2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlZFZhbHVlKG1h
eFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIFJlbGF0aXZlOgogICAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6CiAgICAgICAgICAgICBj
YXNlIE1pbkludHJpbnNpYzoKQEAgLTE1Miw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2Vu
dCgpIC8gMTAwLjBmKSk7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRy
YSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRl
bCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQo
KSAvIDEwMC4wZikpOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxjdWxhdGVkTWluVmFsdWUobWF4VmFsdWUsIHJvdW5kUGVyY2VudGFnZXMp
OyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CkBAIC0xNzQsNiArMjEyLDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4
VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOworICAgICAg
ICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVk
RmxvYXRWYWx1ZShtYXhWYWx1ZSk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZToKICAgICAgICAgICAgIGNhc2UgSW50cmluc2ljOgogICAgICAgICAgICAgY2FzZSBN
aW5JbnRyaW5zaWM6CkBAIC0xODksMTggKzIyOSwyNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1pl
cm8oKSBjb25zdCAKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIHJldHVybiBtX2lzRmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFsdWU7CisgICAg
ICAgIHJldHVybiBpc0NhbGN1bGF0ZWQoKSA/IGNhbGN1bGF0ZWRJc1plcm8oKSA6IG1faXNGbG9h
dCA/ICFtX2Zsb2F0VmFsdWUgOiAhbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgYm9vbCBpc1Bvc2l0
aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2Ug
OiBpc0NhbGN1bGF0ZWQoKSA/IGNhbGN1bGF0ZWRJc1Bvc2l0aXZlKCkgOiBnZXRGbG9hdFZhbHVl
KCkgPiAwOworICAgIH0KKyAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGlzQ2FsY3VsYXRlZCgpID8gY2FsY3Vs
YXRlZElzTmVnYXRpdmUoKSA6IGdldEZsb2F0VmFsdWUoKSA8IDA7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6
IGdldEZsb2F0VmFsdWUoKSA+IDA7IH0KLSAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJl
dHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPCAwOyB9Ci0KICAg
ICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvOyB9CiAgICAgYm9v
bCBpc1JlbGF0aXZlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFJlbGF0aXZlOyB9Ci0gICAg
Ym9vbCBpc1BlcmNlbnQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gUGVyY2VudDsgfQorICAg
IGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQgfHwgdHlw
ZSgpID09IENhbGN1bGF0ZWQ7IH0KICAgICBib29sIGlzRml4ZWQoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gRml4ZWQ7IH0KICAgICBib29sIGlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IEF1dG8gfHwgdHlwZSgpID09IE1pbkludHJpbnNpYyB8fCB0eXBlKCkg
PT0gSW50cmluc2ljOyB9Ci0gICAgYm9vbCBpc1NwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBGaXhlZCB8fCB0eXBlKCkgPT0gUGVyY2VudDsgfQorICAgIGJvb2wgaXNTcGVjaWZp
ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09IFBlcmNlbnQg
fHwgdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KKyAgICBib29sIGlzQ2FsY3VsYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAKICAgICBMZW5ndGggYmxlbmQoY29u
c3QgTGVuZ3RoJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewpAQCAtMjM5LDYg
KzI4NSwzNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gbV9mbG9hdFZh
bHVlIDogbV9pbnRWYWx1ZTsKICAgICB9CiAKKyAgICB2b2lkIGluaXRGcm9tTGVuZ3RoKGNvbnN0
IExlbmd0aCAmbGVuZ3RoKSAKKyAgICB7CisgICAgICAgIG1fcXVpcmsgPSBsZW5ndGgubV9xdWly
azsKKyAgICAgICAgbV90eXBlID0gbGVuZ3RoLm1fdHlwZTsKKyAgICAgICAgbV9pc0Zsb2F0ID0g
bGVuZ3RoLm1faXNGbG9hdDsKKyAgICAgICAgCisgICAgICAgIGlmIChtX2lzRmxvYXQpCisgICAg
ICAgICAgICBtX2Zsb2F0VmFsdWUgPSBsZW5ndGgubV9mbG9hdFZhbHVlOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2ludFZhbHVlID0gbGVuZ3RoLm1faW50VmFsdWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCisgICAgICAgICAgICBpbmNyZW1lbnRDYWxjdWxh
dGVkUmVmKCk7CisgICAgfQorICAgIAorICAgIEhhbmRsZU1hcCogY2FsY0hhbmRsZXMoKSBjb25z
dDsKKyAgICAKKyAgICBib29sIGNhbGN1bGF0ZWRJc1plcm8oKSBjb25zdDsKKyAgICBib29sIGNh
bGN1bGF0ZWRJc1Bvc2l0aXZlKCkgY29uc3Q7CisgICAgYm9vbCBjYWxjdWxhdGVkSXNOZWdhdGl2
ZSgpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJv
dW5kUGVyY2VudGFnZXMpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGVkTWluVmFsdWUoaW50IG1h
eFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0OworICAgIGZsb2F0IGNhbGN1bGF0
ZWRGbG9hdFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZWRMZW5n
dGhJZCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
ICAgICByZXR1cm4gZ2V0SW50VmFsdWUoKTsKKyAgICB9CisgICAgdm9pZCBpbmNyZW1lbnRDYWxj
dWxhdGVkUmVmKCkgY29uc3Q7CisgICAgdm9pZCBkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29u
c3Q7ICAgIAorICAgIAogICAgIHVuaW9uIHsKICAgICAgICAgaW50IG1faW50VmFsdWU7CiAgICAg
ICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhM2M4MGZjNjc2NTI4NWYxNzNjNzc2YjNk
ZTIwYjNkZjVjMjg3MjIyLi4wMzljMzAzNTVjYzgzNzYwZjViN2NlYzkwODdmOGU0MGRiYmFkNjhm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDItMjYgIE1pa2UgTGF3dGhlciAgPG1pa2Vs
YXd0aGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBDU1MzIGNhbGM6IG1peGVkIGFic29sdXRl
L3BlcmNlbnRhZ2VzIHdvcmsgZm9yIHdpZHRoLCBoZWlnaHQsIG1hcmdpbiBhbmQgcGFkZGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXdyb3RlIHRo
ZSBtYXJnaW4gdGVzdCwgYXMgdGhlIG9yaWdpbmFsIGZvcm0gd291bGRuJ3Qgd29yayBmb3IgcGVy
Y2VudGFnZXMuCisKKyAgICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLmh0bWw6CisgICAgICAgICogY3NzMy9jYWxjL3BhZGRp
bmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0
ZWQudHh0OgorCiAyMDEyLTAyLTI2ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVy
LWV2ZW50cy5odG1sIGlzIGZhaWxpbmcgc2luY2UgcjEwODIyOApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvbWFyZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxODg1NjBiNzA3NmMyYTk4YjNmNmVjM2I5NzNk
YmUxODY1ODE0MTNhLi4xMTlkNzcyZGYzYmMxYTYxMDU3MzRiZjlmNjU1YmM5ZGRiMjIyOWY2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dApAQCAtMSwyMyArMSw0
MyBAQAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWFsbCIpLnBhcmVudE5v
ZGUub2Zmc2V0V2lkdGggaXMgMjUwCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1w
bGUtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTcwCi1QQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVmdCIpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMgMjI1
Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVmdCIpLnBhcmVudE5vZGUu
b2Zmc2V0SGVpZ2h0IGlzIDEyMAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxl
LXJpZ2h0IikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBpcyAyMjUKLVBBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEy
MAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXRvcCIpLnBhcmVudE5vZGUu
b2Zmc2V0V2lkdGggaXMgMjAwCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUt
dG9wIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTQ1Ci1QQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzaW1wbGUtYm90dG9tIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBpcyAyMDAK
LVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0b20iKS5wYXJlbnROb2Rl
Lm9mZnNldEhlaWdodCBpcyAxNDUKLUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNl
bnQtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBzaG91bGQgYmUgMjUwLiBXYXMgMjAwLgot
RkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKS5wYXJlbnROb2RlLm9m
ZnNldEhlaWdodCBzaG91bGQgYmUgMTcwLiBXYXMgMTIwLgotRkFJTCBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGVyY2VudC1sZWZ0IikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBzaG91bGQgYmUg
MjI1LiBXYXMgMjAwLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0
IikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTIwCi1GQUlMIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwZXJjZW50LXJpZ2h0IikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBzaG91bGQgYmUg
MjI1LiBXYXMgMjAwLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1yaWdo
dCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEyMAotUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGVyY2VudC10b3AiKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIGlzIDIwMAotRkFJ
TCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10b3AiKS5wYXJlbnROb2RlLm9mZnNl
dEhlaWdodCBzaG91bGQgYmUgMTQ1LiBXYXMgMTIwLgotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicGVyY2VudC1ib3R0b20iKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIGlzIDIwMAotRkFJ
TCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20iKS5wYXJlbnROb2RlLm9m
ZnNldEhlaWdodCBzaG91bGQgYmUgMTQ1LiBXYXMgMTIwLgorUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIiksIG51bGwpLm1hcmdpbkxlZnQg
aXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNpbXBsZS1hbGwiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIiksIG51bGwpLm1hcmdp
blJpZ2h0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzaW1wbGUtYWxsIiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMjVweCIKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWxlZnQiKSwg
bnVsbCkubWFyZ2luTGVmdCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWxlZnQiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIwcHgi
CitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1s
ZWZ0IiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1sZWZ0IiksIG51bGwpLm1hcmdpbkJvdHRv
bSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzaW1wbGUtcmlnaHQiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKSwgbnVsbCku
bWFyZ2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMjVweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXJpZ2h0
IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtdG9wIiksIG51bGwpLm1hcmdpbkxlZnQgaXMg
IjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lt
cGxlLXRvcCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS10b3AiKSwgbnVsbCkubWFyZ2luUmln
aHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2ltcGxlLXRvcCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIKK1BBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJvdHRvbSIpLCBudWxs
KS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0b20iKSwgbnVsbCkubWFyZ2luVG9wIGlzICIwcHgiCitQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0
b20iKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJvdHRvbSIpLCBudWxsKS5tYXJnaW5Cb3R0
b20gaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBlcmNlbnQtYWxsIiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjI1cHgiCitQQVNTIGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxsIiksIG51bGwp
Lm1hcmdpblRvcCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC1hbGwiKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjI1cHgiCitQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxs
IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0IiksIG51bGwpLm1hcmdpbkxlZnQg
aXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBlcmNlbnQtbGVmdCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0IiksIG51bGwpLm1h
cmdpblJpZ2h0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBlcmNlbnQtbGVmdCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1yaWdo
dCIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtcmlnaHQiKSwgbnVsbCkubWFyZ2luVG9wIGlz
ICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBl
cmNlbnQtcmlnaHQiKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtcmlnaHQiKSwgbnVsbCku
bWFyZ2luQm90dG9tIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBlcmNlbnQtdG9wIiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10b3Ai
KSwgbnVsbCkubWFyZ2luVG9wIGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAi
MHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJj
ZW50LXRvcCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20iKSwgbnVsbCkubWFy
Z2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwZXJjZW50LWJvdHRvbSIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjBweCIKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20i
KSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20iKSwgbnVsbCkubWFyZ2luQm90dG9t
IGlzICIyNXB4IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLmh0bWwgYi9MYXlv
dXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLmh0bWwKaW5kZXggNTA5MDdlM2JkYjFlMzU1YmQzYmU0
OGE5MTNjYmZkMjIyODUyMzk0OC4uNzhkYTBlYWNlN2UwN2ZjNmUwNDk5NGNjNmJmMzJjMTI1OWVk
YTY2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4uaHRtbApAQCAtMTYsNjUgKzE2LDU3IEBACiA8
L3N0eWxlPgogCiA8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5lciI+Ci0gICAgPGRpdj48cCBpZD0ic2lt
cGxlLWFsbCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgbWFyZ2luIG9mIDI1
IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KLSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUtbGVmdCI+VGhp
cyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48L2Rp
dj48YnIvPgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS1yaWdodCI+VGhpcyBlbGVtZW50IHNob3Vs
ZCBoYXZlIGEgcmlnaHQgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KLSAgICA8
ZGl2PjxwIGlkPSJzaW1wbGUtdG9wIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgbWFy
Z2luIG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KLSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUt
Ym90dG9tIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBib3R0b20gbWFyZ2luIG9mIDI1IHBp
eGVscy48L3A+PC9kaXY+PGJyLz4KKyAgICA8cCBpZD0ic2ltcGxlLWFsbCI+VGhpcyBlbGVtZW50
IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAg
ICA8cCBpZD0ic2ltcGxlLWxlZnQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgbWFy
Z2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAgICA8cCBpZD0ic2ltcGxlLXJpZ2h0Ij5UaGlz
IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBtYXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48YnIv
PgorICAgIDxwIGlkPSJzaW1wbGUtdG9wIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3Ag
bWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAgICA8cCBpZD0ic2ltcGxlLWJvdHRvbSI+
VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9w
Pjxici8+CiAgICAgPGRpdiBpZD0id3JhcHBlciIgc3R5bGU9IndpZHRoOiAzMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogY29ybnNpbGs7IGRpc3BsYXk6IGJsb2NrOyI+Ci0gICAgICAgIDxkaXY+PHAg
aWQ9InBlcmNlbnQtYWxsIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBtYXJn
aW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCku
PC9wPjwvZGl2Pjxici8+Ci0gICAgICAgIDxkaXY+PHAgaWQ9InBlcmNlbnQtbGVmdCI+VGhpcyBl
bGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFy
ZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjwvZGl2Pjxici8+Ci0gICAgICAgIDxk
aXY+PHAgaWQ9InBlcmNlbnQtcmlnaHQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0
IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMg
NXB4KS48L3A+PC9kaXY+PGJyLz4KLSAgICAgICAgPGRpdj48cCBpZD0icGVyY2VudC10b3AiPlRo
aXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2Yg
cGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjwvZGl2Pjxici8+Ci0gICAgICAg
IDxkaXY+PHAgaWQ9InBlcmNlbnQtYm90dG9tIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBi
b3R0b20gbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBt
aW51cyA1cHgpLjwvcD48L2Rpdj48YnIvPgorICAgICAgICA8cCBpZD0icGVyY2VudC1hbGwiPlRo
aXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEw
JSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PGJyLz4KKyAgICAgICAg
PHAgaWQ9InBlcmNlbnQtbGVmdCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJn
aW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCku
PC9wPjxici8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50LXJpZ2h0Ij5UaGlzIGVsZW1lbnQgc2hv
dWxkIGhhdmUgYSByaWdodCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRo
IG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjxici8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50LXRv
cCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEw
JSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PGJyLz4KKyAgICAgICAg
PHAgaWQ9InBlcmNlbnQtYm90dG9tIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBib3R0b20g
bWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1
cHgpLjwvcD48YnIvPgogICAgIDwvZGl2PgogPC9kaXY+CiA8c2NyaXB0PgogICAgIHZhciBpbm5l
cldpZHRoID0gMjAwOwogICAgIHZhciBpbm5lckhlaWdodCA9IDEyMDsKLSAgICB2YXIgbWFyZ2lu
ID0gMjU7CisgICAgdmFyIG1hcmdpbiA9ICIyNXB4IjsKKyAgICB2YXIgbm9NYXJnaW4gPSAiMHB4
IjsKIAogICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwIik7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgewotICAgICAgICB2
YXIgb3V0ZXJFbGVtZW50ID0gdGVzdHNbaV0ucGFyZW50Tm9kZTsKLSAgICAgICAgdmFyIGlubmVy
RWxlbWVudCA9IHRlc3RzW2ldOwotICAgICAgICB2YXIgd2lkdGggPSBvdXRlckVsZW1lbnQub2Zm
c2V0V2lkdGg7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBvdXRlckVsZW1lbnQub2Zmc2V0SGVpZ2h0
OwotCi0gICAgICAgIHZhciBleHBlY3RlZFdpZHRoID0gaW5uZXJXaWR0aDsKLSAgICAgICAgdmFy
IGV4cGVjdGVkSGVpZ2h0ID0gaW5uZXJIZWlnaHQ7Ci0gICAgCisgICAgICAgIHZhciBpbm5lckVs
ZW1lbnQgPSB0ZXN0c1tpXQorICAgICAgICB2YXIgZXhwZWN0ZWRMZWZ0ID0gbm9NYXJnaW47Cisg
ICAgICAgIHZhciBleHBlY3RlZFRvcCA9IG5vTWFyZ2luOworICAgICAgICB2YXIgZXhwZWN0ZWRS
aWdodCA9IG5vTWFyZ2luOworICAgICAgICB2YXIgZXhwZWN0ZWRCb3R0b20gPSBub01hcmdpbjsK
ICAgICAgICAgc3dpdGNoIChpbm5lckVsZW1lbnQuaWQuc3BsaXQoIi0iKVsxXSkgewogICAgICAg
ICBjYXNlICJhbGwiOgotICAgICAgICAgICAgZXhwZWN0ZWRXaWR0aCArPSAyICogbWFyZ2luOwot
ICAgICAgICAgICAgZXhwZWN0ZWRIZWlnaHQgKz0gMiAqIG1hcmdpbjsKKyAgICAgICAgICAgIGV4
cGVjdGVkTGVmdCA9IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVkVG9wID0gbWFyZ2luOwor
ICAgICAgICAgICAgZXhwZWN0ZWRSaWdodCA9IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVk
Qm90dG9tID0gbWFyZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgInRvcCI6
CisgICAgICAgICAgICBleHBlY3RlZFRvcCA9IG1hcmdpbjsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlICJib3R0b20iOgotICAgICAgICAgICAgZXhwZWN0ZWRIZWlnaHQgKz0gbWFy
Z2luOworICAgICAgICAgICAgZXhwZWN0ZWRCb3R0b20gPSBtYXJnaW47CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSAibGVmdCI6CisgICAgICAgICAgICBleHBlY3RlZExlZnQgPSBt
YXJnaW47CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAicmlnaHQiOgotICAgICAg
ICAgICAgZXhwZWN0ZWRXaWR0aCArPSBtYXJnaW47CisgICAgICAgICAgICBleHBlY3RlZFJpZ2h0
ID0gbWFyZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBzaG91
bGRFdmFsdWF0ZVRvKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5p
ZCArICciKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoJywgZXhwZWN0ZWRXaWR0aCk7Ci0gICAgICAg
IHNob3VsZEV2YWx1YXRlVG8oJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInICsgaW5uZXJFbGVt
ZW50LmlkICsgJyIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0JywgZXhwZWN0ZWRIZWlnaHQpOwot
ICAgIAotICAgICAgICB2YXIgZXJyb3IgPSBbXTsKLSAgICAgICAgaWYgKHdpZHRoICE9IGV4cGVj
dGVkV2lkdGgpCi0gICAgICAgICAgICBlcnJvci5wdXNoKCJleHBlY3RlZCB3aWR0aCAiICsgZXhw
ZWN0ZWRXaWR0aCArICIsIHdhcyAiICsgd2lkdGgpOwotICAgICAgICBpZiAoaGVpZ2h0ICE9IGV4
cGVjdGVkSGVpZ2h0KQotICAgICAgICAgICAgZXJyb3IucHVzaCgiZXhwZWN0ZWQgaGVpZ2h0ICIg
KyBleHBlY3RlZEhlaWdodCArICIsIHdhcyAiICsgaGVpZ2h0KTsKLQotICAgICAgICBpZiAoZXJy
b3IgPT0gIiIpIHsKLSAgICAgICAgICAgIGlubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3IgPSAiZ3JlZW4iOwotICAgICAgICAgICAgaW5uZXJFbGVtZW50LmlubmVySFRNTCArPSAiID0+
IFBBU1MiOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5uZXJFbGVtZW50LnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICJyZWQiOwotICAgICAgICAgICAgaW5uZXJFbGVtZW50LmlubmVy
SFRNTCArPSAiID0+IEZBSUw6ICIgKyBlcnJvci5qb2luKCIsICIpOwotICAgICAgICB9CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICciKSwgbnVsbCkubWFyZ2luTGVmdCcs
IGV4cGVjdGVkTGVmdCk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICci
KSwgbnVsbCkubWFyZ2luVG9wJywgZXhwZWN0ZWRUb3ApOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2dldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicgKyBp
bm5lckVsZW1lbnQuaWQgKyAnIiksIG51bGwpLm1hcmdpblJpZ2h0JywgZXhwZWN0ZWRSaWdodCk7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICciKSwgbnVsbCkubWFyZ2lu
Qm90dG9tJywgZXhwZWN0ZWRCb3R0b20pOwogICAgIH0KICAgICAKICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMv
cGFkZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBl
Y3RlZC50eHQKaW5kZXggODNlZTI2N2I5MGVlOGFkZDY2MDQxYjVjZWY4YWI4OWFiODNiN2ViYy4u
MGI4ZTNhNzQ0NDUyODcwODNjZGM1MmJiNjQ2ZWI1ZDIwNTc3OWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxMiBAQCBUaGlzIGVs
ZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAog
VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9
PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2Yg
MjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZB
SUw6IHdyb25nIHdpZHRoLCB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBh
biBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMw
MHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVm
dCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51
cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEg
bGVmdCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBt
aW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBh
ZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVw
eCkuID0+IEZBSUw6IHdyb25nIHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdo
dCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51
cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5n
IG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9
PiBGQUlMOiB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRk
aW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgp
LiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBG
QUlMOiB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRk
aW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgp
LiA9PiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0
ZWQudHh0CmluZGV4IDViNDVkMmRjY2MwODAyYTMzNzEzOTc0YTYyNjg3YjM0ZGIzNTRiNWQuLjk3
ZDZkM2EzYjZhZTMzZmZjNjRiY2NjNjQzYTgxODUyMTEyZmI0NTcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCwxMCArMjAsMTAg
QEAgY29udHJvbCA9PiBQQVNTCiAxMHB4KiAoNSAqIDIpID0+IFBBU1MKIDUwcHggKyAxMHB4ICog
NSAob3BlcmF0aW9uIG9yZGVyKSA9PiBQQVNTCiAxMDAlLzIgKHdoZXJlIDEwMCUgaXMgMjAwcHgp
ID0+IFBBU1MKLTEwMCUgKyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6
b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVj
dGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2Yg
MTAwLCBidXQgd2FzIDI1NgotODAlIC0gNjBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJ
TDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIg
ZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0
aCBvZiAxMDAsIGJ1dCB3YXMgMjU2Ci0zMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgp
ID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpv
b209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0
ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgotLTEwMHB4ICsgMTAwJSAod2hlcmUgMTAwJSBp
cyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMg
MjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209
MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2CisxMDAlICsgLTEwMHB4ICh3aGVy
ZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCis4MCUgLSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCiszMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKy0x
MDBweCArIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDIwJSArIDMwJSAod2hl
cmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwogODAlIC0gMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCiAxMCUgKiA1ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129174</attachid>
            <date>2012-02-27 20:13:30 -0800</date>
            <delta_ts>2012-02-27 20:18:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120228151327.patch</filename>
            <type>text/plain</type>
            <size>42023</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE0OWUwYjJhZmVhNjI0
MmQzYzc0ODg3YTQ5YTI2YmZiMWE2NjM3Ni4uYTRhYjFhY2Y1YmE4YzUzNWY2YjQ5ODYyNWIzZTk1
ZWViNTlhOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTAyLTI2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJldHJp
Y3Rpb25zLgorCisgICAgICAgIExlbmd0aHMgY2FuIGJlIGNvcGllZCwgYW5kIHNvIHRoZSBleHBy
ZXNzaW9ucyBhcmUgc3RvcmVkIGluIGEgaGFzaG1hcCwgYW5kIG9ubHkgdGhlaXIKKyAgICAgICAg
aWRzIGFyZSBjb3BpZWQgYWxvbmcgd2l0aCBMZW5ndGguIFRoZSBleHByZXNzaW9ucyBhcmUgUmVm
Q291bnRlZCwgYW5kIHdpbGwgZ2V0IAorICAgICAgICBjbGVhbmVkIHVwIHdoZW4gdGhlIGxhc3Qg
cmVmZXJyaW5nIExlbmd0aCBpcyBkZXN0cnVjdGVkLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnRvQ2Fs
Y1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAqIGNz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjRXhwcmVzc2lvbk5vZGUp
OgorICAgICAgICAoQ1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1
ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUxlbmd0aDo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oOgorICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJpbmFy
eU9wZXJhdGlvbjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjVmFsdWU6OmV2
YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhhbmRsZU1hcDo6aW5zZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhhbmRsZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhhbmRsZU1h
cDo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAg
IChDYWxjRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25O
b2RlOjp+Q2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNWYWx1ZTo6Q2FsY1ZhbHVlKToKKyAg
ICAgICAgKENhbGNFeHByZXNzaW9uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHBy
ZXNzaW9uTnVtYmVyOjpDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWxjRXhwcmVzc2lvbk51bWJlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25M
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25MZW5ndGg6OkNhbGNFeHBy
ZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpl
dmFsdWF0ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbjo6Q2FsY0V4cHJlc3Np
b25CaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAoSGFuZGxlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkhhbmRsZU1hcDo6SGFuZGxlTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjSGFuZGxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc1plcm8pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkSXNQb3NpdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6Y2FsY3VsYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3Vs
YXRlZE1pblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZEZsb2F0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppbmNyZW1lbnRDYWxjdWxhdGVkUmVm
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om5vbk5hbkNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvcio9KToKKyAgICAgICAgKFdlYkNv
cmU6Okxlbmd0aDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGNNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNG
bG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNQb3NpdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmlzTmVnYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1NwZWNpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6OmlzQ2FsY3VsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmluaXRGcm9t
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZExlbmd0aElkKToK
KwogMjAxMi0wMi0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHNob3VsZCBsaXZlIGluIGl0cyBvd24gZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzMDU0YWEyNzM2YzhkYWRjOWZhZTJiNzQ3MDFlNDY0Y2Qy
M2VhODEwLi40ODI2ZjJhNzUzNjE0NGY3NzVjM2E4MGRhM2U4NmIxOTdkNGQ4ZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtODk1LDYgKzg5NSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29t
bWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CiBfX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0UK
K19fWk43V2ViQ29yZTZMZW5ndGhEMUV2CiBfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBf
CiBfX1pON1dlYkNvcmU2UmVnaW9uOHN1YnRyYWN0RVJLUzBfCiBfX1pON1dlYkNvcmU2UmVnaW9u
OWludGVyc2VjdEVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IDg3ZmE3Mzc4MjcyNjgxN2NlMGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLjkxYjBh
MmNhZTRkYjBhNDJlY2NlYjliZDgwN2JhZmNjNTU4OTI4YzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTExNCw2ICsxMTQsMjkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3NzVGV4dCgpOwogICAgIH0KIAorICAgIHZpcnR1YWwg
UGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgewor
ICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdvcnkpIHsKKyAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKCkpKTsKKyAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgorICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5j
b21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSkpOworICAgICAgICBj
YXNlIENhbGNQZXJjZW50OgorICAgICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgICAg
IExlbmd0aCBsZW5ndGggPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aCht
X3ZhbHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tLCAmb2spOworICAgICAgICAgICAg
ICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgobGVuZ3Ro
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CisgICAg
ICAgIGNhc2UgQ2FsY090aGVyOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdmlydHVhbCBk
b3VibGUgZG91YmxlVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2NhdGVn
b3J5KSB7CkBAIC0yMDgsNiArMjMxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFkb3Vi
bGVWYWx1ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lv
bk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgeworICAgICAgICBPd25QdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiBsZWZ0KG1fbGVmdFNpZGUtPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUs
IHpvb20pKTsKKyAgICAgICAgaWYgKCFsZWZ0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0KG1fcmlnaHRTaWRlLT50
b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlmICghcmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbihsZWZ0LnJlbGVhc2UoKSwgcmlnaHQucmVs
ZWFzZSgpLCBtX29wZXJhdG9yKSk7CisgICAgfQorCiAgICAgdmlydHVhbCBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdCAKICAgICB7CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShtX2xlZnRTaWRl
LT5kb3VibGVWYWx1ZSgpLCBtX3JpZ2h0U2lkZS0+ZG91YmxlVmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA3YzM2NjcxMjViNWQ3YjEyZTU3ZTNm
YmZiYmRjYzJmNzBiYzM0MGYzLi5hMWZiOTM5MjI4ZGE4OGNhMzBlNWZjODNmOTljMzVlMjMzMTFk
OWI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTU4LDgg
KzU4LDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKIGNsYXNzIENTU0NhbGNFeHByZXNz
aW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gewogcHVi
bGljOgogICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsgIAor
ICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNaZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVz
c2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCiAgICAgdmlydHVhbCBkb3VibGUg
ZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29tcHV0ZUxlbmd0
aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNv
bnN0ID0gMDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHByb3RlY3RlZDoKIGNsYXNzIENTU0Nh
bGNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZh
bHVlTGlzdCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY1ZhbHVlKik7CiAKKyAgICBQYXNzUmVm
UHRyPENhbGNWYWx1ZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBDYWxjVmFsdWU6OmNyZWF0ZShtX2V4cHJlc3Npb24tPnRvQ2FsY1ZhbHVlKHN0eWxlLCBy
b290U3R5bGUsIHpvb20pLCBtX25vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0
aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCk7CisgICAgfQogICAgIENhbGN1bGF0aW9uQ2F0ZWdv
cnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0K
ICAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIo
KTsgfSAgICAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGZjMTRlODIwNmU4M2Q5OGYyMjIyZmI0OWE4
YjQ4NjIyNWQzYmI2ZmIuLjBhOGQzZDI4ZGZhOGIxMjlmNDAyYzJlY2ZkNzcwZmNjYjI3MjJhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjY2LDYgKzI2
Niw3IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgm
IGxlbmd0aCkKICAgICAgICAgICAgIEFTU0VSVChpc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7
CiAgICAgICAgICAgICBtX3ZhbHVlLm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICBjYXNlIFJlbGF0aXZl
OgogICAgICAgICBjYXNlIFVuZGVmaW5lZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRl
eCAyNzRjZWI0ODJlNzE3Y2E1ODljMDhhNWRlOWRiYmNkMjFmYmUwNWRlLi5iNjcwM2RmMDUyZTE4
NTVmNTA2OTc3MTFjNWE4ODIzNWJiODEwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5oIgogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFn
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRmxleFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAg
ICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdl
dERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNz
c0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJv
b3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsg
ICAgICAgICAgICAKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCmluZGV4IGY2Yzg5OWUxM2JkMjk4N2FlOTRiYWQ4ZDdjYjI4OTczYjYzYTFi
MDMuLmUxOTRiODdjODRjMDFmZDdiZTM3YTE1MTIyMGE0MjBiNmEyY2E5ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJD
YWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJD
b3VudGVyLmgiCiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDU1NCb3Jk
ZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5j
bHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCkBAIC0yNTA1LDEyICsyNTA3LDEyIEBAIHN0YXRpYyBM
ZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwg
UmVuZGVyU3R5bGUqIHN0CiAgICAgcmV0dXJuIGw7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVy
dFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9JbnRMZW5n
dGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sICpvaykKIHsK
ICAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCBmYWxzZSwgbXVsdGlwbGllciwgb2spOwogfQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExl
bmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgKm9rKQog
ewogICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHRydWUsIG11bHRpcGxpZXIsIG9rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCmluZGV4IDRkYjdmMjI2ZDcwNDE1NjVlZTkwNGRlZjVkMTZmZTFmMDVlZGYyZTIu
LjIyYTQ2ZGZlZGQ1ZjQ5MGJlNzhiOTZkNDY5ZTY2ODkyZTU4NmQ4NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMzQ4LDYgKzM0OCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVk
TGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlOyB9CiAKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRp
dmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRv
RmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKwogcHJp
dmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggYjll
Mzg1ODFhZGFkOGIxOTY0OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uOWJmNDhjNmIwMmMzZjUwMDU0
NTQ2ZjJlMDQ4MzNhMjA0YzE5MTVmNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDY5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9u
OjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBsZWZ0ID0gbV9s
ZWZ0U2lkZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0gbV9yaWdodFNp
ZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3IpIHsKKyAgICBj
YXNlIENhbGNBZGQ6CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgY2FzZSBDYWxj
U3VidHJhY3Q6CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2FzZSBDYWxjTXVs
dGlwbHk6CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBDYWxjRGl2aWRl
OgorICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxDYWxjVmFsdWU+
IENhbGNWYWx1ZTo6Y3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwg
Q2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2FsY1ZhbHVlKHZhbHVlLCByYW5nZSkpOworfQorCitmbG9hdCBDYWxjVmFsdWU6
OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAoreworICAgIGZsb2F0IHJlc3VsdCA9IG1f
dmFsdWUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICAvLyBGSVhNRTogcmVzdWx0IGlzIE5hTiB3
aGVuIHRoZXJlIGlzIGEgZGl2aXNpb24gYnkgemVybyB3aGljaAorICAgIC8vICAgICAgICBpc24n
dCBmb3VuZCBhdCBwYXJzZSB0aW1lIChlLmcuLCA1LygxMDAlLTIwMHB4KSoxMDBweCkuCisgICAg
Ly8gICAgICAgIFRoZXJlIGlzIGEgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGFuZCBob3BlZnVsbHkg
c3BlYworICAgIC8vICAgICAgICB3aWxsIGhhdmUgdGhlIGRlY2lzaW9uIGZvciB0aGlzIGlzc3Vl
LgorICAgIC8vICAgICAgICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ct
c3R5bGUvMjAxMEphbi8wMDA3Lmh0bWwKKyAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG1faXNOb25OZWdhdGl2ZSAmJiByZXN1bHQgPCAwID8gMCA6
IHJlc3VsdDsKK30KKworaW50IEhhbmRsZU1hcDo6aW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY1ZhbHVl
PiBjYWxjVmFsdWUpCit7CisgICAgQVNTRVJUKG1faW5kZXgpOworICAgIHdoaWxlIChtX21hcC0+
Y29udGFpbnMobV9pbmRleCkpCisgICAgICAgIG1faW5kZXgrKzsKKyAgICAKKyAgICBtX21hcC0+
c2V0KG1faW5kZXgsIGNhbGNWYWx1ZSk7ICAgICAgIAorICAgIAorICAgIHJldHVybiBtX2luZGV4
OworfQorCit2b2lkIEhhbmRsZU1hcDo6cmVtb3ZlKGludCBpbmRleCkKK3sKKyAgICBBU1NFUlQo
bV9tYXAtPmNvbnRhaW5zKGluZGV4KSk7CisgICAgbV9tYXAtPnJlbW92ZShpbmRleCk7Cit9CisK
K1Bhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBIYW5kbGVNYXA6OmdldChpbnQgaW5kZXgpCit7CisgICAg
QVNTRVJUKG1fbWFwLT5jb250YWlucyhpbmRleCkpOworICAgIHJldHVybiBtX21hcC0+Z2V0KGlu
ZGV4KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IGQ4OTQ0NWU4MDZjYjVlZTgwZjlmNDFmOTA3ODdm
OGE1Yjg5ZTM4MmEuLmVkNWYxY2E2ZTY1YzViNzY1NDMzOWQ4NGI5N2NjYzI1ZTg3MGU1NzIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKQEAgLTUwLDYgKzUw
LDEwMiBAQCBlbnVtIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAgICAgQ2FsY3Vs
YXRpb25SYW5nZUFsbCwKICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUKIH07CisgICAg
ICAgIAorY2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5D
YWxjRXhwcmVzc2lvbk5vZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBmbG9h
dCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAKK2NsYXNzIENh
bGNWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGNWYWx1ZT4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhbGNWYWx1ZT4gY3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBmbG9h
dCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIENh
bGNWYWx1ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9u
UGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAg
ICAgICAsIG1faXNOb25OZWdhdGl2ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRp
dmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBt
X3ZhbHVlOworICAgIGJvb2wgbV9pc05vbk5lZ2F0aXZlOworfTsKKworY2xhc3MgQ2FsY0V4cHJl
c3Npb25OdW1iZXIgOiBwdWJsaWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBDYWxjRXhwcmVzc2lvbk51bWJlcihmbG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZs
b2F0KSBjb25zdCAKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9u
TGVuZ3RoIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ2FsY0V4cHJlc3Npb25MZW5ndGgoTGVuZ3RoIGxlbmd0aCkKKyAgICAgICAgOiBtX2xlbmd0
aChsZW5ndGgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxv
YXQgbWF4VmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGguY2FsY0Zs
b2F0VmFsdWUobWF4VmFsdWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGVuZ3RoIG1f
bGVuZ3RoOworfTsKKworY2xhc3MgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24gOiBwdWJs
aWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBDYWxjRXhwcmVzc2lvbkJpbmFy
eU9wZXJhdGlvbihQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFBhc3NP
d25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUsIENhbGNPcGVyYXRvciBvcCkKKyAg
ICAgICAgOiBtX2xlZnRTaWRlKGxlZnRTaWRlKQorICAgICAgICAsIG1fcmlnaHRTaWRlKHJpZ2h0
U2lkZSkKKyAgICAgICAgLCBtX29wZXJhdG9yKG9wKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX2xlZnRTaWRlOworICAgIE93blB0cjxDYWxjRXhwcmVzc2lv
bk5vZGU+IG1fcmlnaHRTaWRlOworICAgIENhbGNPcGVyYXRvciBtX29wZXJhdG9yOworfTsKKwor
ZW51bSBDYWxjTGlzdFR5cGUgeworICAgIENhbGNNaW4sCisgICAgQ2FsY01heCwgCit9OworCitj
bGFzcyBIYW5kbGVNYXAgeworcHVibGljOgorICAgIEhhbmRsZU1hcCgpIAorICAgIDogbV9pbmRl
eCgxKQorICAgIHsKKyAgICAgICAgbV9tYXAgPSBuZXcgSGFzaE1hcDxpbnQsIFJlZlB0cjxDYWxj
VmFsdWU+ID47CisgICAgfQorICAgIAorICAgIGludCBpbnNlcnQoUGFzc1JlZlB0cjxDYWxjVmFs
dWU+KTsKKyAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOworICAgIFBhc3NSZWZQdHI8Q2FsY1Zh
bHVlPiBnZXQoaW50IGluZGV4KTsKKyAgICAKK3ByaXZhdGU6ICAgICAgICAKKyAgICBpbnQgbV9p
bmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPENhbGNWYWx1ZT4gPiogbV9tYXA7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmlu
ZGV4IGE2YmMwMTkzOWMwNTBjMmUxZjJjMWU1ODc0MDU2ZTQ4Yzc4ZmJjOWUuLmJiYWJjODhlMDhj
ZjZmOWUxNDM2ZjJmYmE5NTg1OTY2YTNhNGM4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgogCisjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgpAQCAtMTQ4LDYgKzE0OSw5MSBAQCBQYXNzT3duQXJyYXlQdHI8TGVuZ3Ro
PiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAKICAgICBy
ZXR1cm4gci5yZWxlYXNlKCk7CiB9CisgICAgCitMZW5ndGg6On5MZW5ndGgoKQoreworICAgIGlm
IChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpOworfSAg
IAorICAgIAorSGFuZGxlTWFwKiBMZW5ndGg6OmNhbGNIYW5kbGVzKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEhhbmRsZU1hcCwgaGFuZGxlTWFwLCAoKSk7CisgICAgcmV0dXJu
ICZoYW5kbGVNYXA7Cit9CisKK0xlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBj
YWxjKQorICAgIDogbV9xdWlyayhmYWxzZSkKKyAgICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAg
ICwgbV9pc0Zsb2F0KGZhbHNlKQoreworICAgIG1faW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLT5p
bnNlcnQoY2FsYyk7Cit9CisgICAgCitQYXNzUmVmUHRyPENhbGNWYWx1ZT4gTGVuZ3RoOjpjYWxj
VmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgcmV0dXJu
IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7Cit9CisgICAgCisvLyBG
SVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGtub3cgdGhlIHNpZ24gb2YgY2FsYyB2YWx1ZXMgd2l0
aG91dAorLy8gICAgICAgIG1heCB2YWx1ZSBpZiB0aGUgY2FsYyBmb3JtdWxhIGNvbnRhaW5zIHBl
cmNlbnRhZ2VzLgorLy8gICAgICAgIFdlIGFzc3VtZSBhbGwgY2FsYyB2YWx1ZXMgYXJlIHBvc2l0
aXZlIGZvciBub3cuCisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxhdGVkSXNaZXJvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxhdGVkSXNQb3NpdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxh
dGVkSXNOZWdhdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgTGVu
Z3RoOjpjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBib29sIC8qIHJvdW5kUGVyY2VudGFn
ZXMgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1
ZSk7Cit9CisKK2ludCBMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZShpbnQgbWF4VmFsdWUsIGJv
b2wgLyogcm91bmRQZXJjZW50YWdlcyAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gbm9uTmFuQ2Fs
Y3VsYXRlZFZhbHVlKG1heFZhbHVlKTsKK30KKworZmxvYXQgTGVuZ3RoOjpjYWxjdWxhdGVkRmxv
YXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK3ZvaWQgTGVuZ3RoOjppbmNyZW1lbnRDYWxjdWxhdGVk
UmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIGNhbGNIYW5k
bGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSktPnJlZigpOworfQorCit2b2lkIExlbmd0
aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3Vs
YXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY0hhbmRsZXMo
KS0+Z2V0KGNhbGN1bGF0ZWRMZW5ndGhJZCgpKTsKKyAgICBpZiAoY2FsY0xlbmd0aC0+aGFzT25l
UmVmKCkpCisgICAgICAgIGNhbGNIYW5kbGVzKCktPnJlbW92ZShjYWxjdWxhdGVkTGVuZ3RoSWQo
KSk7CisgICAgY2FsY0xlbmd0aC0+ZGVyZWYoKTsKK30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9u
TmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXND
YWxjdWxhdGVkKCkpOworICAgIFJlZlB0cjxDYWxjVmFsdWU+IGNhbGNMZW5ndGggPSBjYWxjSGFu
ZGxlcygpLT5nZXQoY2FsY3VsYXRlZExlbmd0aElkKCkpOworICAgIGZsb2F0IHJlc3VsdCA9IGNh
bGNMZW5ndGgtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogY2xhc3MgU2FtZVNpemVB
c0xlbmd0aCB7CiAgICAgaW50MzJfdCB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5k
ZXggNTNiMDI2MGMyMDdiMDc4Mjg5NWVmMzc3Yzg0Y2Y2MTY0NzU3NDk3ZS4uYjZjYTRmZDE5Yzk2
Njk5MTFmYzM5ZTRmNzA4M2JiOTg2OTYxZmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogCkBAIC0zNCw4ICszNSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFs
dWUgZm9yIGEgMjgtYml0IGludAogY29uc3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZm
ZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiAKLWVudW0gTGVuZ3RoVHlw
ZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5z
aWMsIFVuZGVmaW5lZCB9OwotCitlbnVtIExlbmd0aFR5cGUgeyBBdXRvLCBSZWxhdGl2ZSwgUGVy
Y2VudCwgRml4ZWQsIEludHJpbnNpYywgTWluSW50cmluc2ljLCBDYWxjdWxhdGVkLCBVbmRlZmlu
ZWQgfTsKKyAKK2NsYXNzIENhbGNWYWx1ZTsgICAgCitjbGFzcyBIYW5kbGVNYXA7CisgICAgCiBz
dHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTY1LDExICs2OSwzMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2KTsgICAgCiAgICAgfQogCisgICAgZXhwbGljaXQgTGVuZ3RoKFBhc3NSZWZQ
dHI8Q2FsY1ZhbHVlPik7CisKKyAgICBMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAg
eworICAgICAgICBpbml0RnJvbUxlbmd0aChsZW5ndGgpOworICAgIH0KKyAgICAKKyAgICBMZW5n
dGgmIG9wZXJhdG9yPShjb25zdCBMZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRG
cm9tTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgfkxl
bmd0aCgpOworCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyBy
ZXR1cm4gKG1fdHlwZSA9PSBvLm1fdHlwZSkgJiYgKG1fcXVpcmsgPT0gby5tX3F1aXJrKSAmJiAo
aXNVbmRlZmluZWQoKSB8fCAoZ2V0RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSk7
IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG8pOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIG9wZXJhdG9yKj0oZmxvYXQgdikK
LSAgICB7ICAgICAgICAKKyAgICB7ICAgICAgIAorICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobV9pc0Zsb2F0KQogICAg
ICAgICAgICAgbV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZmxvYXRWYWx1ZSAq
IHYpOwogICAgICAgICBlbHNlICAgICAgICAKQEAgLTgwLDYgKzEwMywxMSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgaW50IHZhbHVlKCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChpc0NhbGN1bGF0
ZWQoKSkgeworICAgICAgICAgICAgLy8gRklYTUUgY2FsYyBodHRwOi8vd2Via2l0Lm9yZy9iLzE2
NjYyCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZXRJbnRWYWx1ZSgpOwogICAgIH0KIApA
QCAtODksNiArMTE3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgp
OwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxjVmFsdWUoKSBjb25zdDsK
KwogICAgIExlbmd0aFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0
aFR5cGU+KG1fdHlwZSk7IH0KICAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9xdWly
azsgfQogCkBAIC0xMDYsNiArMTM2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmFsdWUo
aW50IHZhbHVlKQogICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwogICAgIH0KIApAQCAtMTIxLDcgKzE1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsKICAg
ICB9CiAKLSAgICAvLyBOb3RlOiBNYXkgb25seSBiZSBjYWxsZWQgZm9yIEZpeGVkLCBQZXJjZW50
IGFuZCBBdXRvIGxlbmd0aHMuCisgICAgLy8gTm90ZTogTWF5IG9ubHkgYmUgY2FsbGVkIGZvciBG
aXhlZCwgUGVyY2VudCwgQXV0byBhbmQgQ2FsY3VsYXRlZCBsZW5ndGhzLgogICAgIC8vIE90aGVy
IHR5cGVzIHdpbGwgQVNTRVJUIGluIG9yZGVyIHRvIGNhdGNoIGludmFsaWQgbGVuZ3RoIGNhbGN1
bGF0aW9ucy4KICAgICBpbnQgY2FsY1ZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpIGNvbnN0CiAgICAgewpAQCAtMTMxLDYgKzE2NSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsY01pblZhbHVlKG1heFZhbHVlLCByb3VuZFBlcmNl
bnRhZ2VzKTsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1cm4g
bWF4VmFsdWU7CisgICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7ICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAgICAgICAgIGNhc2Ug
SW50cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBAIC0xNTIsNiArMTg4
LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
Pihyb3VuZChtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOwogICAgICAgICAgICAgICAg
IC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZv
ciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFj
ay4KICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxm
bG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICAgICAgICAgIGNhc2Ug
Q2FsY3VsYXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlZE1pblZhbHVlKG1h
eFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIEF1dG86CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjYXNlIFJl
bGF0aXZlOgpAQCAtMTc0LDYgKzIxMiw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKTsKICAg
ICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG1heFZhbHVlKTsKKyAgICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsY3VsYXRlZEZsb2F0VmFsdWUobWF4VmFsdWUpOyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAgICAgICBjYXNlIEludHJp
bnNpYzoKICAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2ljOgpAQCAtMTg5LDE4ICsyMjksMjQg
QEAgcHVibGljOgogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgCiAgICAgewogICAgICAgICBBU1NF
UlQoIWlzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gIW1fZmxvYXRW
YWx1ZSA6ICFtX2ludFZhbHVlOworICAgICAgICByZXR1cm4gaXNDYWxjdWxhdGVkKCkgPyBjYWxj
dWxhdGVkSXNaZXJvKCkgOiBtX2lzRmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFsdWU7
CisgICAgfQorICAgIGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNlIDogaXNDYWxjdWxhdGVkKCkgPyBjYWxjdWxhdGVkSXNQ
b3NpdGl2ZSgpIDogZ2V0RmxvYXRWYWx1ZSgpID4gMDsKKyAgICB9CisgICAgYm9vbCBpc05lZ2F0
aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2Ug
OiBpc0NhbGN1bGF0ZWQoKSA/IGNhbGN1bGF0ZWRJc05lZ2F0aXZlKCkgOiBnZXRGbG9hdFZhbHVl
KCkgPCAwOwogICAgIH0KICAgICAKLSAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVy
biBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOyB9Ci0gICAgYm9v
bCBpc05lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNlIDogZ2V0
RmxvYXRWYWx1ZSgpIDwgMDsgfQotCiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gQXV0bzsgfQogICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBSZWxhdGl2ZTsgfQotICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IFBlcmNlbnQ7IH0KKyAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAgICAgYm9vbCBp
c0ZpeGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkOyB9CiAgICAgYm9vbCBpc0lu
dHJpbnNpY09yQXV0bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvIHx8IHR5cGUoKSA9
PSBNaW5JbnRyaW5zaWMgfHwgdHlwZSgpID09IEludHJpbnNpYzsgfQotICAgIGJvb2wgaXNTcGVj
aWZpZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09IFBlcmNl
bnQ7IH0KKyAgICBib29sIGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZp
eGVkIHx8IHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CisgICAg
Ym9vbCBpc0NhbGN1bGF0ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQ2FsY3VsYXRlZDsg
fQogCiAgICAgTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNz
KSBjb25zdAogICAgIHsKQEAgLTIzOSw2ICsyODUsMzggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIG1faXNGbG9hdCA/IG1fZmxvYXRWYWx1ZSA6IG1faW50VmFsdWU7CiAgICAgfQogCisgICAg
dm9pZCBpbml0RnJvbUxlbmd0aChjb25zdCBMZW5ndGggJmxlbmd0aCkgCisgICAgeworICAgICAg
ICBtX3F1aXJrID0gbGVuZ3RoLm1fcXVpcms7CisgICAgICAgIG1fdHlwZSA9IGxlbmd0aC5tX3R5
cGU7CisgICAgICAgIG1faXNGbG9hdCA9IGxlbmd0aC5tX2lzRmxvYXQ7CisgICAgICAgIAorICAg
ICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgbV9mbG9hdFZhbHVlID0gbGVuZ3RoLm1f
ZmxvYXRWYWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9pbnRWYWx1ZSA9IGxlbmd0
aC5tX2ludFZhbHVlOworICAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKQorICAg
ICAgICAgICAgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0KKyAgICAKKyAgICBIYW5k
bGVNYXAqIGNhbGNIYW5kbGVzKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBjYWxjdWxhdGVkSXNa
ZXJvKCkgY29uc3Q7CisgICAgYm9vbCBjYWxjdWxhdGVkSXNQb3NpdGl2ZSgpIGNvbnN0OworICAg
IGJvb2wgY2FsY3VsYXRlZElzTmVnYXRpdmUoKSBjb25zdDsKKyAgICBmbG9hdCBub25OYW5DYWxj
dWxhdGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlZFZhbHVl
KGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25zdDsKKyAgICBpbnQgY2Fs
Y3VsYXRlZE1pblZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25z
dDsKKyAgICBmbG9hdCBjYWxjdWxhdGVkRmxvYXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Owor
ICAgIGludCBjYWxjdWxhdGVkTGVuZ3RoSWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzQ2FsY3VsYXRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldEludFZhbHVlKCk7CisgICAgfQor
ICAgIHZvaWQgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OworICAgIHZvaWQgZGVjcmVt
ZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OyAgICAKKyAgICAKICAgICB1bmlvbiB7CiAgICAgICAg
IGludCBtX2ludFZhbHVlOwogICAgICAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNj
ODBmYzY3NjUyODVmMTczYzc3NmIzZGUyMGIzZGY1YzI4NzIyMi4uMDM5YzMwMzU1Y2M4Mzc2MGY1
YjdjZWM5MDg3ZjhlNDBkYmJhZDY4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTI2
ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NT
MyBjYWxjOiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0
LCBtYXJnaW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmV3cm90ZSB0aGUgbWFyZ2luIHRlc3QsIGFzIHRoZSBvcmlnaW5hbCBmb3Jt
IHdvdWxkbid0IHdvcmsgZm9yIHBlcmNlbnRhZ2VzLgorCisgICAgICAgICogY3NzMy9jYWxjL21h
cmdpbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3NzMy9jYWxjL21hcmdpbi5odG1sOgorICAg
ICAgICAqIGNzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2Nh
bGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wMi0yNiAgWW9zaGlmdW1pIElu
b3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvbnVtYmVyL2lucHV0LW51bWJlci1ldmVudHMuaHRtbCBpcyBmYWlsaW5nIHNpbmNlIHIxMDgy
MjgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQKaW5kZXggMTg4NTYw
YjcwNzZjMmE5OGIzZjZlYzNiOTczZGJlMTg2NTgxNDEzYS4uMTE5ZDc3MmRmM2JjMWE2MTA1NzM0
YmY5ZjY1NWJjOWRkYjIyMjlmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21h
cmdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBl
Y3RlZC50eHQKQEAgLTEsMjMgKzEsNDMgQEAKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNpbXBsZS1hbGwiKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIGlzIDI1MAotUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWFsbCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlz
IDE3MAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWxlZnQiKS5wYXJlbnRO
b2RlLm9mZnNldFdpZHRoIGlzIDIyNQotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lt
cGxlLWxlZnQiKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBpcyAxMjAKLVBBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMg
MjI1Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKS5wYXJlbnRO
b2RlLm9mZnNldEhlaWdodCBpcyAxMjAKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNp
bXBsZS10b3AiKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoIGlzIDIwMAotUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2ltcGxlLXRvcCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDE0
NQotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJvdHRvbSIpLnBhcmVudE5v
ZGUub2Zmc2V0V2lkdGggaXMgMjAwCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1w
bGUtYm90dG9tIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTQ1Ci1GQUlMIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWFsbCIpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGggc2hv
dWxkIGJlIDI1MC4gV2FzIDIwMC4KLUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNl
bnQtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgc2hvdWxkIGJlIDE3MC4gV2FzIDEyMC4K
LUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtbGVmdCIpLnBhcmVudE5vZGUu
b2Zmc2V0V2lkdGggc2hvdWxkIGJlIDIyNS4gV2FzIDIwMC4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBlcmNlbnQtbGVmdCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEyMAot
RkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1yaWdodCIpLnBhcmVudE5vZGUu
b2Zmc2V0V2lkdGggc2hvdWxkIGJlIDIyNS4gV2FzIDIwMC4KLVBBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBlcmNlbnQtcmlnaHQiKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBpcyAxMjAK
LVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtdG9wIikucGFyZW50Tm9kZS5v
ZmZzZXRXaWR0aCBpcyAyMDAKLUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQt
dG9wIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgc2hvdWxkIGJlIDE0NS4gV2FzIDEyMC4KLVBB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYm90dG9tIikucGFyZW50Tm9kZS5v
ZmZzZXRXaWR0aCBpcyAyMDAKLUZBSUwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQt
Ym90dG9tIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgc2hvdWxkIGJlIDE0NS4gV2FzIDEyMC4K
K1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWFs
bCIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIiksIG51bGwpLm1hcmdpblRvcCBpcyAi
MjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lt
cGxlLWFsbCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWFsbCIpLCBudWxsKS5tYXJnaW5C
b3R0b20gaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNpbXBsZS1sZWZ0IiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjI1cHgiCitQQVNTIGdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1sZWZ0IiksIG51
bGwpLm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVmdCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMHB4Igor
UEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVm
dCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXJpZ2h0IiksIG51bGwpLm1hcmdpbkxlZnQg
aXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2ltcGxlLXJpZ2h0IiksIG51bGwpLm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKSwgbnVsbCkubWFy
Z2luUmlnaHQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXRvcCIp
LCBudWxsKS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS10b3AiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIyNXB4
IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUt
dG9wIiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS10b3AiKSwgbnVsbCkubWFyZ2luQm90dG9t
IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNpbXBsZS1ib3R0b20iKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYm90dG9tIiksIG51bGwp
Lm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzaW1wbGUtYm90dG9tIiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0
b20iKSwgbnVsbCkubWFyZ2luQm90dG9tIGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWFsbCIpLCBudWxsKS5tYXJnaW5MZWZ0
IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwZXJjZW50LWFsbCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxsIiksIG51bGwpLm1h
cmdpblJpZ2h0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwZXJjZW50LWFsbCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjI1cHgiCitQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtbGVm
dCIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWxlZnQiKSwgbnVsbCkubWFyZ2luVG9wIGlz
ICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBl
cmNlbnQtbGVmdCIpLCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWxlZnQiKSwgbnVsbCkubWFy
Z2luQm90dG9tIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBlcmNlbnQtcmlnaHQiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXJpZ2h0
IiksIG51bGwpLm1hcmdpblRvcCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXJpZ2h0IiksIG51bGwpLm1hcmdpblJpZ2h0IGlz
ICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
ZXJjZW50LXJpZ2h0IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIpLCBudWxsKS5t
YXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBlcmNlbnQtdG9wIiksIG51bGwpLm1hcmdpblRvcCBpcyAiMjVweCIKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10b3AiKSwg
bnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10b3AiKSwgbnVsbCkubWFyZ2luQm90dG9tIGlzICIw
cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNl
bnQtYm90dG9tIiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20iKSwgbnVsbCkubWFy
Z2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBlcmNlbnQtYm90dG9tIiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQQVNT
IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYm90dG9t
IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMjVweCIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9j
YWxjL21hcmdpbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi5odG1sCmluZGV4
IDUwOTA3ZTNiZGIxZTM1NWJkM2JlNDhhOTEzY2JmZDIyMjg1MjM5NDguLjc4ZGEwZWFjZTdlMDdm
YzZlMDQ5OTRjYzZiZjMyYzEyNTllZGE2NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMv
Y2FsYy9tYXJnaW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLmh0bWwK
QEAgLTE2LDY1ICsxNiw1NyBAQAogPC9zdHlsZT4KIAogPGRpdiBpZD0idGVzdC1jb250YWluZXIi
PgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS1hbGwiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBh
biBvdmVyYWxsIG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjwvZGl2Pjxici8+Ci0gICAgPGRpdj48
cCBpZD0ic2ltcGxlLWxlZnQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgbWFyZ2lu
IG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KLSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUtcmln
aHQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IG1hcmdpbiBvZiAyNSBwaXhlbHMu
PC9wPjwvZGl2Pjxici8+Ci0gICAgPGRpdj48cCBpZD0ic2ltcGxlLXRvcCI+VGhpcyBlbGVtZW50
IHNob3VsZCBoYXZlIGEgdG9wIG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjwvZGl2Pjxici8+Ci0g
ICAgPGRpdj48cCBpZD0ic2ltcGxlLWJvdHRvbSI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEg
Ym90dG9tIG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjwvZGl2Pjxici8+CisgICAgPHAgaWQ9InNp
bXBsZS1hbGwiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIG1hcmdpbiBvZiAy
NSBwaXhlbHMuPC9wPjxici8+CisgICAgPHAgaWQ9InNpbXBsZS1sZWZ0Ij5UaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYSBsZWZ0IG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjxici8+CisgICAgPHAg
aWQ9InNpbXBsZS1yaWdodCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgbWFyZ2lu
IG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAgICA8cCBpZD0ic2ltcGxlLXRvcCI+VGhpcyBlbGVt
ZW50IHNob3VsZCBoYXZlIGEgdG9wIG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjxici8+CisgICAg
PHAgaWQ9InNpbXBsZS1ib3R0b20iPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBt
YXJnaW4gb2YgMjUgcGl4ZWxzLjwvcD48YnIvPgogICAgIDxkaXYgaWQ9IndyYXBwZXIiIHN0eWxl
PSJ3aWR0aDogMzAwcHg7IGJhY2tncm91bmQtY29sb3I6IGNvcm5zaWxrOyBkaXNwbGF5OiBibG9j
azsiPgotICAgICAgICA8ZGl2PjxwIGlkPSJwZXJjZW50LWFsbCI+VGhpcyBlbGVtZW50IHNob3Vs
ZCBoYXZlIGFuIG92ZXJhbGwgbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0
aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48L2Rpdj48YnIvPgotICAgICAgICA8ZGl2PjxwIGlk
PSJwZXJjZW50LWxlZnQiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgbWFyZ2luIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48
L2Rpdj48YnIvPgotICAgICAgICA8ZGl2PjxwIGlkPSJwZXJjZW50LXJpZ2h0Ij5UaGlzIGVsZW1l
bnQgc2hvdWxkIGhhdmUgYSByaWdodCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50
IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjwvZGl2Pjxici8+Ci0gICAgICAgIDxkaXY+
PHAgaWQ9InBlcmNlbnQtdG9wIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgbWFyZ2lu
IG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwv
cD48L2Rpdj48YnIvPgotICAgICAgICA8ZGl2PjxwIGlkPSJwZXJjZW50LWJvdHRvbSI+VGhpcyBl
bGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBw
YXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PC9kaXY+PGJyLz4KKyAgICAgICAg
PHAgaWQ9InBlcmNlbnQtYWxsIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBt
YXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVw
eCkuPC9wPjxici8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50LWxlZnQiPlRoaXMgZWxlbWVudCBz
aG91bGQgaGF2ZSBhIGxlZnQgbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0
aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48YnIvPgorICAgICAgICA8cCBpZD0icGVyY2VudC1y
aWdodCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgbWFyZ2luIG9mIDI1IHBpeGVs
cyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48YnIvPgorICAg
ICAgICA8cCBpZD0icGVyY2VudC10b3AiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBt
YXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVw
eCkuPC9wPjxici8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50LWJvdHRvbSI+VGhpcyBlbGVtZW50
IHNob3VsZCBoYXZlIGEgYm90dG9tIG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQg
d2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PGJyLz4KICAgICA8L2Rpdj4KIDwvZGl2Pgog
PHNjcmlwdD4KICAgICB2YXIgaW5uZXJXaWR0aCA9IDIwMDsKICAgICB2YXIgaW5uZXJIZWlnaHQg
PSAxMjA7Ci0gICAgdmFyIG1hcmdpbiA9IDI1OworICAgIHZhciBtYXJnaW4gPSAiMjVweCI7Cisg
ICAgdmFyIG5vTWFyZ2luID0gIjBweCI7CiAKICAgICB2YXIgdGVzdHMgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgicCIpOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgdmFyIG91dGVyRWxlbWVudCA9IHRlc3RzW2ldLnBhcmVudE5v
ZGU7Ci0gICAgICAgIHZhciBpbm5lckVsZW1lbnQgPSB0ZXN0c1tpXTsKLSAgICAgICAgdmFyIHdp
ZHRoID0gb3V0ZXJFbGVtZW50Lm9mZnNldFdpZHRoOwotICAgICAgICB2YXIgaGVpZ2h0ID0gb3V0
ZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKLQotICAgICAgICB2YXIgZXhwZWN0ZWRXaWR0aCA9IGlu
bmVyV2lkdGg7Ci0gICAgICAgIHZhciBleHBlY3RlZEhlaWdodCA9IGlubmVySGVpZ2h0OwotICAg
IAorICAgICAgICB2YXIgaW5uZXJFbGVtZW50ID0gdGVzdHNbaV0KKyAgICAgICAgdmFyIGV4cGVj
dGVkTGVmdCA9IG5vTWFyZ2luOworICAgICAgICB2YXIgZXhwZWN0ZWRUb3AgPSBub01hcmdpbjsK
KyAgICAgICAgdmFyIGV4cGVjdGVkUmlnaHQgPSBub01hcmdpbjsKKyAgICAgICAgdmFyIGV4cGVj
dGVkQm90dG9tID0gbm9NYXJnaW47CiAgICAgICAgIHN3aXRjaCAoaW5uZXJFbGVtZW50LmlkLnNw
bGl0KCItIilbMV0pIHsKICAgICAgICAgY2FzZSAiYWxsIjoKLSAgICAgICAgICAgIGV4cGVjdGVk
V2lkdGggKz0gMiAqIG1hcmdpbjsKLSAgICAgICAgICAgIGV4cGVjdGVkSGVpZ2h0ICs9IDIgKiBt
YXJnaW47CisgICAgICAgICAgICBleHBlY3RlZExlZnQgPSBtYXJnaW47CisgICAgICAgICAgICBl
eHBlY3RlZFRvcCA9IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVkUmlnaHQgPSBtYXJnaW47
CisgICAgICAgICAgICBleHBlY3RlZEJvdHRvbSA9IG1hcmdpbjsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlICJ0b3AiOgorICAgICAgICAgICAgZXhwZWN0ZWRUb3AgPSBtYXJnaW47
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiYm90dG9tIjoKLSAgICAgICAgICAg
IGV4cGVjdGVkSGVpZ2h0ICs9IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVkQm90dG9tID0g
bWFyZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgImxlZnQiOgorICAgICAg
ICAgICAgZXhwZWN0ZWRMZWZ0ID0gbWFyZ2luOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgInJpZ2h0IjoKLSAgICAgICAgICAgIGV4cGVjdGVkV2lkdGggKz0gbWFyZ2luOworICAg
ICAgICAgICAgZXhwZWN0ZWRSaWdodCA9IG1hcmdpbjsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIicgKyBpbm5lckVsZW1lbnQuaWQgKyAnIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCcsIGV4
cGVjdGVkV2lkdGgpOwotICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICciKS5wYXJlbnROb2RlLm9mZnNldEhlaWdo
dCcsIGV4cGVjdGVkSGVpZ2h0KTsKLSAgICAKLSAgICAgICAgdmFyIGVycm9yID0gW107Ci0gICAg
ICAgIGlmICh3aWR0aCAhPSBleHBlY3RlZFdpZHRoKQotICAgICAgICAgICAgZXJyb3IucHVzaCgi
ZXhwZWN0ZWQgd2lkdGggIiArIGV4cGVjdGVkV2lkdGggKyAiLCB3YXMgIiArIHdpZHRoKTsKLSAg
ICAgICAgaWYgKGhlaWdodCAhPSBleHBlY3RlZEhlaWdodCkKLSAgICAgICAgICAgIGVycm9yLnB1
c2goImV4cGVjdGVkIGhlaWdodCAiICsgZXhwZWN0ZWRIZWlnaHQgKyAiLCB3YXMgIiArIGhlaWdo
dCk7Ci0KLSAgICAgICAgaWYgKGVycm9yID09ICIiKSB7Ci0gICAgICAgICAgICBpbm5lckVsZW1l
bnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKLSAgICAgICAgICAgIGlubmVyRWxl
bWVudC5pbm5lckhUTUwgKz0gIiA9PiBQQVNTIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAicmVkIjsKLSAgICAgICAg
ICAgIGlubmVyRWxlbWVudC5pbm5lckhUTUwgKz0gIiA9PiBGQUlMOiAiICsgZXJyb3Iuam9pbigi
LCAiKTsKLSAgICAgICAgfQorICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicgKyBpbm5lckVsZW1lbnQuaWQgKyAn
IiksIG51bGwpLm1hcmdpbkxlZnQnLCBleHBlY3RlZExlZnQpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2dldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicg
KyBpbm5lckVsZW1lbnQuaWQgKyAnIiksIG51bGwpLm1hcmdpblRvcCcsIGV4cGVjdGVkVG9wKTsK
KyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCInICsgaW5uZXJFbGVtZW50LmlkICsgJyIpLCBudWxsKS5tYXJnaW5S
aWdodCcsIGV4cGVjdGVkUmlnaHQpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicgKyBpbm5lckVsZW1lbnQu
aWQgKyAnIiksIG51bGwpLm1hcmdpbkJvdHRvbScsIGV4cGVjdGVkQm90dG9tKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CmluZGV4IDgzZWUyNjdiOTBlZThhZGQ2NjA0
MWI1Y2VmOGFiODlhYjgzYjdlYmMuLjBiOGUzYTc0NDQ1Mjg3MDgzY2RjNTJiYjY0NmViNWQyMDU3
NzlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQKQEAg
LTgsMTIgKzgsMTIgQEAgVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2Yg
MjUgcGl4ZWxzLiA9PiBQQVNTCiAKIFRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBw
YWRkaW5nIG9mIDI1IHBpeGVscy4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUg
YW4gb3ZlcmFsbCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAz
MDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aCwgd3JvbmcgaGVpZ2h0CitUaGlz
IGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAl
IG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxl
bWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJl
bnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcgd2lkdGgKK1RoaXMg
ZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBw
YXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYSByaWdodCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3
aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aAorVGhpcyBlbGVt
ZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJl
bnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hv
dWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGgg
b2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitUaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lk
dGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2Yg
MzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitUaGlzIGVsZW1lbnQgc2hv
dWxkIGhhdmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lk
dGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dAppbmRleCA1YjQ1ZDJkY2NjMDgwMmEzMzcxMzk3
NGE2MjY4N2IzNGRiMzU0YjVkLi45N2Q2ZDNhM2I2YWUzM2ZmYzY0YmNjYzY0M2E4MTg1MjExMmZi
NDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVk
LnR4dApAQCAtMjAsMTAgKzIwLDEwIEBAIGNvbnRyb2wgPT4gUEFTUwogMTBweCogKDUgKiAyKSA9
PiBQQVNTCiA1MHB4ICsgMTBweCAqIDUgKG9wZXJhdGlvbiBvcmRlcikgPT4gUEFTUwogMTAwJS8y
ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCi0xMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAl
IGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdh
cyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9v
bT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYKLTgwJSAtIDYwcHggKHdoZXJl
IDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBi
dXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7
IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgotMzAwcHggLSAxMDAl
ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9m
IDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3
YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYKLS0xMDBw
eCArIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQg
d2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEw
MCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1
NgorMTAwJSArIC0xMDBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworODAlIC0gNjBw
eCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworMzAwcHggLSAxMDAlICh3aGVyZSAxMDAl
IGlzIDIwMHB4KSA9PiBQQVNTCistMTAwcHggKyAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9
PiBQQVNTCiAyMCUgKyAzMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDgwJSAtIDMw
JSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwogMTAlICogNSAod2hlcmUgMTAwJSBpcyAy
MDBweCkgPT4gUEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129175</attachid>
            <date>2012-02-27 20:19:09 -0800</date>
            <delta_ts>2012-03-06 06:34:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120228151906.patch</filename>
            <type>text/plain</type>
            <size>41968</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE0OWUwYjJhZmVhNjI0
MmQzYzc0ODg3YTQ5YTI2YmZiMWE2NjM3Ni4uYTRhYjFhY2Y1YmE4YzUzNWY2YjQ5ODYyNWIzZTk1
ZWViNTlhOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTAyLTI2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJldHJp
Y3Rpb25zLgorCisgICAgICAgIExlbmd0aHMgY2FuIGJlIGNvcGllZCwgYW5kIHNvIHRoZSBleHBy
ZXNzaW9ucyBhcmUgc3RvcmVkIGluIGEgaGFzaG1hcCwgYW5kIG9ubHkgdGhlaXIKKyAgICAgICAg
aWRzIGFyZSBjb3BpZWQgYWxvbmcgd2l0aCBMZW5ndGguIFRoZSBleHByZXNzaW9ucyBhcmUgUmVm
Q291bnRlZCwgYW5kIHdpbGwgZ2V0IAorICAgICAgICBjbGVhbmVkIHVwIHdoZW4gdGhlIGxhc3Qg
cmVmZXJyaW5nIExlbmd0aCBpcyBkZXN0cnVjdGVkLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nh
bGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnRvQ2Fs
Y1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAqIGNz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjRXhwcmVzc2lvbk5vZGUp
OgorICAgICAgICAoQ1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1
ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUxlbmd0aDo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oOgorICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJpbmFy
eU9wZXJhdGlvbjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjVmFsdWU6OmV2
YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhhbmRsZU1hcDo6aW5zZXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhhbmRsZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhhbmRsZU1h
cDo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAg
IChDYWxjRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25O
b2RlOjp+Q2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNWYWx1ZTo6Q2FsY1ZhbHVlKToKKyAg
ICAgICAgKENhbGNFeHByZXNzaW9uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHBy
ZXNzaW9uTnVtYmVyOjpDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWxjRXhwcmVzc2lvbk51bWJlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25M
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25MZW5ndGg6OkNhbGNFeHBy
ZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpl
dmFsdWF0ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbjo6Q2FsY0V4cHJlc3Np
b25CaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAoSGFuZGxlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkhhbmRsZU1hcDo6SGFuZGxlTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjSGFuZGxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc1plcm8pOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkSXNQb3NpdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRJc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6Y2FsY3VsYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3Vs
YXRlZE1pblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZEZsb2F0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppbmNyZW1lbnRDYWxjdWxhdGVkUmVm
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om5vbk5hbkNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpvcGVyYXRvcio9KToKKyAgICAgICAgKFdlYkNv
cmU6Okxlbmd0aDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpzZXRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGNNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGNG
bG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNaZXJvKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNQb3NpdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmlzTmVnYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1NwZWNpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6OmlzQ2FsY3VsYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmluaXRGcm9t
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRlZExlbmd0aElkKToK
KwogMjAxMi0wMi0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHNob3VsZCBsaXZlIGluIGl0cyBvd24gZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCAzMDU0YWEyNzM2YzhkYWRjOWZhZTJiNzQ3MDFlNDY0Y2Qy
M2VhODEwLi40ODI2ZjJhNzUzNjE0NGY3NzVjM2E4MGRhM2U4NmIxOTdkNGQ4ZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtODk1LDYgKzg5NSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29t
bWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0b3I3Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CiBfX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0UK
K19fWk43V2ViQ29yZTZMZW5ndGhEMUV2CiBfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBf
CiBfX1pON1dlYkNvcmU2UmVnaW9uOHN1YnRyYWN0RVJLUzBfCiBfX1pON1dlYkNvcmU2UmVnaW9u
OWludGVyc2VjdEVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IDg3ZmE3Mzc4MjcyNjgxN2NlMGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLjkxYjBh
MmNhZTRkYjBhNDJlY2NlYjliZDgwN2JhZmNjNTU4OTI4YzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTExNCw2ICsxMTQsMjkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3NzVGV4dCgpOwogICAgIH0KIAorICAgIHZpcnR1YWwg
UGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgewor
ICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdvcnkpIHsKKyAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3Zh
bHVlLT5nZXRGbG9hdFZhbHVlKCkpKTsKKyAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgorICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5j
b21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSkpOworICAgICAgICBj
YXNlIENhbGNQZXJjZW50OgorICAgICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgICAg
IExlbmd0aCBsZW5ndGggPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aCht
X3ZhbHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tLCAmb2spOworICAgICAgICAgICAg
ICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgobGVuZ3Ro
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CisgICAg
ICAgIGNhc2UgQ2FsY090aGVyOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdmlydHVhbCBk
b3VibGUgZG91YmxlVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2NhdGVn
b3J5KSB7CkBAIC0yMDgsNiArMjMxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFkb3Vi
bGVWYWx1ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lv
bk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgeworICAgICAgICBPd25QdHI8Q2FsY0V4cHJl
c3Npb25Ob2RlPiBsZWZ0KG1fbGVmdFNpZGUtPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUs
IHpvb20pKTsKKyAgICAgICAgaWYgKCFsZWZ0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0KG1fcmlnaHRTaWRlLT50
b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlmICghcmlnaHQp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbihsZWZ0LnJlbGVhc2UoKSwgcmlnaHQucmVs
ZWFzZSgpLCBtX29wZXJhdG9yKSk7CisgICAgfQorCiAgICAgdmlydHVhbCBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdCAKICAgICB7CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShtX2xlZnRTaWRl
LT5kb3VibGVWYWx1ZSgpLCBtX3JpZ2h0U2lkZS0+ZG91YmxlVmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA3YzM2NjcxMjViNWQ3YjEyZTU3ZTNm
YmZiYmRjYzJmNzBiYzM0MGYzLi5hMWZiOTM5MjI4ZGE4OGNhMzBlNWZjODNmOTljMzVlMjMzMTFk
OWI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTU4LDgg
KzU4LDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKIGNsYXNzIENTU0NhbGNFeHByZXNz
aW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gewogcHVi
bGljOgogICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsgIAor
ICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNaZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVz
c2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCiAgICAgdmlydHVhbCBkb3VibGUg
ZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29tcHV0ZUxlbmd0
aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNv
bnN0ID0gMDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHByb3RlY3RlZDoKIGNsYXNzIENTU0Nh
bGNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZh
bHVlTGlzdCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY1ZhbHVlKik7CiAKKyAgICBQYXNzUmVm
UHRyPENhbGNWYWx1ZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBDYWxjVmFsdWU6OmNyZWF0ZShtX2V4cHJlc3Npb24tPnRvQ2FsY1ZhbHVlKHN0eWxlLCBy
b290U3R5bGUsIHpvb20pLCBtX25vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0
aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCk7CisgICAgfQogICAgIENhbGN1bGF0aW9uQ2F0ZWdv
cnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0K
ICAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIo
KTsgfSAgICAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGZjMTRlODIwNmU4M2Q5OGYyMjIyZmI0OWE4
YjQ4NjIyNWQzYmI2ZmIuLjBhOGQzZDI4ZGZhOGIxMjlmNDAyYzJlY2ZkNzcwZmNjYjI3MjJhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjY2LDYgKzI2
Niw3IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgm
IGxlbmd0aCkKICAgICAgICAgICAgIEFTU0VSVChpc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7
CiAgICAgICAgICAgICBtX3ZhbHVlLm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICBjYXNlIFJlbGF0aXZl
OgogICAgICAgICBjYXNlIFVuZGVmaW5lZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRl
eCAyNzRjZWI0ODJlNzE3Y2E1ODljMDhhNWRlOWRiYmNkMjFmYmUwNWRlLi5iNjcwM2RmMDUyZTE4
NTVmNTA2OTc3MTFjNWE4ODIzNWJiODEwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5oIgogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFn
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRmxleFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAg
ICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdl
dERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAg
ICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNz
c0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJv
b3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsg
ICAgICAgICAgICAKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCmluZGV4IGY2Yzg5OWUxM2JkMjk4N2FlOTRiYWQ4ZDdjYjI4OTczYjYzYTFi
MDMuLmUxOTRiODdjODRjMDFmZDdiZTM3YTE1MTIyMGE0MjBiNmEyY2E5ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJD
YWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJD
b3VudGVyLmgiCiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDU1NCb3Jk
ZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5j
bHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCkBAIC0yNTA1LDEyICsyNTA3LDEyIEBAIHN0YXRpYyBM
ZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwg
UmVuZGVyU3R5bGUqIHN0CiAgICAgcmV0dXJuIGw7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVy
dFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9JbnRMZW5n
dGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sICpvaykKIHsK
ICAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0
eWxlLCBmYWxzZSwgbXVsdGlwbGllciwgb2spOwogfQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExl
bmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgKm9rKQog
ewogICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHRydWUsIG11bHRpcGxpZXIsIG9rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCmluZGV4IDRkYjdmMjI2ZDcwNDE1NjVlZTkwNGRlZjVkMTZmZTFmMDVlZGYyZTIu
LjIyYTQ2ZGZlZGQ1ZjQ5MGJlNzhiOTZkNDY5ZTY2ODkyZTU4NmQ4NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMzQ4LDYgKzM0OCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVk
TGlua1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlOyB9CiAKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRp
dmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRv
RmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKwogcHJp
dmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggYjll
Mzg1ODFhZGFkOGIxOTY0OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uOWJmNDhjNmIwMmMzZjUwMDU0
NTQ2ZjJlMDQ4MzNhMjA0YzE5MTVmNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDY5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9u
OjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBsZWZ0ID0gbV9s
ZWZ0U2lkZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0gbV9yaWdodFNp
ZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3IpIHsKKyAgICBj
YXNlIENhbGNBZGQ6CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgY2FzZSBDYWxj
U3VidHJhY3Q6CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2FzZSBDYWxjTXVs
dGlwbHk6CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBDYWxjRGl2aWRl
OgorICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxDYWxjVmFsdWU+
IENhbGNWYWx1ZTo6Y3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwg
Q2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2FsY1ZhbHVlKHZhbHVlLCByYW5nZSkpOworfQorCitmbG9hdCBDYWxjVmFsdWU6
OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAoreworICAgIGZsb2F0IHJlc3VsdCA9IG1f
dmFsdWUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICAvLyBGSVhNRTogcmVzdWx0IGlzIE5hTiB3
aGVuIHRoZXJlIGlzIGEgZGl2aXNpb24gYnkgemVybyB3aGljaAorICAgIC8vICAgICAgICBpc24n
dCBmb3VuZCBhdCBwYXJzZSB0aW1lIChlLmcuLCA1LygxMDAlLTIwMHB4KSoxMDBweCkuCisgICAg
Ly8gICAgICAgIFRoZXJlIGlzIGEgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGFuZCBob3BlZnVsbHkg
c3BlYworICAgIC8vICAgICAgICB3aWxsIGhhdmUgdGhlIGRlY2lzaW9uIGZvciB0aGlzIGlzc3Vl
LgorICAgIC8vICAgICAgICBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ct
c3R5bGUvMjAxMEphbi8wMDA3Lmh0bWwKKyAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG1faXNOb25OZWdhdGl2ZSAmJiByZXN1bHQgPCAwID8gMCA6
IHJlc3VsdDsKK30KKworaW50IEhhbmRsZU1hcDo6aW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY1ZhbHVl
PiBjYWxjVmFsdWUpCit7CisgICAgQVNTRVJUKG1faW5kZXgpOworICAgIHdoaWxlIChtX21hcC0+
Y29udGFpbnMobV9pbmRleCkpCisgICAgICAgIG1faW5kZXgrKzsKKyAgICAKKyAgICBtX21hcC0+
c2V0KG1faW5kZXgsIGNhbGNWYWx1ZSk7ICAgICAgIAorICAgIAorICAgIHJldHVybiBtX2luZGV4
OworfQorCit2b2lkIEhhbmRsZU1hcDo6cmVtb3ZlKGludCBpbmRleCkKK3sKKyAgICBBU1NFUlQo
bV9tYXAtPmNvbnRhaW5zKGluZGV4KSk7CisgICAgbV9tYXAtPnJlbW92ZShpbmRleCk7Cit9CisK
K1Bhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBIYW5kbGVNYXA6OmdldChpbnQgaW5kZXgpCit7CisgICAg
QVNTRVJUKG1fbWFwLT5jb250YWlucyhpbmRleCkpOworICAgIHJldHVybiBtX21hcC0+Z2V0KGlu
ZGV4KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IGQ4OTQ0NWU4MDZjYjVlZTgwZjlmNDFmOTA3ODdm
OGE1Yjg5ZTM4MmEuLmVkNWYxY2E2ZTY1YzViNzY1NDMzOWQ4NGI5N2NjYzI1ZTg3MGU1NzIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKQEAgLTUwLDYgKzUw
LDEwMiBAQCBlbnVtIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAgICAgQ2FsY3Vs
YXRpb25SYW5nZUFsbCwKICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUKIH07CisgICAg
ICAgIAorY2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5D
YWxjRXhwcmVzc2lvbk5vZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBmbG9h
dCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAKK2NsYXNzIENh
bGNWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGNWYWx1ZT4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhbGNWYWx1ZT4gY3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBmbG9h
dCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIENh
bGNWYWx1ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9u
UGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAg
ICAgICAsIG1faXNOb25OZWdhdGl2ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRp
dmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBt
X3ZhbHVlOworICAgIGJvb2wgbV9pc05vbk5lZ2F0aXZlOworfTsKKworY2xhc3MgQ2FsY0V4cHJl
c3Npb25OdW1iZXIgOiBwdWJsaWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBDYWxjRXhwcmVzc2lvbk51bWJlcihmbG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZs
b2F0KSBjb25zdCAKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9u
TGVuZ3RoIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ2FsY0V4cHJlc3Npb25MZW5ndGgoTGVuZ3RoIGxlbmd0aCkKKyAgICAgICAgOiBtX2xlbmd0
aChsZW5ndGgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxv
YXQgbWF4VmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGguY2FsY0Zs
b2F0VmFsdWUobWF4VmFsdWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGVuZ3RoIG1f
bGVuZ3RoOworfTsKKworY2xhc3MgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24gOiBwdWJs
aWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBDYWxjRXhwcmVzc2lvbkJpbmFy
eU9wZXJhdGlvbihQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFBhc3NP
d25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUsIENhbGNPcGVyYXRvciBvcCkKKyAg
ICAgICAgOiBtX2xlZnRTaWRlKGxlZnRTaWRlKQorICAgICAgICAsIG1fcmlnaHRTaWRlKHJpZ2h0
U2lkZSkKKyAgICAgICAgLCBtX29wZXJhdG9yKG9wKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX2xlZnRTaWRlOworICAgIE93blB0cjxDYWxjRXhwcmVzc2lv
bk5vZGU+IG1fcmlnaHRTaWRlOworICAgIENhbGNPcGVyYXRvciBtX29wZXJhdG9yOworfTsKKwor
ZW51bSBDYWxjTGlzdFR5cGUgeworICAgIENhbGNNaW4sCisgICAgQ2FsY01heCwgCit9OworCitj
bGFzcyBIYW5kbGVNYXAgeworcHVibGljOgorICAgIEhhbmRsZU1hcCgpIAorICAgIDogbV9pbmRl
eCgxKQorICAgIHsKKyAgICAgICAgbV9tYXAgPSBuZXcgSGFzaE1hcDxpbnQsIFJlZlB0cjxDYWxj
VmFsdWU+ID47CisgICAgfQorICAgIAorICAgIGludCBpbnNlcnQoUGFzc1JlZlB0cjxDYWxjVmFs
dWU+KTsKKyAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOworICAgIFBhc3NSZWZQdHI8Q2FsY1Zh
bHVlPiBnZXQoaW50IGluZGV4KTsKKyAgICAKK3ByaXZhdGU6ICAgICAgICAKKyAgICBpbnQgbV9p
bmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPENhbGNWYWx1ZT4gPiogbV9tYXA7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmlu
ZGV4IGE2YmMwMTkzOWMwNTBjMmUxZjJjMWU1ODc0MDU2ZTQ4Yzc4ZmJjOWUuLmJiYWJjODhlMDhj
ZjZmOWUxNDM2ZjJmYmE5NTg1OTY2YTNhNGM4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgogCisjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgpAQCAtMTQ4LDYgKzE0OSw5MSBAQCBQYXNzT3duQXJyYXlQdHI8TGVuZ3Ro
PiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAKICAgICBy
ZXR1cm4gci5yZWxlYXNlKCk7CiB9CisgICAgCitMZW5ndGg6On5MZW5ndGgoKQoreworICAgIGlm
IChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpOworfSAg
IAorICAgIAorSGFuZGxlTWFwKiBMZW5ndGg6OmNhbGNIYW5kbGVzKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEhhbmRsZU1hcCwgaGFuZGxlTWFwLCAoKSk7CisgICAgcmV0dXJu
ICZoYW5kbGVNYXA7Cit9CisKK0xlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBj
YWxjKQorICAgIDogbV9xdWlyayhmYWxzZSkKKyAgICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAg
ICwgbV9pc0Zsb2F0KGZhbHNlKQoreworICAgIG1faW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLT5p
bnNlcnQoY2FsYyk7Cit9CisgICAgCitQYXNzUmVmUHRyPENhbGNWYWx1ZT4gTGVuZ3RoOjpjYWxj
VmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgcmV0dXJu
IGNhbGNIYW5kbGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSk7Cit9CisgICAgCisvLyBG
SVhNRTogSXQncyBpbXBvc3NpYmxlIHRvIGtub3cgdGhlIHNpZ24gb2YgY2FsYyB2YWx1ZXMgd2l0
aG91dAorLy8gICAgICAgIG1heCB2YWx1ZSBpZiB0aGUgY2FsYyBmb3JtdWxhIGNvbnRhaW5zIHBl
cmNlbnRhZ2VzLgorLy8gICAgICAgIFdlIGFzc3VtZSBhbGwgY2FsYyB2YWx1ZXMgYXJlIHBvc2l0
aXZlIGZvciBub3cuCisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxhdGVkSXNaZXJvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxhdGVkSXNQb3NpdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTGVuZ3RoOjpjYWxjdWxh
dGVkSXNOZWdhdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgTGVu
Z3RoOjpjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBib29sIC8qIHJvdW5kUGVyY2VudGFn
ZXMgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1
ZSk7Cit9CisKK2ludCBMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZShpbnQgbWF4VmFsdWUsIGJv
b2wgLyogcm91bmRQZXJjZW50YWdlcyAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gbm9uTmFuQ2Fs
Y3VsYXRlZFZhbHVlKG1heFZhbHVlKTsKK30KKworZmxvYXQgTGVuZ3RoOjpjYWxjdWxhdGVkRmxv
YXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK3ZvaWQgTGVuZ3RoOjppbmNyZW1lbnRDYWxjdWxhdGVk
UmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIGNhbGNIYW5k
bGVzKCktPmdldChjYWxjdWxhdGVkTGVuZ3RoSWQoKSktPnJlZigpOworfQorCit2b2lkIExlbmd0
aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3Vs
YXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY0hhbmRsZXMo
KS0+Z2V0KGNhbGN1bGF0ZWRMZW5ndGhJZCgpKTsKKyAgICBpZiAoY2FsY0xlbmd0aC0+aGFzT25l
UmVmKCkpCisgICAgICAgIGNhbGNIYW5kbGVzKCktPnJlbW92ZShjYWxjdWxhdGVkTGVuZ3RoSWQo
KSk7CisgICAgY2FsY0xlbmd0aC0+ZGVyZWYoKTsKK30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9u
TmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXND
YWxjdWxhdGVkKCkpOworICAgIFJlZlB0cjxDYWxjVmFsdWU+IGNhbGNMZW5ndGggPSBjYWxjSGFu
ZGxlcygpLT5nZXQoY2FsY3VsYXRlZExlbmd0aElkKCkpOworICAgIGZsb2F0IHJlc3VsdCA9IGNh
bGNMZW5ndGgtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogY2xhc3MgU2FtZVNpemVB
c0xlbmd0aCB7CiAgICAgaW50MzJfdCB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5k
ZXggNTNiMDI2MGMyMDdiMDc4Mjg5NWVmMzc3Yzg0Y2Y2MTY0NzU3NDk3ZS4uY2YzMDQxYzM2NGYx
NWRmOGEzMDA4ZGIyNDQ3YTY0MzlhZTA1NjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogCkBAIC0zNCw4ICszNSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFs
dWUgZm9yIGEgMjgtYml0IGludAogY29uc3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZm
ZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiAKLWVudW0gTGVuZ3RoVHlw
ZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5z
aWMsIFVuZGVmaW5lZCB9OwotCitlbnVtIExlbmd0aFR5cGUgeyBBdXRvLCBSZWxhdGl2ZSwgUGVy
Y2VudCwgRml4ZWQsIEludHJpbnNpYywgTWluSW50cmluc2ljLCBDYWxjdWxhdGVkLCBVbmRlZmlu
ZWQgfTsKKyAKK2NsYXNzIENhbGNWYWx1ZTsgICAgCitjbGFzcyBIYW5kbGVNYXA7CisgICAgCiBz
dHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTY1LDExICs2OSwzMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19j
YXN0PGZsb2F0Pih2KTsgICAgCiAgICAgfQogCisgICAgZXhwbGljaXQgTGVuZ3RoKFBhc3NSZWZQ
dHI8Q2FsY1ZhbHVlPik7CisKKyAgICBMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAg
eworICAgICAgICBpbml0RnJvbUxlbmd0aChsZW5ndGgpOworICAgIH0KKyAgICAKKyAgICBMZW5n
dGgmIG9wZXJhdG9yPShjb25zdCBMZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRG
cm9tTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgfkxl
bmd0aCgpOworCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyBy
ZXR1cm4gKG1fdHlwZSA9PSBvLm1fdHlwZSkgJiYgKG1fcXVpcmsgPT0gby5tX3F1aXJrKSAmJiAo
aXNVbmRlZmluZWQoKSB8fCAoZ2V0RmxvYXRWYWx1ZSgpID09IG8uZ2V0RmxvYXRWYWx1ZSgpKSk7
IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG8pOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIG9wZXJhdG9yKj0oZmxvYXQgdikK
LSAgICB7ICAgICAgICAKKyAgICB7ICAgICAgIAorICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobV9pc0Zsb2F0KQogICAg
ICAgICAgICAgbV9mbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZmxvYXRWYWx1ZSAq
IHYpOwogICAgICAgICBlbHNlICAgICAgICAKQEAgLTgwLDYgKzEwMywxMSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgaW50IHZhbHVlKCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChpc0NhbGN1bGF0
ZWQoKSkgeworICAgICAgICAgICAgLy8gRklYTUUgY2FsYyBodHRwOi8vd2Via2l0Lm9yZy9iLzE2
NjYyCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZXRJbnRWYWx1ZSgpOwogICAgIH0KIApA
QCAtODksNiArMTE3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgp
OwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8Q2FsY1ZhbHVlPiBjYWxjVmFsdWUoKSBjb25zdDsK
KwogICAgIExlbmd0aFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExlbmd0
aFR5cGU+KG1fdHlwZSk7IH0KICAgICBib29sIHF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9xdWly
azsgfQogCkBAIC0xMDYsNiArMTM2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VmFsdWUo
aW50IHZhbHVlKQogICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBzZXRWYWx1ZShGaXhlZCwgdmFsdWUpOwogICAgIH0KIApAQCAtMTIxLDggKzE1
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsKICAg
ICB9CiAKLSAgICAvLyBOb3RlOiBNYXkgb25seSBiZSBjYWxsZWQgZm9yIEZpeGVkLCBQZXJjZW50
IGFuZCBBdXRvIGxlbmd0aHMuCi0gICAgLy8gT3RoZXIgdHlwZXMgd2lsbCBBU1NFUlQgaW4gb3Jk
ZXIgdG8gY2F0Y2ggaW52YWxpZCBsZW5ndGggY2FsY3VsYXRpb25zLgogICAgIGludCBjYWxjVmFs
dWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkgY29uc3QKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSgpKSB7CkBAIC0xMzEsNiArMTYzLDggQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIHJldHVybiBjYWxjTWluVmFsdWUobWF4VmFsdWUsIHJvdW5kUGVy
Y2VudGFnZXMpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVy
biBtYXhWYWx1ZTsKKyAgICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAgICAgICAgY2Fz
ZSBJbnRyaW5zaWM6CiAgICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKQEAgLTE1Miw2ICsx
ODYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQg
Zm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0
YWNrLgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0
PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOworICAgICAgICAgICAgY2Fz
ZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkTWluVmFsdWUo
bWF4VmFsdWUsIHJvdW5kUGVyY2VudGFnZXMpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNhc2Ug
UmVsYXRpdmU6CkBAIC0xNzQsNiArMjEwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpOwog
ICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4obWF4VmFsdWUpOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAg
ICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkRmxvYXRWYWx1ZShtYXhWYWx1ZSk7ICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAgICAgICAgIGNhc2UgSW50
cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBAIC0xODksMTggKzIyNywy
NCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCAKICAgICB7CiAgICAgICAgIEFT
U0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyAhbV9mbG9h
dFZhbHVlIDogIW1faW50VmFsdWU7CisgICAgICAgIHJldHVybiBpc0NhbGN1bGF0ZWQoKSA/IGNh
bGN1bGF0ZWRJc1plcm8oKSA6IG1faXNGbG9hdCA/ICFtX2Zsb2F0VmFsdWUgOiAhbV9pbnRWYWx1
ZTsKKyAgICB9CisgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQoKSA/IGNhbGN1bGF0ZWRJ
c1Bvc2l0aXZlKCkgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOworICAgIH0KKyAgICBib29sIGlzTmVn
YXRpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxz
ZSA6IGlzQ2FsY3VsYXRlZCgpID8gY2FsY3VsYXRlZElzTmVnYXRpdmUoKSA6IGdldEZsb2F0VmFs
dWUoKSA8IDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGdldEZsb2F0VmFsdWUoKSA+IDA7IH0KLSAgICBi
b29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBn
ZXRGbG9hdFZhbHVlKCkgPCAwOyB9Ci0KICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBBdXRvOyB9CiAgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IFJlbGF0aXZlOyB9Ci0gICAgYm9vbCBpc1BlcmNlbnQoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gUGVyY2VudDsgfQorICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KICAgICBib29s
IGlzRml4ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQ7IH0KICAgICBib29sIGlz
SW50cmluc2ljT3JBdXRvKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dG8gfHwgdHlwZSgp
ID09IE1pbkludHJpbnNpYyB8fCB0eXBlKCkgPT0gSW50cmluc2ljOyB9Ci0gICAgYm9vbCBpc1Nw
ZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaXhlZCB8fCB0eXBlKCkgPT0gUGVy
Y2VudDsgfQorICAgIGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0g
Rml4ZWQgfHwgdHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KKyAg
ICBib29sIGlzQ2FsY3VsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBDYWxjdWxhdGVk
OyB9CiAKICAgICBMZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0CiAgICAgewpAQCAtMjM5LDYgKzI4MywzOCBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV9pc0Zsb2F0ID8gbV9mbG9hdFZhbHVlIDogbV9pbnRWYWx1ZTsKICAgICB9CiAKKyAg
ICB2b2lkIGluaXRGcm9tTGVuZ3RoKGNvbnN0IExlbmd0aCAmbGVuZ3RoKSAKKyAgICB7CisgICAg
ICAgIG1fcXVpcmsgPSBsZW5ndGgubV9xdWlyazsKKyAgICAgICAgbV90eXBlID0gbGVuZ3RoLm1f
dHlwZTsKKyAgICAgICAgbV9pc0Zsb2F0ID0gbGVuZ3RoLm1faXNGbG9hdDsKKyAgICAgICAgCisg
ICAgICAgIGlmIChtX2lzRmxvYXQpCisgICAgICAgICAgICBtX2Zsb2F0VmFsdWUgPSBsZW5ndGgu
bV9mbG9hdFZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ludFZhbHVlID0gbGVu
Z3RoLm1faW50VmFsdWU7CisgICAgICAgIAorICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCisg
ICAgICAgICAgICBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7CisgICAgfQorICAgIAorICAgIEhh
bmRsZU1hcCogY2FsY0hhbmRsZXMoKSBjb25zdDsKKyAgICAKKyAgICBib29sIGNhbGN1bGF0ZWRJ
c1plcm8oKSBjb25zdDsKKyAgICBib29sIGNhbGN1bGF0ZWRJc1Bvc2l0aXZlKCkgY29uc3Q7Cisg
ICAgYm9vbCBjYWxjdWxhdGVkSXNOZWdhdGl2ZSgpIGNvbnN0OworICAgIGZsb2F0IG5vbk5hbkNh
bGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGVkVmFs
dWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0OworICAgIGludCBj
YWxjdWxhdGVkTWluVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNv
bnN0OworICAgIGZsb2F0IGNhbGN1bGF0ZWRGbG9hdFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7
CisgICAgaW50IGNhbGN1bGF0ZWRMZW5ndGhJZCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNDYWxjdWxhdGVkKCkpOworICAgICAgICByZXR1cm4gZ2V0SW50VmFsdWUoKTsKKyAgICB9
CisgICAgdm9pZCBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3Q7CisgICAgdm9pZCBkZWNy
ZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3Q7ICAgIAorICAgIAogICAgIHVuaW9uIHsKICAgICAg
ICAgaW50IG1faW50VmFsdWU7CiAgICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
M2M4MGZjNjc2NTI4NWYxNzNjNzc2YjNkZTIwYjNkZjVjMjg3MjIyLi4wMzljMzAzNTVjYzgzNzYw
ZjViN2NlYzkwODdmOGU0MGRiYmFkNjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDIt
MjYgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBD
U1MzIGNhbGM6IG1peGVkIGFic29sdXRlL3BlcmNlbnRhZ2VzIHdvcmsgZm9yIHdpZHRoLCBoZWln
aHQsIG1hcmdpbiBhbmQgcGFkZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk2MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXdyb3RlIHRoZSBtYXJnaW4gdGVzdCwgYXMgdGhlIG9yaWdpbmFsIGZv
cm0gd291bGRuJ3Qgd29yayBmb3IgcGVyY2VudGFnZXMuCisKKyAgICAgICAgKiBjc3MzL2NhbGMv
bWFyZ2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLmh0bWw6Cisg
ICAgICAgICogY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzczMv
Y2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTAyLTI2ICBZb3NoaWZ1bWkg
SW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVyLWV2ZW50cy5odG1sIGlzIGZhaWxpbmcgc2luY2UgcjEw
ODIyOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dAppbmRleCAxODg1
NjBiNzA3NmMyYTk4YjNmNmVjM2I5NzNkYmUxODY1ODE0MTNhLi4xMTlkNzcyZGYzYmMxYTYxMDU3
MzRiZjlmNjU1YmM5ZGRiMjIyOWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMv
bWFyZ2luLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4
cGVjdGVkLnR4dApAQCAtMSwyMyArMSw0MyBAQAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2ltcGxlLWFsbCIpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMgMjUwCi1QQVNTIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQg
aXMgMTcwCi1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtbGVmdCIpLnBhcmVu
dE5vZGUub2Zmc2V0V2lkdGggaXMgMjI1Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
aW1wbGUtbGVmdCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEyMAotUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXJpZ2h0IikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBp
cyAyMjUKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLnBhcmVu
dE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEyMAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
c2ltcGxlLXRvcCIpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGggaXMgMjAwCi1QQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtdG9wIikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMg
MTQ1Ci1QQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYm90dG9tIikucGFyZW50
Tm9kZS5vZmZzZXRXaWR0aCBpcyAyMDAKLVBBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNp
bXBsZS1ib3R0b20iKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBpcyAxNDUKLUZBSUwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxsIikucGFyZW50Tm9kZS5vZmZzZXRXaWR0aCBz
aG91bGQgYmUgMjUwLiBXYXMgMjAwLgotRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVy
Y2VudC1hbGwiKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBzaG91bGQgYmUgMTcwLiBXYXMgMTIw
LgotRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1sZWZ0IikucGFyZW50Tm9k
ZS5vZmZzZXRXaWR0aCBzaG91bGQgYmUgMjI1LiBXYXMgMjAwLgotUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC1sZWZ0IikucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQgaXMgMTIw
Ci1GQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXJpZ2h0IikucGFyZW50Tm9k
ZS5vZmZzZXRXaWR0aCBzaG91bGQgYmUgMjI1LiBXYXMgMjAwLgotUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC1yaWdodCIpLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0IGlzIDEy
MAotUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC10b3AiKS5wYXJlbnROb2Rl
Lm9mZnNldFdpZHRoIGlzIDIwMAotRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2Vu
dC10b3AiKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBzaG91bGQgYmUgMTQ1LiBXYXMgMTIwLgot
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0b20iKS5wYXJlbnROb2Rl
Lm9mZnNldFdpZHRoIGlzIDIwMAotRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2Vu
dC1ib3R0b20iKS5wYXJlbnROb2RlLm9mZnNldEhlaWdodCBzaG91bGQgYmUgMTQ1LiBXYXMgMTIw
LgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUt
YWxsIiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1hbGwiKSwgbnVsbCkubWFyZ2luVG9wIGlz
ICIyNXB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
aW1wbGUtYWxsIiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIyNXB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtYWxsIiksIG51bGwpLm1hcmdp
bkJvdHRvbSBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2ltcGxlLWxlZnQiKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMjVweCIKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWxlZnQiKSwg
bnVsbCkubWFyZ2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNpbXBsZS1sZWZ0IiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgi
CitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1s
ZWZ0IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtcmlnaHQiKSwgbnVsbCkubWFyZ2luTGVm
dCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzaW1wbGUtcmlnaHQiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1yaWdodCIpLCBudWxsKS5t
YXJnaW5SaWdodCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2ltcGxlLXJpZ2h0IiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMHB4Igor
UEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaW1wbGUtdG9w
IiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXRvcCIpLCBudWxsKS5tYXJnaW5Ub3AgaXMgIjI1
cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBs
ZS10b3AiKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLXRvcCIpLCBudWxsKS5tYXJnaW5Cb3R0
b20gaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2ltcGxlLWJvdHRvbSIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQQVNTIGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0b20iKSwgbnVs
bCkubWFyZ2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInNpbXBsZS1ib3R0b20iKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIK
K1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlLWJv
dHRvbSIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxsIiksIG51bGwpLm1hcmdpbkxl
ZnQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBlcmNlbnQtYWxsIiksIG51bGwpLm1hcmdpblRvcCBpcyAiMjVweCIKK1BBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1hbGwiKSwgbnVsbCku
bWFyZ2luUmlnaHQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBlcmNlbnQtYWxsIiksIG51bGwpLm1hcmdpbkJvdHRvbSBpcyAiMjVweCIK
K1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1s
ZWZ0IiksIG51bGwpLm1hcmdpbkxlZnQgaXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtbGVmdCIpLCBudWxsKS5tYXJnaW5Ub3Ag
aXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGVyY2VudC1sZWZ0IiksIG51bGwpLm1hcmdpblJpZ2h0IGlzICIwcHgiCitQQVNTIGdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtbGVmdCIpLCBudWxsKS5t
YXJnaW5Cb3R0b20gaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC1yaWdodCIpLCBudWxsKS5tYXJnaW5MZWZ0IGlzICIwcHgiCitQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtcmln
aHQiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIwcHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtcmlnaHQiKSwgbnVsbCkubWFyZ2luUmlnaHQg
aXMgIjI1cHgiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InBlcmNlbnQtcmlnaHQiKSwgbnVsbCkubWFyZ2luQm90dG9tIGlzICIwcHgiCitQQVNTIGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBlcmNlbnQtdG9wIiksIG51bGwp
Lm1hcmdpbkxlZnQgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGVyY2VudC10b3AiKSwgbnVsbCkubWFyZ2luVG9wIGlzICIyNXB4IgorUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIp
LCBudWxsKS5tYXJnaW5SaWdodCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LXRvcCIpLCBudWxsKS5tYXJnaW5Cb3R0b20gaXMg
IjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVy
Y2VudC1ib3R0b20iKSwgbnVsbCkubWFyZ2luTGVmdCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXJjZW50LWJvdHRvbSIpLCBudWxsKS5t
YXJnaW5Ub3AgaXMgIjBweCIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGVyY2VudC1ib3R0b20iKSwgbnVsbCkubWFyZ2luUmlnaHQgaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGVyY2VudC1ib3R0
b20iKSwgbnVsbCkubWFyZ2luQm90dG9tIGlzICIyNXB4IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3Mz
L2NhbGMvbWFyZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLmh0bWwKaW5k
ZXggNTA5MDdlM2JkYjFlMzU1YmQzYmU0OGE5MTNjYmZkMjIyODUyMzk0OC4uNzhkYTBlYWNlN2Uw
N2ZjNmUwNDk5NGNjNmJmMzJjMTI1OWVkYTY2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3Nz
My9jYWxjL21hcmdpbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4uaHRt
bApAQCAtMTYsNjUgKzE2LDU3IEBACiA8L3N0eWxlPgogCiA8ZGl2IGlkPSJ0ZXN0LWNvbnRhaW5l
ciI+Ci0gICAgPGRpdj48cCBpZD0ic2ltcGxlLWFsbCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZl
IGFuIG92ZXJhbGwgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KLSAgICA8ZGl2
PjxwIGlkPSJzaW1wbGUtbGVmdCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJn
aW4gb2YgMjUgcGl4ZWxzLjwvcD48L2Rpdj48YnIvPgotICAgIDxkaXY+PHAgaWQ9InNpbXBsZS1y
aWdodCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgbWFyZ2luIG9mIDI1IHBpeGVs
cy48L3A+PC9kaXY+PGJyLz4KLSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUtdG9wIj5UaGlzIGVsZW1l
bnQgc2hvdWxkIGhhdmUgYSB0b3AgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4K
LSAgICA8ZGl2PjxwIGlkPSJzaW1wbGUtYm90dG9tIj5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUg
YSBib3R0b20gbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PC9kaXY+PGJyLz4KKyAgICA8cCBpZD0i
c2ltcGxlLWFsbCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgbWFyZ2luIG9m
IDI1IHBpeGVscy48L3A+PGJyLz4KKyAgICA8cCBpZD0ic2ltcGxlLWxlZnQiPlRoaXMgZWxlbWVu
dCBzaG91bGQgaGF2ZSBhIGxlZnQgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAgICA8
cCBpZD0ic2ltcGxlLXJpZ2h0Ij5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBtYXJn
aW4gb2YgMjUgcGl4ZWxzLjwvcD48YnIvPgorICAgIDxwIGlkPSJzaW1wbGUtdG9wIj5UaGlzIGVs
ZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgbWFyZ2luIG9mIDI1IHBpeGVscy48L3A+PGJyLz4KKyAg
ICA8cCBpZD0ic2ltcGxlLWJvdHRvbSI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9t
IG1hcmdpbiBvZiAyNSBwaXhlbHMuPC9wPjxici8+CiAgICAgPGRpdiBpZD0id3JhcHBlciIgc3R5
bGU9IndpZHRoOiAzMDBweDsgYmFja2dyb3VuZC1jb2xvcjogY29ybnNpbGs7IGRpc3BsYXk6IGJs
b2NrOyI+Ci0gICAgICAgIDxkaXY+PHAgaWQ9InBlcmNlbnQtYWxsIj5UaGlzIGVsZW1lbnQgc2hv
dWxkIGhhdmUgYW4gb3ZlcmFsbCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdp
ZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjwvZGl2Pjxici8+Ci0gICAgICAgIDxkaXY+PHAg
aWQ9InBlcmNlbnQtbGVmdCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJnaW4g
b2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9w
PjwvZGl2Pjxici8+Ci0gICAgICAgIDxkaXY+PHAgaWQ9InBlcmNlbnQtcmlnaHQiPlRoaXMgZWxl
bWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJl
bnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS48L3A+PC9kaXY+PGJyLz4KLSAgICAgICAgPGRp
dj48cCBpZD0icGVyY2VudC10b3AiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBtYXJn
aW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCku
PC9wPjwvZGl2Pjxici8+Ci0gICAgICAgIDxkaXY+PHAgaWQ9InBlcmNlbnQtYm90dG9tIj5UaGlz
IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBib3R0b20gbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9m
IHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48L2Rpdj48YnIvPgorICAgICAg
ICA8cCBpZD0icGVyY2VudC1hbGwiPlRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxs
IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMg
NXB4KS48L3A+PGJyLz4KKyAgICAgICAgPHAgaWQ9InBlcmNlbnQtbGVmdCI+VGhpcyBlbGVtZW50
IHNob3VsZCBoYXZlIGEgbGVmdCBtYXJnaW4gb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdp
ZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjxici8+CisgICAgICAgIDxwIGlkPSJwZXJjZW50
LXJpZ2h0Ij5UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBtYXJnaW4gb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuPC9wPjxici8+Cisg
ICAgICAgIDxwIGlkPSJwZXJjZW50LXRvcCI+VGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9w
IG1hcmdpbiBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMg
NXB4KS48L3A+PGJyLz4KKyAgICAgICAgPHAgaWQ9InBlcmNlbnQtYm90dG9tIj5UaGlzIGVsZW1l
bnQgc2hvdWxkIGhhdmUgYSBib3R0b20gbWFyZ2luIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVu
dCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLjwvcD48YnIvPgogICAgIDwvZGl2PgogPC9kaXY+
CiA8c2NyaXB0PgogICAgIHZhciBpbm5lcldpZHRoID0gMjAwOwogICAgIHZhciBpbm5lckhlaWdo
dCA9IDEyMDsKLSAgICB2YXIgbWFyZ2luID0gMjU7CisgICAgdmFyIG1hcmdpbiA9ICIyNXB4IjsK
KyAgICB2YXIgbm9NYXJnaW4gPSAiMHB4IjsKIAogICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJwIik7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5s
ZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgb3V0ZXJFbGVtZW50ID0gdGVzdHNbaV0ucGFyZW50
Tm9kZTsKLSAgICAgICAgdmFyIGlubmVyRWxlbWVudCA9IHRlc3RzW2ldOwotICAgICAgICB2YXIg
d2lkdGggPSBvdXRlckVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBv
dXRlckVsZW1lbnQub2Zmc2V0SGVpZ2h0OwotCi0gICAgICAgIHZhciBleHBlY3RlZFdpZHRoID0g
aW5uZXJXaWR0aDsKLSAgICAgICAgdmFyIGV4cGVjdGVkSGVpZ2h0ID0gaW5uZXJIZWlnaHQ7Ci0g
ICAgCisgICAgICAgIHZhciBpbm5lckVsZW1lbnQgPSB0ZXN0c1tpXQorICAgICAgICB2YXIgZXhw
ZWN0ZWRMZWZ0ID0gbm9NYXJnaW47CisgICAgICAgIHZhciBleHBlY3RlZFRvcCA9IG5vTWFyZ2lu
OworICAgICAgICB2YXIgZXhwZWN0ZWRSaWdodCA9IG5vTWFyZ2luOworICAgICAgICB2YXIgZXhw
ZWN0ZWRCb3R0b20gPSBub01hcmdpbjsKICAgICAgICAgc3dpdGNoIChpbm5lckVsZW1lbnQuaWQu
c3BsaXQoIi0iKVsxXSkgewogICAgICAgICBjYXNlICJhbGwiOgotICAgICAgICAgICAgZXhwZWN0
ZWRXaWR0aCArPSAyICogbWFyZ2luOwotICAgICAgICAgICAgZXhwZWN0ZWRIZWlnaHQgKz0gMiAq
IG1hcmdpbjsKKyAgICAgICAgICAgIGV4cGVjdGVkTGVmdCA9IG1hcmdpbjsKKyAgICAgICAgICAg
IGV4cGVjdGVkVG9wID0gbWFyZ2luOworICAgICAgICAgICAgZXhwZWN0ZWRSaWdodCA9IG1hcmdp
bjsKKyAgICAgICAgICAgIGV4cGVjdGVkQm90dG9tID0gbWFyZ2luOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgInRvcCI6CisgICAgICAgICAgICBleHBlY3RlZFRvcCA9IG1hcmdp
bjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJib3R0b20iOgotICAgICAgICAg
ICAgZXhwZWN0ZWRIZWlnaHQgKz0gbWFyZ2luOworICAgICAgICAgICAgZXhwZWN0ZWRCb3R0b20g
PSBtYXJnaW47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAibGVmdCI6CisgICAg
ICAgICAgICBleHBlY3RlZExlZnQgPSBtYXJnaW47CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSAicmlnaHQiOgotICAgICAgICAgICAgZXhwZWN0ZWRXaWR0aCArPSBtYXJnaW47Cisg
ICAgICAgICAgICBleHBlY3RlZFJpZ2h0ID0gbWFyZ2luOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCArICciKS5wYXJlbnROb2RlLm9mZnNldFdpZHRoJywg
ZXhwZWN0ZWRXaWR0aCk7Ci0gICAgICAgIHNob3VsZEV2YWx1YXRlVG8oJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCInICsgaW5uZXJFbGVtZW50LmlkICsgJyIpLnBhcmVudE5vZGUub2Zmc2V0SGVp
Z2h0JywgZXhwZWN0ZWRIZWlnaHQpOwotICAgIAotICAgICAgICB2YXIgZXJyb3IgPSBbXTsKLSAg
ICAgICAgaWYgKHdpZHRoICE9IGV4cGVjdGVkV2lkdGgpCi0gICAgICAgICAgICBlcnJvci5wdXNo
KCJleHBlY3RlZCB3aWR0aCAiICsgZXhwZWN0ZWRXaWR0aCArICIsIHdhcyAiICsgd2lkdGgpOwot
ICAgICAgICBpZiAoaGVpZ2h0ICE9IGV4cGVjdGVkSGVpZ2h0KQotICAgICAgICAgICAgZXJyb3Iu
cHVzaCgiZXhwZWN0ZWQgaGVpZ2h0ICIgKyBleHBlY3RlZEhlaWdodCArICIsIHdhcyAiICsgaGVp
Z2h0KTsKLQotICAgICAgICBpZiAoZXJyb3IgPT0gIiIpIHsKLSAgICAgICAgICAgIGlubmVyRWxl
bWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiZ3JlZW4iOwotICAgICAgICAgICAgaW5uZXJF
bGVtZW50LmlubmVySFRNTCArPSAiID0+IFBBU1MiOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJyZWQiOwotICAgICAg
ICAgICAgaW5uZXJFbGVtZW50LmlubmVySFRNTCArPSAiID0+IEZBSUw6ICIgKyBlcnJvci5qb2lu
KCIsICIpOwotICAgICAgICB9CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVudC5pZCAr
ICciKSwgbnVsbCkubWFyZ2luTGVmdCcsIGV4cGVjdGVkTGVmdCk7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
JyArIGlubmVyRWxlbWVudC5pZCArICciKSwgbnVsbCkubWFyZ2luVG9wJywgZXhwZWN0ZWRUb3Ap
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIicgKyBpbm5lckVsZW1lbnQuaWQgKyAnIiksIG51bGwpLm1hcmdp
blJpZ2h0JywgZXhwZWN0ZWRSaWdodCk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJyArIGlubmVyRWxlbWVu
dC5pZCArICciKSwgbnVsbCkubWFyZ2luQm90dG9tJywgZXhwZWN0ZWRCb3R0b20pOwogICAgIH0K
ICAgICAKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQKaW5kZXggODNlZTI2N2I5MGVlOGFkZDY2
MDQxYjVjZWY4YWI4OWFiODNiN2ViYy4uMGI4ZTNhNzQ0NDUyODcwODNjZGM1MmJiNjQ2ZWI1ZDIw
NTc3OWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dApA
QCAtOCwxMiArOCwxMiBAQCBUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBv
ZiAyNSBwaXhlbHMuID0+IFBBU1MKIAogVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9t
IHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2
ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9m
IDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIHdpZHRoLCB3cm9uZyBoZWlnaHQKK1Ro
aXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgx
MCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAotVGhpcyBl
bGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBh
cmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aAorVGhp
cyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9m
IHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVu
dCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50
IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIHdpZHRoCitUaGlzIGVs
ZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBh
cmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBz
aG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0
aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVu
dCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3
aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQg
aGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBv
ZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBz
aG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3
aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMv
Y2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CmluZGV4IDViNDVkMmRjY2MwODAyYTMzNzEz
OTc0YTYyNjg3YjM0ZGIzNTRiNWQuLjk3ZDZkM2EzYjZhZTMzZmZjNjRiY2NjNjQzYTgxODUyMTEy
ZmI0NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0
ZWQudHh0CkBAIC0yMCwxMCArMjAsMTAgQEAgY29udHJvbCA9PiBQQVNTCiAxMHB4KiAoNSAqIDIp
ID0+IFBBU1MKIDUwcHggKyAxMHB4ICogNSAob3BlcmF0aW9uIG9yZGVyKSA9PiBQQVNTCiAxMDAl
LzIgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKLTEwMCUgKyAtMTAwcHggKHdoZXJlIDEw
MCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQg
d2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6
b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgotODAlIC0gNjBweCAod2hl
cmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAs
IGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1
NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2Ci0zMDBweCAtIDEw
MCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGgg
b2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0
IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgotLTEw
MHB4ICsgMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBlY3Rl
ZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2Yg
MTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMg
MjU2CisxMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCis4MCUgLSA2
MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiszMDBweCAtIDEwMCUgKHdoZXJlIDEw
MCUgaXMgMjAwcHgpID0+IFBBU1MKKy0xMDBweCArIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgp
ID0+IFBBU1MKIDIwJSArIDMwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwogODAlIC0g
MzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiAxMCUgKiA1ICh3aGVyZSAxMDAlIGlz
IDIwMHB4KSA9PiBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130371</attachid>
            <date>2012-03-06 06:34:40 -0800</date>
            <delta_ts>2012-03-06 17:45:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120307013438.patch</filename>
            <type>text/plain</type>
            <size>32580</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMwNTU4ZDdiNGM2Nzcy
MjMxNjUxOGE4MTY2ZWExZjY1Y2U2ZmMzZS4uYmEyZDY4NTNjOTJhYWVmNDA4MTdjNmNiYjU3MTVj
ZDFkM2I5ZWNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJlc3Ry
aWN0aW9ucy4KKworICAgICAgICBMZW5ndGhzIGNhbiBiZSBjb3BpZWQsIGFuZCBzbyB0aGUgZXhw
cmVzc2lvbnMgYXJlIHN0b3JlZCBpbiBhIGhhc2htYXAsIGFuZCBvbmx5IHRoZWlyCisgICAgICAg
IGlkcyBhcmUgY29waWVkIGFsb25nIHdpdGggTGVuZ3RoLiBUaGUgZXhwcmVzc2lvbnMgYXJlIFJl
ZkNvdW50ZWQsIGFuZCB3aWxsIGdldCAKKyAgICAgICAgY2xlYW5lZCB1cCB3aGVuIHRoZSBsYXN0
IHJlZmVycmluZyBMZW5ndGggaXMgZGVzdHJ1Y3RlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVy
YXRpb246OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjph
cHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNl
bGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ2FsY0V4cHJl
c3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZTo6fkNhbGNF
eHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbGN1bGF0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25W
YWx1ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWxjRXhwcmVzc2lvbk51bWJlcjo6Q2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNF
eHByZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3Ro
OjpDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OkNh
bGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5n
dGgpOgorICAgICAgICAoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXA6Omluc2VydCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcDo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmNhbGN1bGF0ZWRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aW5jcmVt
ZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmRlY3JlbWVudENh
bGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpub25OYW5DYWxjdWxhdGVk
VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IqPSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUG9zaXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNTcGVjaWZpZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0NhbGN1bGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjppbml0RnJvbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1
bGF0aW9uSGFuZGxlKToKKwogMjAxMi0wMy0wNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUmVncmVzc2lvbl0gRXhlY3V0
aW9uIGxpbmUgaXMgbm90IHJldmVhbGVkIHdoZW4gZGVidWdnZXIgaXMgc3RvcHBlZCBpZiBzY3Jp
cHRzIHBhbmVsIHdhcyBub3QgeWV0IHNob3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmOTEz
N2I4ZGNkOTM5NTIzYWYxYmM5NGFiN2QyZTgyN2E4YmIxN2NiLi5lOTc4NDJkMGFkYmQ2YWMwZGE2
ZjdkNjE0MjA0ODU0M2U2ZDYzN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtODgxLDYgKzg4
MSw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3I3Q29tbWFuZEMxRXYKIF9fWk43V2ViQ29yZTZFZGl0
b3I3Y29tbWFuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2
CiBfX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5mb0UKK19fWk43V2ViQ29yZTZMZW5ndGhEMUV2CiBf
X1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBfCiBfX1pON1dlYkNvcmU2UmVnaW9uOHN1YnRy
YWN0RVJLUzBfCiBfX1pON1dlYkNvcmU2UmVnaW9uOWludGVyc2VjdEVSS1MwXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDg3ZmE3Mzc4MjcyNjgxN2Nl
MGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLjkxYjBhMmNhZTRkYjBhNDJlY2NlYjliZDgwN2JhZmNj
NTU4OTI4YzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTExNCw2ICsxMTQsMjkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3Nz
VGV4dCgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdvcnkp
IHsKKyAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpKTsKKyAg
ICAgICAgY2FzZSBDYWxjTGVuZ3RoOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
YWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwg
cm9vdFN0eWxlLCB6b29tKSkpOworICAgICAgICBjYXNlIENhbGNQZXJjZW50OgorICAgICAgICBj
YXNlIENhbGNQZXJjZW50TGVuZ3RoOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJv
b2wgb2sgPSB0cnVlOworICAgICAgICAgICAgICAgIExlbmd0aCBsZW5ndGggPSBDU1NTdHlsZVNl
bGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChtX3ZhbHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0
eWxlLCB6b29tLCAmb2spOworICAgICAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgobGVuZ3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CisgICAgICAgIGNhc2UgQ2FsY090aGVyOgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCiAgICAgdmlydHVhbCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdAog
ICAgIHsKICAgICAgICAgc3dpdGNoIChtX2NhdGVnb3J5KSB7CkBAIC0yMDgsNiArMjMxLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICFkb3VibGVWYWx1ZSgpOwogICAgIH0KIAorICAgIHZp
cnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0Cisg
ICAgeworICAgICAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0KG1fbGVmdFNpZGUt
PnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20pKTsKKyAgICAgICAgaWYgKCFsZWZ0
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIE93blB0cjxDYWxjRXhwcmVz
c2lvbk5vZGU+IHJpZ2h0KG1fcmlnaHRTaWRlLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxl
LCB6b29tKSk7CisgICAgICAgIGlmICghcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJh
dGlvbihsZWZ0LnJlbGVhc2UoKSwgcmlnaHQucmVsZWFzZSgpLCBtX29wZXJhdG9yKSk7CisgICAg
fQorCiAgICAgdmlydHVhbCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCAKICAgICB7CiAgICAg
ICAgIHJldHVybiBldmFsdWF0ZShtX2xlZnRTaWRlLT5kb3VibGVWYWx1ZSgpLCBtX3JpZ2h0U2lk
ZS0+ZG91YmxlVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aAppbmRleCA3YzM2NjcxMjViNWQ3YjEyZTU3ZTNmYmZiYmRjYzJmNzBiYzM0MGYzLi5hYzliZTQ2
ZDMzYWRhMzI5OWM5MTVmZDM0ZDNkOGM2MDQ1ODM4NWM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ1NTUGFyc2VyVmFsdWVMaXN0OwogY2xhc3MgQ1NTVmFsdWVMaXN0OwogY2xhc3Mg
UmVuZGVyU3R5bGU7Ci1jbGFzcyBDYWxjVmFsdWU7CitjbGFzcyBDYWxjdWxhdGlvblZhbHVlOwog
Y2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2RlOwogCiBlbnVtIENhbGN1bGF0aW9uQ2F0ZWdvcnkgewpA
QCAtNTgsOCArNTgsOSBAQCBlbnVtIENhbGN1bGF0aW9uQ2F0ZWdvcnkgewogY2xhc3MgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
PiB7CiBwdWJsaWM6CiAgICAgCi0gICAgdmlydHVhbCB+Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlKCkg
PSAwOyAgCisgICAgdmlydHVhbCB+Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlKCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc1plcm8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENh
bGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QgPSAwOyAgICAKICAgICB2aXJ0dWFs
IGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBjb21w
dXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBm
YWxzZSkgY29uc3QgPSAwOwogICAgIApAQCAtODAsNyArODEsMTIgQEAgcHJvdGVjdGVkOgogY2xh
c3MgQ1NTQ2FsY1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NT
UGFyc2VyVmFsdWVMaXN0KiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxjVmFsdWU+IGNyZWF0ZShDYWxjdWxhdGlvblZhbHVlKik7
CiAKKyAgICBQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1fZXhw
cmVzc2lvbi0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwgem9vbSksIG1fbm9uTmVnYXRp
dmUgPyBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUgOiBDYWxjdWxhdGlvblJhbmdlQWxsKTsK
KyAgICB9CiAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwcmVzc2lvbi0+Y2F0ZWdvcnkoKTsgfQogICAgIGJvb2wgaXNJbnQoKSBjb25zdCB7IHJl
dHVybiBtX2V4cHJlc3Npb24tPmlzSW50ZWdlcigpOyB9ICAgIAogICAgIGRvdWJsZSBkb3VibGVW
YWx1ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5k
ZXggMWRkZmI3OTljNDcxY2U2MTYyMzc1MzA2YzQ3MDIzOTY4M2M2MjA1My4uOWQyMTNkY2RkMTQ5
YjQwZGZmODFiMGZkOGU4ZTQyZDg3NDAyNzNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCkBAIC0yNjYsNiArMjY2LDcgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICAgICAgQVNTRVJU
KGlzZmluaXRlKGxlbmd0aC5wZXJjZW50KCkpKTsKICAgICAgICAgICAgIG1fdmFsdWUubnVtID0g
bGVuZ3RoLnBlcmNlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhbGN1
bGF0ZWQ6CiAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAgIGNhc2UgVW5kZWZpbmVkOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IGIyNTE2Y2Q5OTc1MTBmMjdjMWZmMDc3MzRk
ZTA4ZGQ4MzZjYjRlNjQuLmE3NTA4M2M1OGRkMjExZGI2MzZjNWVhM2MyYTYxYmEzMGFlN2JjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVBcHBseVByb3BlcnR5LmgiCiAKICNpbmNs
dWRlICJDU1NBc3BlY3RSYXRpb1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGbGV4
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCkBAIC0zODks
NiArMzkwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5z
dHlsZSgpLCBsZW5ndGgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxl
KCksIExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCkpOwor
ICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRh
Z2VXaXRoTGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxl
KCksIExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSkpOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggZjFhYzg1ODAz
MGE0M2I2NzgxMzE1MWQ4MDExYWY1OWEzODY1MThkNS4uMmJlMTZiZTM3NWEyOWI5ZTVkZGM1NzA2
ZjMyNmU3NGU5NTI0ZTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cApAQCAtMzAsMTAgKzMwLDEyIEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRl
ICJDb250ZW50RGF0YS5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJDb3VudGVy
Q29udGVudC5oIgogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlLmgiCisjaW5jbHVkZSAiQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NGb250RmFjZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKQEAg
LTI1NDYsMTIgKzI1NDgsMTIgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3QKICAgICByZXR1cm4g
bDsKIH0KIAotc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQorTGVuZ3RoIENTU1N0
eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91
YmxlIG11bHRpcGxpZXIsIGJvb2wgKm9rKQogewogICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgo
cHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIGZhbHNlLCBtdWx0aXBsaWVyLCBvayk7
CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQorTGVuZ3RoIENTU1N0
eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllciwgYm9vbCAqb2spCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0
aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllciwgb2sp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZTNjNzA0ZDM5Mjkw
ZmZhYjQ5MzAyM2FlYTRmN2NkM2I5YTMwMTAwYS4uZGJiMGQ0MjljNmYzMGM1OTk2Njk3NjE2YmVl
NzM1ZThjN2NlNWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0z
NjIsNiArMzYyLDkgQEAgcHVibGljOgogICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAg
ICBib29sIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGU7IH0KIAorICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCk7
CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxp
ZXIgPSAxLCBib29sICpvayA9IDApOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBSZW5kZXJTdHls
ZSogc19zdHlsZU5vdFlldEF2YWlsYWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBiOWUzODU4MWFkYWQ4YjE5NjQ4YWRjYWVkMGU3ZjQz
OTUzNTFmNjI3Li41NzQxM2ZiZmViMWE4ODk3OWEyNDM3ZjViNjAzY2Q3YTRiNTlkYTRhIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzEsNiAr
MzEsNDMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAKKyNpbmNsdWRlIDxsaW1pdHM+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZmxvYXQg
Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBj
b25zdAoreworICAgIGZsb2F0IGxlZnQgPSBtX2xlZnRTaWRlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7
CisgICAgZmxvYXQgcmlnaHQgPSBtX3JpZ2h0U2lkZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAg
IHN3aXRjaCAobV9vcGVyYXRvcikgeworICAgIGNhc2UgQ2FsY0FkZDoKKyAgICAgICAgcmV0dXJu
IGxlZnQgKyByaWdodDsKKyAgICBjYXNlIENhbGNTdWJ0cmFjdDoKKyAgICAgICAgcmV0dXJuIGxl
ZnQgLSByaWdodDsKKyAgICBjYXNlIENhbGNNdWx0aXBseToKKyAgICAgICAgcmV0dXJuIGxlZnQg
KiByaWdodDsKKyAgICBjYXNlIENhbGNEaXZpZGU6CisgICAgICAgIGlmICghcmlnaHQpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwor
ICAgICAgICByZXR1cm4gbGVmdCAvIHJpZ2h0OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigp
OworfQorCitQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVy
bWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGN1
bGF0aW9uVmFsdWUodmFsdWUsIHJhbmdlKSk7Cit9CisKK2Zsb2F0IENhbGN1bGF0aW9uVmFsdWU6
OmV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAoreworICAgIGZsb2F0IHJlc3VsdCA9IG1f
dmFsdWUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICAvLyBGSVhNRSBjYWxjIGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzgwNDExIDogcmVzdWx0IGlzIE5hTiB3aGVuIHRoZXJlIGlzIGEgZGl2aXNpb24g
CisgICAgLy8gYnkgemVybyB3aGljaCBpc24ndCBmb3VuZCBhdCBwYXJzZSB0aW1lLiAKKyAgICBp
ZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1faXNOb25O
ZWdhdGl2ZSAmJiByZXN1bHQgPCAwID8gMCA6IHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25W
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4
IGQ4OTQ0NWU4MDZjYjVlZTgwZjlmNDFmOTA3ODdmOGE1Yjg5ZTM4MmEuLmM1NTg0NTU0MjExMGE3
NzVmMzJjODc4N2Y5ZjY5OTk5MWQ5M2U1NWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmgKQEAgLTUwLDYgKzUwLDgwIEBAIGVudW0gQ2FsY3VsYXRpb25QZXJt
aXR0ZWRWYWx1ZVJhbmdlIHsKICAgICBDYWxjdWxhdGlvblJhbmdlQWxsLAogICAgIENhbGN1bGF0
aW9uUmFuZ2VOb25OZWdhdGl2ZQogfTsKKyAgICAgICAgCitjbGFzcyBDYWxjRXhwcmVzc2lvbk5v
ZGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNhbGNFeHByZXNzaW9uTm9kZSgpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBj
b25zdCA9IDA7Cit9OworICAgIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIGZsb2F0IGV2YWx1
YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgQ2FsY3VsYXRp
b25WYWx1ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9u
UGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAg
ICAgICAsIG1faXNOb25OZWdhdGl2ZShyYW5nZSA9PSBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRp
dmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBt
X3ZhbHVlOworICAgIGJvb2wgbV9pc05vbk5lZ2F0aXZlOworfTsKKworY2xhc3MgQ2FsY0V4cHJl
c3Npb25OdW1iZXIgOiBwdWJsaWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBDYWxjRXhwcmVzc2lvbk51bWJlcihmbG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZs
b2F0KSBjb25zdCAKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9u
TGVuZ3RoIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgQ2FsY0V4cHJlc3Npb25MZW5ndGgoTGVuZ3RoIGxlbmd0aCkKKyAgICAgICAgOiBtX2xlbmd0
aChsZW5ndGgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxv
YXQgbWF4VmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGguY2FsY0Zs
b2F0VmFsdWUobWF4VmFsdWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGVuZ3RoIG1f
bGVuZ3RoOworfTsKKworY2xhc3MgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24gOiBwdWJs
aWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBDYWxjRXhwcmVzc2lvbkJpbmFy
eU9wZXJhdGlvbihQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFBhc3NP
d25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodFNpZGUsIENhbGNPcGVyYXRvciBvcCkKKyAg
ICAgICAgOiBtX2xlZnRTaWRlKGxlZnRTaWRlKQorICAgICAgICAsIG1fcmlnaHRTaWRlKHJpZ2h0
U2lkZSkKKyAgICAgICAgLCBtX29wZXJhdG9yKG9wKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX2xlZnRTaWRlOworICAgIE93blB0cjxDYWxjRXhwcmVzc2lv
bk5vZGU+IG1fcmlnaHRTaWRlOworICAgIENhbGNPcGVyYXRvciBtX29wZXJhdG9yOworfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRl
eCBhNmJjMDE5MzljMDUwYzJlMWYyYzFlNTg3NDA1NmU0OGM3OGZiYzllLi42YzJhMGU0OTZmZmM4
NmFmMTI0N2U5NWE0MGFmZWM0NmFhNGIwMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZW5n
dGguaCIKIAorI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KQEAgLTE0OCw2ICsxNDksMTA4IEBAIFBhc3NPd25BcnJheVB0cjxMZW5ndGg+
IG5ld0xlbmd0aEFycmF5KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIAogICAgIHJl
dHVybiByLnJlbGVhc2UoKTsKIH0KKyAgICAKK0xlbmd0aDo6fkxlbmd0aCgpCit7CisgICAgaWYg
KGlzQ2FsY3VsYXRlZCgpKQorICAgICAgICBkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7Cit9ICAg
CisgICAgICAgIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCB7CitwdWJsaWM6Cisg
ICAgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCgpIAorICAgIDogbV9pbmRleCgxKQorICAgIHsK
KyAgICAgICAgbV9tYXAgPSBuZXcgSGFzaE1hcDxpbnQsIFJlZlB0cjxDYWxjdWxhdGlvblZhbHVl
PiA+OworICAgIH0KKyAgICAKKyAgICBpbnQgaW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25W
YWx1ZT4gY2FsY1ZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faW5kZXgpOworICAgICAg
ICB3aGlsZSAobV9tYXAtPmNvbnRhaW5zKG1faW5kZXgpKQorICAgICAgICAgICAgbV9pbmRleCsr
OworICAgICAgICAKKyAgICAgICAgbV9tYXAtPnNldChtX2luZGV4LCBjYWxjVmFsdWUpOyAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIHJldHVybiBtX2luZGV4OworICAgIH0KKworICAgIHZvaWQg
cmVtb3ZlKGludCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21hcC0+Y29udGFpbnMo
aW5kZXgpKTsKKyAgICAgICAgbV9tYXAtPnJlbW92ZShpbmRleCk7CisgICAgfQorICAgIAorICAg
IFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gZ2V0KGludCBpbmRleCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX21hcC0+Y29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIG1fbWFw
LT5nZXQoaW5kZXgpOworICAgIH0KKyAgICAKK3ByaXZhdGU6ICAgICAgICAKKyAgICBpbnQgbV9p
bmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+ID4qIG1fbWFw
OworfTsKKyAgICAKK3N0YXRpYyBDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwKiBjYWxjSGFuZGxl
cygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFw
LCBoYW5kbGVNYXAsICgpKTsKKyAgICByZXR1cm4gJmhhbmRsZU1hcDsKK30KKworTGVuZ3RoOjpM
ZW5ndGgoUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjKQorICAgIDogbV9xdWlyayhm
YWxzZSkKKyAgICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAgICwgbV9pc0Zsb2F0KGZhbHNlKQor
eworICAgIG1faW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLT5pbnNlcnQoY2FsYyk7Cit9CisgICAg
CitQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IExlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICByZXR1cm4gY2FsY0hh
bmRsZXMoKS0+Z2V0KGNhbGN1bGF0aW9uSGFuZGxlKCkpOworfQorICAgIAoraW50IExlbmd0aDo6
Y2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCAvKiByb3VuZFBlcmNlbnRhZ2VzICov
KSBjb25zdAoreworICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOwor
fQorCitpbnQgTGVuZ3RoOjpjYWxjdWxhdGVkTWluVmFsdWUoaW50IG1heFZhbHVlLCBib29sIC8q
IHJvdW5kUGVyY2VudGFnZXMgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK2Zsb2F0IExlbmd0aDo6Y2FsY3VsYXRlZEZsb2F0VmFs
dWUoaW50IG1heFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFs
dWUobWF4VmFsdWUpOworfQorCit2b2lkIExlbmd0aDo6aW5jcmVtZW50Q2FsY3VsYXRlZFJlZigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICBjYWxjdWxhdGlvblZh
bHVlKCktPnJlZigpOworfQorCit2b2lkIExlbmd0aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY3Vs
YXRpb25WYWx1ZT4gY2FsY0xlbmd0aCA9IGNhbGN1bGF0aW9uVmFsdWUoKTsKKyAgICBpZiAoY2Fs
Y0xlbmd0aC0+aGFzT25lUmVmKCkpCisgICAgICAgIGNhbGNIYW5kbGVzKCktPnJlbW92ZShjYWxj
dWxhdGlvbkhhbmRsZSgpKTsKKyAgICBjYWxjTGVuZ3RoLT5kZXJlZigpOworfSAgICAKKworZmxv
YXQgTGVuZ3RoOjpub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdAorewor
ICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CisgICAgUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+
IGNhbGNMZW5ndGggPSBjYWxjdWxhdGlvblZhbHVlKCk7CisgICAgZmxvYXQgcmVzdWx0ID0gY2Fs
Y0xlbmd0aC0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChpc25hbihyZXN1bHQpKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiBjbGFzcyBTYW1lU2l6ZUFz
TGVuZ3RoIHsKICAgICBpbnQzMl90IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRl
eCA1M2IwMjYwYzIwN2IwNzgyODk1ZWYzNzdjODRjZjYxNjQ3NTc0OTdlLi4xOTI0NTg1OTkwMjgw
MDk4MGYxODk0NTA5Yjg1NTZkMTdiMDQ0MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093bkFycmF5UHRyLmg+CiAKQEAgLTM0LDggKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdmZmZmZmY7IC8vIG1heCB2YWx1
ZSBmb3IgYSAyOC1iaXQgaW50CiBjb25zdCBpbnQgaW50TWluRm9yTGVuZ3RoID0gKC0weDdmZmZm
ZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKIAotZW51bSBMZW5ndGhUeXBl
IHsgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVkLCBJbnRyaW5zaWMsIE1pbkludHJpbnNp
YywgVW5kZWZpbmVkIH07Ci0KK2VudW0gTGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJj
ZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIENhbGN1bGF0ZWQsIFVuZGVmaW5l
ZCB9OworIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsgICAgCisgICAgCiBzdHJ1Y3QgTGVuZ3Ro
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY1LDExICs2OCwz
MCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2
KTsgICAgCiAgICAgfQogCisgICAgZXhwbGljaXQgTGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY3VsYXRp
b25WYWx1ZT4pOworCisgICAgTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorICAgIHsKKyAg
ICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgTGVuZ3RoJiBv
cGVyYXRvcj0oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAgeworICAgICAgICBpbml0RnJvbUxl
bmd0aChsZW5ndGgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIH5MZW5ndGgo
KTsKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJu
IChtX3R5cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyaykgJiYgKGlzVW5k
ZWZpbmVkKCkgfHwgKGdldEZsb2F0VmFsdWUoKSA9PSBvLmdldEZsb2F0VmFsdWUoKSkpOyB9CiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBvcGVyYXRvcio9KGZsb2F0IHYpCi0gICAg
eyAgICAgICAgCisgICAgeyAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1faXNGbG9hdCkKICAgICAgICAg
ICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2Zsb2F0VmFsdWUgKiB2KTsK
ICAgICAgICAgZWxzZSAgICAgICAgCkBAIC04MCw2ICsxMDIsMTAgQEAgcHVibGljOgogICAgIAog
ICAgIGludCB2YWx1ZSgpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdldEludFZhbHVlKCk7CiAgICAgfQogCkBA
IC04OSw2ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7
CiAgICAgfQogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjdWxhdGlvblZh
bHVlKCkgY29uc3Q7CisKICAgICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxMZW5ndGhUeXBlPihtX3R5cGUpOyB9CiAgICAgYm9vbCBxdWlyaygpIGNvbnN0IHsg
cmV0dXJuIG1fcXVpcms7IH0KIApAQCAtMTA2LDYgKzEzNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFZhbHVlKGludCB2YWx1ZSkKICAgICB7CisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQo
KSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgc2V0VmFsdWUoRml4ZWQsIHZhbHVlKTsKICAgICB9CiAK
QEAgLTEyMSw4ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAgICAgICp0aGlzID0gTGVuZ3RoKHZhbHVl
LCBGaXhlZCk7CiAgICAgfQogCi0gICAgLy8gTm90ZTogTWF5IG9ubHkgYmUgY2FsbGVkIGZvciBG
aXhlZCwgUGVyY2VudCBhbmQgQXV0byBsZW5ndGhzLgotICAgIC8vIE90aGVyIHR5cGVzIHdpbGwg
QVNTRVJUIGluIG9yZGVyIHRvIGNhdGNoIGludmFsaWQgbGVuZ3RoIGNhbGN1bGF0aW9ucy4KICAg
ICBpbnQgY2FsY1ZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFs
c2UpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewpAQCAtMTMxLDYgKzE2
MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gY2FsY01pblZhbHVlKG1heFZh
bHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAg
ICAgICAgICByZXR1cm4gbWF4VmFsdWU7CisgICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJj
ZW50YWdlcyk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAg
ICAgICAgICAgIGNhc2UgSW50cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6
CkBAIC0xNTIsNiArMTg0LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50Pihyb3VuZChtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOwog
ICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4g
SXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1
c2UgdGhlIEZQVSBzdGFjay4KICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAg
ICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY3Vs
YXRlZE1pblZhbHVlKG1heFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICAgICBjYXNlIFJlbGF0aXZlOgpAQCAtMTc0LDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgp
IC8gMTAwLjBmKTsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlKTsKKyAgICAgICAgICAgIGNhc2UgQ2FsY3Vs
YXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY3VsYXRlZEZsb2F0VmFsdWUobWF4VmFs
dWUpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAg
ICAgICBjYXNlIEludHJpbnNpYzoKICAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2ljOgpAQCAt
MTg2LDIxICsyMjIsMzIgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRlZmluZWQo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVW5kZWZpbmVkOyB9CisKKyAgICAvLyBGSVhNRSBj
YWxjOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzNTcuIEEgY2Fs
Y3VsYXRlZCBMZW5ndGggCisgICAgLy8gYWx3YXlzIGNvbnRhaW5zIGEgcGVyY2VudGFnZSwgYW5k
IHdpdGhvdXQgYSBtYXhWYWx1ZSBwYXNzZWQgdG8gdGhlc2UgZnVuY3Rpb25zCisgICAgLy8gaXQn
cyBpbXBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgc2lnbiBvciB6ZXJvLW5lc3MuIFdlIGFzc3Vt
ZSBhbGwgY2FsYyB2YWx1ZXMKKyAgICAvLyBhcmUgcG9zaXRpdmUgYW5kIG5vbi16ZXJvIGZvciBu
b3cuICAgIAogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgCiAgICAgewogICAgICAgICBBU1NFUlQo
IWlzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gIW1fZmxvYXRWYWx1
ZSA6ICFtX2ludFZhbHVlOworICAgICAgICByZXR1cm4gaXNDYWxjdWxhdGVkKCkgPyBmYWxzZSA6
IG1faXNGbG9hdCA/ICFtX2Zsb2F0VmFsdWUgOiAhbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgYm9v
bCBpc1Bvc2l0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1VuZGVmaW5lZCgp
ID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQoKSA/IHRydWUgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOwor
ICAgIH0KKyAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGlzQ2FsY3VsYXRlZCgpID8gZmFsc2UgOiBnZXRGbG9h
dFZhbHVlKCkgPCAwOwogICAgIH0KICAgICAKLSAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7
IHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOyB9Ci0g
ICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNl
IDogZ2V0RmxvYXRWYWx1ZSgpIDwgMDsgfQotCiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gQXV0bzsgfQogICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBSZWxhdGl2ZTsgfQotICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFBlcmNlbnQ7IH0KKyAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0IHsg
cmV0dXJuIHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAgICAg
Ym9vbCBpc0ZpeGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkOyB9CiAgICAgYm9v
bCBpc0ludHJpbnNpY09yQXV0bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvIHx8IHR5
cGUoKSA9PSBNaW5JbnRyaW5zaWMgfHwgdHlwZSgpID09IEludHJpbnNpYzsgfQotICAgIGJvb2wg
aXNTcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09
IFBlcmNlbnQ7IH0KKyAgICBib29sIGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IEZpeGVkIHx8IHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9
CisgICAgYm9vbCBpc0NhbGN1bGF0ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQ2FsY3Vs
YXRlZDsgfQogCiAgICAgTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHBy
b2dyZXNzKSBjb25zdAogICAgIHsKQEAgLTIzOSw2ICsyODYsMzMgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIG1faXNGbG9hdCA/IG1fZmxvYXRWYWx1ZSA6IG1faW50VmFsdWU7CiAgICAgfQog
CisgICAgdm9pZCBpbml0RnJvbUxlbmd0aChjb25zdCBMZW5ndGggJmxlbmd0aCkgCisgICAgewor
ICAgICAgICBtX3F1aXJrID0gbGVuZ3RoLm1fcXVpcms7CisgICAgICAgIG1fdHlwZSA9IGxlbmd0
aC5tX3R5cGU7CisgICAgICAgIG1faXNGbG9hdCA9IGxlbmd0aC5tX2lzRmxvYXQ7CisgICAgICAg
IAorICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgbV9mbG9hdFZhbHVlID0gbGVu
Z3RoLm1fZmxvYXRWYWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9pbnRWYWx1ZSA9
IGxlbmd0aC5tX2ludFZhbHVlOworICAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgp
KQorICAgICAgICAgICAgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0KKyAgICAKKyAg
ICBmbG9hdCBub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdDsKKyAgICBp
bnQgY2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBj
b25zdDsKKyAgICBpbnQgY2FsY3VsYXRlZE1pblZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzKSBjb25zdDsKKyAgICBmbG9hdCBjYWxjdWxhdGVkRmxvYXRWYWx1ZShpbnQg
bWF4VmFsdWUpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGlvbkhhbmRsZSgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgICAgICByZXR1cm4gZ2V0SW50
VmFsdWUoKTsKKyAgICB9CisgICAgdm9pZCBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3Q7
CisgICAgdm9pZCBkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3Q7ICAgIAorICAgIAogICAg
IHVuaW9uIHsKICAgICAgICAgaW50IG1faW50VmFsdWU7CiAgICAgICAgIGZsb2F0IG1fZmxvYXRW
YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAwMWQ4YjFlMDE2ODg0NDY1MGMzNWZiNTc4NWE1YmZhZTlmNTg5OGNjLi45
OGFhNzhlNzYzMWU5ZTk4OGFlZDRlZWQ5NTBiNDI0N2EyOTBmMDM5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTItMDMtMDYgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDU1MzIGNhbGM6IG1peGVkIGFic29sdXRlL3BlcmNlbnRhZ2VzIHdvcmsg
Zm9yIHdpZHRoLCBoZWlnaHQsIG1hcmdpbiBhbmQgcGFkZGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGNzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wMy0wNiAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbUmVncmVzc2lvbl0gRXhlY3V0aW9uIGxpbmUgaXMgbm90IHJldmVhbGVkIHdoZW4gZGVi
dWdnZXIgaXMgc3RvcHBlZCBpZiBzY3JpcHRzIHBhbmVsIHdhcyBub3QgeWV0IHNob3duLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dAppbmRleCBhZTc1NTNjODdjZGQ2
ZTdkZjFmNTIyNWJlNzJiYzVmMDdkYzkyOTNiLi42Mzg3NDA0YTUzMDEyYzI1MDEzMzBlODY2Nzhj
ZmU0NWQzOWZmYTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4
dApAQCAtMTgsMjYgKzE4LDI2IEBAIFBBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJzaW1wbGUtYm90
dG9tIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInNpbXBsZS1ib3R0b20iKSBp
cyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJzaW1wbGUtYm90dG9tIikgaXMgIjBw
eCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInNpbXBsZS1ib3R0b20iKSBpcyAiMjVweCIK
LUZBSUwgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBX
YXMgMHB4LgotRkFJTCBjb21wdXRlZE1hcmdpblRvcCgicGVyY2VudC1hbGwiKSBzaG91bGQgYmUg
MjVweC4gV2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1hbGwiKSBz
aG91bGQgYmUgMjVweC4gV2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNl
bnQtYWxsIikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luTGVm
dCgicGVyY2VudC1sZWZ0Iikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVk
TWFyZ2luTGVmdCgicGVyY2VudC1hbGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5U
b3AoInBlcmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBl
cmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50
LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtbGVmdCIp
IGlzICIyNXB4IgogUEFTUyBjb21wdXRlZE1hcmdpblRvcCgicGVyY2VudC1sZWZ0IikgaXMgIjBw
eCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1sZWZ0IikgaXMgIjBweCIKIFBB
U1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtbGVmdCIpIGlzICIwcHgiCiBQQVNTIGNv
bXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVk
TWFyZ2luVG9wKCJwZXJjZW50LXJpZ2h0IikgaXMgIjBweCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5S
aWdodCgicGVyY2VudC1yaWdodCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFTUyBjb21w
dXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LXJpZ2h0IikgaXMgIjI1cHgiCiBQQVNTIGNvbXB1dGVk
TWFyZ2luQm90dG9tKCJwZXJjZW50LXJpZ2h0IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJn
aW5MZWZ0KCJwZXJjZW50LXRvcCIpIGlzICIwcHgiCi1GQUlMIGNvbXB1dGVkTWFyZ2luVG9wKCJw
ZXJjZW50LXRvcCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFTUyBjb21wdXRlZE1hcmdp
blRvcCgicGVyY2VudC10b3AiKSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgi
cGVyY2VudC10b3AiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2Vu
dC10b3AiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtYm90dG9t
IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtYm90dG9tIikgaXMg
IjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1ib3R0b20iKSBpcyAiMHB4
IgotRkFJTCBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1ib3R0b20iKSBzaG91bGQgYmUg
MjVweC4gV2FzIDBweC4KK1BBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYm90dG9t
IikgaXMgIjI1cHgiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dAppbmRleCA4
M2VlMjY3YjkwZWU4YWRkNjYwNDFiNWNlZjhhYjg5YWI4M2I3ZWJjLi4wYjhlM2E3NDQ0NTI4NzA4
M2NkYzUyYmI2NDZlYjVkMjA1Nzc5YThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvcGFkZGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRp
bmctZXhwZWN0ZWQudHh0CkBAIC04LDEyICs4LDEyIEBAIFRoaXMgZWxlbWVudCBzaG91bGQgaGF2
ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVscy4gPT4gUEFTUwogCiBUaGlzIGVsZW1lbnQgc2hv
dWxkIGhhdmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAotVGhpcyBl
bGVtZW50IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBv
ZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcgd2lkdGgs
IHdyb25nIGhlaWdodAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGFuIG92ZXJhbGwgcGFkZGlu
ZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4g
PT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBsZWZ0IHBhZGRpbmcgb2YgMjUg
cGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6
IHdyb25nIHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBsZWZ0IHBhZGRpbmcgb2Yg
MjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBB
U1MKIAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgcGFkZGluZyBvZiAyNSBwaXhl
bHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jv
bmcgd2lkdGgKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcgb2YgMjUg
cGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MK
IAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgx
MCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIGhl
aWdodAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2YgMjUgcGl4ZWxz
ICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKIAotVGhp
cyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUg
b2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIGhlaWdo
dAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxz
ICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IFBBU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQKaW5kZXggNWI0
NWQyZGNjYzA4MDJhMzM3MTM5NzRhNjI2ODdiMzRkYjM1NGI1ZC4uOTdkNmQzYTNiNmFlMzNmZmM2
NGJjY2M2NDNhODE4NTIxMTJmYjQ1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3Np
bXBsZS1jYWxjcy1leHBlY3RlZC50eHQKQEAgLTIwLDEwICsyMCwxMCBAQCBjb250cm9sID0+IFBB
U1MKIDEwcHgqICg1ICogMikgPT4gUEFTUwogNTBweCArIDEwcHggKiA1IChvcGVyYXRpb24gb3Jk
ZXIpID0+IFBBU1MKIDEwMCUvMiAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwotMTAwJSAr
IC0xMDBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBlY3RlZCB3
aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2YgMTAw
LCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2
Ci04MCUgLSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVj
dGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBv
ZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdh
cyAyNTYKLTMwMHB4IC0gMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209
MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQg
d2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAs
IGJ1dCB3YXMgMjU2Ci0tMTAwcHggKyAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlM
OiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBl
eHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRo
IG9mIDEwMCwgYnV0IHdhcyAyNTYKKzEwMCUgKyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgp
ID0+IFBBU1MKKzgwJSAtIDYwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKzMwMHB4
IC0gMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworLTEwMHB4ICsgMTAwJSAod2hl
cmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwogMjAlICsgMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCiA4MCUgLSAzMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDEwJSAq
IDUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130498</attachid>
            <date>2012-03-06 17:45:15 -0800</date>
            <delta_ts>2012-03-06 20:30:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120307124512.patch</filename>
            <type>text/plain</type>
            <size>33037</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMwNTU4ZDdiNGM2Nzcy
MjMxNjUxOGE4MTY2ZWExZjY1Y2U2ZmMzZS4uYmEyZDY4NTNjOTJhYWVmNDA4MTdjNmNiYjU3MTVj
ZDFkM2I5ZWNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJlc3Ry
aWN0aW9ucy4KKworICAgICAgICBMZW5ndGhzIGNhbiBiZSBjb3BpZWQsIGFuZCBzbyB0aGUgZXhw
cmVzc2lvbnMgYXJlIHN0b3JlZCBpbiBhIGhhc2htYXAsIGFuZCBvbmx5IHRoZWlyCisgICAgICAg
IGlkcyBhcmUgY29waWVkIGFsb25nIHdpdGggTGVuZ3RoLiBUaGUgZXhwcmVzc2lvbnMgYXJlIFJl
ZkNvdW50ZWQsIGFuZCB3aWxsIGdldCAKKyAgICAgICAgY2xlYW5lZCB1cCB3aGVuIHRoZSBsYXN0
IHJlZmVycmluZyBMZW5ndGggaXMgZGVzdHJ1Y3RlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVy
YXRpb246OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjph
cHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNl
bGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ2FsY0V4cHJl
c3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZTo6fkNhbGNF
eHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbGN1bGF0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25W
YWx1ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWxjRXhwcmVzc2lvbk51bWJlcjo6Q2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNF
eHByZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3Ro
OjpDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OkNh
bGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5n
dGgpOgorICAgICAgICAoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXA6Omluc2VydCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcDo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmNhbGN1bGF0ZWRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aW5jcmVt
ZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmRlY3JlbWVudENh
bGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpub25OYW5DYWxjdWxhdGVk
VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IqPSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUG9zaXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNTcGVjaWZpZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0NhbGN1bGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjppbml0RnJvbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1
bGF0aW9uSGFuZGxlKToKKwogMjAxMi0wMy0wNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUmVncmVzc2lvbl0gRXhlY3V0
aW9uIGxpbmUgaXMgbm90IHJldmVhbGVkIHdoZW4gZGVidWdnZXIgaXMgc3RvcHBlZCBpZiBzY3Jp
cHRzIHBhbmVsIHdhcyBub3QgeWV0IHNob3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmOTEz
N2I4ZGNkOTM5NTIzYWYxYmM5NGFiN2QyZTgyN2E4YmIxN2NiLi5iZDU0ZDhjNDZhNjk0MzEyNmJi
NTNhNGVjYzRkNGQwZTFlZjIzNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyMiw2ICsx
NDIyLDcgQEAgX19aTks3V2ViQ29yZTZFZGl0b3I3Y2FuRWRpdEV2CiBfX1pOSzdXZWJDb3JlNkVk
aXRvcjhjYW5QYXN0ZUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjljYW5EZWxldGVFdgogX19aTks3
V2ViQ29yZTZKU05vZGUyMXB1c2hFdmVudEhhbmRsZXJTY29wZUVQTjNKU0M5RXhlY1N0YXRlRVBO
UzFfMTRTY29wZUNoYWluTm9kZUUKK19fWk5LN1dlYkNvcmU2TGVuZ3RoMjJkZWNyZW1lbnRDYWxj
dWxhdGVkUmVmRXYKIF9fWk5LN1dlYkNvcmU2UmVnaW9uNXJlY3RzRXYKIF9fWk5LN1dlYkNvcmU2
V2lkZ2V0MTRwbGF0Zm9ybVdpZGdldEV2CiBfX1pOSzdXZWJDb3JlNldpZGdldDIzY29udmVydFRv
Q29udGFpbmluZ1ZpZXdFUktOU183SW50UmVjdEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmNwcAppbmRleCA4N2ZhNzM3ODI3MjY4MTdjZTBmMzJiYzA2MGJhZTJiOWFm
Y2RhOThiLi44OTkzYjFmMGE5Y2IxYmRmMmY5ZjJlZTk2NDEwMmJkMzZlM2NjNTBlIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0xMTQsMTIgKzExNCwz
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5jc3NUZXh0KCk7CiAgICAgfQog
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUo
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkgeworICAgICAgICBjYXNl
IENhbGNOdW1iZXI6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNz
aW9uTnVtYmVyKG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpOworICAgICAgICBjYXNlIENhbGNM
ZW5ndGg6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTnVt
YmVyKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5bGUsIHpvb20p
KSk7CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnQ6CisgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRM
ZW5ndGg6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRU
b0Zsb2F0TGVuZ3RoKG1fdmFsdWUuZ2V0KCksIHN0eWxlLCByb290U3R5bGUsIHpvb20sICZvayk7
CisgICAgICAgICAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lv
bkxlbmd0aChsZW5ndGgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgLy8gT25seSB0eXBlcyB0
aGF0IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVk
CisgICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjUGVyY2VudE51bWJlciBt
YWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJl
cjoKKyAgICAgICAgY2FzZSBDYWxjT3RoZXI6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB2
aXJ0dWFsIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2gg
KG1fY2F0ZWdvcnkpIHsKICAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgogICAgICAgICBjYXNlIENh
bGNQZXJjZW50OiAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldERvdWJsZVZh
bHVlKCk7ICAgICAgICAKICAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgogICAgICAgICBjYXNlIENh
bGNQZXJjZW50TGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgpAQCAtMjA4
LDYgKzIzMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAg
ICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNW
YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6
b29tKSBjb25zdAorICAgIHsKKyAgICAgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVm
dChtX2xlZnRTaWRlLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAg
ICAgIGlmICghbGVmdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodChtX3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5
bGUsIHJvb3RTdHlsZSwgem9vbSkpOworICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Np
b25CaW5hcnlPcGVyYXRpb24obGVmdC5yZWxlYXNlKCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVy
YXRvcikpOworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Qg
CiAgICAgewogICAgICAgICByZXR1cm4gZXZhbHVhdGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUo
KSwgbV9yaWdodFNpZGUtPmRvdWJsZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmgKaW5kZXggN2MzNjY3MTI1YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMz
NDBmMy4uYWM5YmU0NmQzM2FkYTMyOTljOTE1ZmQzNGQzZDhjNjA0NTgzODVjNSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1BhcnNlclZhbHVlTGlzdDsKIGNsYXNzIENTU1ZhbHVl
TGlzdDsKIGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgQ2FsY1ZhbHVlOworY2xhc3MgQ2FsY3Vs
YXRpb25WYWx1ZTsKIGNsYXNzIENhbGNFeHByZXNzaW9uTm9kZTsKIAogZW51bSBDYWxjdWxhdGlv
bkNhdGVnb3J5IHsKQEAgLTU4LDggKzU4LDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsK
IGNsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNF
eHByZXNzaW9uTm9kZT4gewogcHVibGljOgogICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHBy
ZXNzaW9uTm9kZSgpID0gMDsgIAorICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAg
CiAgICAgdmlydHVhbCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGlu
Z0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0ID0gMDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHBy
b3RlY3RlZDoKIGNsYXNzIENTU0NhbGNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3Ry
aW5nIG5hbWUsIENTU1BhcnNlclZhbHVlTGlzdCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVS
YW5nZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY3Vs
YXRpb25WYWx1ZSopOwogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiB0b0NhbGNW
YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6
b29tID0gMS4wKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uVmFsdWU6
OmNyZWF0ZShtX2V4cHJlc3Npb24tPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20p
LCBtX25vbk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRp
b25SYW5nZUFsbCk7CisgICAgfQogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBj
b25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0KICAgICBib29sIGlzSW50
KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIoKTsgfSAgICAKICAgICBk
b3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCmluZGV4IDFkZGZiNzk5YzQ3MWNlNjE2MjM3NTMwNmM0NzAyMzk2ODNjNjIwNTMu
LjlkMjEzZGNkZDE0OWI0MGRmZjgxYjBmZDhlOGU0MmQ4NzQwMjczYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAg
ICAgICAgIEFTU0VSVChpc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7CiAgICAgICAgICAgICBt
X3ZhbHVlLm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAgICBjYXNl
IFVuZGVmaW5lZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCBiMjUxNmNkOTk3NTEw
ZjI3YzFmZjA3NzM0ZGUwOGRkODM2Y2I0ZTY0Li5hNzUwODNjNThkZDIxMWRiNjM2YzVlYTNjMmE2
MWJhMzBhZTdiY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5oIgogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Nh
bGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTRmxleFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBzZXRWYWx1
ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1
bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNl
bGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50
b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUo
KSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmlu
ZGV4IGYxYWM4NTgwMzBhNDNiNjc4MTMxNTFkODAxMWFmNTlhMzg2NTE4ZDUuLjJiZTE2YmUzNzVh
MjliOWU1ZGRjNTcwNmYzMjZlNzRlOTUyNGU1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVl
LmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5j
bHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2lu
Y2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNl
bGVjdG9yLmgiCkBAIC0yNTQ2LDEyICsyNTQ4LDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRv
TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0
CiAgICAgcmV0dXJuIGw7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
K0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBy
b290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sICpvaykKIHsKICAgICByZXR1cm4gY29u
dmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCBmYWxzZSwgbXVs
dGlwbGllciwgb2spOwogfQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkK
K0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUq
IHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgKm9rKQogewogICAgIHJldHVybiBj
b252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHRydWUsIG11
bHRpcGxpZXIsIG9rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4
IGUzYzcwNGQzOTI5MGZmYWI0OTMwMjNhZWE0ZjdjZDNiOWEzMDEwMGEuLmRiYjBkNDI5YzZmMzBj
NTk5NjY5NzYxNmJlZTczNWU4YzdjZTVjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaApAQCAtMzYyLDYgKzM2Miw5IEBAIHB1YmxpYzoKICAgICBib29sIGFwcGx5UHJvcGVy
dHlUb1JlZ3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlOyB9CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlOyB9CiAKKyAgICBz
dGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJlbmRl
clN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBi
b29sICpvayA9IDApOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoQ1NT
UHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKwogcHJpdmF0ZToKICAgICBzdGF0
aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggYjllMzg1ODFhZGFkOGIxOTY0
OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uNTc0MTNmYmZlYjFhODg5NzlhMjQzN2Y1YjYwM2NkN2E0
YjU5ZGE0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5j
cHAKQEAgLTMxLDYgKzMxLDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2Fs
Y3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZShmbG9h
dCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBsZWZ0ID0gbV9sZWZ0U2lkZS0+ZXZhbHVh
dGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0gbV9yaWdodFNpZGUtPmV2YWx1YXRlKG1h
eFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3IpIHsKKyAgICBjYXNlIENhbGNBZGQ6Cisg
ICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgY2FzZSBDYWxjU3VidHJhY3Q6CisgICAg
ICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2FzZSBDYWxjTXVsdGlwbHk6CisgICAgICAg
IHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBDYWxjRGl2aWRlOgorICAgICAgICBpZiAo
IXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpx
dWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxh
dGlvblZhbHVlOjpjcmVhdGUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBD
YWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDYWxjdWxhdGlvblZhbHVlKHZhbHVlLCByYW5nZSkpOworfQorCitmbG9hdCBDYWxj
dWxhdGlvblZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9h
dCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgLy8gRklYTUUgY2Fs
YyBodHRwczovL3dlYmtpdC5vcmcvYi84MDQxMSA6IHJlc3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBp
cyBhIGRpdmlzaW9uIAorICAgIC8vIGJ5IHplcm8gd2hpY2ggaXNuJ3QgZm91bmQgYXQgcGFyc2Ug
dGltZS4gCisgICAgaWYgKGlzbmFuKHJlc3VsdCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBtX2lzTm9uTmVnYXRpdmUgJiYgcmVzdWx0IDwgMCA/IDAgOiByZXN1bHQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1ZWU4MGY5ZjQxZjkwNzg3ZjhhNWI4OWUzODJhLi5j
NTU4NDU1NDIxMTBhNzc1ZjMyYzg3ODdmOWY2OTk5OTFkOTNlNTVjIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC01MCw2ICs1MCw4MCBAQCBlbnVtIENh
bGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAgICAgQ2FsY3VsYXRpb25SYW5nZUFsbCwK
ICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUKIH07CisgICAgICAgIAorY2xhc3MgQ2Fs
Y0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DYWxjRXhwcmVzc2lvbk5v
ZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9h
dCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAKK2NsYXNzIENhbGN1bGF0aW9uVmFsdWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZhbHVlPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4
cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAg
ICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgCitwcml2YXRlOgor
ICAgIENhbGN1bGF0aW9uVmFsdWUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVl
LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCisgICAgICAgIDogbV92YWx1
ZSh2YWx1ZSkKKyAgICAgICAgLCBtX2lzTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25S
YW5nZU5vbk5lZ2F0aXZlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgT3duUHRyPENhbGNFeHBy
ZXNzaW9uTm9kZT4gbV92YWx1ZTsKKyAgICBib29sIG1faXNOb25OZWdhdGl2ZTsKK307CisKK2Ns
YXNzIENhbGNFeHByZXNzaW9uTnVtYmVyIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Npb25OdW1iZXIoZmxvYXQgdmFsdWUpCisg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBmbG9h
dCBldmFsdWF0ZShmbG9hdCkgY29uc3QgCisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZTsK
KyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCitjbGFzcyBD
YWxjRXhwcmVzc2lvbkxlbmd0aCA6IHB1YmxpYyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IENhbGNFeHByZXNzaW9uTGVuZ3RoKExlbmd0aCBsZW5ndGgpCisgICAg
ICAgIDogbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0
IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsKKyAgICB9CisgICAgCitwcml2YXRlOgor
ICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uQmluYXJ5T3Bl
cmF0aW9uIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgQ2FsY0V4
cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGxl
ZnRTaWRlLCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3Bl
cmF0b3Igb3ApCisgICAgICAgIDogbV9sZWZ0U2lkZShsZWZ0U2lkZSkKKyAgICAgICAgLCBtX3Jp
Z2h0U2lkZShyaWdodFNpZGUpCisgICAgICAgICwgbV9vcGVyYXRvcihvcCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsKKyAgICBDYWxjT3BlcmF0b3IgbV9vcGVy
YXRvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5jcHAKaW5kZXggYTZiYzAxOTM5YzA1MGMyZTFmMmMxZTU4NzQwNTZlNDhjNzhmYmM5ZS4u
NGQwMTAxNjRmOWQ1NDVjMDU3Y2MyMmYxZmNiOWM2NjRjZGUwYWFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoLmgiCiAKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDgsNiArMTQ5LDEwMSBAQCBQYXNzT3duQXJy
YXlQdHI8TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBs
ZW4pCiAKICAgICByZXR1cm4gci5yZWxlYXNlKCk7CiB9CisgICAgICAgIAorY2xhc3MgQ2FsY3Vs
YXRpb25WYWx1ZUhhbmRsZU1hcCB7CitwdWJsaWM6CisgICAgQ2FsY3VsYXRpb25WYWx1ZUhhbmRs
ZU1hcCgpIAorICAgICAgICA6IG1faW5kZXgoMSkgCisgICAgeworICAgIH0KKyAgICAKKyAgICBp
bnQgaW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY1ZhbHVlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1faW5kZXgpOworICAgICAgICB3aGlsZSAobV9tYXAuY29udGFpbnMo
bV9pbmRleCkpCisgICAgICAgICAgICBtX2luZGV4Kys7CisgICAgICAgIAorICAgICAgICBtX21h
cC5zZXQobV9pbmRleCwgY2FsY1ZhbHVlKTsgICAgICAgCisgICAgICAgIAorICAgICAgICByZXR1
cm4gbV9pbmRleDsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgbV9tYXAucmVt
b3ZlKGluZGV4KTsKKyAgICB9CisgICAgCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVl
PiBnZXQoaW50IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWFwLmNvbnRhaW5zKGlu
ZGV4KSk7CisgICAgICAgIHJldHVybiBtX21hcC5nZXQoaW5kZXgpOworICAgIH0KKyAgICAKK3By
aXZhdGU6ICAgICAgICAKKyAgICBpbnQgbV9pbmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRy
PENhbGN1bGF0aW9uVmFsdWU+ID4gbV9tYXA7Cit9OworICAgIAorc3RhdGljIENhbGN1bGF0aW9u
VmFsdWVIYW5kbGVNYXAmIGNhbGNIYW5kbGVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXAsIGhhbmRsZU1hcCwgKCkpOworICAgIHJldHVybiBo
YW5kbGVNYXA7Cit9CisKK0xlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1
ZT4gY2FsYykKKyAgICA6IG1fcXVpcmsoZmFsc2UpCisgICAgLCBtX3R5cGUoQ2FsY3VsYXRlZCkK
KyAgICAsIG1faXNGbG9hdChmYWxzZSkKK3sKKyAgICBtX2ludFZhbHVlID0gY2FsY0hhbmRsZXMo
KS5pbnNlcnQoY2FsYyk7Cit9CisgICAgCitQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IExl
bmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRl
ZCgpKTsKKyAgICByZXR1cm4gY2FsY0hhbmRsZXMoKS5nZXQoY2FsY3VsYXRpb25IYW5kbGUoKSk7
Cit9CisgICAgCitpbnQgTGVuZ3RoOjpjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBib29s
IC8qIHJvdW5kUGVyY2VudGFnZXMgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNhbGN1
bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK2ludCBMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1
ZShpbnQgbWF4VmFsdWUsIGJvb2wgLyogcm91bmRQZXJjZW50YWdlcyAqLykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlKTsKK30KKworZmxvYXQgTGVu
Z3RoOjpjYWxjdWxhdGVkRmxvYXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK3ZvaWQgTGVuZ3RoOjpp
bmNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVk
KCkpOworICAgIGNhbGN1bGF0aW9uVmFsdWUoKS0+cmVmKCk7Cit9CisKK3ZvaWQgTGVuZ3RoOjpk
ZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVk
KCkpOworICAgIFJlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3VsYXRp
b25WYWx1ZSgpOworICAgIGlmIChjYWxjTGVuZ3RoLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgY2Fs
Y0hhbmRsZXMoKS5yZW1vdmUoY2FsY3VsYXRpb25IYW5kbGUoKSk7CisgICAgY2FsY0xlbmd0aC0+
ZGVyZWYoKTsKK30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGlu
dCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIFJl
ZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3VsYXRpb25WYWx1ZSgpOwor
ICAgIGZsb2F0IHJlc3VsdCA9IGNhbGNMZW5ndGgtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBp
ZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KIAogY2xhc3MgU2FtZVNpemVBc0xlbmd0aCB7CiAgICAgaW50MzJfdCB2YWx1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggNTNiMDI2MGMyMDdiMDc4Mjg5NWVmMzc3Yzg0Y2Y2MTY0
NzU3NDk3ZS4uMzI5ZDEwZDI3ZDA3MWRhYjhjOWM2NDk2Y2IwODdmNDU0N2Q2M2Q2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogCkBAIC0zNCw4ICsz
NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3RoID0g
MHg3ZmZmZmZmOyAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0IGludAogY29uc3QgaW50IGludE1p
bkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1iaXQg
aW50CiAKLWVudW0gTGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwg
SW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIFVuZGVmaW5lZCB9OwotCitlbnVtIExlbmd0aFR5cGUg
eyBBdXRvLCBSZWxhdGl2ZSwgUGVyY2VudCwgRml4ZWQsIEludHJpbnNpYywgTWluSW50cmluc2lj
LCBDYWxjdWxhdGVkLCBVbmRlZmluZWQgfTsKKyAKK2NsYXNzIENhbGN1bGF0aW9uVmFsdWU7ICAg
IAorICAgIAogc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC02NSwxMSArNjgsMzUgQEAgcHVibGljOgogICAgICAgICBtX2Zsb2F0VmFsdWUg
PSBzdGF0aWNfY2FzdDxmbG9hdD4odik7ICAgIAogICAgIH0KIAorICAgIGV4cGxpY2l0IExlbmd0
aChQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+KTsKKworICAgIExlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRGcm9tTGVuZ3RoKGxlbmd0aCk7CisgICAg
fQorICAgIAorICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorICAg
IHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICAKKyAgICB+TGVuZ3RoKCkKKyAgICB7CisgICAgICAgIGlmIChpc0NhbGN1
bGF0ZWQoKSkKKyAgICAgICAgICAgIGRlY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKKyAgICB9ICAK
KyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJldHVy
biAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspICYmIChpc1Vu
ZGVmaW5lZCgpIHx8IChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVlKCkpKTsgfQog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gbyk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgb3BlcmF0b3IqPShmbG9hdCB2KQotICAg
IHsgICAgICAgIAorICAgIHsgICAgICAgCisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX2lzRmxvYXQpCiAgICAgICAg
ICAgICBtX2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9mbG9hdFZhbHVlICogdik7
CiAgICAgICAgIGVsc2UgICAgICAgIApAQCAtODAsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAgICAK
ICAgICBpbnQgdmFsdWUoKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgp
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZXRJbnRWYWx1ZSgpOwogICAgIH0KIApA
QCAtODksNiArMTIwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgp
OwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY3VsYXRpb25W
YWx1ZSgpIGNvbnN0OworCiAgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQogICAgIGJvb2wgcXVpcmsoKSBjb25zdCB7
IHJldHVybiBtX3F1aXJrOyB9CiAKQEAgLTEwNiw2ICsxMzksMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxhdGVk
KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKEZpeGVkLCB2YWx1ZSk7CiAgICAgfQog
CkBAIC0xMjEsOCArMTU4LDYgQEAgcHVibGljOgogICAgICAgICAqdGhpcyA9IExlbmd0aCh2YWx1
ZSwgRml4ZWQpOwogICAgIH0KIAotICAgIC8vIE5vdGU6IE1heSBvbmx5IGJlIGNhbGxlZCBmb3Ig
Rml4ZWQsIFBlcmNlbnQgYW5kIEF1dG8gbGVuZ3Rocy4KLSAgICAvLyBPdGhlciB0eXBlcyB3aWxs
IEFTU0VSVCBpbiBvcmRlciB0byBjYXRjaCBpbnZhbGlkIGxlbmd0aCBjYWxjdWxhdGlvbnMuCiAg
ICAgaW50IGNhbGNWYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZh
bHNlKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKQEAgLTEzMSw2ICsx
NjYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGNNaW5WYWx1ZShtYXhW
YWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heFZhbHVlOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgor
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUsIHJvdW5kUGVy
Y2VudGFnZXMpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAg
ICAgICAgICAgICBjYXNlIEludHJpbnNpYzoKICAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2lj
OgpAQCAtMTUyLDYgKzE4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpKTsK
ICAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxvYXQu
IEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24gMzItYml0IEludGVsIG1hY2hpbmVzIHRoYXQg
dXNlIHRoZSBGUFUgc3RhY2suCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7Cisg
ICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1
bGF0ZWRNaW5WYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7ICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgY2FzZSBSZWxhdGl2ZToKQEAgLTE3NCw2ICsyMTMsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQo
KSAvIDEwMC4wZik7CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSk7CisgICAgICAgICAgICBjYXNlIENhbGN1
bGF0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRGbG9hdFZhbHVlKG1heFZh
bHVlKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAg
ICAgICAgY2FzZSBJbnRyaW5zaWM6CiAgICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKQEAg
LTE4NiwyMSArMjI3LDMyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzVW5kZWZpbmVk
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFVuZGVmaW5lZDsgfQorCisgICAgLy8gRklYTUUg
Y2FsYzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzU3LiBBIGNh
bGN1bGF0ZWQgTGVuZ3RoIAorICAgIC8vIGFsd2F5cyBjb250YWlucyBhIHBlcmNlbnRhZ2UsIGFu
ZCB3aXRob3V0IGEgbWF4VmFsdWUgcGFzc2VkIHRvIHRoZXNlIGZ1bmN0aW9ucworICAgIC8vIGl0
J3MgaW1wb3NzaWJsZSB0byBkZXRlcm1pbmUgdGhlIHNpZ24gb3IgemVyby1uZXNzLiBXZSBhc3N1
bWUgYWxsIGNhbGMgdmFsdWVzCisgICAgLy8gYXJlIHBvc2l0aXZlIGFuZCBub24temVybyBmb3Ig
bm93LiAgICAKICAgICBib29sIGlzWmVybygpIGNvbnN0IAogICAgIHsKICAgICAgICAgQVNTRVJU
KCFpc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/ICFtX2Zsb2F0VmFs
dWUgOiAhbV9pbnRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGlzQ2FsY3VsYXRlZCgpID8gZmFsc2Ug
OiBtX2lzRmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFsdWU7CisgICAgfQorICAgIGJv
b2wgaXNQb3NpdGl2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQo
KSA/IGZhbHNlIDogaXNDYWxjdWxhdGVkKCkgPyB0cnVlIDogZ2V0RmxvYXRWYWx1ZSgpID4gMDsK
KyAgICB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQoKSA/IGZhbHNlIDogZ2V0Rmxv
YXRWYWx1ZSgpIDwgMDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3Qg
eyByZXR1cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNlIDogZ2V0RmxvYXRWYWx1ZSgpID4gMDsgfQot
ICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxz
ZSA6IGdldEZsb2F0VmFsdWUoKSA8IDA7IH0KLQogICAgIGJvb2wgaXNBdXRvKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IEF1dG87IH0KICAgICBib29sIGlzUmVsYXRpdmUoKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gUmVsYXRpdmU7IH0KLSAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0IHsg
cmV0dXJuIHR5cGUoKSA9PSBQZXJjZW50OyB9CisgICAgYm9vbCBpc1BlcmNlbnQoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gUGVyY2VudCB8fCB0eXBlKCkgPT0gQ2FsY3VsYXRlZDsgfQogICAg
IGJvb2wgaXNGaXhlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaXhlZDsgfQogICAgIGJv
b2wgaXNJbnRyaW5zaWNPckF1dG8oKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXV0byB8fCB0
eXBlKCkgPT0gTWluSW50cmluc2ljIHx8IHR5cGUoKSA9PSBJbnRyaW5zaWM7IH0KLSAgICBib29s
IGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkIHx8IHR5cGUoKSA9
PSBQZXJjZW50OyB9CisgICAgYm9vbCBpc1NwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUo
KSA9PSBGaXhlZCB8fCB0eXBlKCkgPT0gUGVyY2VudCB8fCB0eXBlKCkgPT0gQ2FsY3VsYXRlZDsg
fQorICAgIGJvb2wgaXNDYWxjdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IENhbGN1
bGF0ZWQ7IH0KIAogICAgIExlbmd0aCBibGVuZChjb25zdCBMZW5ndGgmIGZyb20sIGRvdWJsZSBw
cm9ncmVzcykgY29uc3QKICAgICB7CkBAIC0yMzksNiArMjkxLDMzIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBtX2lzRmxvYXQgPyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZhbHVlOwogICAgIH0K
IAorICAgIHZvaWQgaW5pdEZyb21MZW5ndGgoY29uc3QgTGVuZ3RoICZsZW5ndGgpIAorICAgIHsK
KyAgICAgICAgbV9xdWlyayA9IGxlbmd0aC5tX3F1aXJrOworICAgICAgICBtX3R5cGUgPSBsZW5n
dGgubV90eXBlOworICAgICAgICBtX2lzRmxvYXQgPSBsZW5ndGgubV9pc0Zsb2F0OworICAgICAg
ICAKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IGxl
bmd0aC5tX2Zsb2F0VmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faW50VmFsdWUg
PSBsZW5ndGgubV9pbnRWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQo
KSkKKyAgICAgICAgICAgIGluY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKKyAgICB9CisgICAgCisg
ICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CisgICAg
aW50IGNhbGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykg
Y29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZWRNaW5WYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykgY29uc3Q7CisgICAgZmxvYXQgY2FsY3VsYXRlZEZsb2F0VmFsdWUoaW50
IG1heFZhbHVlKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldElu
dFZhbHVlKCk7CisgICAgfQorICAgIHZvaWQgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0
OworICAgIHZvaWQgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OyAgICAKKyAgICAKICAg
ICB1bmlvbiB7CiAgICAgICAgIGludCBtX2ludFZhbHVlOwogICAgICAgICBmbG9hdCBtX2Zsb2F0
VmFsdWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMDFkOGIxZTAxNjg4NDQ2NTBjMzVmYjU3ODVhNWJmYWU5ZjU4OThjYy4u
OThhYTc4ZTc2MzFlOWU5ODhhZWQ0ZWVkOTUwYjQyNDdhMjkwZjAzOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTAzLTA2ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQ1NTMyBjYWxjOiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3Jr
IGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJnaW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBjc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMDYgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1JlZ3Jlc3Npb25dIEV4ZWN1dGlvbiBsaW5lIGlzIG5vdCByZXZlYWxlZCB3aGVuIGRl
YnVnZ2VyIGlzIHN0b3BwZWQgaWYgc2NyaXB0cyBwYW5lbCB3YXMgbm90IHlldCBzaG93bi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQKaW5kZXggYWU3NTUzYzg3Y2Rk
NmU3ZGYxZjUyMjViZTcyYmM1ZjA3ZGM5MjkzYi4uNjM4NzQwNGE1MzAxMmMyNTAxMzMwZTg2Njc4
Y2ZlNDVkMzlmZmE3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50
eHQKQEAgLTE4LDI2ICsxOCwyNiBAQCBQQVNTIGNvbXB1dGVkTWFyZ2luTGVmdCgic2ltcGxlLWJv
dHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJzaW1wbGUtYm90dG9tIikg
aXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgic2ltcGxlLWJvdHRvbSIpIGlzICIw
cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJzaW1wbGUtYm90dG9tIikgaXMgIjI1cHgi
Ci1GQUlMIGNvbXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1hbGwiKSBzaG91bGQgYmUgMjVweC4g
V2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtYWxsIikgc2hvdWxkIGJl
IDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtYWxsIikg
c2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJj
ZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgotRkFJTCBjb21wdXRlZE1hcmdpbkxl
ZnQoInBlcmNlbnQtbGVmdCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFTUyBjb21wdXRl
ZE1hcmdpbkxlZnQoInBlcmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1dGVkTWFyZ2lu
VG9wKCJwZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJw
ZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2Vu
dC1hbGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWxlZnQi
KSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtbGVmdCIpIGlzICIw
cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtbGVmdCIpIGlzICIwcHgiCiBQ
QVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFTUyBj
b21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtcmlnaHQiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRl
ZE1hcmdpblRvcCgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCi1GQUlMIGNvbXB1dGVkTWFyZ2lu
UmlnaHQoInBlcmNlbnQtcmlnaHQiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29t
cHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1yaWdodCIpIGlzICIyNXB4IgogUEFTUyBjb21wdXRl
ZE1hcmdpbkJvdHRvbSgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFy
Z2luTGVmdCgicGVyY2VudC10b3AiKSBpcyAiMHB4IgotRkFJTCBjb21wdXRlZE1hcmdpblRvcCgi
cGVyY2VudC10b3AiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29tcHV0ZWRNYXJn
aW5Ub3AoInBlcmNlbnQtdG9wIikgaXMgIjI1cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQo
InBlcmNlbnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNl
bnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWJvdHRv
bSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LWJvdHRvbSIpIGlz
ICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtYm90dG9tIikgaXMgIjBw
eCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYm90dG9tIikgc2hvdWxkIGJl
IDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWJvdHRv
bSIpIGlzICIyNXB4IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQKaW5kZXgg
ODNlZTI2N2I5MGVlOGFkZDY2MDQxYjVjZWY4YWI4OWFiODNiN2ViYy4uMGI4ZTNhNzQ0NDUyODcw
ODNjZGM1MmJiNjQ2ZWI1ZDIwNTc3OWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9j
YWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRk
aW5nLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxMiBAQCBUaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAogVGhpcyBlbGVtZW50IHNo
b3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9PiBQQVNTCiAKLVRoaXMg
ZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUg
b2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIHdpZHRo
LCB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRp
bmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCku
ID0+IFBBU1MKIAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlM
OiB3cm9uZyB3aWR0aAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQ
QVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcgb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdy
b25nIHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNT
CiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVscyAo
MTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBo
ZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVs
cyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRo
aXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAl
IG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBoZWln
aHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVs
cyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CmluZGV4IDVi
NDVkMmRjY2MwODAyYTMzNzEzOTc0YTYyNjg3YjM0ZGIzNTRiNWQuLjk3ZDZkM2EzYjZhZTMzZmZj
NjRiY2NjNjQzYTgxODUyMTEyZmI0NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2Fs
Yy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9z
aW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCwxMCArMjAsMTAgQEAgY29udHJvbCA9PiBQ
QVNTCiAxMHB4KiAoNSAqIDIpID0+IFBBU1MKIDUwcHggKyAxMHB4ICogNSAob3BlcmF0aW9uIG9y
ZGVyKSA9PiBQQVNTCiAxMDAlLzIgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKLTEwMCUg
KyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQg
d2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEw
MCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1
NgotODAlIC0gNjBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBl
Y3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGgg
b2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3
YXMgMjU2Ci0zMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29t
PTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVk
IHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAw
LCBidXQgd2FzIDI1NgotLTEwMHB4ICsgMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJ
TDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIg
ZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0
aCBvZiAxMDAsIGJ1dCB3YXMgMjU2CisxMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCis4MCUgLSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiszMDBw
eCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKy0xMDBweCArIDEwMCUgKHdo
ZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDIwJSArIDMwJSAod2hlcmUgMTAwJSBpcyAyMDBw
eCkgPT4gUEFTUwogODAlIC0gMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiAxMCUg
KiA1ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130529</attachid>
            <date>2012-03-06 20:30:32 -0800</date>
            <delta_ts>2012-03-06 22:14:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120307153029.patch</filename>
            <type>text/plain</type>
            <size>32687</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlODNjN2E0MTZjN2Q2
NjdmYWZlY2NmZmRkNjE2OWE1NDYxZmZkZi4uNjA3ZTVhNWZkZTg4NjJlODZmNTg3ZTk5MGYxYjky
MGYxNDljYmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJlc3Ry
aWN0aW9ucy4KKworICAgICAgICBMZW5ndGhzIGNhbiBiZSBjb3BpZWQsIGFuZCBzbyB0aGUgZXhw
cmVzc2lvbnMgYXJlIHN0b3JlZCBpbiBhIGhhc2htYXAsIGFuZCBvbmx5IHRoZWlyCisgICAgICAg
IGlkcyBhcmUgY29waWVkIGFsb25nIHdpdGggTGVuZ3RoLiBUaGUgZXhwcmVzc2lvbnMgYXJlIFJl
ZkNvdW50ZWQsIGFuZCB3aWxsIGdldCAKKyAgICAgICAgY2xlYW5lZCB1cCB3aGVuIHRoZSBsYXN0
IHJlZmVycmluZyBMZW5ndGggaXMgZGVzdHJ1Y3RlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVy
YXRpb246OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjph
cHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNl
bGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ2FsY0V4cHJl
c3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZTo6fkNhbGNF
eHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbGN1bGF0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25W
YWx1ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWxjRXhwcmVzc2lvbk51bWJlcjo6Q2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNF
eHByZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3Ro
OjpDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OkNh
bGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5n
dGgpOgorICAgICAgICAoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXA6Omluc2VydCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcDo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmNhbGN1bGF0ZWRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aW5jcmVt
ZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmRlY3JlbWVudENh
bGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpub25OYW5DYWxjdWxhdGVk
VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IqPSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUG9zaXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNTcGVjaWZpZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0NhbGN1bGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjppbml0RnJvbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1
bGF0aW9uSGFuZGxlKToKKwogMjAxMi0wMy0wNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGNyYXNoZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDgxN2I5YWVmMDc0N2UwYTA5MjIxNzFjMGM5YzUyM2RjMTNhYTYxZTguLmJm
MGNmNDI1MTE0ZWExZjNmMWU5N2NmY2M0MDYyNzhlODZiZDUyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjdjYW5FZGl0RXYK
IF9fWk5LN1dlYkNvcmU2RWRpdG9yOGNhblBhc3RlRXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yOWNh
bkRlbGV0ZUV2CiBfX1pOSzdXZWJDb3JlNkpTTm9kZTIxcHVzaEV2ZW50SGFuZGxlclNjb3BlRVBO
M0pTQzlFeGVjU3RhdGVFUE5TMV8xNFNjb3BlQ2hhaW5Ob2RlRQorX19aTks3V2ViQ29yZTZMZW5n
dGgyMmRlY3JlbWVudENhbGN1bGF0ZWRSZWZFdgogX19aTks3V2ViQ29yZTZSZWdpb241cmVjdHNF
dgogX19aTks3V2ViQ29yZTZXaWRnZXQxNHBsYXRmb3JtV2lkZ2V0RXYKIF9fWk5LN1dlYkNvcmU2
V2lkZ2V0MjNjb252ZXJ0VG9Db250YWluaW5nVmlld0VSS05TXzdJbnRSZWN0RQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDg3ZmE3Mzc4MjcyNjgxN2Nl
MGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLjIzYjJmZTIwNmZlM2U4YTdhMjc2NTMxY2NmZTRkYWVm
ZTE1ODNiMjcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTExNCwxMiArMTE0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmNz
c1RleHQoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25O
b2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIGRvdWJsZSB6b29tKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX2NhdGVnb3J5
KSB7CisgICAgICAgIGNhc2UgQ2FsY051bWJlcjoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIobV92YWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSk7Cisg
ICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q2FsY0V4cHJlc3Npb25OdW1iZXIobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUs
IHJvb3RTdHlsZSwgem9vbSkpKTsKKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudDoKKyAgICAgICAg
Y2FzZSBDYWxjUGVyY2VudExlbmd0aDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBM
ZW5ndGggbGVuZ3RoID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvRmxvYXRMZW5ndGgobV92
YWx1ZS5nZXQoKSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChsZW5ndGgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5n
dGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCisgICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJl
c3Npb25Ob2RlLiBDYWxjUGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4K
KyAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyAgICAgICAgY2FzZSBDYWxjT3RoZXI6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB2aXJ0dWFsIGRvdWJsZSBkb3VibGVWYWx1ZSgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdvcnkpIHsKICAgICAgICAgY2Fz
ZSBDYWxjTnVtYmVyOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50OiAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmdldERvdWJsZVZhbHVlKCk7ICAgICAgICAKICAgICAgICAgY2Fz
ZSBDYWxjTGVuZ3RoOgogICAgICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgogICAgICAgICBj
YXNlIENhbGNQZXJjZW50TnVtYmVyOgpAQCAtMjA4LDYgKzIzMCwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBjb25zdAorICAgIHsKKyAgICAgICAg
T3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdChtX2xlZnRTaWRlLT50b0NhbGNWYWx1ZShz
dHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlmICghbGVmdCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdo
dChtX3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpOworICAg
ICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24obGVmdC5yZWxl
YXNlKCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVyYXRvcikpOworICAgIH0KKwogICAgIHZpcnR1
YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgCiAgICAgewogICAgICAgICByZXR1cm4gZXZh
bHVhdGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUoKSwgbV9yaWdodFNpZGUtPmRvdWJsZVZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggN2MzNjY3
MTI1YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMzNDBmMy4uYWM5YmU0NmQzM2FkYTMyOTljOTE1
ZmQzNGQzZDhjNjA0NTgzODVjNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1Bh
cnNlclZhbHVlTGlzdDsKIGNsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFJlbmRlclN0eWxlOwot
Y2xhc3MgQ2FsY1ZhbHVlOworY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsKIGNsYXNzIENhbGNFeHBy
ZXNzaW9uTm9kZTsKIAogZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKQEAgLTU4LDggKzU4LDkg
QEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKIGNsYXNzIENTU0NhbGNFeHByZXNzaW9uTm9k
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gewogcHVibGljOgog
ICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsgIAorICAgIHZp
cnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNa
ZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91
YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCiAgICAgdmlydHVhbCBkb3VibGUgZG91Ymxl
VmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJl
bmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0ID0g
MDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHByb3RlY3RlZDoKIGNsYXNzIENTU0NhbGNWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
Q2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5hbWUsIENTU1BhcnNlclZhbHVlTGlz
dCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY3VsYXRpb25WYWx1ZSopOwogCisgICAgUGFzc1Jl
ZlB0cjxDYWxjdWxhdGlvblZhbHVlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0gMS4wKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShtX2V4cHJlc3Npb24tPnRvQ2Fs
Y1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20pLCBtX25vbk5lZ2F0aXZlID8gQ2FsY3VsYXRp
b25SYW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRpb25SYW5nZUFsbCk7CisgICAgfQogICAgIENh
bGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24t
PmNhdGVnb3J5KCk7IH0KICAgICBib29sIGlzSW50KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNz
aW9uLT5pc0ludGVnZXIoKTsgfSAgICAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDFkZGZiNzk5YzQ3
MWNlNjE2MjM3NTMwNmM0NzAyMzk2ODNjNjIwNTMuLjlkMjEzZGNkZDE0OWI0MGRmZjgxYjBmZDhl
OGU0MmQ4NzQwMjczYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cApAQCAtMjY2LDYgKzI2Niw3IEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgICAgIEFTU0VSVChpc2Zpbml0ZShsZW5n
dGgucGVyY2VudCgpKSk7CiAgICAgICAgICAgICBtX3ZhbHVlLm51bSA9IGxlbmd0aC5wZXJjZW50
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAg
ICBjYXNlIFJlbGF0aXZlOgogICAgICAgICBjYXNlIFVuZGVmaW5lZDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVBy
b3BlcnR5LmNwcAppbmRleCBiMjUxNmNkOTk3NTEwZjI3YzFmZjA3NzM0ZGUwOGRkODM2Y2I0ZTY0
Li5hNzUwODNjNThkZDIxMWRiNjM2YzVlYTNjMmE2MWJhMzBhZTdiY2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRmxleFZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3Ro
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgp
KQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUo
KSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDVjYjY5NDRiMGY3OTI4MzQxZmI2YWFh
YjYxNDQ1ZGFjNDNiOTRjYjQuLjAzMDdiOTVkNmJmYzFiODkxMWIxMmMyNWZlNWY1NTI5OTg1YjA2
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTMwLDEwICsz
MCwxMiBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ29udGVudERhdGEu
aCIKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKICNp
bmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZh
Y2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCkBAIC0yNTQ3LDEyICsyNTQ5
LDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0CiAgICAgcmV0dXJuIGw7CiB9CiAKLXN0YXRp
YyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUg
bXVsdGlwbGllciA9IDEpCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvSW50TGVu
Z3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikKIHsKICAgICByZXR1
cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCBmYWxz
ZSwgbXVsdGlwbGllcik7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgo
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSkKK0xlbmd0aCBDU1NT
dHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
ZG91YmxlIG11bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVsdGlwbGllcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlM2M3MDRkMzkyOTBmZmFiNDkzMDIzYWVh
NGY3Y2QzYjlhMzAxMDBhLi4wOTlhOWE3M2U5NDU5MmU5NGU4YmQ5ODIwMDc4ODIwZDQ2MTEwYjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTM2Miw2ICszNjIsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZTsgfQogICAgIGJvb2wgYXBwbHlQ
cm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0
eVRvVmlzaXRlZExpbmtTdHlsZTsgfQogCisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRM
ZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0
VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxKTsKKwogcHJpdmF0ZToKICAgICBz
dGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggYjllMzg1ODFhZGFkOGIx
OTY0OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uNTc0MTNmYmZlYjFhODg5NzlhMjQzN2Y1YjYwM2Nk
N2E0YjU5ZGE0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRp
b25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKQEAgLTMxLDYgKzMxLDQzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGltaXRzPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZShm
bG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBsZWZ0ID0gbV9sZWZ0U2lkZS0+ZXZh
bHVhdGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0gbV9yaWdodFNpZGUtPmV2YWx1YXRl
KG1heFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3IpIHsKKyAgICBjYXNlIENhbGNBZGQ6
CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAgY2FzZSBDYWxjU3VidHJhY3Q6Cisg
ICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2FzZSBDYWxjTXVsdGlwbHk6CisgICAg
ICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBDYWxjRGl2aWRlOgorICAgICAgICBp
ZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjpxdWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQgLyByaWdodDsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBDYWxj
dWxhdGlvblZhbHVlOjpjcmVhdGUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVl
LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDYWxjdWxhdGlvblZhbHVlKHZhbHVlLCByYW5nZSkpOworfQorCitmbG9hdCBD
YWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBm
bG9hdCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAgLy8gRklYTUUg
Y2FsYyBodHRwczovL3dlYmtpdC5vcmcvYi84MDQxMSA6IHJlc3VsdCBpcyBOYU4gd2hlbiB0aGVy
ZSBpcyBhIGRpdmlzaW9uIAorICAgIC8vIGJ5IHplcm8gd2hpY2ggaXNuJ3QgZm91bmQgYXQgcGFy
c2UgdGltZS4gCisgICAgaWYgKGlzbmFuKHJlc3VsdCkpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBtX2lzTm9uTmVnYXRpdmUgJiYgcmVzdWx0IDwgMCA/IDAgOiByZXN1bHQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1ZWU4MGY5ZjQxZjkwNzg3ZjhhNWI4OWUzODJh
Li5jNTU4NDU1NDIxMTBhNzc1ZjMyYzg3ODdmOWY2OTk5OTFkOTNlNTVjIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC01MCw2ICs1MCw4MCBAQCBlbnVt
IENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAgICAgQ2FsY3VsYXRpb25SYW5nZUFs
bCwKICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUKIH07CisgICAgICAgIAorY2xhc3Mg
Q2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DYWxjRXhwcmVzc2lv
bk5vZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShm
bG9hdCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAKK2NsYXNzIENhbGN1bGF0aW9uVmFs
dWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZhbHVlPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlKFBhc3NPd25QdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsK
KyAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Q7CisgICAgCitwcml2YXRl
OgorICAgIENhbGN1bGF0aW9uVmFsdWUoUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHZh
bHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCisgICAgICAgIDogbV92
YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX2lzTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRp
b25SYW5nZU5vbk5lZ2F0aXZlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgT3duUHRyPENhbGNF
eHByZXNzaW9uTm9kZT4gbV92YWx1ZTsKKyAgICBib29sIG1faXNOb25OZWdhdGl2ZTsKK307CisK
K2NsYXNzIENhbGNFeHByZXNzaW9uTnVtYmVyIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Npb25OdW1iZXIoZmxvYXQgdmFsdWUp
CisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBm
bG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3QgCisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1
ZTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0IG1fdmFsdWU7Cit9OworCitjbGFz
cyBDYWxjRXhwcmVzc2lvbkxlbmd0aCA6IHB1YmxpYyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IENhbGNFeHByZXNzaW9uTGVuZ3RoKExlbmd0aCBsZW5ndGgpCisg
ICAgICAgIDogbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGZs
b2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsKKyAgICB9CisgICAgCitwcml2YXRl
OgorICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgQ2Fs
Y0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
IGxlZnRTaWRlLCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxj
T3BlcmF0b3Igb3ApCisgICAgICAgIDogbV9sZWZ0U2lkZShsZWZ0U2lkZSkKKyAgICAgICAgLCBt
X3JpZ2h0U2lkZShyaWdodFNpZGUpCisgICAgICAgICwgbV9vcGVyYXRvcihvcCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKKyAgICBPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsKKyAgICBDYWxjT3BlcmF0b3IgbV9v
cGVyYXRvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aC5jcHAKaW5kZXggYTZiYzAxOTM5YzA1MGMyZTFmMmMxZTU4NzQwNTZlNDhjNzhmYmM5
ZS4uNGQwMTAxNjRmOWQ1NDVjMDU3Y2MyMmYxZmNiOWM2NjRjZGUwYWFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDgsNiArMTQ5LDEwMSBAQCBQYXNzT3du
QXJyYXlQdHI8TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50
JiBsZW4pCiAKICAgICByZXR1cm4gci5yZWxlYXNlKCk7CiB9CisgICAgICAgIAorY2xhc3MgQ2Fs
Y3VsYXRpb25WYWx1ZUhhbmRsZU1hcCB7CitwdWJsaWM6CisgICAgQ2FsY3VsYXRpb25WYWx1ZUhh
bmRsZU1hcCgpIAorICAgICAgICA6IG1faW5kZXgoMSkgCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBpbnQgaW5zZXJ0KFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY1ZhbHVlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1faW5kZXgpOworICAgICAgICB3aGlsZSAobV9tYXAuY29udGFp
bnMobV9pbmRleCkpCisgICAgICAgICAgICBtX2luZGV4Kys7CisgICAgICAgIAorICAgICAgICBt
X21hcC5zZXQobV9pbmRleCwgY2FsY1ZhbHVlKTsgICAgICAgCisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gbV9pbmRleDsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpCisgICAg
eworICAgICAgICBBU1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgbV9tYXAu
cmVtb3ZlKGluZGV4KTsKKyAgICB9CisgICAgCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZh
bHVlPiBnZXQoaW50IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWFwLmNvbnRhaW5z
KGluZGV4KSk7CisgICAgICAgIHJldHVybiBtX21hcC5nZXQoaW5kZXgpOworICAgIH0KKyAgICAK
K3ByaXZhdGU6ICAgICAgICAKKyAgICBpbnQgbV9pbmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVm
UHRyPENhbGN1bGF0aW9uVmFsdWU+ID4gbV9tYXA7Cit9OworICAgIAorc3RhdGljIENhbGN1bGF0
aW9uVmFsdWVIYW5kbGVNYXAmIGNhbGNIYW5kbGVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXAsIGhhbmRsZU1hcCwgKCkpOworICAgIHJldHVy
biBoYW5kbGVNYXA7Cit9CisKK0xlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25W
YWx1ZT4gY2FsYykKKyAgICA6IG1fcXVpcmsoZmFsc2UpCisgICAgLCBtX3R5cGUoQ2FsY3VsYXRl
ZCkKKyAgICAsIG1faXNGbG9hdChmYWxzZSkKK3sKKyAgICBtX2ludFZhbHVlID0gY2FsY0hhbmRs
ZXMoKS5pbnNlcnQoY2FsYyk7Cit9CisgICAgCitQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+
IExlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3Vs
YXRlZCgpKTsKKyAgICByZXR1cm4gY2FsY0hhbmRsZXMoKS5nZXQoY2FsY3VsYXRpb25IYW5kbGUo
KSk7Cit9CisgICAgCitpbnQgTGVuZ3RoOjpjYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlLCBi
b29sIC8qIHJvdW5kUGVyY2VudGFnZXMgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG5vbk5hbkNh
bGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK2ludCBMZW5ndGg6OmNhbGN1bGF0ZWRNaW5W
YWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgLyogcm91bmRQZXJjZW50YWdlcyAqLykgY29uc3QKK3sK
KyAgICByZXR1cm4gbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlKTsKK30KKworZmxvYXQg
TGVuZ3RoOjpjYWxjdWxhdGVkRmxvYXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Cit9CisKK3ZvaWQgTGVuZ3Ro
OjppbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxh
dGVkKCkpOworICAgIGNhbGN1bGF0aW9uVmFsdWUoKS0+cmVmKCk7Cit9CisKK3ZvaWQgTGVuZ3Ro
OjpkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxh
dGVkKCkpOworICAgIFJlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3Vs
YXRpb25WYWx1ZSgpOworICAgIGlmIChjYWxjTGVuZ3RoLT5oYXNPbmVSZWYoKSkKKyAgICAgICAg
Y2FsY0hhbmRsZXMoKS5yZW1vdmUoY2FsY3VsYXRpb25IYW5kbGUoKSk7CisgICAgY2FsY0xlbmd0
aC0+ZGVyZWYoKTsKK30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVl
KGludCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
IFJlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3VsYXRpb25WYWx1ZSgp
OworICAgIGZsb2F0IHJlc3VsdCA9IGNhbGNMZW5ndGgtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAg
ICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KIAogY2xhc3MgU2FtZVNpemVBc0xlbmd0aCB7CiAgICAgaW50MzJfdCB2YWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggNTNiMDI2MGMyMDdiMDc4Mjg5NWVmMzc3Yzg0Y2Y2
MTY0NzU3NDk3ZS4uMzI5ZDEwZDI3ZDA3MWRhYjhjOWM2NDk2Y2IwODdmNDU0N2Q2M2Q2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogCkBAIC0zNCw4
ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBpbnQgaW50TWF4Rm9yTGVuZ3Ro
ID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0IGludAogY29uc3QgaW50IGlu
dE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1i
aXQgaW50CiAKLWVudW0gTGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJjZW50LCBGaXhl
ZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIFVuZGVmaW5lZCB9OwotCitlbnVtIExlbmd0aFR5
cGUgeyBBdXRvLCBSZWxhdGl2ZSwgUGVyY2VudCwgRml4ZWQsIEludHJpbnNpYywgTWluSW50cmlu
c2ljLCBDYWxjdWxhdGVkLCBVbmRlZmluZWQgfTsKKyAKK2NsYXNzIENhbGN1bGF0aW9uVmFsdWU7
ICAgIAorICAgIAogc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC02NSwxMSArNjgsMzUgQEAgcHVibGljOgogICAgICAgICBtX2Zsb2F0VmFs
dWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odik7ICAgIAogICAgIH0KIAorICAgIGV4cGxpY2l0IExl
bmd0aChQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+KTsKKworICAgIExlbmd0aChjb25zdCBM
ZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRGcm9tTGVuZ3RoKGxlbmd0aCk7Cisg
ICAgfQorICAgIAorICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKyAgICAKKyAgICB+TGVuZ3RoKCkKKyAgICB7CisgICAgICAgIGlmIChpc0Nh
bGN1bGF0ZWQoKSkKKyAgICAgICAgICAgIGRlY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKKyAgICB9
ICAKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBjb25zdCB7IHJl
dHVybiAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9PSBvLm1fcXVpcmspICYmIChp
c1VuZGVmaW5lZCgpIHx8IChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZhbHVlKCkpKTsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gbyk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgb3BlcmF0b3IqPShmbG9hdCB2KQot
ICAgIHsgICAgICAgIAorICAgIHsgICAgICAgCisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX2lzRmxvYXQpCiAgICAg
ICAgICAgICBtX2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9mbG9hdFZhbHVlICog
dik7CiAgICAgICAgIGVsc2UgICAgICAgIApAQCAtODAsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICBpbnQgdmFsdWUoKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRl
ZCgpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZXRJbnRWYWx1ZSgpOwogICAgIH0K
IApAQCAtODksNiArMTIwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1
ZSgpOwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY3VsYXRp
b25WYWx1ZSgpIGNvbnN0OworCiAgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQogICAgIGJvb2wgcXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX3F1aXJrOyB9CiAKQEAgLTEwNiw2ICsxMzksMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxh
dGVkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKEZpeGVkLCB2YWx1ZSk7CiAgICAg
fQogCkBAIC0xMjEsOCArMTU4LDYgQEAgcHVibGljOgogICAgICAgICAqdGhpcyA9IExlbmd0aCh2
YWx1ZSwgRml4ZWQpOwogICAgIH0KIAotICAgIC8vIE5vdGU6IE1heSBvbmx5IGJlIGNhbGxlZCBm
b3IgRml4ZWQsIFBlcmNlbnQgYW5kIEF1dG8gbGVuZ3Rocy4KLSAgICAvLyBPdGhlciB0eXBlcyB3
aWxsIEFTU0VSVCBpbiBvcmRlciB0byBjYXRjaCBpbnZhbGlkIGxlbmd0aCBjYWxjdWxhdGlvbnMu
CiAgICAgaW50IGNhbGNWYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9
IGZhbHNlKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKQEAgLTEzMSw2
ICsxNjYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGNNaW5WYWx1ZSht
YXhWYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1heFZhbHVlOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVk
OgorICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUsIHJvdW5k
UGVyY2VudGFnZXMpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6
CiAgICAgICAgICAgICBjYXNlIEludHJpbnNpYzoKICAgICAgICAgICAgIGNhc2UgTWluSW50cmlu
c2ljOgpAQCAtMTUyLDYgKzE4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYp
KTsKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxv
YXQuIEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24gMzItYml0IEludGVsIG1hY2hpbmVzIHRo
YXQgdXNlIHRoZSBGUFUgc3RhY2suCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7
CisgICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGN1bGF0ZWRNaW5WYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7ICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKQEAgLTE3NCw2ICsyMTMsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNl
bnQoKSAvIDEwMC4wZik7CiAgICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSk7CisgICAgICAgICAgICBjYXNlIENh
bGN1bGF0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRGbG9hdFZhbHVlKG1h
eFZhbHVlKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAg
ICAgICAgICAgY2FzZSBJbnRyaW5zaWM6CiAgICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoK
QEAgLTE4NiwyMSArMjI3LDMyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzVW5kZWZp
bmVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFVuZGVmaW5lZDsgfQorCisgICAgLy8gRklY
TUUgY2FsYzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzU3LiBB
IGNhbGN1bGF0ZWQgTGVuZ3RoIAorICAgIC8vIGFsd2F5cyBjb250YWlucyBhIHBlcmNlbnRhZ2Us
IGFuZCB3aXRob3V0IGEgbWF4VmFsdWUgcGFzc2VkIHRvIHRoZXNlIGZ1bmN0aW9ucworICAgIC8v
IGl0J3MgaW1wb3NzaWJsZSB0byBkZXRlcm1pbmUgdGhlIHNpZ24gb3IgemVyby1uZXNzLiBXZSBh
c3N1bWUgYWxsIGNhbGMgdmFsdWVzCisgICAgLy8gYXJlIHBvc2l0aXZlIGFuZCBub24temVybyBm
b3Igbm93LiAgICAKICAgICBib29sIGlzWmVybygpIGNvbnN0IAogICAgIHsKICAgICAgICAgQVNT
RVJUKCFpc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/ICFtX2Zsb2F0
VmFsdWUgOiAhbV9pbnRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGlzQ2FsY3VsYXRlZCgpID8gZmFs
c2UgOiBtX2lzRmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFsdWU7CisgICAgfQorICAg
IGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNVbmRlZmlu
ZWQoKSA/IGZhbHNlIDogaXNDYWxjdWxhdGVkKCkgPyB0cnVlIDogZ2V0RmxvYXRWYWx1ZSgpID4g
MDsKKyAgICB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQoKSA/IGZhbHNlIDogZ2V0
RmxvYXRWYWx1ZSgpIDwgMDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29u
c3QgeyByZXR1cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNlIDogZ2V0RmxvYXRWYWx1ZSgpID4gMDsg
fQotICAgIGJvb2wgaXNOZWdhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBm
YWxzZSA6IGdldEZsb2F0VmFsdWUoKSA8IDA7IH0KLQogICAgIGJvb2wgaXNBdXRvKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IEF1dG87IH0KICAgICBib29sIGlzUmVsYXRpdmUoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gUmVsYXRpdmU7IH0KLSAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBQZXJjZW50OyB9CisgICAgYm9vbCBpc1BlcmNlbnQoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gUGVyY2VudCB8fCB0eXBlKCkgPT0gQ2FsY3VsYXRlZDsgfQog
ICAgIGJvb2wgaXNGaXhlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaXhlZDsgfQogICAg
IGJvb2wgaXNJbnRyaW5zaWNPckF1dG8oKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXV0byB8
fCB0eXBlKCkgPT0gTWluSW50cmluc2ljIHx8IHR5cGUoKSA9PSBJbnRyaW5zaWM7IH0KLSAgICBi
b29sIGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkIHx8IHR5cGUo
KSA9PSBQZXJjZW50OyB9CisgICAgYm9vbCBpc1NwZWNpZmllZCgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBGaXhlZCB8fCB0eXBlKCkgPT0gUGVyY2VudCB8fCB0eXBlKCkgPT0gQ2FsY3VsYXRl
ZDsgfQorICAgIGJvb2wgaXNDYWxjdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IENh
bGN1bGF0ZWQ7IH0KIAogICAgIExlbmd0aCBibGVuZChjb25zdCBMZW5ndGgmIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcykgY29uc3QKICAgICB7CkBAIC0yMzksNiArMjkxLDMzIEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZhbHVlOwogICAg
IH0KIAorICAgIHZvaWQgaW5pdEZyb21MZW5ndGgoY29uc3QgTGVuZ3RoICZsZW5ndGgpIAorICAg
IHsKKyAgICAgICAgbV9xdWlyayA9IGxlbmd0aC5tX3F1aXJrOworICAgICAgICBtX3R5cGUgPSBs
ZW5ndGgubV90eXBlOworICAgICAgICBtX2lzRmxvYXQgPSBsZW5ndGgubV9pc0Zsb2F0OworICAg
ICAgICAKKyAgICAgICAgaWYgKG1faXNGbG9hdCkKKyAgICAgICAgICAgIG1fZmxvYXRWYWx1ZSA9
IGxlbmd0aC5tX2Zsb2F0VmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faW50VmFs
dWUgPSBsZW5ndGgubV9pbnRWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0NhbGN1bGF0
ZWQoKSkKKyAgICAgICAgICAgIGluY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKKyAgICB9CisgICAg
CisgICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7Cisg
ICAgaW50IGNhbGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdl
cykgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZWRNaW5WYWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wg
cm91bmRQZXJjZW50YWdlcykgY29uc3Q7CisgICAgZmxvYXQgY2FsY3VsYXRlZEZsb2F0VmFsdWUo
aW50IG1heFZhbHVlKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGdl
dEludFZhbHVlKCk7CisgICAgfQorICAgIHZvaWQgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNv
bnN0OworICAgIHZvaWQgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OyAgICAKKyAgICAK
ICAgICB1bmlvbiB7CiAgICAgICAgIGludCBtX2ludFZhbHVlOwogICAgICAgICBmbG9hdCBtX2Zs
b2F0VmFsdWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYzM5MGE5NmUxNjhmMmZlZGYyODdlZWRjOGQ5MGQ3YjRjMDVjZjk0
Zi4uMWQ0ODNmZmY4ZDAzOTM2ZDA4NTVjYjEzMmJhZmMxYWIyOTM4YmJjZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTAzLTA2ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxjOiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3
b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJnaW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMDYg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBuby1sb25nZXItbmVlZGVkICdDUFUnIGFuZCAnR1BVJyBtb2RpZmllcnMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0CmluZGV4IGFlNzU1M2M4N2NkZDZlN2RmMWY1
MjI1YmU3MmJjNWYwN2RjOTI5M2IuLjYzODc0MDRhNTMwMTJjMjUwMTMzMGU4NjY3OGNmZTQ1ZDM5
ZmZhN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0CkBAIC0x
OCwyNiArMTgsMjYgQEAgUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQoInNpbXBsZS1ib3R0b20iKSBp
cyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpblRvcCgic2ltcGxlLWJvdHRvbSIpIGlzICIwcHgi
CiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInNpbXBsZS1ib3R0b20iKSBpcyAiMHB4IgogUEFT
UyBjb21wdXRlZE1hcmdpbkJvdHRvbSgic2ltcGxlLWJvdHRvbSIpIGlzICIyNXB4IgotRkFJTCBj
b21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtYWxsIikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHgu
Ci1GQUlMIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBX
YXMgMHB4LgotRkFJTCBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LWFsbCIpIHNob3VsZCBi
ZSAyNXB4LiBXYXMgMHB4LgotRkFJTCBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1hbGwi
KSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJj
ZW50LWxlZnQiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29tcHV0ZWRNYXJnaW5M
ZWZ0KCJwZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpblRvcCgicGVy
Y2VudC1hbGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1h
bGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYWxsIikg
aXMgIjI1cHgiCitQQVNTIGNvbXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1sZWZ0IikgaXMgIjI1
cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFT
UyBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFTUyBjb21w
dXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1sZWZ0IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRN
YXJnaW5MZWZ0KCJwZXJjZW50LXJpZ2h0IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5U
b3AoInBlcmNlbnQtcmlnaHQiKSBpcyAiMHB4IgotRkFJTCBjb21wdXRlZE1hcmdpblJpZ2h0KCJw
ZXJjZW50LXJpZ2h0Iikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFy
Z2luUmlnaHQoInBlcmNlbnQtcmlnaHQiKSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5C
b3R0b20oInBlcmNlbnQtcmlnaHQiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQo
InBlcmNlbnQtdG9wIikgaXMgIjBweCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQt
dG9wIikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJw
ZXJjZW50LXRvcCIpIGlzICIyNXB4IgogUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50
LXRvcCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LXRvcCIp
IGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1ib3R0b20iKSBpcyAi
MHB4IgogUEFTUyBjb21wdXRlZE1hcmdpblRvcCgicGVyY2VudC1ib3R0b20iKSBpcyAiMHB4Igog
UEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LWJvdHRvbSIpIGlzICIwcHgiCi1GQUlM
IGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWJvdHRvbSIpIHNob3VsZCBiZSAyNXB4LiBX
YXMgMHB4LgorUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1ib3R0b20iKSBpcyAi
MjVweCIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CmluZGV4IDgzZWUyNjdi
OTBlZThhZGQ2NjA0MWI1Y2VmOGFiODlhYjgzYjdlYmMuLjBiOGUzYTc0NDQ1Mjg3MDgzY2RjNTJi
YjY0NmViNWQyMDU3NzlhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRk
aW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBl
Y3RlZC50eHQKQEAgLTgsMTIgKzgsMTIgQEAgVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9w
IHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9PiBQQVNTCiAKIFRoaXMgZWxlbWVudCBzaG91bGQgaGF2
ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVscy4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVu
dCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aCwgd3Jvbmcg
aGVpZ2h0CitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNT
CiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhlbHMg
KDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcg
d2lkdGgKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhl
bHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1U
aGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAl
IG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0
aAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgcmlnaHQgcGFkZGluZyBvZiAyNSBwaXhlbHMg
KDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlz
IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBw
YXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitU
aGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBv
ZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1l
bnQgc2hvdWxkIGhhdmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJl
bnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitUaGlz
IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBv
ZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy9jYWxjL3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dAppbmRleCA1YjQ1ZDJkY2Nj
MDgwMmEzMzcxMzk3NGE2MjY4N2IzNGRiMzU0YjVkLi45N2Q2ZDNhM2I2YWUzM2ZmYzY0YmNjYzY0
M2E4MTg1MjExMmZiNDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxl
LWNhbGNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNh
bGNzLWV4cGVjdGVkLnR4dApAQCAtMjAsMTAgKzIwLDEwIEBAIGNvbnRyb2wgPT4gUEFTUwogMTBw
eCogKDUgKiAyKSA9PiBQQVNTCiA1MHB4ICsgMTBweCAqIDUgKG9wZXJhdGlvbiBvcmRlcikgPT4g
UEFTUwogMTAwJS8yICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCi0xMDAlICsgLTEwMHB4
ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9m
IDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3
YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYKLTgwJSAt
IDYwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lk
dGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwg
YnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1Ngot
MzAwcHggLSAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVj
dGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBv
ZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdh
cyAyNTYKLS0xMDBweCArIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29t
PTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVk
IHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAw
LCBidXQgd2FzIDI1NgorMTAwJSArIC0xMDBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFT
UworODAlIC0gNjBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworMzAwcHggLSAxMDAl
ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCistMTAwcHggKyAxMDAlICh3aGVyZSAxMDAl
IGlzIDIwMHB4KSA9PiBQQVNTCiAyMCUgKyAzMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBB
U1MKIDgwJSAtIDMwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwogMTAlICogNSAod2hl
cmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130541</attachid>
            <date>2012-03-06 21:49:37 -0800</date>
            <delta_ts>2012-03-06 22:16:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120307164935.patch</filename>
            <type>text/plain</type>
            <size>31621</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlODNjN2E0MTZjN2Q2
NjdmYWZlY2NmZmRkNjE2OWE1NDYxZmZkZi4uNjA3ZTVhNWZkZTg4NjJlODZmNTg3ZTk5MGYxYjky
MGYxNDljYmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRlZFZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aCAoaW4gcGxhdGZvcm0pIGNhbm5vdCByZWZlciB0byBD
U1NDYWxjdWxhdGVkVmFsdWUgKGluIGNzcykgZHVlIHRvIGxheWVyaW5nCisgICAgICAgIHJlc3Ry
aWN0aW9ucy4KKworICAgICAgICBMZW5ndGhzIGNhbiBiZSBjb3BpZWQsIGFuZCBzbyB0aGUgZXhw
cmVzc2lvbnMgYXJlIHN0b3JlZCBpbiBhIGhhc2htYXAsIGFuZCBvbmx5IHRoZWlyCisgICAgICAg
IGlkcyBhcmUgY29waWVkIGFsb25nIHdpdGggTGVuZ3RoLiBUaGUgZXhwcmVzc2lvbnMgYXJlIFJl
ZkNvdW50ZWQsIGFuZCB3aWxsIGdldCAKKyAgICAgICAgY2xlYW5lZCB1cCB3aGVuIHRoZSBsYXN0
IHJlZmVycmluZyBMZW5ndGggaXMgZGVzdHJ1Y3RlZC4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFsdWUpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVy
YXRpb246OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjp0b0NhbGNWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjph
cHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNl
bGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoQ2FsY0V4cHJl
c3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZTo6fkNhbGNF
eHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbGN1bGF0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Q2FsY3VsYXRpb25W
YWx1ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWxjRXhwcmVzc2lvbk51bWJlcjo6Q2FsY0V4cHJlc3Npb25OdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNF
eHByZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3Ro
OjpDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lv
bkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb246OkNh
bGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6On5MZW5n
dGgpOgorICAgICAgICAoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXA6Omluc2VydCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcDo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmNhbGN1bGF0ZWRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aW5jcmVt
ZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmRlY3JlbWVudENh
bGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpub25OYW5DYWxjdWxhdGVk
VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3IqPSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUG9zaXRpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc05lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNTcGVjaWZpZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0NhbGN1bGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjppbml0RnJvbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1
bGF0aW9uSGFuZGxlKToKKwogMjAxMi0wMy0wNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGNyYXNoZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDgxN2I5YWVmMDc0N2UwYTA5MjIxNzFjMGM5YzUyM2RjMTNhYTYxZTguLmJm
MGNmNDI1MTE0ZWExZjNmMWU5N2NmY2M0MDYyNzhlODZiZDUyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjdjYW5FZGl0RXYK
IF9fWk5LN1dlYkNvcmU2RWRpdG9yOGNhblBhc3RlRXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yOWNh
bkRlbGV0ZUV2CiBfX1pOSzdXZWJDb3JlNkpTTm9kZTIxcHVzaEV2ZW50SGFuZGxlclNjb3BlRVBO
M0pTQzlFeGVjU3RhdGVFUE5TMV8xNFNjb3BlQ2hhaW5Ob2RlRQorX19aTks3V2ViQ29yZTZMZW5n
dGgyMmRlY3JlbWVudENhbGN1bGF0ZWRSZWZFdgogX19aTks3V2ViQ29yZTZSZWdpb241cmVjdHNF
dgogX19aTks3V2ViQ29yZTZXaWRnZXQxNHBsYXRmb3JtV2lkZ2V0RXYKIF9fWk5LN1dlYkNvcmU2
V2lkZ2V0MjNjb252ZXJ0VG9Db250YWluaW5nVmlld0VSS05TXzdJbnRSZWN0RQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDg3ZmE3Mzc4MjcyNjgxN2Nl
MGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLmUwMzQ0M2Y2NDRmNWM5NjRiMDE3YTZlMTE2YThlZDli
ODcwNGU3OGQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTExNCw2ICsxMTQsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y3Nz
VGV4dCgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdvcnkp
IHsKKyAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpKTsKKyAg
ICAgICAgY2FzZSBDYWxjTGVuZ3RoOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
YWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwg
cm9vdFN0eWxlLCB6b29tKSkpOworICAgICAgICBjYXNlIENhbGNQZXJjZW50OgorICAgICAgICBj
YXNlIENhbGNQZXJjZW50TGVuZ3RoOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExl
bmd0aCBsZW5ndGggPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChtX3Zh
bHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTGVuZ3RoKGxlbmd0aCkpOworICAgICAgICAg
ICAgfQorICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0
aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKKyAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVz
c2lvbk5vZGUuIENhbGNQZXJjZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgor
ICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgorICAgICAgICBjYXNlIENhbGNPdGhlcjoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkgewpAQCAtMjA4LDYgKzIz
MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBj
b25zdAorICAgIHsKKyAgICAgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdChtX2xl
ZnRTaWRlLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlm
ICghbGVmdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBPd25QdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPiByaWdodChtX3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJv
b3RTdHlsZSwgem9vbSkpOworICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5h
cnlPcGVyYXRpb24obGVmdC5yZWxlYXNlKCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVyYXRvcikp
OworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgCiAgICAg
ewogICAgICAgICByZXR1cm4gZXZhbHVhdGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUoKSwgbV9y
aWdodFNpZGUtPmRvdWJsZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmgKaW5kZXggN2MzNjY3MTI1YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMzNDBmMy4u
YWM5YmU0NmQzM2FkYTMyOTljOTE1ZmQzNGQzZDhjNjA0NTgzODVjNSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENTU1BhcnNlclZhbHVlTGlzdDsKIGNsYXNzIENTU1ZhbHVlTGlzdDsK
IGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgQ2FsY1ZhbHVlOworY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZTsKIGNsYXNzIENhbGNFeHByZXNzaW9uTm9kZTsKIAogZW51bSBDYWxjdWxhdGlvbkNhdGVn
b3J5IHsKQEAgLTU4LDggKzU4LDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKIGNsYXNz
IENTU0NhbGNFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHByZXNz
aW9uTm9kZT4gewogcHVibGljOgogICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9u
Tm9kZSgpID0gMDsgIAorICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc093
blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCiAgICAg
dmlydHVhbCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3Vi
bGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRT
aXplID0gZmFsc2UpIGNvbnN0ID0gMDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHByb3RlY3Rl
ZDoKIGNsYXNzIENTU0NhbGNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5h
bWUsIENTU1BhcnNlclZhbHVlTGlzdCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY3VsYXRpb25W
YWx1ZSopOwogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiB0b0NhbGNWYWx1ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0g
MS4wKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0
ZShtX2V4cHJlc3Npb24tPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20pLCBtX25v
bk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRpb25SYW5n
ZUFsbCk7CisgICAgfQogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7
IHJldHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0KICAgICBib29sIGlzSW50KCkgY29u
c3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIoKTsgfSAgICAKICAgICBkb3VibGUg
ZG91YmxlVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDFkZGZiNzk5YzQ3MWNlNjE2MjM3NTMwNmM0NzAyMzk2ODNjNjIwNTMuLjlkMjEz
ZGNkZDE0OWI0MGRmZjgxYjBmZDhlOGU0MmQ4NzQwMjczYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgICAg
IEFTU0VSVChpc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7CiAgICAgICAgICAgICBtX3ZhbHVl
Lm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDYWxjdWxhdGVkOgogICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAgICBjYXNlIFVuZGVm
aW5lZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCBiMjUxNmNkOTk3NTEwZjI3YzFm
ZjA3NzM0ZGUwOGRkODM2Y2I0ZTY0Li5hNzUwODNjNThkZDIxMWRiNjM2YzVlYTNjMmE2MWJhMzBh
ZTdiY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgog
CiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0
aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTRmxleFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpA
QCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxl
Y3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNW
YWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2Vs
ZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDVj
YjY5NDRiMGY3OTI4MzQxZmI2YWFhYjYxNDQ1ZGFjNDNiOTRjYjQuLjAzMDdiOTVkNmJmYzFiODkx
MWIxMmMyNWZlNWY1NTI5OTg1YjA2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAj
aW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAi
Q291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUg
IkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9y
LmgiCkBAIC0yNTQ3LDEyICsyNTQ5LDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3Ro
KENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0CiAgICAg
cmV0dXJuIGw7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEpCitMZW5ndGggQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllcikKIHsKICAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCBmYWxzZSwgbXVsdGlwbGllcik7CiB9CiAKLXN0YXRpYyBMZW5ndGgg
Y29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyID0gMSkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIGNv
bnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVs
dGlwbGllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlM2M3
MDRkMzkyOTBmZmFiNDkzMDIzYWVhNGY3Y2QzYjlhMzAxMDBhLi4wOTlhOWE3M2U5NDU5MmU5NGU4
YmQ5ODIwMDc4ODIwZDQ2MTEwYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgKQEAgLTM2Miw2ICszNjIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9S
ZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZTsgfQogICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsgfQogCisgICAgc3RhdGlj
IExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHls
ZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CisgICAg
c3RhdGljIExlbmd0aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJl
bmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAx
KTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFp
bGFibGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
aW5kZXggYjllMzg1ODFhZGFkOGIxOTY0OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uNTc0MTNmYmZl
YjFhODg5NzlhMjQzN2Y1YjYwM2NkN2E0YjU5ZGE0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDQzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGlt
aXRzPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBs
ZWZ0ID0gbV9sZWZ0U2lkZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0g
bV9yaWdodFNpZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3Ip
IHsKKyAgICBjYXNlIENhbGNBZGQ6CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAg
Y2FzZSBDYWxjU3VidHJhY3Q6CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2Fz
ZSBDYWxjTXVsdGlwbHk6CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBD
YWxjRGl2aWRlOgorICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQg
LyByaWdodDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxD
YWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoUGFzc093blB0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFu
Z2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWxjdWxhdGlvblZhbHVlKHZhbHVlLCBy
YW5nZSkpOworfQorCitmbG9hdCBDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhW
YWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhW
YWx1ZSk7CisgICAgLy8gRklYTUUgY2FsYyBodHRwczovL3dlYmtpdC5vcmcvYi84MDQxMSA6IHJl
c3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBpcyBhIGRpdmlzaW9uIAorICAgIC8vIGJ5IHplcm8gd2hp
Y2ggaXNuJ3QgZm91bmQgYXQgcGFyc2UgdGltZS4gCisgICAgaWYgKGlzbmFuKHJlc3VsdCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lzTm9uTmVnYXRpdmUgJiYgcmVzdWx0IDwg
MCA/IDAgOiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1ZWU4MGY5
ZjQxZjkwNzg3ZjhhNWI4OWUzODJhLi5jNTU4NDU1NDIxMTBhNzc1ZjMyYzg3ODdmOWY2OTk5OTFk
OTNlNTVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBA
IC01MCw2ICs1MCw4MCBAQCBlbnVtIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAg
ICAgQ2FsY3VsYXRpb25SYW5nZUFsbCwKICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUK
IH07CisgICAgICAgIAorY2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5DYWxjRXhwcmVzc2lvbk5vZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAK
K2NsYXNzIENhbGN1bGF0aW9uVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZh
bHVlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4g
Y3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25Q
ZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkg
Y29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIENhbGN1bGF0aW9uVmFsdWUoUGFzc093blB0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2Ug
cmFuZ2UpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX2lzTm9uTmVnYXRp
dmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV92YWx1ZTsKKyAgICBib29sIG1f
aXNOb25OZWdhdGl2ZTsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uTnVtYmVyIDogcHVibGlj
IENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Np
b25OdW1iZXIoZmxvYXQgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3QgCisgICAgewor
ICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0
IG1fdmFsdWU7Cit9OworCitjbGFzcyBDYWxjRXhwcmVzc2lvbkxlbmd0aCA6IHB1YmxpYyBDYWxj
RXhwcmVzc2lvbk5vZGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGNFeHByZXNzaW9uTGVu
Z3RoKExlbmd0aCBsZW5ndGgpCisgICAgICAgIDogbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsK
KyAgICB9CisgICAgCitwcml2YXRlOgorICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK2NsYXNz
IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9k
ZSB7CitwdWJsaWM6CisgICAgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oUGFzc093blB0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3ApCisgICAgICAgIDogbV9sZWZ0U2lkZShs
ZWZ0U2lkZSkKKyAgICAgICAgLCBtX3JpZ2h0U2lkZShyaWdodFNpZGUpCisgICAgICAgICwgbV9v
cGVyYXRvcihvcCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShm
bG9hdCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4g
bV9sZWZ0U2lkZTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsK
KyAgICBDYWxjT3BlcmF0b3IgbV9vcGVyYXRvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggYTZiYzAxOTM5YzA1MGMyZTFm
MmMxZTU4NzQwNTZlNDhjNzhmYmM5ZS4uZDBjZmQzMDgwNjNiMTU0MGQ1NzhjNTcwYjJiNjNhZmM1
OGViMGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAKKyNpbmNsdWRlICJD
YWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDgs
NiArMTQ5LDg1IEBAIFBhc3NPd25BcnJheVB0cjxMZW5ndGg+IG5ld0xlbmd0aEFycmF5KGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIAogICAgIHJldHVybiByLnJlbGVhc2UoKTsKIH0K
KyAgICAgICAgCitjbGFzcyBDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwIHsKK3B1YmxpYzoKKyAg
ICBDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwKCkgCisgICAgICAgIDogbV9pbmRleCgxKSAKKyAg
ICB7CisgICAgfQorICAgIAorICAgIGludCBpbnNlcnQoUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZh
bHVlPiBjYWxjVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9pbmRleCk7CisgICAgICAg
IHdoaWxlIChtX21hcC5jb250YWlucyhtX2luZGV4KSkKKyAgICAgICAgICAgIG1faW5kZXgrKzsK
KyAgICAgICAgCisgICAgICAgIG1fbWFwLnNldChtX2luZGV4LCBjYWxjVmFsdWUpOyAgICAgICAK
KyAgICAgICAgCisgICAgICAgIHJldHVybiBtX2luZGV4OworICAgIH0KKworICAgIHZvaWQgcmVt
b3ZlKGludCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21hcC5jb250YWlucyhpbmRl
eCkpOworICAgICAgICBtX21hcC5yZW1vdmUoaW5kZXgpOworICAgIH0KKyAgICAKKyAgICBQYXNz
UmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IGdldChpbnQgaW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmdldChp
bmRleCk7CisgICAgfQorICAgIAorcHJpdmF0ZTogICAgICAgIAorICAgIGludCBtX2luZGV4Owor
ICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gPiBtX21hcDsKK307Cisg
ICAgCitzdGF0aWMgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCYgY2FsY0hhbmRsZXMoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCwgaGFuZGxl
TWFwLCAoKSk7CisgICAgcmV0dXJuIGhhbmRsZU1hcDsKK30KKworTGVuZ3RoOjpMZW5ndGgoUGFz
c1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjKQorICAgIDogbV9xdWlyayhmYWxzZSkKKyAg
ICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAgICwgbV9pc0Zsb2F0KGZhbHNlKQoreworICAgIG1f
aW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLmluc2VydChjYWxjKTsKK30KKyAgICAKK1Bhc3NSZWZQ
dHI8Q2FsY3VsYXRpb25WYWx1ZT4gTGVuZ3RoOjpjYWxjdWxhdGlvblZhbHVlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIHJldHVybiBjYWxjSGFuZGxlcygpLmdl
dChjYWxjdWxhdGlvbkhhbmRsZSgpKTsKK30KKyAgICAKK3ZvaWQgTGVuZ3RoOjppbmNyZW1lbnRD
YWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
IGNhbGN1bGF0aW9uVmFsdWUoKS0+cmVmKCk7Cit9CisKK3ZvaWQgTGVuZ3RoOjpkZWNyZW1lbnRD
YWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
IFJlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3VsYXRpb25WYWx1ZSgp
OworICAgIGlmIChjYWxjTGVuZ3RoLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgY2FsY0hhbmRsZXMo
KS5yZW1vdmUoY2FsY3VsYXRpb25IYW5kbGUoKSk7CisgICAgY2FsY0xlbmd0aC0+ZGVyZWYoKTsK
K30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1
ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIGZsb2F0IHJlc3Vs
dCA9IGNhbGN1bGF0aW9uVmFsdWUoKS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChpc25h
bihyZXN1bHQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiBj
bGFzcyBTYW1lU2l6ZUFzTGVuZ3RoIHsKICAgICBpbnQzMl90IHZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguaAppbmRleCA1M2IwMjYwYzIwN2IwNzgyODk1ZWYzNzdjODRjZjYxNjQ3NTc0OTdl
Li4wMDIzY2Y0YjdiMDJmMDA4OTZlNWI4NmVmY2QwZDQ1ODk1ZjZmM2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAKQEAgLTM0LDggKzM1LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdmZmZm
ZmY7IC8vIG1heCB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiBjb25zdCBpbnQgaW50TWluRm9yTGVu
Z3RoID0gKC0weDdmZmZmZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKIAot
ZW51bSBMZW5ndGhUeXBlIHsgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVkLCBJbnRyaW5z
aWMsIE1pbkludHJpbnNpYywgVW5kZWZpbmVkIH07Ci0KK2VudW0gTGVuZ3RoVHlwZSB7IEF1dG8s
IFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIENhbGN1
bGF0ZWQsIFVuZGVmaW5lZCB9OworIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsgICAgCisgICAg
CiBzdHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTY1LDExICs2OCwzNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih2KTsgICAgCiAgICAgfQogCisgICAgZXhwbGljaXQgTGVuZ3RoKFBhc3NS
ZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4pOworCisgICAgTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICB9CisgICAg
CisgICAgTGVuZ3RoJiBvcGVyYXRvcj0oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAgeworICAg
ICAgICBpbml0RnJvbUxlbmd0aChsZW5ndGgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIAorICAgIH5MZW5ndGgoKQorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgp
KQorICAgICAgICAgICAgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0gIAorICAgIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIChtX3R5
cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyaykgJiYgKGlzVW5kZWZpbmVk
KCkgfHwgKGdldEZsb2F0VmFsdWUoKSA9PSBvLmdldEZsb2F0VmFsdWUoKSkpOyB9CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
KTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBvcGVyYXRvcio9KGZsb2F0IHYpCi0gICAgeyAgICAg
ICAgCisgICAgeyAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1faXNGbG9hdCkKICAgICAgICAgICAgIG1f
ZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2Zsb2F0VmFsdWUgKiB2KTsKICAgICAg
ICAgZWxzZSAgICAgICAgCkBAIC04MCw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIAogICAgIGlu
dCB2YWx1ZSgpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdldEludFZhbHVlKCk7CiAgICAgfQogCkBAIC04OSw2
ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7CiAgICAg
fQogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjdWxhdGlvblZhbHVlKCkg
Y29uc3Q7CisKICAgICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxMZW5ndGhUeXBlPihtX3R5cGUpOyB9CiAgICAgYm9vbCBxdWlyaygpIGNvbnN0IHsgcmV0dXJu
IG1fcXVpcms7IH0KIApAQCAtMTA2LDYgKzEzOSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFZhbHVlKGludCB2YWx1ZSkKICAgICB7CisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgc2V0VmFsdWUoRml4ZWQsIHZhbHVlKTsKICAgICB9CiAKQEAgLTEy
MSwxMyArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZp
eGVkKTsKICAgICB9CiAKLSAgICAvLyBOb3RlOiBNYXkgb25seSBiZSBjYWxsZWQgZm9yIEZpeGVk
LCBQZXJjZW50IGFuZCBBdXRvIGxlbmd0aHMuCi0gICAgLy8gT3RoZXIgdHlwZXMgd2lsbCBBU1NF
UlQgaW4gb3JkZXIgdG8gY2F0Y2ggaW52YWxpZCBsZW5ndGggY2FsY3VsYXRpb25zLgogICAgIGlu
dCBjYWxjVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IEZpeGVkOgogICAgICAgICAgICAgY2FzZSBQZXJjZW50OgorICAgICAgICAgICAgY2FzZSBDYWxj
dWxhdGVkOgogICAgICAgICAgICAgICAgIHJldHVybiBjYWxjTWluVmFsdWUobWF4VmFsdWUsIHJv
dW5kUGVyY2VudGFnZXMpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAg
IHJldHVybiBtYXhWYWx1ZTsKQEAgLTE1Miw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2Vu
dCgpIC8gMTAwLjBmKSk7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRy
YSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRl
bCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQo
KSAvIDEwMC4wZikpOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOwogICAgICAgICAgICAg
Y2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZToKQEAgLTE3NCw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZik7CiAg
ICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihtYXhWYWx1ZSk7CisgICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7ICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAgICAgICAgIGNhc2UgSW50
cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBAIC0xODYsMjEgKzIyNiwz
MiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBVbmRlZmluZWQ7IH0KKworICAgIC8vIEZJWE1FIGNhbGM6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDM1Ny4gQSBjYWxjdWxhdGVkIExlbmd0
aCAKKyAgICAvLyBhbHdheXMgY29udGFpbnMgYSBwZXJjZW50YWdlLCBhbmQgd2l0aG91dCBhIG1h
eFZhbHVlIHBhc3NlZCB0byB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBpdCdzIGltcG9zc2libGUg
dG8gZGV0ZXJtaW5lIHRoZSBzaWduIG9yIHplcm8tbmVzcy4gV2UgYXNzdW1lIGFsbCBjYWxjIHZh
bHVlcworICAgIC8vIGFyZSBwb3NpdGl2ZSBhbmQgbm9uLXplcm8gZm9yIG5vdy4gICAgCiAgICAg
Ym9vbCBpc1plcm8oKSBjb25zdCAKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyAhbV9mbG9hdFZhbHVlIDogIW1faW50VmFs
dWU7CisgICAgICAgIHJldHVybiBpc0NhbGN1bGF0ZWQoKSA/IGZhbHNlIDogbV9pc0Zsb2F0ID8g
IW1fZmxvYXRWYWx1ZSA6ICFtX2ludFZhbHVlOworICAgIH0KKyAgICBib29sIGlzUG9zaXRpdmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGlz
Q2FsY3VsYXRlZCgpID8gdHJ1ZSA6IGdldEZsb2F0VmFsdWUoKSA+IDA7CisgICAgfQorICAgIGJv
b2wgaXNOZWdhdGl2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQo
KSA/IGZhbHNlIDogaXNDYWxjdWxhdGVkKCkgPyBmYWxzZSA6IGdldEZsb2F0VmFsdWUoKSA8IDA7
CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNQb3NpdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGlzVW5k
ZWZpbmVkKCkgPyBmYWxzZSA6IGdldEZsb2F0VmFsdWUoKSA+IDA7IH0KLSAgICBib29sIGlzTmVn
YXRpdmUoKSBjb25zdCB7IHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZh
bHVlKCkgPCAwOyB9Ci0KICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBBdXRvOyB9CiAgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IFJlbGF0aXZlOyB9Ci0gICAgYm9vbCBpc1BlcmNlbnQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gUGVyY2VudDsgfQorICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KICAgICBib29sIGlzRml4ZWQo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQ7IH0KICAgICBib29sIGlzSW50cmluc2lj
T3JBdXRvKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dG8gfHwgdHlwZSgpID09IE1pbklu
dHJpbnNpYyB8fCB0eXBlKCkgPT0gSW50cmluc2ljOyB9Ci0gICAgYm9vbCBpc1NwZWNpZmllZCgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaXhlZCB8fCB0eXBlKCkgPT0gUGVyY2VudDsgfQor
ICAgIGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwg
dHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KKyAgICBib29sIGlz
Q2FsY3VsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAKICAg
ICBMZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0
CiAgICAgewpAQCAtMjM5LDYgKzI5MCwzMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9p
c0Zsb2F0ID8gbV9mbG9hdFZhbHVlIDogbV9pbnRWYWx1ZTsKICAgICB9CiAKKyAgICB2b2lkIGlu
aXRGcm9tTGVuZ3RoKGNvbnN0IExlbmd0aCAmbGVuZ3RoKSAKKyAgICB7CisgICAgICAgIG1fcXVp
cmsgPSBsZW5ndGgubV9xdWlyazsKKyAgICAgICAgbV90eXBlID0gbGVuZ3RoLm1fdHlwZTsKKyAg
ICAgICAgbV9pc0Zsb2F0ID0gbGVuZ3RoLm1faXNGbG9hdDsKKyAgICAgICAgCisgICAgICAgIGlm
IChtX2lzRmxvYXQpCisgICAgICAgICAgICBtX2Zsb2F0VmFsdWUgPSBsZW5ndGgubV9mbG9hdFZh
bHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2ludFZhbHVlID0gbGVuZ3RoLm1faW50
VmFsdWU7CisgICAgICAgIAorICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCisgICAgICAgICAg
ICBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7CisgICAgfQorICAgIAorICAgIGZsb2F0IG5vbk5h
bkNhbGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGlv
bkhhbmRsZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOwor
ICAgICAgICByZXR1cm4gZ2V0SW50VmFsdWUoKTsKKyAgICB9CisgICAgdm9pZCBpbmNyZW1lbnRD
YWxjdWxhdGVkUmVmKCkgY29uc3Q7CisgICAgdm9pZCBkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKCkg
Y29uc3Q7ICAgIAorICAgIAogICAgIHVuaW9uIHsKICAgICAgICAgaW50IG1faW50VmFsdWU7CiAg
ICAgICAgIGZsb2F0IG1fZmxvYXRWYWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzkwYTk2ZTE2OGYyZmVkZjI4N2Vl
ZGM4ZDkwZDdiNGMwNWNmOTRmLi4xZDQ4M2ZmZjhkMDM5MzZkMDg1NWNiMTMyYmFmYzFhYjI5Mzhi
YmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDMtMDYgIE1pa2UgTGF3dGhlciAgPG1p
a2VsYXd0aGVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBDU1MzIGNhbGM6IG1peGVkIGFic29s
dXRlL3BlcmNlbnRhZ2VzIHdvcmsgZm9yIHdpZHRoLCBoZWlnaHQsIG1hcmdpbiBhbmQgcGFkZGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk2MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMv
Y2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzczMvY2FsYy9wYWRkaW5nLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4
dDoKKwogMjAxMi0wMy0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgdGhlIG5vLWxvbmdlci1uZWVkZWQgJ0NQVScgYW5kICdHUFUnIG1vZGlm
aWVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQKaW5kZXggYWU3
NTUzYzg3Y2RkNmU3ZGYxZjUyMjViZTcyYmM1ZjA3ZGM5MjkzYi4uNjM4NzQwNGE1MzAxMmMyNTAx
MzMwZTg2Njc4Y2ZlNDVkMzlmZmE3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L21hcmdpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1l
eHBlY3RlZC50eHQKQEAgLTE4LDI2ICsxOCwyNiBAQCBQQVNTIGNvbXB1dGVkTWFyZ2luTGVmdCgi
c2ltcGxlLWJvdHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJzaW1wbGUt
Ym90dG9tIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgic2ltcGxlLWJvdHRv
bSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJzaW1wbGUtYm90dG9tIikg
aXMgIjI1cHgiCi1GQUlMIGNvbXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1hbGwiKSBzaG91bGQg
YmUgMjVweC4gV2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtYWxsIikg
c2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNl
bnQtYWxsIikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luQm90
dG9tKCJwZXJjZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgotRkFJTCBjb21wdXRl
ZE1hcmdpbkxlZnQoInBlcmNlbnQtbGVmdCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFT
UyBjb21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1
dGVkTWFyZ2luVG9wKCJwZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdp
blJpZ2h0KCJwZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRv
bSgicGVyY2VudC1hbGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJj
ZW50LWxlZnQiKSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtbGVm
dCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtbGVmdCIpIGlz
ICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4
IgogUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtcmlnaHQiKSBpcyAiMHB4IgogUEFT
UyBjb21wdXRlZE1hcmdpblRvcCgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCi1GQUlMIGNvbXB1
dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtcmlnaHQiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4K
K1BBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1yaWdodCIpIGlzICIyNXB4IgogUEFT
UyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCiBQQVNTIGNv
bXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC10b3AiKSBpcyAiMHB4IgotRkFJTCBjb21wdXRlZE1h
cmdpblRvcCgicGVyY2VudC10b3AiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29t
cHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtdG9wIikgaXMgIjI1cHgiCiBQQVNTIGNvbXB1dGVkTWFy
Z2luUmlnaHQoInBlcmNlbnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0
b20oInBlcmNlbnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJj
ZW50LWJvdHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LWJv
dHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtYm90dG9t
IikgaXMgIjBweCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYm90dG9tIikg
c2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJj
ZW50LWJvdHRvbSIpIGlzICIyNXB4IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGlu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50
eHQKaW5kZXggODNlZTI2N2I5MGVlOGFkZDY2MDQxYjVjZWY4YWI4OWFiODNiN2ViYy4uMGI4ZTNh
NzQ0NDUyODcwODNjZGM1MmJiNjQ2ZWI1ZDIwNTc3OWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMv
Y2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxMiBAQCBUaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAogVGhpcyBl
bGVtZW50IHNob3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9PiBQQVNT
CiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdy
b25nIHdpZHRoLCB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVy
YWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1p
bnVzIDVweCkuID0+IFBBU1MKIAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRk
aW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgp
LiA9PiBGQUlMOiB3cm9uZyB3aWR0aAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBw
YWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1
cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcg
b2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+
IEZBSUw6IHdyb25nIHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBwYWRk
aW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgp
LiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlM
OiB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQ
QVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBp
eGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3
cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0
CmluZGV4IDViNDVkMmRjY2MwODAyYTMzNzEzOTc0YTYyNjg3YjM0ZGIzNTRiNWQuLjk3ZDZkM2Ez
YjZhZTMzZmZjNjRiY2NjNjQzYTgxODUyMTEyZmI0NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Nz
czMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCwxMCArMjAsMTAgQEAgY29u
dHJvbCA9PiBQQVNTCiAxMHB4KiAoNSAqIDIpID0+IFBBU1MKIDUwcHggKyAxMHB4ICogNSAob3Bl
cmF0aW9uIG9yZGVyKSA9PiBQQVNTCiAxMDAlLzIgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBB
U1MKLTEwMCUgKyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEg
ZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdp
ZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBi
dXQgd2FzIDI1NgotODAlIC0gNjBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpv
b209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0
ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAx
MDAsIGJ1dCB3YXMgMjU2Ci0zMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZB
SUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4y
IGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lk
dGggb2YgMTAwLCBidXQgd2FzIDI1NgotLTEwMHB4ICsgMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBw
eCkgPT4gRkFJTDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBA
em9vbT0xLjIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBl
Y3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2CisxMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAl
IGlzIDIwMHB4KSA9PiBQQVNTCis4MCUgLSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQ
QVNTCiszMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKy0xMDBweCAr
IDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDIwJSArIDMwJSAod2hlcmUgMTAw
JSBpcyAyMDBweCkgPT4gUEFTUwogODAlIC0gMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQ
QVNTCiAxMCUgKiA1ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130543</attachid>
            <date>2012-03-06 22:16:36 -0800</date>
            <delta_ts>2012-03-07 15:44:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79621-20120307171633.patch</filename>
            <type>text/plain</type>
            <size>31868</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlODNjN2E0MTZjN2Q2
NjdmYWZlY2NmZmRkNjE2OWE1NDYxZmZkZi4uMGY5ODQ3OTg1MTY5OGNkZjZhNDcxY2I1MDg0NDAy
NGNjZWM4NjUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eUxlbmd0aCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVyeSBub3cgaGFu
ZGxlcyBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlCisgICAgICAgIGxlbmd0aCBleHByZXNzaW9u
cy4gQWxsIHByb3BlcnR5IGhhbmRsZXJzIHVzaW5nIHRoaXMgdGVtcGxhdGUgbm93IHdvcmsgd2l0
aAorICAgICAgICBtaXhlZCBleHByZXNzaW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBuZXcgZXhwcmVzc2lvbiBldmFsdWF0b3IgaW4gQ2FsY3VsYXRpb25WYWx1ZS5jcHAuIFRoaXMg
aXMgYmVjYXVzZQorICAgICAgICBMZW5ndGguW2NwcHxoXSAoaW4gcGxhdGZvcm0pIGNhbm5vdCBy
ZWZlciB0byBDU1NDYWxjdWxhdGlvblZhbHVlLltjcHB8aF0gKGluIGNzcykgCisgICAgICAgIGR1
ZSB0byBsYXllcmluZyByZXN0cmljdGlvbnMuCisKKyAgICAgICAgTGVuZ3RocyBjYW4gYmUgY29w
aWVkLCBhbmQgc28gdGhlIGV4cHJlc3Npb25zIGFyZSBzdG9yZWQgaW4gYSBoYXNobWFwLCBhbmQg
b25seSB0aGVpcgorICAgICAgICBpZHMgYXJlIGNvcGllZCBhbG9uZyB3aXRoIExlbmd0aC4gVGhl
IGV4cHJlc3Npb25zIGFyZSBSZWZDb3VudGVkLCBhbmQgd2lsbCBnZXQgCisgICAgICAgIGNsZWFu
ZWQgdXAgd2hlbiB0aGUgbGFzdCByZWZlcnJpbmcgTGVuZ3RoIGlzIGRlc3RydWN0ZWQuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OnRvQ2FsY1Zh
bHVlKToKKyAgICAgICAgKENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjp0b0NhbGNWYWx1ZSk6CisgICAgICAgIChDU1NDYWxj
QmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NDYWxjRXhwcmVzc2lvbk5vZGUpOgorICAg
ICAgICAoQ1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6dG9D
YWxjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUxlbmd0aDo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgor
ICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRp
b25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJh
dGlvbjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWxjdWxhdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25W
YWx1ZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaDoK
KyAgICAgICAgKENhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhw
cmVzc2lvbk5vZGU6On5DYWxjRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDYWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9u
VmFsdWU6OkNhbGN1bGF0aW9uVmFsdWUpOgorICAgICAgICAoQ2FsY0V4cHJlc3Npb25OdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OkNhbGNFeHByZXNzaW9u
TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTnVtYmVyOjpldmFsdWF0
ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWxjRXhwcmVzc2lvbkxlbmd0aDo6Q2FsY0V4cHJlc3Npb25MZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FsY0V4cHJlc3Npb25MZW5ndGg6OmV2YWx1YXRlKToKKyAgICAgICAgKENhbGNFeHBy
ZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9u
QmluYXJ5T3BlcmF0aW9uOjpDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoOjp+TGVuZ3RoKToKKyAgICAgICAgKENhbGN1bGF0aW9uVmFsdWVIYW5kbGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcDo6Q2FsY3Vs
YXRpb25WYWx1ZUhhbmRsZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVl
SGFuZGxlTWFwOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhh
bmRsZU1hcDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5k
bGVNYXA6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjSGFuZGxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1
bGF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkTWluVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjdWxhdGVkRmxvYXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmluY3JlbWVudENhbGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
TGVuZ3RoOjpkZWNyZW1lbnRDYWxjdWxhdGVkUmVmKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0
aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoK
KyAgICAgICAgKExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6Om9wZXJhdG9yKj0pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjp2YWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6Y2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY01pblZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY0Zsb2F0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVuZ3RoOjppc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1Bv
c2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNOZWdhdGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6OmlzUGVyY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OmlzU3BlY2lmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNDYWxjdWxhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aW5pdEZyb21MZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoOjpjYWxjdWxhdGlvbkhhbmRsZSk6CisKIDIwMTItMDMtMDYgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBj
cmFzaGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4MTdiOWFlZjA3NDdlMGEwOTIyMTcxYzBj
OWM1MjNkYzEzYWE2MWU4Li5iZjBjZjQyNTExNGVhMWYzZjFlOTdjZmNjNDA2Mjc4ZTg2YmQ1Mjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyMiw2ICsxNDIyLDcgQEAgX19aTks3V2ViQ29y
ZTZFZGl0b3I3Y2FuRWRpdEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjhjYW5QYXN0ZUV2CiBfX1pO
SzdXZWJDb3JlNkVkaXRvcjljYW5EZWxldGVFdgogX19aTks3V2ViQ29yZTZKU05vZGUyMXB1c2hF
dmVudEhhbmRsZXJTY29wZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFfMTRTY29wZUNoYWluTm9kZUUK
K19fWk5LN1dlYkNvcmU2TGVuZ3RoMjJkZWNyZW1lbnRDYWxjdWxhdGVkUmVmRXYKIF9fWk5LN1dl
YkNvcmU2UmVnaW9uNXJlY3RzRXYKIF9fWk5LN1dlYkNvcmU2V2lkZ2V0MTRwbGF0Zm9ybVdpZGdl
dEV2CiBfX1pOSzdXZWJDb3JlNldpZGdldDIzY29udmVydFRvQ29udGFpbmluZ1ZpZXdFUktOU183
SW50UmVjdEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRl
eCA4N2ZhNzM3ODI3MjY4MTdjZTBmMzJiYzA2MGJhZTJiOWFmY2RhOThiLi5lMDM0NDNmNjQ0ZjVj
OTY0YjAxN2E2ZTExNmE4ZWQ5Yjg3MDRlNzhkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0xMTQsNiArMTE0LDI4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmNzc1RleHQoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBjb25zdAorICAgIHsKKyAgICAgICAg
c3dpdGNoIChtX2NhdGVnb3J5KSB7CisgICAgICAgIGNhc2UgQ2FsY051bWJlcjoKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIobV92YWx1ZS0+Z2V0
RmxvYXRWYWx1ZSgpKSk7CisgICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHlsZSwgem9vbSkpKTsKKyAgICAgICAgY2FzZSBDYWxj
UGVyY2VudDoKKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudExlbmd0aDoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBMZW5ndGggbGVuZ3RoID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVy
dFRvRmxvYXRMZW5ndGgobV92YWx1ZS5nZXQoKSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChs
ZW5ndGgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxk
IGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCisgICAgICAg
IC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjUGVyY2VudE51bWJlciBtYWtlcyBubyBz
ZW5zZSBhcyBhIExlbmd0aC4KKyAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKKyAgICAg
ICAgY2FzZSBDYWxjT3RoZXI6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB2aXJ0dWFsIGRv
dWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fY2F0ZWdv
cnkpIHsKQEAgLTIwOCw2ICsyMzAsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIWRvdWJs
ZVZhbHVlKCk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgem9vbSkgY29uc3QKKyAgICB7CisgICAgICAgIE93blB0cjxDYWxjRXhwcmVz
c2lvbk5vZGU+IGxlZnQobV9sZWZ0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJvb3RTdHlsZSwg
em9vbSkpOworICAgICAgICBpZiAoIWxlZnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHQobV9yaWdodFNpZGUtPnRv
Q2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20pKTsKKyAgICAgICAgaWYgKCFyaWdodCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKGxlZnQucmVsZWFzZSgpLCByaWdodC5yZWxl
YXNlKCksIG1fb3BlcmF0b3IpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGRvdWJsZSBkb3VibGVW
YWx1ZSgpIGNvbnN0IAogICAgIHsKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKG1fbGVmdFNpZGUt
PmRvdWJsZVZhbHVlKCksIG1fcmlnaHRTaWRlLT5kb3VibGVWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IDdjMzY2NzEyNWI1ZDdiMTJlNTdlM2Zi
ZmJiZGNjMmY3MGJjMzQwZjMuLmFjOWJlNDZkMzNhZGEzMjk5YzkxNWZkMzRkM2Q4YzYwNDU4Mzg1
YzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NQYXJzZXJWYWx1ZUxpc3Q7CiBj
bGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIENhbGNWYWx1ZTsK
K2NsYXNzIENhbGN1bGF0aW9uVmFsdWU7CiBjbGFzcyBDYWxjRXhwcmVzc2lvbk5vZGU7CiAKIGVu
dW0gQ2FsY3VsYXRpb25DYXRlZ29yeSB7CkBAIC01OCw4ICs1OCw5IEBAIGVudW0gQ2FsY3VsYXRp
b25DYXRlZ29yeSB7CiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoKICAgICAKLSAgICB2aXJ0dWFs
IH5DU1NDYWxjRXhwcmVzc2lvbk5vZGUoKSA9IDA7ICAKKyAgICB2aXJ0dWFsIH5DU1NDYWxjRXhw
cmVzc2lvbk5vZGUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzWmVybygpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShS
ZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0gMS4wKSBj
b25zdCA9IDA7ICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVu
dFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwg
Ym9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25zdCA9IDA7CiAgICAgCkBAIC04MCw3
ICs4MSwxMiBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBDU1NDYWxjVmFsdWUgOiBwdWJsaWMgQ1NTVmFs
dWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4gY3JlYXRl
KENTU1BhcnNlclN0cmluZyBuYW1lLCBDU1NQYXJzZXJWYWx1ZUxpc3QqLCBDYWxjdWxhdGlvblBl
cm1pdHRlZFZhbHVlUmFuZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNWYWx1ZT4g
Y3JlYXRlKENhbGN1bGF0aW9uVmFsdWUqKTsKIAorICAgIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25W
YWx1ZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBDYWxj
dWxhdGlvblZhbHVlOjpjcmVhdGUobV9leHByZXNzaW9uLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9v
dFN0eWxlLCB6b29tKSwgbV9ub25OZWdhdGl2ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2
ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOworICAgIH0KICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5
IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5jYXRlZ29yeSgpOyB9CiAg
ICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbi0+aXNJbnRlZ2VyKCk7
IH0gICAgCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCAxZGRmYjc5OWM0NzFjZTYxNjIzNzUzMDZjNDcw
MjM5NjgzYzYyMDUzLi45ZDIxM2RjZGQxNDliNDBkZmY4MWIwZmQ4ZThlNDJkODc0MDI3M2M0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTI2Niw2ICsyNjYs
NyBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgTGVuZ3RoJiBs
ZW5ndGgpCiAgICAgICAgICAgICBBU1NFUlQoaXNmaW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOwog
ICAgICAgICAgICAgbV92YWx1ZS5udW0gPSBsZW5ndGgucGVyY2VudCgpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKICAgICAgICAgY2FzZSBSZWxhdGl2ZToK
ICAgICAgICAgY2FzZSBVbmRlZmluZWQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKaW5kZXgg
YjI1MTZjZDk5NzUxMGYyN2MxZmYwNzczNGRlMDhkZDgzNmNiNGU2NC4uYTc1MDgzYzU4ZGQyMTFk
YjYzNmM1ZWEzYzJhNjFiYTMwYWU3YmNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDU1NTdHls
ZUFwcGx5UHJvcGVydHkuaCIKIAogI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZsZXhWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTM4OSw2ICszOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGxlbmd0aCk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKKyAgICAgICAgICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3ND
YWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290
RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKSk7ICAg
ICAgICAgICAgCiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCA1Y2I2OTQ0YjBmNzkyODM0MWZiNmFhYWI2MTQ0NWRhYzQzYjk0Y2I0
Li4wMzA3Yjk1ZDZiZmMxYjg5MTFiMTJjMjVmZTVmNTUyOTk4NWIwNjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2Fs
Y3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCiAjaW5jbHVkZSAiQ291
bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCiAjaW5jbHVkZSAiQ1NTQm9yZGVy
SW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlUnVsZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgpAQCAtMjU0NywxMiArMjU0OSwxMiBAQCBzdGF0aWMgTGVu
Z3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJl
bmRlclN0eWxlKiBzdAogICAgIHJldHVybiBsOwogfQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRU
b0ludExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxl
KiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxKQor
TGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0ludExlbmd0aChDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJv
b3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb0xlbmd0
aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgZmFsc2UsIG11bHRpcGxpZXIpOwog
fQogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEpCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29u
dmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
KQogewogICAgIHJldHVybiBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlLCBy
b290U3R5bGUsIHRydWUsIG11bHRpcGxpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmgKaW5kZXggZTNjNzA0ZDM5MjkwZmZhYjQ5MzAyM2FlYTRmN2NkM2I5YTMwMTAwYS4u
MDk5YTlhNzNlOTQ1OTJlOTRlOGJkOTgyMDA3ODgyMGQ0NjExMGIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0zNjIsNiArMzYyLDkgQEAgcHVibGljOgogICAgIGJv
b2wgYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVBy
b3BlcnR5VG9SZWd1bGFyU3R5bGU7IH0KICAgICBib29sIGFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRM
aW5rU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5
bGU7IH0KIAorICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2
ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciA9IDEpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoQ1NT
UHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyID0gMSk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxl
KiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGI5ZTM4NTgxYWRhZDhiMTk2NDhhZGNhZWQwZTdmNDM5
NTM1MWY2MjcuLjU3NDEzZmJmZWIxYTg4OTc5YTI0MzdmNWI2MDNjZDdhNGI1OWRhNGEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMSw2ICsz
MSw0MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbGN1bGF0aW9uVmFsdWUu
aCIKIAorI2luY2x1ZGUgPGxpbWl0cz4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitmbG9hdCBD
YWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbjo6ZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNv
bnN0Cit7CisgICAgZmxvYXQgbGVmdCA9IG1fbGVmdFNpZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsK
KyAgICBmbG9hdCByaWdodCA9IG1fcmlnaHRTaWRlLT5ldmFsdWF0ZShtYXhWYWx1ZSk7CisgICAg
c3dpdGNoIChtX29wZXJhdG9yKSB7CisgICAgY2FzZSBDYWxjQWRkOgorICAgICAgICByZXR1cm4g
bGVmdCArIHJpZ2h0OworICAgIGNhc2UgQ2FsY1N1YnRyYWN0OgorICAgICAgICByZXR1cm4gbGVm
dCAtIHJpZ2h0OworICAgIGNhc2UgQ2FsY011bHRpcGx5OgorICAgICAgICByZXR1cm4gbGVmdCAq
IHJpZ2h0OworICAgIGNhc2UgQ2FsY0RpdmlkZToKKyAgICAgICAgaWYgKCFyaWdodCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7Cisg
ICAgICAgIHJldHVybiBsZWZ0IC8gcmlnaHQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7
Cit9CisKK1Bhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3Jl
YXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJt
aXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FsY3Vs
YXRpb25WYWx1ZSh2YWx1ZSwgcmFuZ2UpKTsKK30KKworZmxvYXQgQ2FsY3VsYXRpb25WYWx1ZTo6
ZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgZmxvYXQgcmVzdWx0ID0gbV92
YWx1ZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIC8vIEZJWE1FIGNhbGMgaHR0cHM6Ly93ZWJr
aXQub3JnL2IvODA0MTEgOiByZXN1bHQgaXMgTmFOIHdoZW4gdGhlcmUgaXMgYSBkaXZpc2lvbiAK
KyAgICAvLyBieSB6ZXJvIHdoaWNoIGlzbid0IGZvdW5kIGF0IHBhcnNlIHRpbWUuIAorICAgIGlm
IChpc25hbihyZXN1bHQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9pc05vbk5l
Z2F0aXZlICYmIHJlc3VsdCA8IDAgPyAwIDogcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKaW5kZXgg
ZDg5NDQ1ZTgwNmNiNWVlODBmOWY0MWY5MDc4N2Y4YTViODllMzgyYS4uYzU1ODQ1NTQyMTEwYTc3
NWYzMmM4Nzg3ZjlmNjk5OTkxZDkzZTU1YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nh
bGN1bGF0aW9uVmFsdWUuaApAQCAtNTAsNiArNTAsODAgQEAgZW51bSBDYWxjdWxhdGlvblBlcm1p
dHRlZFZhbHVlUmFuZ2UgewogICAgIENhbGN1bGF0aW9uUmFuZ2VBbGwsCiAgICAgQ2FsY3VsYXRp
b25SYW5nZU5vbk5lZ2F0aXZlCiB9OworICAgICAgICAKK2NsYXNzIENhbGNFeHByZXNzaW9uTm9k
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FsY0V4cHJlc3Npb25Ob2RlKCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNv
bnN0ID0gMDsKK307CisgICAgCitjbGFzcyBDYWxjdWxhdGlvblZhbHVlIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FsY3VsYXRpb25WYWx1ZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZShQYXNzT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4g
dmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgZmxvYXQgZXZhbHVh
dGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBDYWxjdWxhdGlv
blZhbHVlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25Q
ZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAg
ICAgICwgbV9pc05vbk5lZ2F0aXZlKHJhbmdlID09IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IG1f
dmFsdWU7CisgICAgYm9vbCBtX2lzTm9uTmVnYXRpdmU7Cit9OworCitjbGFzcyBDYWxjRXhwcmVz
c2lvbk51bWJlciA6IHB1YmxpYyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVibGljOgorICAgIGV4
cGxpY2l0IENhbGNFeHByZXNzaW9uTnVtYmVyKGZsb2F0IHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUodmFsdWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgZmxvYXQgZXZhbHVhdGUoZmxv
YXQpIGNvbnN0IAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworfTsKKworY2xhc3MgQ2FsY0V4cHJlc3Npb25M
ZW5ndGggOiBwdWJsaWMgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBDYWxjRXhwcmVzc2lvbkxlbmd0aChMZW5ndGggbGVuZ3RoKQorICAgICAgICA6IG1fbGVuZ3Ro
KGxlbmd0aCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9h
dCBtYXhWYWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xlbmd0aC5jYWxjRmxv
YXRWYWx1ZShtYXhWYWx1ZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBMZW5ndGggbV9s
ZW5ndGg7Cit9OworCitjbGFzcyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbiA6IHB1Ymxp
YyBDYWxjRXhwcmVzc2lvbk5vZGUgeworcHVibGljOgorICAgIENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc093
blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wKQorICAg
ICAgICA6IG1fbGVmdFNpZGUobGVmdFNpZGUpCisgICAgICAgICwgbV9yaWdodFNpZGUocmlnaHRT
aWRlKQorICAgICAgICAsIG1fb3BlcmF0b3Iob3ApCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgZmxvYXQgZXZhbHVhdGUoZmxvYXQpIGNvbnN0OworCitwcml2YXRlOgorICAgIE93blB0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+IG1fbGVmdFNpZGU7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gbV9yaWdodFNpZGU7CisgICAgQ2FsY09wZXJhdG9yIG1fb3BlcmF0b3I7Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4
IGE2YmMwMTkzOWMwNTBjMmUxZjJjMWU1ODc0MDU2ZTQ4Yzc4ZmJjOWUuLjUxNjZjMGQxNjhhNDk5
N2Q3NWI4NzRkY2JkZTZiOWM0YzUxYmU4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogCisjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgpAQCAtMTQ4LDYgKzE0OSw4OCBAQCBQYXNzT3duQXJyYXlQdHI8TGVuZ3RoPiBu
ZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAKICAgICByZXR1
cm4gci5yZWxlYXNlKCk7CiB9CisgICAgICAgIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZUhhbmRs
ZU1hcCB7CitwdWJsaWM6CisgICAgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCgpIAorICAgICAg
ICA6IG1faW5kZXgoMSkgCisgICAgeworICAgIH0KKyAgICAKKyAgICBpbnQgaW5zZXJ0KFBhc3NS
ZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY1ZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1faW5kZXgpOworICAgICAgICAvLyBGSVhNRSBjYWxjKCk6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ4OQorICAgICAgICAvLyBUaGlzIG1vbm90b25pY2FsbHkg
aW5jcmVhc2luZyBoYW5kbGUgZ2VuZXJhdGlvbiBzY2hlbWUgaXMgcG90ZW50aWFsbHkgd2FzdGVm
dWwKKyAgICAgICAgLy8gb2YgdGhlIGhhbmRsZSBzcGFjZS4gQ29uc2lkZXIgcmV1c2luZyBlbXB0
eSBoYW5kbGVzLgorICAgICAgICB3aGlsZSAobV9tYXAuY29udGFpbnMobV9pbmRleCkpCisgICAg
ICAgICAgICBtX2luZGV4Kys7CisgICAgICAgIAorICAgICAgICBtX21hcC5zZXQobV9pbmRleCwg
Y2FsY1ZhbHVlKTsgICAgICAgCisgICAgICAgIAorICAgICAgICByZXR1cm4gbV9pbmRleDsKKyAg
ICB9CisKKyAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGluZGV4KTsKKyAg
ICB9CisgICAgCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBnZXQoaW50IGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbWFwLmNvbnRhaW5zKGluZGV4KSk7CisgICAgICAg
IHJldHVybiBtX21hcC5nZXQoaW5kZXgpOworICAgIH0KKyAgICAKK3ByaXZhdGU6ICAgICAgICAK
KyAgICBpbnQgbV9pbmRleDsKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPENhbGN1bGF0aW9uVmFs
dWU+ID4gbV9tYXA7Cit9OworICAgIAorc3RhdGljIENhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXAm
IGNhbGNIYW5kbGVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENhbGN1bGF0aW9uVmFs
dWVIYW5kbGVNYXAsIGhhbmRsZU1hcCwgKCkpOworICAgIHJldHVybiBoYW5kbGVNYXA7Cit9CisK
K0xlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsYykKKyAgICA6
IG1fcXVpcmsoZmFsc2UpCisgICAgLCBtX3R5cGUoQ2FsY3VsYXRlZCkKKyAgICAsIG1faXNGbG9h
dChmYWxzZSkKK3sKKyAgICBtX2ludFZhbHVlID0gY2FsY0hhbmRsZXMoKS5pbnNlcnQoY2FsYyk7
Cit9CisgICAgCitQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IExlbmd0aDo6Y2FsY3VsYXRp
b25WYWx1ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICByZXR1
cm4gY2FsY0hhbmRsZXMoKS5nZXQoY2FsY3VsYXRpb25IYW5kbGUoKSk7Cit9CisgICAgCit2b2lk
IExlbmd0aDo6aW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
Q2FsY3VsYXRlZCgpKTsKKyAgICBjYWxjdWxhdGlvblZhbHVlKCktPnJlZigpOworfQorCit2b2lk
IExlbmd0aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
Q2FsY3VsYXRlZCgpKTsKKyAgICBSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY0xlbmd0aCA9
IGNhbGN1bGF0aW9uVmFsdWUoKTsKKyAgICBpZiAoY2FsY0xlbmd0aC0+aGFzT25lUmVmKCkpCisg
ICAgICAgIGNhbGNIYW5kbGVzKCkucmVtb3ZlKGNhbGN1bGF0aW9uSGFuZGxlKCkpOworICAgIGNh
bGNMZW5ndGgtPmRlcmVmKCk7Cit9ICAgIAorCitmbG9hdCBMZW5ndGg6Om5vbk5hbkNhbGN1bGF0
ZWRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgp
KTsKKyAgICBmbG9hdCByZXN1bHQgPSBjYWxjdWxhdGlvblZhbHVlKCktPmV2YWx1YXRlKG1heFZh
bHVlKTsKKyAgICBpZiAoaXNuYW4ocmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KIAogY2xhc3MgU2FtZVNpemVBc0xlbmd0aCB7CiAgICAgaW50MzJfdCB2
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggNTNiMDI2MGMyMDdiMDc4Mjg5NWVm
Mzc3Yzg0Y2Y2MTY0NzU3NDk3ZS4uMDAyM2NmNGI3YjAyZjAwODk2ZTViODZlZmNkMGQ0NTg5NWY2
ZjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgog
CkBAIC0zNCw4ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBpbnQgaW50TWF4
Rm9yTGVuZ3RoID0gMHg3ZmZmZmZmOyAvLyBtYXggdmFsdWUgZm9yIGEgMjgtYml0IGludAogY29u
c3QgaW50IGludE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBm
b3IgYSAyOC1iaXQgaW50CiAKLWVudW0gTGVuZ3RoVHlwZSB7IEF1dG8sIFJlbGF0aXZlLCBQZXJj
ZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIFVuZGVmaW5lZCB9OwotCitlbnVt
IExlbmd0aFR5cGUgeyBBdXRvLCBSZWxhdGl2ZSwgUGVyY2VudCwgRml4ZWQsIEludHJpbnNpYywg
TWluSW50cmluc2ljLCBDYWxjdWxhdGVkLCBVbmRlZmluZWQgfTsKKyAKK2NsYXNzIENhbGN1bGF0
aW9uVmFsdWU7ICAgIAorICAgIAogc3RydWN0IExlbmd0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC02NSwxMSArNjgsMzUgQEAgcHVibGljOgogICAgICAgICBt
X2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4odik7ICAgIAogICAgIH0KIAorICAgIGV4
cGxpY2l0IExlbmd0aChQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+KTsKKworICAgIExlbmd0
aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIGluaXRGcm9tTGVuZ3RoKGxl
bmd0aCk7CisgICAgfQorICAgIAorICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQorICAgIHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKyAgICAKKyAgICB+TGVuZ3RoKCkKKyAgICB7CisgICAgICAg
IGlmIChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgICAgIGRlY3JlbWVudENhbGN1bGF0ZWRSZWYo
KTsKKyAgICB9ICAKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJiBvKSBj
b25zdCB7IHJldHVybiAobV90eXBlID09IG8ubV90eXBlKSAmJiAobV9xdWlyayA9PSBvLm1fcXVp
cmspICYmIChpc1VuZGVmaW5lZCgpIHx8IChnZXRGbG9hdFZhbHVlKCkgPT0gby5nZXRGbG9hdFZh
bHVlKCkpKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgb3BlcmF0b3IqPShm
bG9hdCB2KQotICAgIHsgICAgICAgIAorICAgIHsgICAgICAgCisgICAgICAgIGlmIChpc0NhbGN1
bGF0ZWQoKSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmIChtX2lzRmxv
YXQpCiAgICAgICAgICAgICBtX2Zsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9mbG9h
dFZhbHVlICogdik7CiAgICAgICAgIGVsc2UgICAgICAgIApAQCAtODAsNiArMTA3LDEwIEBAIHB1
YmxpYzoKICAgICAKICAgICBpbnQgdmFsdWUoKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGlz
Q2FsY3VsYXRlZCgpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnZXRJbnRWYWx1ZSgp
OwogICAgIH0KIApAQCAtODksNiArMTIwLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0
RmxvYXRWYWx1ZSgpOwogICAgIH0KIAorICAgIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4g
Y2FsY3VsYXRpb25WYWx1ZSgpIGNvbnN0OworCiAgICAgTGVuZ3RoVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8TGVuZ3RoVHlwZT4obV90eXBlKTsgfQogICAgIGJvb2wgcXVp
cmsoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrOyB9CiAKQEAgLTEwNiw2ICsxMzksMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZShpbnQgdmFsdWUpCiAgICAgeworICAgICAgICBpZiAo
aXNDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKEZpeGVkLCB2YWx1
ZSk7CiAgICAgfQogCkBAIC0xMjEsMTMgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICp0aGlz
ID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCi0gICAgLy8gTm90ZTogTWF5IG9ubHkg
YmUgY2FsbGVkIGZvciBGaXhlZCwgUGVyY2VudCBhbmQgQXV0byBsZW5ndGhzLgotICAgIC8vIE90
aGVyIHR5cGVzIHdpbGwgQVNTRVJUIGluIG9yZGVyIHRvIGNhdGNoIGludmFsaWQgbGVuZ3RoIGNh
bGN1bGF0aW9ucy4KICAgICBpbnQgY2FsY1ZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogICAgICAgICAgICAgY2FzZSBGaXhlZDoKICAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKKyAg
ICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gY2FsY01p
blZhbHVlKG1heFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsKICAgICAgICAgICAgIGNhc2UgQXV0
bzoKICAgICAgICAgICAgICAgICByZXR1cm4gbWF4VmFsdWU7CkBAIC0xNTIsNiArMTg4LDggQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3Vu
ZChtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOwogICAgICAgICAgICAgICAgIC8vIERv
bid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3Vu
ZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4o
bWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICAgICAgICAgIGNhc2UgQ2FsY3Vs
YXRlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZh
bHVlKTsKICAgICAgICAgICAgIGNhc2UgQXV0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CkBAIC0xNzQsNiArMjEyLDggQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJj
ZW50KCkgLyAxMDAuMGYpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOworICAgICAgICAgICAgY2FzZSBD
YWxjdWxhdGVkOgorICAgICAgICAgICAgICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUo
bWF4VmFsdWUpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6CiAg
ICAgICAgICAgICBjYXNlIEludHJpbnNpYzoKICAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2lj
OgpAQCAtMTg2LDIxICsyMjYsMzIgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNVbmRl
ZmluZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVW5kZWZpbmVkOyB9CisKKyAgICAvLyBG
SVhNRSBjYWxjOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzNTcu
IEEgY2FsY3VsYXRlZCBMZW5ndGggCisgICAgLy8gYWx3YXlzIGNvbnRhaW5zIGEgcGVyY2VudGFn
ZSwgYW5kIHdpdGhvdXQgYSBtYXhWYWx1ZSBwYXNzZWQgdG8gdGhlc2UgZnVuY3Rpb25zCisgICAg
Ly8gaXQncyBpbXBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgc2lnbiBvciB6ZXJvLW5lc3MuIFdl
IGFzc3VtZSBhbGwgY2FsYyB2YWx1ZXMKKyAgICAvLyBhcmUgcG9zaXRpdmUgYW5kIG5vbi16ZXJv
IGZvciBub3cuICAgIAogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgCiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gIW1fZmxv
YXRWYWx1ZSA6ICFtX2ludFZhbHVlOworICAgICAgICByZXR1cm4gaXNDYWxjdWxhdGVkKCkgPyBm
YWxzZSA6IG1faXNGbG9hdCA/ICFtX2Zsb2F0VmFsdWUgOiAhbV9pbnRWYWx1ZTsKKyAgICB9Cisg
ICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1VuZGVm
aW5lZCgpID8gZmFsc2UgOiBpc0NhbGN1bGF0ZWQoKSA/IHRydWUgOiBnZXRGbG9hdFZhbHVlKCkg
PiAwOworICAgIH0KKyAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBmYWxzZSA6IGlzQ2FsY3VsYXRlZCgpID8gZmFsc2UgOiBn
ZXRGbG9hdFZhbHVlKCkgPCAwOwogICAgIH0KICAgICAKLSAgICBib29sIGlzUG9zaXRpdmUoKSBj
b25zdCB7IHJldHVybiBpc1VuZGVmaW5lZCgpID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPiAw
OyB9Ci0gICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gaXNVbmRlZmluZWQoKSA/
IGZhbHNlIDogZ2V0RmxvYXRWYWx1ZSgpIDwgMDsgfQotCiAgICAgYm9vbCBpc0F1dG8oKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gQXV0bzsgfQogICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBSZWxhdGl2ZTsgfQotICAgIGJvb2wgaXNQZXJjZW50KCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQ7IH0KKyAgICBib29sIGlzUGVyY2VudCgpIGNv
bnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9
CiAgICAgYm9vbCBpc0ZpeGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkOyB9CiAg
ICAgYm9vbCBpc0ludHJpbnNpY09yQXV0bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRv
IHx8IHR5cGUoKSA9PSBNaW5JbnRyaW5zaWMgfHwgdHlwZSgpID09IEludHJpbnNpYzsgfQotICAg
IGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlw
ZSgpID09IFBlcmNlbnQ7IH0KKyAgICBib29sIGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IEZpeGVkIHx8IHR5cGUoKSA9PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxh
dGVkOyB9CisgICAgYm9vbCBpc0NhbGN1bGF0ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0g
Q2FsY3VsYXRlZDsgfQogCiAgICAgTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91
YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKQEAgLTIzOSw2ICsyOTAsMzAgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/IG1fZmxvYXRWYWx1ZSA6IG1faW50VmFsdWU7CiAg
ICAgfQogCisgICAgdm9pZCBpbml0RnJvbUxlbmd0aChjb25zdCBMZW5ndGggJmxlbmd0aCkgCisg
ICAgeworICAgICAgICBtX3F1aXJrID0gbGVuZ3RoLm1fcXVpcms7CisgICAgICAgIG1fdHlwZSA9
IGxlbmd0aC5tX3R5cGU7CisgICAgICAgIG1faXNGbG9hdCA9IGxlbmd0aC5tX2lzRmxvYXQ7Cisg
ICAgICAgIAorICAgICAgICBpZiAobV9pc0Zsb2F0KQorICAgICAgICAgICAgbV9mbG9hdFZhbHVl
ID0gbGVuZ3RoLm1fZmxvYXRWYWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9pbnRW
YWx1ZSA9IGxlbmd0aC5tX2ludFZhbHVlOworICAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3Vs
YXRlZCgpKQorICAgICAgICAgICAgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0KKyAg
ICAKKyAgICBmbG9hdCBub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdDsK
KyAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzQ2FsY3VsYXRlZCgpKTsKKyAgICAgICAgcmV0dXJuIGdldEludFZhbHVlKCk7CisgICAgfQor
ICAgIHZvaWQgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OworICAgIHZvaWQgZGVjcmVt
ZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OyAgICAKKyAgICAKICAgICB1bmlvbiB7CiAgICAgICAg
IGludCBtX2ludFZhbHVlOwogICAgICAgICBmbG9hdCBtX2Zsb2F0VmFsdWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzM5
MGE5NmUxNjhmMmZlZGYyODdlZWRjOGQ5MGQ3YjRjMDVjZjk0Zi4uMWQ0ODNmZmY4ZDAzOTM2ZDA4
NTVjYjEzMmJhZmMxYWIyOTM4YmJjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAzLTA2
ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NT
MyBjYWxjOiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0
LCBtYXJnaW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBjc3MzL2NhbGMvbWFyZ2luLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBj
c3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3NzMy9jYWxjL3NpbXBs
ZS1jYWxjcy1leHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBuby1sb25nZXItbmVlZGVkICdD
UFUnIGFuZCAnR1BVJyBtb2RpZmllcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvbWFyZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhw
ZWN0ZWQudHh0CmluZGV4IGFlNzU1M2M4N2NkZDZlN2RmMWY1MjI1YmU3MmJjNWYwN2RjOTI5M2Iu
LjYzODc0MDRhNTMwMTJjMjUwMTMzMGU4NjY3OGNmZTQ1ZDM5ZmZhN2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0CkBAIC0xOCwyNiArMTgsMjYgQEAgUEFTUyBj
b21wdXRlZE1hcmdpbkxlZnQoInNpbXBsZS1ib3R0b20iKSBpcyAiMHB4IgogUEFTUyBjb21wdXRl
ZE1hcmdpblRvcCgic2ltcGxlLWJvdHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2lu
UmlnaHQoInNpbXBsZS1ib3R0b20iKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRv
bSgic2ltcGxlLWJvdHRvbSIpIGlzICIyNXB4IgotRkFJTCBjb21wdXRlZE1hcmdpbkxlZnQoInBl
cmNlbnQtYWxsIikgc2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2lu
VG9wKCJwZXJjZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgotRkFJTCBjb21wdXRl
ZE1hcmdpblJpZ2h0KCJwZXJjZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgotRkFJ
TCBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2VudC1hbGwiKSBzaG91bGQgYmUgMjVweC4gV2Fz
IDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWxlZnQiKSBzaG91bGQgYmUg
MjVweC4gV2FzIDBweC4KK1BBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWFsbCIpIGlz
ICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpblRvcCgicGVyY2VudC1hbGwiKSBpcyAiMjVweCIK
K1BBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1hbGwiKSBpcyAiMjVweCIKK1BBU1Mg
Y29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1
dGVkTWFyZ2luTGVmdCgicGVyY2VudC1sZWZ0IikgaXMgIjI1cHgiCiBQQVNTIGNvbXB1dGVkTWFy
Z2luVG9wKCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0
KCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVy
Y2VudC1sZWZ0IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LXJp
Z2h0IikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtcmlnaHQiKSBp
cyAiMHB4IgotRkFJTCBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LXJpZ2h0Iikgc2hvdWxk
IGJlIDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtcmln
aHQiKSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtcmlnaHQi
KSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtdG9wIikgaXMgIjBw
eCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtdG9wIikgc2hvdWxkIGJlIDI1cHgu
IFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LXRvcCIpIGlzICIyNXB4
IgogUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJwZXJjZW50LXRvcCIpIGlzICIwcHgiCiBQQVNT
IGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LXRvcCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1
dGVkTWFyZ2luTGVmdCgicGVyY2VudC1ib3R0b20iKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1h
cmdpblRvcCgicGVyY2VudC1ib3R0b20iKSBpcyAiMHB4IgogUEFTUyBjb21wdXRlZE1hcmdpblJp
Z2h0KCJwZXJjZW50LWJvdHRvbSIpIGlzICIwcHgiCi1GQUlMIGNvbXB1dGVkTWFyZ2luQm90dG9t
KCJwZXJjZW50LWJvdHRvbSIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFTUyBjb21wdXRl
ZE1hcmdpbkJvdHRvbSgicGVyY2VudC1ib3R0b20iKSBpcyAiMjVweCIKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9jYWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L3BhZGRpbmctZXhwZWN0ZWQudHh0CmluZGV4IDgzZWUyNjdiOTBlZThhZGQ2NjA0MWI1Y2VmOGFi
ODlhYjgzYjdlYmMuLjBiOGUzYTc0NDQ1Mjg3MDgzY2RjNTJiYjY0NmViNWQyMDU3NzlhOGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQKQEAgLTgsMTIgKzgs
MTIgQEAgVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgdG9wIHBhZGRpbmcgb2YgMjUgcGl4ZWxz
LiA9PiBQQVNTCiAKIFRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9m
IDI1IHBpeGVscy4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3ZlcmFs
bCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51
cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aCwgd3JvbmcgaGVpZ2h0CitUaGlzIGVsZW1lbnQg
c2hvdWxkIGhhdmUgYW4gb3ZlcmFsbCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVu
dCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRoaXMgZWxlbWVudCBzaG91
bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGgg
b2YgMzAwcHggbWludXMgNXB4KS4gPT4gRkFJTDogd3Jvbmcgd2lkdGgKK1RoaXMgZWxlbWVudCBz
aG91bGQgaGF2ZSBhIGxlZnQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lk
dGggb2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSByaWdodCBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAz
MDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyB3aWR0aAorVGhpcyBlbGVtZW50IHNob3Vs
ZCBoYXZlIGEgcmlnaHQgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGgg
b2YgMzAwcHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUg
YSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHgg
bWludXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitUaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAw
cHggbWludXMgNXB4KS4gPT4gUEFTUwogCi1UaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBib3R0
b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAwcHggbWlu
dXMgNXB4KS4gPT4gRkFJTDogd3JvbmcgaGVpZ2h0CitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUg
YSBib3R0b20gcGFkZGluZyBvZiAyNSBwaXhlbHMgKDEwJSBvZiBwYXJlbnQgd2lkdGggb2YgMzAw
cHggbWludXMgNXB4KS4gPT4gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L3NpbXBsZS1jYWxjcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxl
LWNhbGNzLWV4cGVjdGVkLnR4dAppbmRleCA1YjQ1ZDJkY2NjMDgwMmEzMzcxMzk3NGE2MjY4N2Iz
NGRiMzU0YjVkLi45N2Q2ZDNhM2I2YWUzM2ZmYzY0YmNjYzY0M2E4MTg1MjExMmZiNDU3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dApAQCAt
MjAsMTAgKzIwLDEwIEBAIGNvbnRyb2wgPT4gUEFTUwogMTBweCogKDUgKiAyKSA9PiBQQVNTCiA1
MHB4ICsgMTBweCAqIDUgKG9wZXJhdGlvbiBvcmRlcikgPT4gUEFTUwogMTAwJS8yICh3aGVyZSAx
MDAlIGlzIDIwMHB4KSA9PiBQQVNTCi0xMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6
b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0yIGV4cGVj
dGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYKLTgwJSAtIDYwcHggKHdoZXJlIDEwMCUgaXMg
MjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1
NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIg
ZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgotMzAwcHggLSAxMDAlICh3aGVyZSAx
MDAlIGlzIDIwMHB4KSA9PiBGQUlMOiBAem9vbT0xIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0
IHdhcyAyNTY7IEB6b29tPTEuMiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBA
em9vbT0yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTYKLS0xMDBweCArIDEwMCUg
KHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQgd2lkdGggb2Yg
MTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEwMCwgYnV0IHdh
cyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NgorMTAwJSAr
IC0xMDBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gUEFTUworODAlIC0gNjBweCAod2hlcmUg
MTAwJSBpcyAyMDBweCkgPT4gUEFTUworMzAwcHggLSAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCistMTAwcHggKyAxMDAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiAy
MCUgKyAzMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDgwJSAtIDMwJSAod2hlcmUg
MTAwJSBpcyAyMDBweCkgPT4gUEFTUwogMTAlICogNSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4g
UEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130712</attachid>
            <date>2012-03-07 15:45:08 -0800</date>
            <delta_ts>2012-03-07 22:48:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79621-20120308104505.patch</filename>
            <type>text/plain</type>
            <size>31897</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlODNjN2E0MTZjN2Q2
NjdmYWZlY2NmZmRkNjE2OWE1NDYxZmZkZi4uYWU0ODEwNzlkOTQ3MzJhNGYzMmMyMjdiMzI4NGI1
N2RiZWI1YzgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTA2ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBtaXhlZCBhYnNvbHV0ZS9wZXJjZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJn
aW4gYW5kIHBhZGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICBBcHBseVByb3BlcnR5TGVuZ3RoIGluIENTU1N0eWxlQXBwbHlQcm9wZXJ5IG5vdyBoYW5k
bGVzIG1peGVkIGFic29sdXRlL3BlcmNlbnRhZ2UKKyAgICAgICAgbGVuZ3RoIGV4cHJlc3Npb25z
LiBBbGwgcHJvcGVydHkgaGFuZGxlcnMgdXNpbmcgdGhpcyB0ZW1wbGF0ZSBub3cgd29yayB3aXRo
CisgICAgICAgIG1peGVkIGV4cHJlc3Npb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBh
IG5ldyBleHByZXNzaW9uIGV2YWx1YXRvciBpbiBDYWxjdWxhdGlvblZhbHVlLmNwcC4gVGhpcyBp
cyBiZWNhdXNlCisgICAgICAgIExlbmd0aC5bY3BwfGhdIChpbiBwbGF0Zm9ybSkgY2Fubm90IHJl
ZmVyIHRvIENTU0NhbGN1bGF0aW9uVmFsdWUuW2NwcHxoXSAoaW4gY3NzKSAKKyAgICAgICAgZHVl
IHRvIGxheWVyaW5nIHJlc3RyaWN0aW9ucy4KKworICAgICAgICBMZW5ndGhzIGNhbiBiZSBjb3Bp
ZWQsIGFuZCBzbyB0aGUgZXhwcmVzc2lvbnMgYXJlIHN0b3JlZCBpbiBhIGhhc2htYXAsIGFuZCBv
bmx5IHRoZWlyCisgICAgICAgIGlkcyBhcmUgY29waWVkIGFsb25nIHdpdGggTGVuZ3RoLiBUaGUg
ZXhwcmVzc2lvbnMgYXJlIFJlZkNvdW50ZWQsIGFuZCB3aWxsIGdldCAKKyAgICAgICAgY2xlYW5l
ZCB1cCB3aGVuIHRoZSBsYXN0IHJlZmVycmluZyBMZW5ndGggaXMgZGVzdHJ1Y3RlZC4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6dG9DYWxjVmFs
dWUpOgorICAgICAgICAoQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnRvQ2FsY1ZhbHVlKToKKyAgICAgICAgKENTU0NhbGNC
aW5hcnlPcGVyYXRpb24pOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAg
ICAgIChDU1NDYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ZhbHVlOjp0b0Nh
bGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6Cisg
ICAgICAgIChDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0
aW9uOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZh
bHVlOjpldmFsdWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oOgor
ICAgICAgICAoQ2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHBy
ZXNzaW9uTm9kZTo6fkNhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENhbGN1bGF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25W
YWx1ZTo6Q2FsY3VsYXRpb25WYWx1ZSk6CisgICAgICAgIChDYWxjRXhwcmVzc2lvbk51bWJlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk51bWJlcjo6Q2FsY0V4cHJlc3Npb25O
dW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25OdW1iZXI6OmV2YWx1YXRl
KToKKyAgICAgICAgKENhbGNFeHByZXNzaW9uTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGNFeHByZXNzaW9uTGVuZ3RoOjpDYWxjRXhwcmVzc2lvbkxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjRXhwcmVzc2lvbkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAoQ2FsY0V4cHJl
c3Npb25CaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25C
aW5hcnlPcGVyYXRpb246OkNhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6On5MZW5ndGgpOgorICAgICAgICAoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpDYWxjdWxh
dGlvblZhbHVlSGFuZGxlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVI
YW5kbGVNYXA6Omluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlSGFu
ZGxlTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZUhhbmRs
ZU1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNIYW5kbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Y2FsY3Vs
YXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRNaW5WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMZW5ndGg6OmNhbGN1bGF0ZWRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6Okxlbmd0aDo6aW5jcmVtZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGg6OmRlY3JlbWVudENhbGN1bGF0ZWRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Ojpub25OYW5DYWxjdWxhdGVkVmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgor
ICAgICAgICAoTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6b3BlcmF0b3IqPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVu
Z3RoOjpjYWxjVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjTWluVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpjYWxjRmxvYXRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmlzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUG9z
aXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc05lZ2F0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNQZXJjZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNTcGVjaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc0NhbGN1bGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppbml0RnJvbUxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGg6OmNhbGN1bGF0aW9uSGFuZGxlKToKKwogMjAxMi0wMy0wNiAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGNy
YXNoZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDgxN2I5YWVmMDc0N2UwYTA5MjIxNzFjMGM5
YzUyM2RjMTNhYTYxZTguLmJmMGNmNDI1MTE0ZWExZjNmMWU5N2NmY2M0MDYyNzhlODZiZDUyOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBfX1pOSzdXZWJDb3Jl
NkVkaXRvcjdjYW5FZGl0RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yOGNhblBhc3RlRXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yOWNhbkRlbGV0ZUV2CiBfX1pOSzdXZWJDb3JlNkpTTm9kZTIxcHVzaEV2
ZW50SGFuZGxlclNjb3BlRVBOM0pTQzlFeGVjU3RhdGVFUE5TMV8xNFNjb3BlQ2hhaW5Ob2RlRQor
X19aTks3V2ViQ29yZTZMZW5ndGgyMmRlY3JlbWVudENhbGN1bGF0ZWRSZWZFdgogX19aTks3V2Vi
Q29yZTZSZWdpb241cmVjdHNFdgogX19aTks3V2ViQ29yZTZXaWRnZXQxNHBsYXRmb3JtV2lkZ2V0
RXYKIF9fWk5LN1dlYkNvcmU2V2lkZ2V0MjNjb252ZXJ0VG9Db250YWluaW5nVmlld0VSS05TXzdJ
bnRSZWN0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4
IDg3ZmE3Mzc4MjcyNjgxN2NlMGYzMmJjMDYwYmFlMmI5YWZjZGE5OGIuLjc4MjhjNjU0MmQzYzgy
MWYzMGE1ZjM4ZTk1ZmU1ZGVlMmRhOGNlZDAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTExNCw2ICsxMTQsMjUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV92YWx1ZS0+Y3NzVGV4dCgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc093blB0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20pIGNvbnN0CisgICAgeworICAgICAgICBz
d2l0Y2ggKG1fY2F0ZWdvcnkpIHsKKyAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5nZXRG
bG9hdFZhbHVlKCkpKTsKKyAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgorICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihtX3ZhbHVlLT5jb21wdXRlTGVu
Z3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSkpOworICAgICAgICBjYXNlIENhbGNQ
ZXJjZW50OgorICAgICAgICBjYXNlIENhbGNQZXJjZW50TGVuZ3RoOgorICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChDU1NTdHlsZVNlbGVjdG9yOjpj
b252ZXJ0VG9GbG9hdExlbmd0aChtX3ZhbHVlLmdldCgpLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29t
KSkpOworICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0
aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKKyAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVz
c2lvbk5vZGUuIENhbGNQZXJjZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgor
ICAgICAgICBjYXNlIENhbGNQZXJjZW50TnVtYmVyOgorICAgICAgICBjYXNlIENhbGNPdGhlcjoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9jYXRlZ29yeSkgewpAQCAtMjA4LDYgKzIy
NywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0NhbGNWYWx1ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tKSBj
b25zdAorICAgIHsKKyAgICAgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVmdChtX2xl
ZnRTaWRlLT50b0NhbGNWYWx1ZShzdHlsZSwgcm9vdFN0eWxlLCB6b29tKSk7CisgICAgICAgIGlm
ICghbGVmdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBPd25QdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPiByaWdodChtX3JpZ2h0U2lkZS0+dG9DYWxjVmFsdWUoc3R5bGUsIHJv
b3RTdHlsZSwgem9vbSkpOworICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5h
cnlPcGVyYXRpb24obGVmdC5yZWxlYXNlKCksIHJpZ2h0LnJlbGVhc2UoKSwgbV9vcGVyYXRvcikp
OworICAgIH0KKwogICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgCiAgICAg
ewogICAgICAgICByZXR1cm4gZXZhbHVhdGUobV9sZWZ0U2lkZS0+ZG91YmxlVmFsdWUoKSwgbV9y
aWdodFNpZGUtPmRvdWJsZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmgKaW5kZXggN2MzNjY3MTI1YjVkN2IxMmU1N2UzZmJmYmJkY2MyZjcwYmMzNDBmMy4u
YWM5YmU0NmQzM2FkYTMyOTljOTE1ZmQzNGQzZDhjNjA0NTgzODVjNSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENTU1BhcnNlclZhbHVlTGlzdDsKIGNsYXNzIENTU1ZhbHVlTGlzdDsK
IGNsYXNzIFJlbmRlclN0eWxlOwotY2xhc3MgQ2FsY1ZhbHVlOworY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZTsKIGNsYXNzIENhbGNFeHByZXNzaW9uTm9kZTsKIAogZW51bSBDYWxjdWxhdGlvbkNhdGVn
b3J5IHsKQEAgLTU4LDggKzU4LDkgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKIGNsYXNz
IENTU0NhbGNFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHByZXNz
aW9uTm9kZT4gewogcHVibGljOgogICAgIAotICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9u
Tm9kZSgpID0gMDsgIAorICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc093
blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCiAgICAg
dmlydHVhbCBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3Vi
bGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRT
aXplID0gZmFsc2UpIGNvbnN0ID0gMDsKICAgICAKQEAgLTgwLDcgKzgxLDEyIEBAIHByb3RlY3Rl
ZDoKIGNsYXNzIENTU0NhbGNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyU3RyaW5nIG5h
bWUsIENTU1BhcnNlclZhbHVlTGlzdCosIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBjcmVhdGUoQ2FsY3VsYXRpb25W
YWx1ZSopOwogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiB0b0NhbGNWYWx1ZShS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29tID0g
MS4wKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0
ZShtX2V4cHJlc3Npb24tPnRvQ2FsY1ZhbHVlKHN0eWxlLCByb290U3R5bGUsIHpvb20pLCBtX25v
bk5lZ2F0aXZlID8gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlIDogQ2FsY3VsYXRpb25SYW5n
ZUFsbCk7CisgICAgfQogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7
IHJldHVybiBtX2V4cHJlc3Npb24tPmNhdGVnb3J5KCk7IH0KICAgICBib29sIGlzSW50KCkgY29u
c3QgeyByZXR1cm4gbV9leHByZXNzaW9uLT5pc0ludGVnZXIoKTsgfSAgICAKICAgICBkb3VibGUg
ZG91YmxlVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDFkZGZiNzk5YzQ3MWNlNjE2MjM3NTMwNmM0NzAyMzk2ODNjNjIwNTMuLjlkMjEz
ZGNkZDE0OWI0MGRmZjgxYjBmZDhlOGU0MmQ4NzQwMjczYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgICAg
IEFTU0VSVChpc2Zpbml0ZShsZW5ndGgucGVyY2VudCgpKSk7CiAgICAgICAgICAgICBtX3ZhbHVl
Lm51bSA9IGxlbmd0aC5wZXJjZW50KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDYWxjdWxhdGVkOgogICAgICAgICBjYXNlIFJlbGF0aXZlOgogICAgICAgICBjYXNlIFVuZGVm
aW5lZDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCBiMjUxNmNkOTk3NTEwZjI3YzFm
ZjA3NzM0ZGUwOGRkODM2Y2I0ZTY0Li5hNzUwODNjNThkZDIxMWRiNjM2YzVlYTNjMmE2MWJhMzBh
ZTdiY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgog
CiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0NhbGN1bGF0
aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTRmxleFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpA
QCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxl
Y3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNW
YWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2Vs
ZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDVj
YjY5NDRiMGY3OTI4MzQxZmI2YWFhYjYxNDQ1ZGFjNDNiOTRjYjQuLjAzMDdiOTVkNmJmYzFiODkx
MWIxMmMyNWZlNWY1NTI5OTg1YjA2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWxjdWxhdGlvblZhbHVlLmgiCiAj
aW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAi
Q291bnRlckNvbnRlbnQuaCIKICNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUg
IkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9y
LmgiCkBAIC0yNTQ3LDEyICsyNTQ5LDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3Ro
KENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0CiAgICAg
cmV0dXJuIGw7CiB9CiAKLXN0YXRpYyBMZW5ndGggY29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEpCitMZW5ndGggQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y29udmVydFRvSW50TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllcikKIHsKICAgICByZXR1cm4gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBz
dHlsZSwgcm9vdFN0eWxlLCBmYWxzZSwgbXVsdGlwbGllcik7CiB9CiAKLXN0YXRpYyBMZW5ndGgg
Y29udmVydFRvRmxvYXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyID0gMSkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9GbG9hdExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIGNv
bnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgdHJ1ZSwgbXVs
dGlwbGllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlM2M3
MDRkMzkyOTBmZmFiNDkzMDIzYWVhNGY3Y2QzYjlhMzAxMDBhLi4wOTlhOWE3M2U5NDU5MmU5NGU4
YmQ5ODIwMDc4ODIwZDQ2MTEwYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgKQEAgLTM2Miw2ICszNjIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhcHBseVByb3BlcnR5VG9S
ZWd1bGFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZTsgfQogICAgIGJvb2wgYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsgfQogCisgICAgc3RhdGlj
IExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHls
ZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CisgICAg
c3RhdGljIExlbmd0aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJl
bmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAx
KTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFp
bGFibGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
aW5kZXggYjllMzg1ODFhZGFkOGIxOTY0OGFkY2FlZDBlN2Y0Mzk1MzUxZjYyNy4uNTc0MTNmYmZl
YjFhODg5NzlhMjQzN2Y1YjYwM2NkN2E0YjU5ZGE0YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDQzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25WYWx1ZS5oIgogCisjaW5jbHVkZSA8bGlt
aXRzPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Zsb2F0IENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uOjpldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCBs
ZWZ0ID0gbV9sZWZ0U2lkZS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGZsb2F0IHJpZ2h0ID0g
bV9yaWdodFNpZGUtPmV2YWx1YXRlKG1heFZhbHVlKTsKKyAgICBzd2l0Y2ggKG1fb3BlcmF0b3Ip
IHsKKyAgICBjYXNlIENhbGNBZGQ6CisgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQ7CisgICAg
Y2FzZSBDYWxjU3VidHJhY3Q6CisgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7CisgICAgY2Fz
ZSBDYWxjTXVsdGlwbHk6CisgICAgICAgIHJldHVybiBsZWZ0ICogcmlnaHQ7CisgICAgY2FzZSBD
YWxjRGl2aWRlOgorICAgICAgICBpZiAoIXJpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgcmV0dXJuIGxlZnQg
LyByaWdodDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKK30KKworUGFzc1JlZlB0cjxD
YWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoUGFzc093blB0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFu
Z2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWxjdWxhdGlvblZhbHVlKHZhbHVlLCBy
YW5nZSkpOworfQorCitmbG9hdCBDYWxjdWxhdGlvblZhbHVlOjpldmFsdWF0ZShmbG9hdCBtYXhW
YWx1ZSkgY29uc3QKK3sKKyAgICBmbG9hdCByZXN1bHQgPSBtX3ZhbHVlLT5ldmFsdWF0ZShtYXhW
YWx1ZSk7CisgICAgLy8gRklYTUUgY2FsYyBodHRwczovL3dlYmtpdC5vcmcvYi84MDQxMSA6IHJl
c3VsdCBpcyBOYU4gd2hlbiB0aGVyZSBpcyBhIGRpdmlzaW9uIAorICAgIC8vIGJ5IHplcm8gd2hp
Y2ggaXNuJ3QgZm91bmQgYXQgcGFyc2UgdGltZS4gCisgICAgaWYgKGlzbmFuKHJlc3VsdCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lzTm9uTmVnYXRpdmUgJiYgcmVzdWx0IDwg
MCA/IDAgOiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBkODk0NDVlODA2Y2I1ZWU4MGY5
ZjQxZjkwNzg3ZjhhNWI4OWUzODJhLi5jNTU4NDU1NDIxMTBhNzc1ZjMyYzg3ODdmOWY2OTk5OTFk
OTNlNTVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBA
IC01MCw2ICs1MCw4MCBAQCBlbnVtIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSB7CiAg
ICAgQ2FsY3VsYXRpb25SYW5nZUFsbCwKICAgICBDYWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUK
IH07CisgICAgICAgIAorY2xhc3MgQ2FsY0V4cHJlc3Npb25Ob2RlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5DYWxjRXhwcmVzc2lvbk5vZGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgPSAwOworfTsKKyAgICAK
K2NsYXNzIENhbGN1bGF0aW9uVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZh
bHVlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4g
Y3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25Q
ZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKKyAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkg
Y29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIENhbGN1bGF0aW9uVmFsdWUoUGFzc093blB0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2Ug
cmFuZ2UpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgLCBtX2lzTm9uTmVnYXRp
dmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25SYW5nZU5vbk5lZ2F0aXZlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbV92YWx1ZTsKKyAgICBib29sIG1f
aXNOb25OZWdhdGl2ZTsKK307CisKK2NsYXNzIENhbGNFeHByZXNzaW9uTnVtYmVyIDogcHVibGlj
IENhbGNFeHByZXNzaW9uTm9kZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Np
b25OdW1iZXIoZmxvYXQgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkgY29uc3QgCisgICAgewor
ICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGZsb2F0
IG1fdmFsdWU7Cit9OworCitjbGFzcyBDYWxjRXhwcmVzc2lvbkxlbmd0aCA6IHB1YmxpYyBDYWxj
RXhwcmVzc2lvbk5vZGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGNFeHByZXNzaW9uTGVu
Z3RoKExlbmd0aCBsZW5ndGgpCisgICAgICAgIDogbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsK
KyAgICB9CisgICAgCitwcml2YXRlOgorICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK2NsYXNz
IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9k
ZSB7CitwdWJsaWM6CisgICAgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oUGFzc093blB0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3ApCisgICAgICAgIDogbV9sZWZ0U2lkZShs
ZWZ0U2lkZSkKKyAgICAgICAgLCBtX3JpZ2h0U2lkZShyaWdodFNpZGUpCisgICAgICAgICwgbV9v
cGVyYXRvcihvcCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShm
bG9hdCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4g
bV9sZWZ0U2lkZTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsK
KyAgICBDYWxjT3BlcmF0b3IgbV9vcGVyYXRvcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggYTZiYzAxOTM5YzA1MGMyZTFm
MmMxZTU4NzQwNTZlNDhjNzhmYmM5ZS4uNTE2NmMwZDE2OGE0OTk3ZDc1Yjg3NGRjYmRlNmI5YzRj
NTFiZTg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAKKyNpbmNsdWRlICJD
YWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDgs
NiArMTQ5LDg4IEBAIFBhc3NPd25BcnJheVB0cjxMZW5ndGg+IG5ld0xlbmd0aEFycmF5KGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIAogICAgIHJldHVybiByLnJlbGVhc2UoKTsKIH0K
KyAgICAgICAgCitjbGFzcyBDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwIHsKK3B1YmxpYzoKKyAg
ICBDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwKCkgCisgICAgICAgIDogbV9pbmRleCgxKSAKKyAg
ICB7CisgICAgfQorICAgIAorICAgIGludCBpbnNlcnQoUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZh
bHVlPiBjYWxjVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9pbmRleCk7CisgICAgICAg
IC8vIEZJWE1FIGNhbGMoKTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNDg5CisgICAgICAgIC8vIFRoaXMgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGhhbmRsZSBn
ZW5lcmF0aW9uIHNjaGVtZSBpcyBwb3RlbnRpYWxseSB3YXN0ZWZ1bAorICAgICAgICAvLyBvZiB0
aGUgaGFuZGxlIHNwYWNlLiBDb25zaWRlciByZXVzaW5nIGVtcHR5IGhhbmRsZXMuCisgICAgICAg
IHdoaWxlIChtX21hcC5jb250YWlucyhtX2luZGV4KSkKKyAgICAgICAgICAgIG1faW5kZXgrKzsK
KyAgICAgICAgCisgICAgICAgIG1fbWFwLnNldChtX2luZGV4LCBjYWxjVmFsdWUpOyAgICAgICAK
KyAgICAgICAgCisgICAgICAgIHJldHVybiBtX2luZGV4OworICAgIH0KKworICAgIHZvaWQgcmVt
b3ZlKGludCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21hcC5jb250YWlucyhpbmRl
eCkpOworICAgICAgICBtX21hcC5yZW1vdmUoaW5kZXgpOworICAgIH0KKyAgICAKKyAgICBQYXNz
UmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IGdldChpbnQgaW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmdldChp
bmRleCk7CisgICAgfQorICAgIAorcHJpdmF0ZTogICAgICAgIAorICAgIGludCBtX2luZGV4Owor
ICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gPiBtX21hcDsKK307Cisg
ICAgCitzdGF0aWMgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCYgY2FsY0hhbmRsZXMoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCwgaGFuZGxl
TWFwLCAoKSk7CisgICAgcmV0dXJuIGhhbmRsZU1hcDsKK30KKworTGVuZ3RoOjpMZW5ndGgoUGFz
c1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjKQorICAgIDogbV9xdWlyayhmYWxzZSkKKyAg
ICAsIG1fdHlwZShDYWxjdWxhdGVkKQorICAgICwgbV9pc0Zsb2F0KGZhbHNlKQoreworICAgIG1f
aW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLmluc2VydChjYWxjKTsKK30KKyAgICAKK1Bhc3NSZWZQ
dHI8Q2FsY3VsYXRpb25WYWx1ZT4gTGVuZ3RoOjpjYWxjdWxhdGlvblZhbHVlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIHJldHVybiBjYWxjSGFuZGxlcygpLmdl
dChjYWxjdWxhdGlvbkhhbmRsZSgpKTsKK30KKyAgICAKK3ZvaWQgTGVuZ3RoOjppbmNyZW1lbnRD
YWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
IGNhbGN1bGF0aW9uVmFsdWUoKS0+cmVmKCk7Cit9CisKK3ZvaWQgTGVuZ3RoOjpkZWNyZW1lbnRD
YWxjdWxhdGVkUmVmKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAg
IFJlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjTGVuZ3RoID0gY2FsY3VsYXRpb25WYWx1ZSgp
OworICAgIGlmIChjYWxjTGVuZ3RoLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgY2FsY0hhbmRsZXMo
KS5yZW1vdmUoY2FsY3VsYXRpb25IYW5kbGUoKSk7CisgICAgY2FsY0xlbmd0aC0+ZGVyZWYoKTsK
K30gICAgCisKK2Zsb2F0IExlbmd0aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1
ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWxjdWxhdGVkKCkpOworICAgIGZsb2F0IHJlc3Vs
dCA9IGNhbGN1bGF0aW9uVmFsdWUoKS0+ZXZhbHVhdGUobWF4VmFsdWUpOworICAgIGlmIChpc25h
bihyZXN1bHQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiBj
bGFzcyBTYW1lU2l6ZUFzTGVuZ3RoIHsKICAgICBpbnQzMl90IHZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguaAppbmRleCA1M2IwMjYwYzIwN2IwNzgyODk1ZWYzNzdjODRjZjYxNjQ3NTc0OTdl
Li4yYmNmOTMyNjI4ZmNjYTllYTJlOGIzYzE3ZmZhMWUyZmM2MGM0MWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAKQEAgLTM0LDggKzM1LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBpbnRNYXhGb3JMZW5ndGggPSAweDdmZmZm
ZmY7IC8vIG1heCB2YWx1ZSBmb3IgYSAyOC1iaXQgaW50CiBjb25zdCBpbnQgaW50TWluRm9yTGVu
Z3RoID0gKC0weDdmZmZmZmYgLSAxKTsgLy8gbWluIHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKIAot
ZW51bSBMZW5ndGhUeXBlIHsgQXV0bywgUmVsYXRpdmUsIFBlcmNlbnQsIEZpeGVkLCBJbnRyaW5z
aWMsIE1pbkludHJpbnNpYywgVW5kZWZpbmVkIH07Ci0KK2VudW0gTGVuZ3RoVHlwZSB7IEF1dG8s
IFJlbGF0aXZlLCBQZXJjZW50LCBGaXhlZCwgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMsIENhbGN1
bGF0ZWQsIFVuZGVmaW5lZCB9OworIAorY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsgICAgCisgICAg
CiBzdHJ1Y3QgTGVuZ3RoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTY1LDExICs2OCwzNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZmxvYXRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih2KTsgICAgCiAgICAgfQogCisgICAgZXhwbGljaXQgTGVuZ3RoKFBhc3NS
ZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4pOworCisgICAgTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKKyAgICB9CisgICAg
CisgICAgTGVuZ3RoJiBvcGVyYXRvcj0oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisgICAgeworICAg
ICAgICBpbml0RnJvbUxlbmd0aChsZW5ndGgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIAorICAgIH5MZW5ndGgoKQorICAgIHsKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgp
KQorICAgICAgICAgICAgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0gIAorICAgIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGgmIG8pIGNvbnN0IHsgcmV0dXJuIChtX3R5
cGUgPT0gby5tX3R5cGUpICYmIChtX3F1aXJrID09IG8ubV9xdWlyaykgJiYgKGlzVW5kZWZpbmVk
KCkgfHwgKGdldEZsb2F0VmFsdWUoKSA9PSBvLmdldEZsb2F0VmFsdWUoKSkpOyB9CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
KTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBvcGVyYXRvcio9KGZsb2F0IHYpCi0gICAgeyAgICAg
ICAgCisgICAgeyAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKG1faXNGbG9hdCkKICAgICAgICAgICAgIG1f
ZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2Zsb2F0VmFsdWUgKiB2KTsKICAgICAg
ICAgZWxzZSAgICAgICAgCkBAIC04MCw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIAogICAgIGlu
dCB2YWx1ZSgpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdldEludFZhbHVlKCk7CiAgICAgfQogCkBAIC04OSw2
ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7CiAgICAg
fQogCisgICAgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjdWxhdGlvblZhbHVlKCkg
Y29uc3Q7CisKICAgICBMZW5ndGhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxMZW5ndGhUeXBlPihtX3R5cGUpOyB9CiAgICAgYm9vbCBxdWlyaygpIGNvbnN0IHsgcmV0dXJu
IG1fcXVpcms7IH0KIApAQCAtMTA2LDYgKzEzOSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFZhbHVlKGludCB2YWx1ZSkKICAgICB7CisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICAgICAgc2V0VmFsdWUoRml4ZWQsIHZhbHVlKTsKICAgICB9CiAKQEAgLTEy
MSwxMyArMTU4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZp
eGVkKTsKICAgICB9CiAKLSAgICAvLyBOb3RlOiBNYXkgb25seSBiZSBjYWxsZWQgZm9yIEZpeGVk
LCBQZXJjZW50IGFuZCBBdXRvIGxlbmd0aHMuCi0gICAgLy8gT3RoZXIgdHlwZXMgd2lsbCBBU1NF
UlQgaW4gb3JkZXIgdG8gY2F0Y2ggaW52YWxpZCBsZW5ndGggY2FsY3VsYXRpb25zLgogICAgIGlu
dCBjYWxjVmFsdWUoaW50IG1heFZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IEZpeGVkOgogICAgICAgICAgICAgY2FzZSBQZXJjZW50OgorICAgICAgICAgICAgY2FzZSBDYWxj
dWxhdGVkOgogICAgICAgICAgICAgICAgIHJldHVybiBjYWxjTWluVmFsdWUobWF4VmFsdWUsIHJv
dW5kUGVyY2VudGFnZXMpOwogICAgICAgICAgICAgY2FzZSBBdXRvOgogICAgICAgICAgICAgICAg
IHJldHVybiBtYXhWYWx1ZTsKQEAgLTE1Miw2ICsxODgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2Vu
dCgpIC8gMTAwLjBmKSk7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRy
YSBjYXN0IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRl
bCBtYWNoaW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQo
KSAvIDEwMC4wZikpOworICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICAgICAg
ICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOwogICAgICAgICAgICAg
Y2FzZSBBdXRvOgogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY2FzZSBS
ZWxhdGl2ZToKQEAgLTE3NCw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZik7CiAg
ICAgICAgICAgICBjYXNlIEF1dG86CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihtYXhWYWx1ZSk7CisgICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7ICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKICAgICAgICAgICAgIGNhc2UgSW50
cmluc2ljOgogICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CkBAIC0xODYsMjEgKzIyNiw0
MyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBVbmRlZmluZWQ7IH0KKworICAgIC8vIEZJWE1FIGNhbGM6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDM1Ny4gQSBjYWxjdWxhdGVkIExlbmd0
aCAKKyAgICAvLyBhbHdheXMgY29udGFpbnMgYSBwZXJjZW50YWdlLCBhbmQgd2l0aG91dCBhIG1h
eFZhbHVlIHBhc3NlZCB0byB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBpdCdzIGltcG9zc2libGUg
dG8gZGV0ZXJtaW5lIHRoZSBzaWduIG9yIHplcm8tbmVzcy4gV2UgYXNzdW1lIGFsbCBjYWxjIHZh
bHVlcworICAgIC8vIGFyZSBwb3NpdGl2ZSBhbmQgbm9uLXplcm8gZm9yIG5vdy4gICAgCiAgICAg
Ym9vbCBpc1plcm8oKSBjb25zdCAKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQo
KSk7CisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8gIW1fZmxvYXRWYWx1
ZSA6ICFtX2ludFZhbHVlOwogICAgIH0KKyAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKGlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpID4gMDsKKyAg
ICB9CisgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1Vu
ZGVmaW5lZCgpIHx8IGlzQ2FsY3VsYXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCkgPCAwOworICAgIH0K
ICAgICAKLSAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdCB7IHJldHVybiBpc1VuZGVmaW5lZCgp
ID8gZmFsc2UgOiBnZXRGbG9hdFZhbHVlKCkgPiAwOyB9Ci0gICAgYm9vbCBpc05lZ2F0aXZlKCkg
Y29uc3QgeyByZXR1cm4gaXNVbmRlZmluZWQoKSA/IGZhbHNlIDogZ2V0RmxvYXRWYWx1ZSgpIDwg
MDsgfQotCiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXV0bzsg
fQogICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBSZWxhdGl2
ZTsgfQotICAgIGJvb2wgaXNQZXJjZW50KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFBlcmNl
bnQ7IH0KKyAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQZXJj
ZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAgICAgYm9vbCBpc0ZpeGVkKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IEZpeGVkOyB9CiAgICAgYm9vbCBpc0ludHJpbnNpY09yQXV0bygp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvIHx8IHR5cGUoKSA9PSBNaW5JbnRyaW5zaWMg
fHwgdHlwZSgpID09IEludHJpbnNpYzsgfQotICAgIGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09IFBlcmNlbnQ7IH0KKyAgICBib29s
IGlzU3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkIHx8IHR5cGUoKSA9
PSBQZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CisgICAgYm9vbCBpc0NhbGN1bGF0
ZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQ2FsY3VsYXRlZDsgfQogCiAgICAgTGVuZ3Ro
IGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsK
QEAgLTIzOSw2ICszMDEsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/
IG1fZmxvYXRWYWx1ZSA6IG1faW50VmFsdWU7CiAgICAgfQogCisgICAgdm9pZCBpbml0RnJvbUxl
bmd0aChjb25zdCBMZW5ndGggJmxlbmd0aCkgCisgICAgeworICAgICAgICBtX3F1aXJrID0gbGVu
Z3RoLm1fcXVpcms7CisgICAgICAgIG1fdHlwZSA9IGxlbmd0aC5tX3R5cGU7CisgICAgICAgIG1f
aXNGbG9hdCA9IGxlbmd0aC5tX2lzRmxvYXQ7CisgICAgICAgIAorICAgICAgICBpZiAobV9pc0Zs
b2F0KQorICAgICAgICAgICAgbV9mbG9hdFZhbHVlID0gbGVuZ3RoLm1fZmxvYXRWYWx1ZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9pbnRWYWx1ZSA9IGxlbmd0aC5tX2ludFZhbHVlOwor
ICAgICAgICAKKyAgICAgICAgaWYgKGlzQ2FsY3VsYXRlZCgpKQorICAgICAgICAgICAgaW5jcmVt
ZW50Q2FsY3VsYXRlZFJlZigpOworICAgIH0KKyAgICAKKyAgICBmbG9hdCBub25OYW5DYWxjdWxh
dGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKKyAgICAgICAg
cmV0dXJuIGdldEludFZhbHVlKCk7CisgICAgfQorICAgIHZvaWQgaW5jcmVtZW50Q2FsY3VsYXRl
ZFJlZigpIGNvbnN0OworICAgIHZvaWQgZGVjcmVtZW50Q2FsY3VsYXRlZFJlZigpIGNvbnN0OyAg
ICAKKyAgICAKICAgICB1bmlvbiB7CiAgICAgICAgIGludCBtX2ludFZhbHVlOwogICAgICAgICBm
bG9hdCBtX2Zsb2F0VmFsdWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzM5MGE5NmUxNjhmMmZlZGYyODdlZWRjOGQ5MGQ3
YjRjMDVjZjk0Zi4uZGRmNjdjZWVjM2M5YTRmNDY3MTk0ZThkMTVjZWIzMDhiMDQxZmVmZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAzLTA2ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhl
ckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxjOiBtaXhlZCBhYnNvbHV0ZS9wZXJj
ZW50YWdlcyB3b3JrIGZvciB3aWR0aCwgaGVpZ2h0LCBtYXJnaW4gYW5kIHBhZGRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIGNzczMvY2FsYy9tYXJn
aW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzczMvY2FsYy9wYWRkaW5nLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBjc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dDoKKwogMjAx
Mi0wMy0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZW1vdmUgdGhlIG5vLWxvbmdlci1uZWVkZWQgJ0NQVScgYW5kICdHUFUnIG1vZGlmaWVycy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy9tYXJnaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50eHQKaW5kZXggYWU3NTUzYzg3Y2Rk
NmU3ZGYxZjUyMjViZTcyYmM1ZjA3ZGM5MjkzYi4uNjM4NzQwNGE1MzAxMmMyNTAxMzMwZTg2Njc4
Y2ZlNDVkMzlmZmE3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL21hcmdpbi1leHBlY3RlZC50
eHQKQEAgLTE4LDI2ICsxOCwyNiBAQCBQQVNTIGNvbXB1dGVkTWFyZ2luTGVmdCgic2ltcGxlLWJv
dHRvbSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJzaW1wbGUtYm90dG9tIikg
aXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5SaWdodCgic2ltcGxlLWJvdHRvbSIpIGlzICIw
cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJzaW1wbGUtYm90dG9tIikgaXMgIjI1cHgi
Ci1GQUlMIGNvbXB1dGVkTWFyZ2luTGVmdCgicGVyY2VudC1hbGwiKSBzaG91bGQgYmUgMjVweC4g
V2FzIDBweC4KLUZBSUwgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtYWxsIikgc2hvdWxkIGJl
IDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtYWxsIikg
c2hvdWxkIGJlIDI1cHguIFdhcyAwcHguCi1GQUlMIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJj
ZW50LWFsbCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgotRkFJTCBjb21wdXRlZE1hcmdpbkxl
ZnQoInBlcmNlbnQtbGVmdCIpIHNob3VsZCBiZSAyNXB4LiBXYXMgMHB4LgorUEFTUyBjb21wdXRl
ZE1hcmdpbkxlZnQoInBlcmNlbnQtYWxsIikgaXMgIjI1cHgiCitQQVNTIGNvbXB1dGVkTWFyZ2lu
VG9wKCJwZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpblJpZ2h0KCJw
ZXJjZW50LWFsbCIpIGlzICIyNXB4IgorUEFTUyBjb21wdXRlZE1hcmdpbkJvdHRvbSgicGVyY2Vu
dC1hbGwiKSBpcyAiMjVweCIKK1BBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWxlZnQi
KSBpcyAiMjVweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Ub3AoInBlcmNlbnQtbGVmdCIpIGlzICIw
cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtbGVmdCIpIGlzICIwcHgiCiBQ
QVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWxlZnQiKSBpcyAiMHB4IgogUEFTUyBj
b21wdXRlZE1hcmdpbkxlZnQoInBlcmNlbnQtcmlnaHQiKSBpcyAiMHB4IgogUEFTUyBjb21wdXRl
ZE1hcmdpblRvcCgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCi1GQUlMIGNvbXB1dGVkTWFyZ2lu
UmlnaHQoInBlcmNlbnQtcmlnaHQiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29t
cHV0ZWRNYXJnaW5SaWdodCgicGVyY2VudC1yaWdodCIpIGlzICIyNXB4IgogUEFTUyBjb21wdXRl
ZE1hcmdpbkJvdHRvbSgicGVyY2VudC1yaWdodCIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFy
Z2luTGVmdCgicGVyY2VudC10b3AiKSBpcyAiMHB4IgotRkFJTCBjb21wdXRlZE1hcmdpblRvcCgi
cGVyY2VudC10b3AiKSBzaG91bGQgYmUgMjVweC4gV2FzIDBweC4KK1BBU1MgY29tcHV0ZWRNYXJn
aW5Ub3AoInBlcmNlbnQtdG9wIikgaXMgIjI1cHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQo
InBlcmNlbnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNl
bnQtdG9wIikgaXMgIjBweCIKIFBBU1MgY29tcHV0ZWRNYXJnaW5MZWZ0KCJwZXJjZW50LWJvdHRv
bSIpIGlzICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luVG9wKCJwZXJjZW50LWJvdHRvbSIpIGlz
ICIwcHgiCiBQQVNTIGNvbXB1dGVkTWFyZ2luUmlnaHQoInBlcmNlbnQtYm90dG9tIikgaXMgIjBw
eCIKLUZBSUwgY29tcHV0ZWRNYXJnaW5Cb3R0b20oInBlcmNlbnQtYm90dG9tIikgc2hvdWxkIGJl
IDI1cHguIFdhcyAwcHguCitQQVNTIGNvbXB1dGVkTWFyZ2luQm90dG9tKCJwZXJjZW50LWJvdHRv
bSIpIGlzICIyNXB4IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvcGFkZGluZy1leHBlY3RlZC50eHQKaW5kZXgg
ODNlZTI2N2I5MGVlOGFkZDY2MDQxYjVjZWY4YWI4OWFiODNiN2ViYy4uMGI4ZTNhNzQ0NDUyODcw
ODNjZGM1MmJiNjQ2ZWI1ZDIwNTc3OWE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9j
YWxjL3BhZGRpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9wYWRk
aW5nLWV4cGVjdGVkLnR4dApAQCAtOCwxMiArOCwxMiBAQCBUaGlzIGVsZW1lbnQgc2hvdWxkIGhh
dmUgYSB0b3AgcGFkZGluZyBvZiAyNSBwaXhlbHMuID0+IFBBU1MKIAogVGhpcyBlbGVtZW50IHNo
b3VsZCBoYXZlIGEgYm90dG9tIHBhZGRpbmcgb2YgMjUgcGl4ZWxzLiA9PiBQQVNTCiAKLVRoaXMg
ZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRpbmcgb2YgMjUgcGl4ZWxzICgxMCUg
b2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdyb25nIHdpZHRo
LCB3cm9uZyBoZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhbiBvdmVyYWxsIHBhZGRp
bmcgb2YgMjUgcGl4ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCku
ID0+IFBBU1MKIAotVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlM
OiB3cm9uZyB3aWR0aAorVGhpcyBlbGVtZW50IHNob3VsZCBoYXZlIGEgbGVmdCBwYWRkaW5nIG9m
IDI1IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQ
QVNTCiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHJpZ2h0IHBhZGRpbmcgb2YgMjUgcGl4
ZWxzICgxMCUgb2YgcGFyZW50IHdpZHRoIG9mIDMwMHB4IG1pbnVzIDVweCkuID0+IEZBSUw6IHdy
b25nIHdpZHRoCitUaGlzIGVsZW1lbnQgc2hvdWxkIGhhdmUgYSByaWdodCBwYWRkaW5nIG9mIDI1
IHBpeGVscyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNT
CiAKLVRoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVscyAo
MTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBo
ZWlnaHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIHRvcCBwYWRkaW5nIG9mIDI1IHBpeGVs
cyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCiAKLVRo
aXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVscyAoMTAl
IG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBGQUlMOiB3cm9uZyBoZWln
aHQKK1RoaXMgZWxlbWVudCBzaG91bGQgaGF2ZSBhIGJvdHRvbSBwYWRkaW5nIG9mIDI1IHBpeGVs
cyAoMTAlIG9mIHBhcmVudCB3aWR0aCBvZiAzMDBweCBtaW51cyA1cHgpLiA9PiBQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvc2ltcGxlLWNhbGNzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NzczMvY2FsYy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CmluZGV4IDVi
NDVkMmRjY2MwODAyYTMzNzEzOTc0YTYyNjg3YjM0ZGIzNTRiNWQuLjk3ZDZkM2EzYjZhZTMzZmZj
NjRiY2NjNjQzYTgxODUyMTEyZmI0NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvY2Fs
Yy9zaW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy9z
aW1wbGUtY2FsY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCwxMCArMjAsMTAgQEAgY29udHJvbCA9PiBQ
QVNTCiAxMHB4KiAoNSAqIDIpID0+IFBBU1MKIDUwcHggKyAxMHB4ICogNSAob3BlcmF0aW9uIG9y
ZGVyKSA9PiBQQVNTCiAxMDAlLzIgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKLTEwMCUg
KyAtMTAwcHggKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29tPTEgZXhwZWN0ZWQg
d2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVkIHdpZHRoIG9mIDEw
MCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1
NgotODAlIC0gNjBweCAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJTDogQHpvb209MSBleHBl
Y3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIgZXhwZWN0ZWQgd2lkdGgg
b2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3
YXMgMjU2Ci0zMDBweCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IEZBSUw6IEB6b29t
PTEgZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MS4yIGV4cGVjdGVk
IHdpZHRoIG9mIDEwMCwgYnV0IHdhcyAyNTY7IEB6b29tPTIgZXhwZWN0ZWQgd2lkdGggb2YgMTAw
LCBidXQgd2FzIDI1NgotLTEwMHB4ICsgMTAwJSAod2hlcmUgMTAwJSBpcyAyMDBweCkgPT4gRkFJ
TDogQHpvb209MSBleHBlY3RlZCB3aWR0aCBvZiAxMDAsIGJ1dCB3YXMgMjU2OyBAem9vbT0xLjIg
ZXhwZWN0ZWQgd2lkdGggb2YgMTAwLCBidXQgd2FzIDI1NjsgQHpvb209MiBleHBlY3RlZCB3aWR0
aCBvZiAxMDAsIGJ1dCB3YXMgMjU2CisxMDAlICsgLTEwMHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4
KSA9PiBQQVNTCis4MCUgLSA2MHB4ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiszMDBw
eCAtIDEwMCUgKHdoZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKKy0xMDBweCArIDEwMCUgKHdo
ZXJlIDEwMCUgaXMgMjAwcHgpID0+IFBBU1MKIDIwJSArIDMwJSAod2hlcmUgMTAwJSBpcyAyMDBw
eCkgPT4gUEFTUwogODAlIC0gMzAlICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCiAxMCUg
KiA1ICh3aGVyZSAxMDAlIGlzIDIwMHB4KSA9PiBQQVNTCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>