<?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>31331</bug_id>
          
          <creation_ts>2009-11-10 21:38:42 -0800</creation_ts>
          <short_desc>step attribute and ValidityState.stepMismatch for type=number/range</short_desc>
          <delta_ts>2009-11-18 17:49:07 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#the-step-attribute</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27451</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162340</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-10 21:38:42 -0800</bug_when>
    <thetext>This bug entry addresses step attribute and ValidityState.stepMismatch support for type=number/range, but not stepUp() and stepDown().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162341</commentid>
    <comment_count>1</comment_count>
      <attachid>42924</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-10 21:55:34 -0800</bug_when>
    <thetext>Created attachment 42924
Proposed patch (rev.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163344</commentid>
    <comment_count>2</comment_count>
      <attachid>42924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-13 09:28:30 -0800</bug_when>
    <thetext>Comment on attachment 42924
Proposed patch (rev.2)

&gt; +        double doubleValue = 0.0;
&gt; +        if (!formStringToDouble(value(), &amp;doubleValue))
&gt; +            return false;

Why does doubleValue to be initialized to 0? It&apos;s an out parameter of formStringToDouble and we don&apos;t continue if that function fails.

Is it really right to call fabs on doubleValue - min? Is that the right thing to do with cases where doubleValue is &lt; min?

&gt; +        // double&apos;s fractional part size is 52-bit.  If the current value is
&gt; +        // greater than step*2^52, the following fmod() makes no sense.
&gt; +        static const double fractionalSize = 52;
&gt; +        if (doubleValue / pow(2, fractionalSize) &gt; step)
&gt; +            return false;

Is there a way to do this same check without hard-coding the value 52?

&gt; +    if (inputType() == RANGE) {
&gt; +        // stepMismatch doesn&apos;t occur for RANGE. RenderSlider guarantees the
&gt; +        // value matches to step.
&gt; +        return false;
&gt; +    }
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return false;

The check for RANGE could be made assertion-only, since we have no special work to do for RANGE. How about just:

    ASSERT(inputType() == RANGE);
    return false;

With an appropriate comment.

&gt; +    double defaultStep = 1.0;
&gt; +    double stepScaleFactor = 1.0;

It seems these are declared too early. You should declare variables just before where they are used rather than at the top of a function.

Also, since these are constants, I suggest defining them outside the function at the top of the file with &quot;const&quot;.

I have no idea why we are defining a constant stepScaleFactor of 1 and then multiplying by it. Is this to prepare for some future work? If not, I suggest just dropping that.

Also, it&apos;s rare that I say this, but the default of 1 seems so straightforward that I&apos;m not sure it needs a named constant.

&gt; +    const String stepString = getAttribute(stepAttr);

As a matter of coding style and to avoid a slight bit of extra work, the result of getAttribute should go into a local variable of type const AtomicString&amp;, not String.

&gt; +    // Returns the &quot;allowed value step&quot; defined in the HTML spec.
&gt; +    bool allowedValueStep(double*) const;

Since this function does not return the allowed value step, our naming scheme in WebKit would normally call it getAllowedValueStep. We use nouns when the function&apos;s result is described by its name, but here the function result is a success/failure boolean.

&gt; +                 attribute [Reflect] DOMString step;

Did you test with null?

&gt; +    // Rounds clampedValue to minimum + N * step;

This should end with a period instead of a semicolon.

&gt; +    double n = round((clampedValue - minimum) / step);
&gt; +    clampedValue = minimum + n * step;

I suggest merging these two lines into a single expression. You won&apos;t need &quot;n&quot; on subsequent lines if you take my suggestion below.

&gt; +    if (clampedValue &gt; maximum)
&gt; +       clampedValue = minimum + (n - 1) * step;

I suggest doing:

    clampedValue -= step;

instead of doing more multiplication.

I see tests of stepMismatch, but no tests of SliderRange::clampValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163750</commentid>
    <comment_count>3</comment_count>
      <attachid>43246</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-15 08:50:50 -0800</bug_when>
    <thetext>Created attachment 43246
Proposed patch (rev.3)

Thank you for reviewing.

(In reply to comment #2)
&gt; (From update of attachment 42924 [details])
&gt; &gt; +        double doubleValue = 0.0;
&gt; &gt; +        if (!formStringToDouble(value(), &amp;doubleValue))
&gt; &gt; +            return false;
&gt; 
&gt; Why does doubleValue to be initialized to 0? It&apos;s an out parameter of
&gt; formStringToDouble and we don&apos;t continue if that function fails.

Removed it.
I had been afraid MSVC&apos;s &quot;uninitialized variable&quot; warning we saw in rangeOverflow() and rangeUnderflow().
In this case, I confirmed MSVC worked well.

&gt; Is it really right to call fabs on doubleValue - min? Is that the right thing
&gt; to do with cases where doubleValue is &lt; min?

Yes.  HTML5 draft doesn&apos;t define exceptional handling for such case and we need to check stepMismatch.
Making the differential value non-negative is reasonable for the following process.

&gt; &gt; +        // double&apos;s fractional part size is 52-bit.  If the current value is
&gt; &gt; +        // greater than step*2^52, the following fmod() makes no sense.
&gt; &gt; +        static const double fractionalSize = 52;
&gt; &gt; +        if (doubleValue / pow(2, fractionalSize) &gt; step)
&gt; &gt; +            return false;
&gt; 
&gt; Is there a way to do this same check without hard-coding the value 52?

I found DBL_MANT_DIG, which is 53.  I replaced 52 with DBL_MANT_DIG.
Note: double&apos;s precision is 53-bit, and the fractional part size is 52-bit because the most significant bit is omitted.

&gt; &gt; +    if (inputType() == RANGE) {
&gt; &gt; +        // stepMismatch doesn&apos;t occur for RANGE. RenderSlider guarantees the
&gt; &gt; +        // value matches to step.
&gt; &gt; +        return false;
&gt; &gt; +    }
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; &gt; +    return false;
&gt; 
&gt; The check for RANGE could be made assertion-only, since we have no special work
&gt; to do for RANGE. How about just:
&gt; 
&gt;     ASSERT(inputType() == RANGE);
&gt;     return false;
&gt; 
&gt; With an appropriate comment.

Done.

&gt; &gt; +    double defaultStep = 1.0;
&gt; &gt; +    double stepScaleFactor = 1.0;
&gt; 
&gt; It seems these are declared too early. You should declare variables just before
&gt; where they are used rather than at the top of a function.
&gt; 
&gt; Also, since these are constants, I suggest defining them outside the function
&gt; at the top of the file with &quot;const&quot;.

Done: define them at the top.

&gt; I have no idea why we are defining a constant stepScaleFactor of 1 and then
&gt; multiplying by it. Is this to prepare for some future work? If not, I suggest
&gt; just dropping that.
&gt; 
&gt; Also, it&apos;s rare that I say this, but the default of 1 seems so straightforward
&gt; that I&apos;m not sure it needs a named constant.

We&apos;ll need to use different values for date/datetime/datetime-local/month/time/week.
So the ideal form would be:
    double defaultStep;
    double stepScaleFactor;
    switch (inputType()) {
    case NUMBER:
    case RANGE:
        defaultStep = numberDefaultStep;
        stepScaleFactor = numberStepScaleFactor;
        break;
    case DATE:
        defaultStep = ...;
        ...

But MSVC warns &quot;uninitialized variable&quot; for defaltStep and stepScaleFactor.
I changed the code like the following:
    double defaultStep = 0;
    double stepScaleFactor = 0;
    switch (inputType()) {
    case NUMBER:
    case RANGE:
        defaultStep = numberDefaultStep;
        stepScaleFactor = numberStepScaleFactor;
        break;
    case DATE:
        // FIXME

&gt; &gt; +    const String stepString = getAttribute(stepAttr);
&gt; 
&gt; As a matter of coding style and to avoid a slight bit of extra work, the result
&gt; of getAttribute should go into a local variable of type const AtomicString&amp;,
&gt; not String.

Fixed.

&gt; &gt; +    // Returns the &quot;allowed value step&quot; defined in the HTML spec.
&gt; &gt; +    bool allowedValueStep(double*) const;
&gt; 
&gt; Since this function does not return the allowed value step, our naming scheme
&gt; in WebKit would normally call it getAllowedValueStep. We use nouns when the
&gt; function&apos;s result is described by its name, but here the function result is a
&gt; success/failure boolean.

Renamed to getAllowedStep().

&gt; &gt; +                 attribute [Reflect] DOMString step;
&gt; 
&gt; Did you test with null?

Added tests for null, undefined, and non-string type.

&gt; &gt; +    // Rounds clampedValue to minimum + N * step;
&gt; 
&gt; This should end with a period instead of a semicolon.

Fixed.

&gt; &gt; +    double n = round((clampedValue - minimum) / step);
&gt; &gt; +    clampedValue = minimum + n * step;
&gt; 
&gt; I suggest merging these two lines into a single expression. You won&apos;t need &quot;n&quot;
&gt; on subsequent lines if you take my suggestion below.
&gt; 
&gt; &gt; +    if (clampedValue &gt; maximum)
&gt; &gt; +       clampedValue = minimum + (n - 1) * step;
&gt; 
&gt; I suggest doing:
&gt; 
&gt;     clampedValue -= step;
&gt; 
&gt; instead of doing more multiplication.

Done.

&gt; I see tests of stepMismatch, but no tests of SliderRange::clampValue.

I added a test that needs clampValue behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163776</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-15 14:52:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Is it really right to call fabs on doubleValue - min? Is that the right thing
&gt; &gt; to do with cases where doubleValue is &lt; min?
&gt; 
&gt; Yes.  HTML5 draft doesn&apos;t define exceptional handling for such case and we need
&gt; to check stepMismatch.

Did you send mail to HTML5 or WHATWG mentioning this is undefined? I&apos;d like to see this case covered in the specification.

I&apos;m not sure absolute value is best for this. Perhaps we should treat negative numbers as if they were zero or always just use 1 in that case? Having the same behavior in edge cases can sometimes prevent accidental site incompatibilities so I&apos;d prefer to have this defined in the specification and covered by test cases even if it&apos;s not.

&gt; &gt; &gt; +        // double&apos;s fractional part size is 52-bit.  If the current value is
&gt; &gt; &gt; +        // greater than step*2^52, the following fmod() makes no sense.
&gt; &gt; &gt; +        static const double fractionalSize = 52;
&gt; &gt; &gt; +        if (doubleValue / pow(2, fractionalSize) &gt; step)
&gt; &gt; &gt; +            return false;
&gt; &gt; 
&gt; &gt; Is there a way to do this same check without hard-coding the value 52?
&gt; 
&gt; I found DBL_MANT_DIG, which is 53.  I replaced 52 with DBL_MANT_DIG.
&gt; Note: double&apos;s precision is 53-bit, and the fractional part size is 52-bit
&gt; because the most significant bit is omitted.

Is DBL_MANT_DIG available on all the platforms we target?

&gt; We&apos;ll need to use different values for
&gt; date/datetime/datetime-local/month/time/week.
&gt; So the ideal form would be:
&gt;     double defaultStep;
&gt;     double stepScaleFactor;
&gt;     switch (inputType()) {
&gt;     case NUMBER:
&gt;     case RANGE:
&gt;         defaultStep = numberDefaultStep;
&gt;         stepScaleFactor = numberStepScaleFactor;
&gt;         break;
&gt;     case DATE:
&gt;         defaultStep = ...;
&gt;         ...
&gt; 
&gt; But MSVC warns &quot;uninitialized variable&quot; for defaltStep and stepScaleFactor.
&gt; I changed the code like the following:
&gt;     double defaultStep = 0;
&gt;     double stepScaleFactor = 0;
&gt;     switch (inputType()) {
&gt;     case NUMBER:
&gt;     case RANGE:
&gt;         defaultStep = numberDefaultStep;
&gt;         stepScaleFactor = numberStepScaleFactor;
&gt;         break;
&gt;     case DATE:
&gt;         // FIXME

The warning is due to the case where inputType() is not one of the values in the switch statement.

I suggest we break out the code to compute the default step and scale factor into a separate function with two out arguments (I&apos;d use references for those, but others seem to often chose pointers for that purpose). Named something like getStep, getStepConstraints, getStepDefaults, getStepParameters, or something along those lines. That function can use a switch with return statements, and then have code after the switch that does:

    ASSERT_NOT_REACHED();
    defaultStep = 1;
    stepScaleFactor = 1;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164183</commentid>
    <comment_count>5</comment_count>
      <attachid>43350</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-17 02:22:21 -0800</bug_when>
    <thetext>Created attachment 43350
Proposed patch (rev.4)

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Is it really right to call fabs on doubleValue - min? Is that the right thing
&gt; &gt; &gt; to do with cases where doubleValue is &lt; min?
&gt; &gt; 
&gt; &gt; Yes.  HTML5 draft doesn&apos;t define exceptional handling for such case and we need
&gt; &gt; to check stepMismatch.
&gt; 
&gt; Did you send mail to HTML5 or WHATWG mentioning this is undefined? I&apos;d like to
&gt; see this case covered in the specification.
&gt; 
&gt; I&apos;m not sure absolute value is best for this. Perhaps we should treat negative
&gt; numbers as if they were zero or always just use 1 in that case? Having the same
&gt; behavior in edge cases can sometimes prevent accidental site incompatibilities
&gt; so I&apos;d prefer to have this defined in the specification and covered by test
&gt; cases even if it&apos;s not.

I renamed the variable `min&apos; here to `stepBase.&apos;

I&apos;m asking about this to WHATWG now, and have no reply yet.
If the spec will be updated as &quot;stepMismatch is false if rangeUnderflow or rangeOverflow&quot;, I&apos;ll upadte the code.

I don&apos;t think this section in the current spec is ambiguous.
We need to handle cases without min attribute.  stepMismatch for
  &lt;input type=number step=2 value=-2&gt; should be false, and
  &lt;input type=number step=2 value=-1&gt; should be true
because the `step base&apos; is 0 in these cases.   So we must handle a case of value &lt; stepBase anyway.

&gt; &gt; &gt; Is there a way to do this same check without hard-coding the value 52?
&gt; &gt; 
&gt; &gt; I found DBL_MANT_DIG, which is 53.  I replaced 52 with DBL_MANT_DIG.
&gt; &gt; Note: double&apos;s precision is 53-bit, and the fractional part size is 52-bit
&gt; &gt; because the most significant bit is omitted.
&gt; 
&gt; Is DBL_MANT_DIG available on all the platforms we target?

It&apos;s defined in ISO C standard.  I confirmed on Mac OS,  VS 2005, and Linux.
If other ports have no DBL_MANT_DIG, we may add it to wtf/MathExtras.h.

&gt; I suggest we break out the code to compute the default step and scale factor
&gt; into a separate function with two out arguments (I&apos;d use references for those,
&gt; but others seem to often chose pointers for that purpose). Named something like
&gt; getStep, getStepConstraints, getStepDefaults, getStepParameters, or something
&gt; along those lines. That function can use a switch with return statements, and
&gt; then have code after the switch that does:

Ok, I introduced getStepParameters(double*,double*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164798</commentid>
    <comment_count>6</comment_count>
      <attachid>43350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:10:21 -0800</bug_when>
    <thetext>Comment on attachment 43350
Proposed patch (rev.4)

&gt; +// Constant values for getAllowedValueStep().
&gt; +static const double numberDefaultStep = 1.0;
&gt; +static const double numberStepScaleFactor = 1.0;

These are actually for getStepParameters; the comment is wrong.

&gt; +        doubleValue = fabs(doubleValue - stepBase);

I still remain skeptical about the absolute value here. But it&apos;s really the tests that will guarantee we have this right.

&gt; +        if (isinf(doubleValue))
&gt; +            return false;
&gt; +        // double&apos;s fractional part size is DBL_MAN_DIG-bit.  If the current
&gt; +        // value is greater than step*2^DBL_MANT_DIG, the following fmod() makes
&gt; +        // no sense.
&gt; +        if (doubleValue / pow(2, DBL_MANT_DIG) &gt; step)
&gt; +            return false;

The pow-related check will take care of the infinity case naturally, so you don&apos;t need the explicit isinf check.

&gt; +        double remainder = fmod(doubleValue, step);
&gt; +        // Accepts errors in lower 7-bit.
&gt; +        double acceptableError = step / pow(2, DBL_MANT_DIG - 7);
&gt; +        return acceptableError &lt; remainder &amp;&amp; remainder &lt; (step - acceptableError);

Where does the constant 7 come from? The HTML5 specification? The comment should make that clear.

&gt; +    // Sets the &quot;allowed value step&quot; defined in the HTML spec to the specified double pointer.
&gt; +    // Returns false if there is no &quot;allowed value step.&quot;
&gt; +    bool getAllowedValueStep(double*) const;

For non-optional out parameters, I really prefer references to pointers. But I suppose that&apos;s just a personal preference.

&gt;      PassRefPtr&lt;HTMLFormElement&gt; createTemporaryFormForIsIndex();
&gt; -
&gt; +    // Helper for getAllowedValueStep();
&gt; +    bool getStepParameters(double* defaultStep, double* stepScaleFactor) const;
&gt;  #if ENABLE(DATALIST)
&gt;      HTMLDataListElement* dataList() const;
&gt;  #endif

The new function should not be put in the same paragraph with the other functions, especially the dataList function which is inside an ifdef. I think we need a blank line.

r=me as is but it would be nice if you did another round considering my comments above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164801</commentid>
    <comment_count>7</comment_count>
      <attachid>43350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:12:22 -0800</bug_when>
    <thetext>Comment on attachment 43350
Proposed patch (rev.4)

Oops, I said r=me

By the way, if you look at the test output you&apos;ll see that it&apos;s a little hard to understand what&apos;s going on. A great test is something you can understand from the output, not just by reading the test. One technique is to use the &quot;debug&quot; function to write out text about what&apos;s being tested. Another is to put more of the code that triggers the test case inside the shouldBe expression, by calling a function to perform the test with arguments, so the new value and step values could be in the expression that shouldBe shows instead of just in the code between shouldBe statements. Think of test design as a creative endeavor where you are trying to communicate to the next person trying to understand your test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164833</commentid>
    <comment_count>8</comment_count>
      <attachid>43350</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-18 17:19:12 -0800</bug_when>
    <thetext>Comment on attachment 43350
Proposed patch (rev.4)

Thank you for the advice about tests.  I&apos;ll take care of it next time, or fix it by another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164847</commentid>
    <comment_count>9</comment_count>
      <attachid>43350</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-18 17:49:02 -0800</bug_when>
    <thetext>Comment on attachment 43350
Proposed patch (rev.4)

Clearing flags on attachment: 43350

Committed r51159: &lt;http://trac.webkit.org/changeset/51159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164848</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-18 17:49:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42924</attachid>
            <date>2009-11-10 21:55:34 -0800</date>
            <delta_ts>2009-11-15 08:50:50 -0800</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>0001-step-validity-2.patch</filename>
            <type>text/plain</type>
            <size>24309</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSAyMGFkZTI4Yjg3MzJjNmY1YzQ5MzM5NzRjYTlhNWEzODU5MzFkOGVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBXZWQsIDI4IE9jdCAyMDA5IDE4OjExOjU3ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gc3RlcC12
YWxpZGl0eS0yCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxNyArKysrKwogLi4uL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51
bWJlci1leHBlY3RlZC50eHQgfCAgIDIzICsrKysrKwogLi4uL2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
c3RlcE1pc21hdGNoLW51bWJlci5odG1sICAgfCAgIDEzICsrKysKIC4uLi9WYWxpZGl0eVN0YXRl
LXN0ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3RlZC50eHQgIHwgICAyMyArKysrKysKIC4uLi9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5odG1sICAgIHwgICAxMyArKysrCiAu
Li5kaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLWV4cGVjdGVkLnR4dCB8ICAgMjUg
KysrKysrKwogLi4uL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0bWwg
ICAgfCAgIDEzICsrKysKIC4uLi9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuanMg
ICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysKIC4uLi9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC1yYW5nZS5qcyAgICAgICAgICAgIHwgICA2MSArKysrKysrKysrKysrKysrCiAuLi4v
VmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanMgICAgICB8ICAgNDEgKysr
KysrKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAzMSArKysrKysrKwogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiAg
ICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCAgICAgICAgICAgICAgICAgIHwgICA3NCArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIFdlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBX
ZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcg
KysKIFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCAgICAgICAgICAgICAg
ICAgfCAgIDIzICsrKysrLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDQyNCBpbnNlcnRpb25zKCspLCA3
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0
Y2gtbnVtYmVyLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0
Y2gtcmFuZ2UuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC11bnN1cHBvcnRlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVy
LmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVz
dHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuanMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC11bnN1cHBvcnRlZC5qcwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OGM0YjcyLi43ZTU3YjlmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0cyBmb3IgVmFsaWRpdHlTdGF0ZS5zdGVwTWlzbWF0Y2guCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ1MQorCisgICAgICAgICogZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1p
c21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9W
YWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNt
YXRjaC11bnN1cHBvcnRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Njcmlw
dC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNo
LXJhbmdlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxp
ZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5qczogQWRkZWQuCisKIDIwMDktMTEt
MTAgIFZpdGFseSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJjN2YxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0
ZXBNaXNtYXRjaC1udW1iZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0NoZWNrIHN0
ZXBNaXNtYXRjaCByZXN1bHRzIGZvciB0eXBlPW51bWJlci4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQ
QVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2ggaXMgdHJ1ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BB
U1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQ
QVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyB0cnVlCitQQVNTIGlucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2ggaXMgdHJ1ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BB
U1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5NjdiZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0
Y2gtbnVtYmVyLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0
ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0
ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWE4MWFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMyBAQAorQ2hlY2sgc3RlcE1pc21hdGNoIHJlc3VsdHMgZm9yIHR5
cGU9cmFuZ2UuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlz
bWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNl
CitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52
YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1p
c21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxz
ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBN
aXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFs
c2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVw
TWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5
U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNGY4Zjc4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNt
YXRjaC11bnN1cHBvcnRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjNkNTBmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjUgQEAKK0NoZWNrIHN0ZXBNaXNtYXRjaCByZXN1bHRzIGZvciB0eXBlcyB3aGlj
aCBkb2VzIG5vdCBzdXBwb3J0IGZvciBzdGVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0
ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMg
ZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlu
cHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5z
dGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlz
IGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBp
bnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHku
c3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBp
cyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mg
aW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gg
aXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3Rl
cE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2Y5YzRlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11
bnN1cHBvcnRlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUt
c3RlcE1pc21hdGNoLW51bWJlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRl
c3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40M2U4N2EyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVt
YmVyLmpzCkBAIC0wLDAgKzEsNTggQEAKK2Rlc2NyaXB0aW9uKCdDaGVjayBzdGVwTWlzbWF0Y2gg
cmVzdWx0cyBmb3IgdHlwZT1udW1iZXIuJyk7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lucHV0Jyk7CitpbnB1dC50eXBlID0gJ251bWJlcic7CisKKy8vIElmIHRoZSB2
YWx1ZSBpcyBlbXB0eSwgaXQgbmV2ZXIgbWlzbWF0Y2hlcy4KK2lucHV0LnZhbHVlID0gJyc7Citz
aG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC5t
aW4gPSAnMC4xJzsKK2lucHV0LnN0ZXAgPSAnMS4wJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKworLy8gSW50ZWdlcnMKK2lucHV0LnZhbHVlID0g
JzEnOworaW5wdXQubWluID0gJzAnOworaW5wdXQuc3RlcCA9ICcyJzsKK3Nob3VsZEJlKCdpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAndHJ1ZScpOworaW5wdXQudmFsdWUgPSAnLTMnOwor
aW5wdXQubWluID0gJy00JzsKK2lucHV0LnN0ZXAgPSAnMic7CitzaG91bGRCZSgnaW5wdXQudmFs
aWRpdHkuc3RlcE1pc21hdGNoJywgJ3RydWUnKTsKKy8vIEludmFsaWQgc3RlcCBhdHRyaWJ1dGUg
aXMgaWdub3JlZC4KK2lucHV0LnZhbHVlID0gJy0zJzsKK2lucHV0Lm1pbiA9ICctNCc7CitpbnB1
dC5zdGVwID0gJy0yJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAn
ZmFsc2UnKTsKKy8vIEh1Z2UgbnVtYmVycyBhbmQgc21hbGwgc3RlcDsgdW5jb21wYXJhYmxlCitp
bnB1dC52YWx1ZSA9ICcxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCc7CitpbnB1dC5taW4gPSAnJzsK
K2lucHV0LnN0ZXAgPSAnMyc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
JywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjc5NzY5MzEzNDg2MjMxNTZlKzMwOCc7Citz
aG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52
YWx1ZSA9ICcxLjc5NzY5MzEzNDg2MjMxNTVlKzMwOCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisvLyBIdWdlIG51bWJlcnMgYW5kIGh1Z2Ugc3Rl
cAoraW5wdXQudmFsdWUgPSAnMS42MGUrMzA4JzsKK2lucHV0LnN0ZXAgPSAnMC4yMGUrMzA4JzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0
LnZhbHVlID0gJzEuNjBlKzMwOCc7CitpbnB1dC5zdGVwID0gJzAuMjJlKzMwOCc7CitzaG91bGRC
ZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ3RydWUnKTsKKworLy8gRnJhY3Rpb25h
bCBudW1iZXJzCitpbnB1dC52YWx1ZSA9ICcwLjknOworaW5wdXQuc3RlcCA9ICcwLjEnOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFs
dWUgPSAnMC45JzsKK2lucHV0LnN0ZXAgPSAnMC4xMDAwMDAxJzsKK3Nob3VsZEJlKCdpbnB1dC52
YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAndHJ1ZScpOworaW5wdXQudmFsdWUgPSAnMC45JzsKK2lu
cHV0LnN0ZXAgPSAnMC4xMDAwMDAwMDAwMDAwMDAxJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzEuMCc7CitpbnB1dC5z
dGVwID0gJzAuMzMzMzMzMzMzMzMzMzMzMyc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3Rl
cE1pc21hdGNoJywgJ2ZhbHNlJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Njcmlw
dC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTFlMjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gt
cmFuZ2UuanMKQEAgLTAsMCArMSw2MSBAQAorZGVzY3JpcHRpb24oJ0NoZWNrIHN0ZXBNaXNtYXRj
aCByZXN1bHRzIGZvciB0eXBlPXJhbmdlLicpOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQudHlwZSA9ICdyYW5nZSc7CisKKy8vIFRoZSBmb2xs
b3dpbmcgdGVzdCBpbnB1dHMgYXJlIHRoZSBzYW1lIGFzIFZhbGlkaXR5U3RhdGUtc3RlcE1pc21h
dGNoLW51bWJlci5qcywKKy8vIGJ1dCBhbGwgZXhwZWN0ZWQgcmVzdWx0cyBzaG91bGQgYmUgJ2Zh
bHNlJy4KKworLy8gSWYgdGhlIHZhbHVlIGlzIGVtcHR5LCBpdCBuZXZlciBtaXNtYXRjaGVzLgor
aW5wdXQudmFsdWUgPSAnJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gn
LCAnZmFsc2UnKTsKK2lucHV0Lm1pbiA9ICcwLjEnOworaW5wdXQuc3RlcCA9ICcxLjAnOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworCisvLyBJbnRl
Z2VycworaW5wdXQudmFsdWUgPSAnMSc7CitpbnB1dC5taW4gPSAnMCc7CitpbnB1dC5zdGVwID0g
JzInOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOwor
aW5wdXQudmFsdWUgPSAnLTMnOworaW5wdXQubWluID0gJy00JzsKK2lucHV0LnN0ZXAgPSAnMic7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisvLyBJ
bnZhbGlkIHN0ZXAgYXR0cmlidXRlIGlzIGlnbm9yZWQuCitpbnB1dC52YWx1ZSA9ICctMyc7Citp
bnB1dC5taW4gPSAnLTQnOworaW5wdXQuc3RlcCA9ICctMic7CitzaG91bGRCZSgnaW5wdXQudmFs
aWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisvLyBIdWdlIG51bWJlcnMgYW5kIHNtYWxs
IHN0ZXA7IHVuY29tcGFyYWJsZQoraW5wdXQudmFsdWUgPSAnMS43OTc2OTMxMzQ4NjIzMTU3ZSsz
MDgnOworaW5wdXQubWluID0gJyc7CitpbnB1dC5zdGVwID0gJzMnOworc2hvdWxkQmUoJ2lucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS43OTc2
OTMxMzQ4NjIzMTU2ZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS43OTc2OTMxMzQ4NjIzMTU1ZSszMDgnOwor
c2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworLy8gSHVn
ZSBudW1iZXJzIGFuZCBodWdlIHN0ZXAKK2lucHV0LnZhbHVlID0gJzEuNjBlKzMwOCc7CitpbnB1
dC5zdGVwID0gJzAuMjBlKzMwOCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjYwZSszMDgnOworaW5wdXQuc3RlcCA9
ICcwLjIyZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdm
YWxzZScpOworCisvLyBGcmFjdGlvbmFsIG51bWJlcnMKK2lucHV0LnZhbHVlID0gJzAuOSc7Citp
bnB1dC5zdGVwID0gJzAuMSc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
JywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcwLjknOworaW5wdXQuc3RlcCA9ICcwLjEwMDAw
MDEnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOwor
aW5wdXQudmFsdWUgPSAnMC45JzsKK2lucHV0LnN0ZXAgPSAnMC4xMDAwMDAwMDAwMDAwMDAxJzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0
LnZhbHVlID0gJzEuMCc7CitpbnB1dC5zdGVwID0gJzAuMzMzMzMzMzMzMzMzMzMzMyc7CitzaG91
bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC11bnN1cHBvcnRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNDM5ZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3Jp
cHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanMKQEAgLTAs
MCArMSw0MSBAQAorZGVzY3JpcHRpb24oJ0NoZWNrIHN0ZXBNaXNtYXRjaCByZXN1bHRzIGZvciB0
eXBlcyB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGZvciBzdGVwLicpOworCit2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworCitpbnB1dC50eXBlID0gJ3RleHQnOwor
aW5wdXQuc3RlcCA9ICczJzsKK2lucHV0LnZhbHVlID0gJzInOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworCitpbnB1dC50eXBlID0gJ2J1dHRvbic7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1
dC50eXBlID0gJ2NoZWNrYm94JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAnY29sb3InOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdlbWFpbCc7Citz
aG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50
eXBlID0gJ2hpZGRlbic7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywg
J2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ2ltYWdlJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAna2h0bWxfaXNpbmRleCc7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1
dC50eXBlID0gJ3Bhc3N3ZCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
JywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ3JhZGlvJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAncmVzZXQnOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlw
ZSA9ICdzZWFyY2gnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdm
YWxzZScpOworaW5wdXQudHlwZSA9ICdzdWJtaXQnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICd0ZWwnOworc2hvdWxkQmUo
J2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICd1
cmwnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOwor
aW5wdXQudHlwZSA9ICdmaWxlJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2gnLCAnZmFsc2UnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyNDY2YmUu
LjlhZjU5YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMTAtMjkgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN1cHBvcnQgZm9yIHN0ZXAgYXR0cmlidXRlIGFuZCBWYWxpZGl0eVN0YWUuc3RlcE1p
c21hdGNoIGZvcgorICAgICAgICB0eXBlPW51bWJlciBhbmQgcmFuZ2UuICBzdGVwTWlzbWF0Y2gg
d2lsbCBiZSBmYWxzZSBpZiB0aGUKKyAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBjdXJy
ZW50IHZhbHVlIGFuZCBhIG11bHRpcGxlIG9mIHRoZSBzdGVwCisgICAgICAgIHZhbHVlIGlzIHZl
cnkgc21hbGwuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiBSZW5kZXJTbGlkZXIg
c28gdGhhdCBpdCBhbHdheXMgaGFzIGEgdmFsdWUKKyAgICAgICAgcm91bmRlZCB0byB0aGUgc3Rl
cCBhdHRyaWJ1dGUgdmFsdWUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NDUxCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5odG1sCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c3Rl
cE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFsbG93ZWRW
YWx1ZVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCk6Cisg
ICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJSYW5nZTo6U2xpZGVyUmFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyUmFuZ2U6OmNsYW1wVmFsdWUpOgorCiAyMDA5LTEx
LTEwICBWaXRhbHkgUmVwZXNoa28gIDx2aXRhbHlyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpp
bmRleCAxNWNmNTIyLi4xYjlmMTUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAg
LTIzMiw2ICsyMzIsNyBAQCBzcGVsbGNoZWNrCiBzcmMKIHN0YW5kYnkKIHN0YXJ0CitzdGVwCiBz
dHlsZQogc3VtbWFyeQogdGFiaW5kZXgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBm
MjVjOTA4Li5mNmQ4NWIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yODgsNiAr
Mjg4LDgwIEBAIGRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU1heGltdW0oKSBjb25zdAog
ICAgIHJldHVybiBtYXg7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNo
KCkgY29uc3QKK3sKKyAgICBkb3VibGUgc3RlcDsKKyAgICBpZiAoIWFsbG93ZWRWYWx1ZVN0ZXAo
JnN0ZXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGlucHV0VHlwZSgpID09IE5V
TUJFUikgeworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUgPSAwLjA7CisgICAgICAgIGlmICgh
Zm9ybVN0cmluZ1RvRG91YmxlKHZhbHVlKCksICZkb3VibGVWYWx1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSBtaW4gPSAwLjA7CisgICAgICAgIGZvcm1TdHJp
bmdUb0RvdWJsZShnZXRBdHRyaWJ1dGUobWluQXR0ciksICZtaW4pOworICAgICAgICBkb3VibGVW
YWx1ZSA9IGZhYnMoZG91YmxlVmFsdWUgLSBtaW4pOworICAgICAgICAvLyBkb3VibGUncyBmcmFj
dGlvbmFsIHBhcnQgc2l6ZSBpcyA1Mi1iaXQuICBJZiB0aGUgY3VycmVudCB2YWx1ZSBpcworICAg
ICAgICAvLyBncmVhdGVyIHRoYW4gc3RlcCoyXjUyLCB0aGUgZm9sbG93aW5nIGZtb2QoKSBtYWtl
cyBubyBzZW5zZS4KKyAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmFjdGlvbmFsU2l6ZSA9
IDUyOworICAgICAgICBpZiAoZG91YmxlVmFsdWUgLyBwb3coMiwgZnJhY3Rpb25hbFNpemUpID4g
c3RlcCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlIHJlbWFpbmRl
ciA9IGZtb2QoZG91YmxlVmFsdWUsIHN0ZXApOworICAgICAgICAvLyBBY2NlcHRzIGVycm9ycyBs
ZXNzIHRoYW4gNi1iaXQuCisgICAgICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IgPSBzdGVwIC8g
cG93KDIsIGZyYWN0aW9uYWxTaXplIC0gNik7CisgICAgICAgIHJldHVybiBhY2NlcHRhYmxlRXJy
b3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3IpOwor
ICAgIH0KKyAgICBpZiAoaW5wdXRUeXBlKCkgPT0gUkFOR0UpIHsKKyAgICAgICAgLy8gc3RlcE1p
c21hdGNoIGRvZXNuJ3Qgb2NjdXIgZm9yIFJBTkdFLiBSZW5kZXJTbGlkZXIgZ3VhcmFudGVlcyB0
aGUKKyAgICAgICAgLy8gdmFsdWUgbWF0Y2hlcyB0byBzdGVwLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBIVE1MSW5wdXRFbGVtZW50OjphbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3Rl
cCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc3RlcCk7CisgICAgZG91YmxlIGRlZmF1bHRTdGVwID0g
MS4wOworICAgIGRvdWJsZSBzdGVwU2NhbGVGYWN0b3IgPSAxLjA7CisgICAgc3dpdGNoIChpbnB1
dFR5cGUoKSkgeworICAgIGNhc2UgTlVNQkVSOgorICAgIGNhc2UgUkFOR0U6CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQlVUVE9OOgorICAgIGNhc2UgQ0hFQ0tCT1g6CisgICAgY2FzZSBDT0xP
UjoKKyAgICBjYXNlIEVNQUlMOgorICAgIGNhc2UgRklMRToKKyAgICBjYXNlIEhJRERFTjoKKyAg
ICBjYXNlIElNQUdFOgorICAgIGNhc2UgSVNJTkRFWDoKKyAgICBjYXNlIFBBU1NXT1JEOgorICAg
IGNhc2UgUkFESU86CisgICAgY2FzZSBSRVNFVDoKKyAgICBjYXNlIFNFQVJDSDoKKyAgICBjYXNl
IFNVQk1JVDoKKyAgICBjYXNlIFRFTEVQSE9ORToKKyAgICBjYXNlIFRFWFQ6CisgICAgY2FzZSBV
Ukw6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY29uc3QgU3RyaW5nIHN0ZXBT
dHJpbmcgPSBnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOworICAgIGlmIChzdGVwU3RyaW5nLmlzRW1w
dHkoKSkgeworICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0
ZXBTdHJpbmcsICJhbnkiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBwYXJz
ZWQ7CisgICAgaWYgKCFmb3JtU3RyaW5nVG9Eb3VibGUoc3RlcFN0cmluZywgJnBhcnNlZCkgfHwg
cGFyc2VkIDw9IDAuMCkgeworICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxl
RmFjdG9yOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgKnN0ZXAgPSBwYXJzZWQg
KiBzdGVwU2NhbGVGYWN0b3I7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBpbmxpbmUg
Q2hlY2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJhZGlvQnV0dG9ucyhjb25zdCBIVE1MSW5wdXRF
bGVtZW50ICplbGVtZW50KQogewogICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBlbGVt
ZW50LT5mb3JtKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAwZTJkYTMyLi5jNGVkMDNh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTEwMiw2ICsxMDIsMTAgQEAgcHVibGljOgog
ICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHR5cGU9cmFuZ2UuICBEb24ndCBj
YWxsIHRoaXMgZm9yIG90aGVyIHR5cGVzLgogICAgIC8vIFRoaXMgYWx3YXlzIHJldHVybnMgYSB2
YWx1ZSB3aGljaCBpcyA8PSByYW5nZU1pbmltdW0oKS4KICAgICBkb3VibGUgcmFuZ2VNYXhpbXVt
KCkgY29uc3Q7CisgICAgLy8gUmV0dXJucyB0aGUgImFsbG93ZWQgdmFsdWUgc3RlcCIgZGVmaW5l
ZCBpbiB0aGUgSFRNTCBzcGVjLgorICAgIGJvb2wgYWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBj
b25zdDsKKyAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZS4KKyAgICBib29sIHN0ZXBNaXNtYXRjaCgp
IGNvbnN0OwogCiAgICAgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gU1VCTUlUIHx8IG1fdHlwZSA9PSBSRVNFVCB8fCBtX3R5cGUgPT0gQlVUVE9OOyB9CiAgICAg
dmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gUkFE
SU87IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRleCA1OTI0OGY0Li5iNDVkMTkwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC02MywxMiArNjMsMTQgQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgIHNpemU7IC8v
IENoYW5nZWQgc3RyaW5nIC0+IGxvbmcgYXMgcGFydCBvZiBET00gbGV2ZWwgMgogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0
cmluZyBzcmM7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5n
IHN0ZXA7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJp
bmcsIEpTQ0N1c3RvbUdldHRlcl0gRE9NU3RyaW5nIHR5cGU7IC8vIHJlYWRvbmx5IGRyb3BwZWQg
YXMgcGFydCBvZiBET00gbGV2ZWwgMgogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdXNlTWFwOwogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAjaWYg
ZGVmaW5lZChFTkFCTEVfREFUQUxJU1QpICYmIEVOQUJMRV9EQVRBTElTVAogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgSFRNTE9wdGlvbkVsZW1lbnQgc2VsZWN0ZWRPcHRpb247CiAjZW5kaWYK
KwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHdpbGxWYWxpZGF0
ZTsKICAgICAgICAgYm9vbGVhbiAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICAg
dm9pZCAgICAgICAgICAgICAgIHNldEN1c3RvbVZhbGlkaXR5KGluIFtDb252ZXJ0VW5kZWZpbmVk
T3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3Bw
CmluZGV4IDZiMGEwYjQuLjJjNmU3YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0
eVN0YXRlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTkzLDYg
KzkzLDEzIEBAIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb250cm9sKCkpLT5yYW5nZU92ZXJmbG93
KCk7CiB9CiAKK2Jvb2wgVmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKCkKK3sKKyAgICBpZiAo
IWNvbnRyb2woKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2woKSktPnN0
ZXBNaXNtYXRjaCgpOworfQorCiBib29sIFZhbGlkaXR5U3RhdGU6OnZhbGlkKCkKIHsKICAgICBi
b29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdl
VW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpIHx8CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvVmFsaWRpdHlTdGF0ZS5oIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCAx
ZGVlMzA2Li40ZTI0MGVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5o
CisrKyBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVybiBjb250cm9s
KCktPnRvb0xvbmcoKTsgfQogICAgICAgICBib29sIHJhbmdlVW5kZXJmbG93KCk7CiAgICAgICAg
IGJvb2wgcmFuZ2VPdmVyZmxvdygpOwotICAgICAgICBib29sIHN0ZXBNaXNtYXRjaCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIGJvb2wgc3RlcE1pc21hdGNoKCk7CiAgICAgICAgIGJvb2wg
Y3VzdG9tRXJyb3IoKSB7IHJldHVybiAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNFbXB0eSgpOyB9
CiAgICAgICAgIGJvb2wgdmFsaWQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5k
ZXggNjQ0OGZiOS4uOThiN2NiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC00
OCw3ICs0OCw4IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5Owog
Ly8gRklYTUU6IFRoZSBTbGlkZXJSYW5nZSBjbGFzcyBhbmQgZnVuY3Rpb25zIGFyZSBlbnRpcmVs
eSBiYXNlZCBvbiB0aGUgRE9NLAogLy8gYW5kIGNvdWxkIGJlIHB1dCB3aXRoIEhUTUxJbnB1dEVs
ZW1lbnQgKHBvc3NpYmx5IHdpdGggYSBuZXcgbmFtZSkgaW5zdGVhZCBvZiBoZXJlLgogc3RydWN0
IFNsaWRlclJhbmdlIHsKLSAgICBib29sIGlzSW50ZWdyYWw7CisgICAgYm9vbCBoYXNTdGVwOwor
ICAgIGRvdWJsZSBzdGVwOwogICAgIGRvdWJsZSBtaW5pbXVtOwogICAgIGRvdWJsZSBtYXhpbXVt
OyAgLy8gbWF4aW11bSBtdXN0IGJlID49IG1pbmltdW0uCiAKQEAgLTc1LDEwICs3NiwxMSBAQCBz
dHJ1Y3QgU2xpZGVyUmFuZ2UgewogCiBTbGlkZXJSYW5nZTo6U2xpZGVyUmFuZ2UoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCB3YXkg
dG8gaGFuZGxlIGFuIGludGVncmFsIHJhbmdlIHdpdGggbm9uLWludGVncmFsIG1pbmltdW0gYW5k
IG1heGltdW0/Ci0gICAgLy8gQ3VycmVudGx5IHZhbHVlcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBp
bnRlZ3JhbCBidXQgY291bGQgYmUgb3V0c2lkZSB0aGUgcmFuZ2UgaW4gdGhhdCBjYXNlLgotCi0g
ICAgaXNJbnRlZ3JhbCA9ICFlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1dGUo
cHJlY2lzaW9uQXR0ciksICJmbG9hdCIpOworICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUo
cHJlY2lzaW9uQXR0cikpIHsKKyAgICAgICAgc3RlcCA9IDEuMDsKKyAgICAgICAgaGFzU3RlcCA9
ICFlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciks
ICJmbG9hdCIpOworICAgIH0gZWxzZQorICAgICAgICBoYXNTdGVwID0gZWxlbWVudC0+YWxsb3dl
ZFZhbHVlU3RlcCgmc3RlcCk7CiAKICAgICBtYXhpbXVtID0gZWxlbWVudC0+cmFuZ2VNYXhpbXVt
KCk7CiAgICAgbWluaW11bSA9IGVsZW1lbnQtPnJhbmdlTWluaW11bSgpOwpAQCAtODcsNyArODks
MTYgQEAgU2xpZGVyUmFuZ2U6OlNsaWRlclJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
CiBkb3VibGUgU2xpZGVyUmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKQogewogICAgIGRv
dWJsZSBjbGFtcGVkVmFsdWUgPSBtYXgobWluaW11bSwgbWluKHZhbHVlLCBtYXhpbXVtKSk7Ci0g
ICAgcmV0dXJuIGlzSW50ZWdyYWwgPyByb3VuZChjbGFtcGVkVmFsdWUpIDogY2xhbXBlZFZhbHVl
OworICAgIGlmICghaGFzU3RlcCkKKyAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKKyAgICAv
LyBSb3VuZHMgY2xhbXBlZFZhbHVlIHRvIG1pbmltdW0gKyBOICogc3RlcDsKKyAgICBkb3VibGUg
biA9IHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApOworICAgIGNsYW1wZWRW
YWx1ZSA9IG1pbmltdW0gKyBuICogc3RlcDsKKyAgICBpZiAoY2xhbXBlZFZhbHVlID4gbWF4aW11
bSkKKyAgICAgICBjbGFtcGVkVmFsdWUgPSBtaW5pbXVtICsgKG4gLSAxKSAqIHN0ZXA7CisgICAg
QVNTRVJUKGNsYW1wZWRWYWx1ZSA+PSBtaW5pbXVtKTsKKyAgICBBU1NFUlQoY2xhbXBlZFZhbHVl
IDw9IG1heGltdW0pOworICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKIGRvdWJsZSBTbGlk
ZXJSYW5nZTo6dmFsdWVGcm9tRWxlbWVudChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29s
KiB3YXNDbGFtcGVkKQotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="24549"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43246</attachid>
            <date>2009-11-15 08:50:50 -0800</date>
            <delta_ts>2009-11-17 02:22:21 -0800</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>0001-step-validity-3.patch</filename>
            <type>text/plain</type>
            <size>26739</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZjFiNTkwLi43Y2RhODZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTEt
MTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgVmFsaWRpdHlTdGF0
ZS5zdGVwTWlzbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTMzMQorCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRj
aC1yYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
c3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LXN0ZXAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LXN0ZXAuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVt
YmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0
eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXAuanM6
IEFkZGVkLgorCiAyMDA5LTExLTE0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gt
bnVtYmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
NjkwM2MyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAK
K0NoZWNrIHN0ZXBNaXNtYXRjaCByZXN1bHRzIGZvciB0eXBlPW51bWJlci4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlz
IGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBp
bnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5z
dGVwTWlzbWF0Y2ggaXMgdHJ1ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMg
dHJ1ZQorUEFTUyBpbnB1dC52YWx1ZSBpcyAiNSIKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1p
c21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxz
ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBN
aXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFs
c2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyB0cnVlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBN
aXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgdHJ1
ZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5NjdiZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVy
Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlz
bWF0Y2gtbnVtYmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRj
aC1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42NDFlNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNyBAQAorQ2hlY2sgc3RlcE1pc21hdGNoIHJlc3VsdHMgZm9yIHR5cGU9cmFuZ2Uu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0
ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMg
ZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlu
cHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5z
dGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsdWUgaXMgIjMiCitQQVNTIGlucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVw
TWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZh
bHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3Rl
cE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBm
YWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0
ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMg
ZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1y
YW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOGY3ODUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3Rl
cE1pc21hdGNoLXJhbmdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvVmFsaWRp
dHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3Rh
dGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZDUwZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21h
dGNoLXVuc3VwcG9ydGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitDaGVjayBzdGVw
TWlzbWF0Y2ggcmVzdWx0cyBmb3IgdHlwZXMgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBmb3Igc3Rl
cC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQudmFsaWRpdHku
c3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBp
cyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mg
aW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gg
aXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNT
IGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
IGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFT
UyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BB
U1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1
cHBvcnRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOWM0ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
c3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LXN0ZXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1zdGVwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YTFiNmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1z
dGVwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0IHRoZSBiZWhhdmlvciBvZiBz
dGVwIGF0dHJpYnV0ZSBhbmQgc3RlcCBET00gcHJvcGVydHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGlucHV0LnN0ZXAgaXMgIiIKK1BBU1MgaW5wdXQuZ2V0QXR0cmli
dXRlKCJzdGVwIikgaXMgImZvbyIKK1BBU1MgaW5wdXQuc3RlcCBpcyAiYmFyIgorUEFTUyBpbnB1
dC5zdGVwIGlzICJudWxsIgorUEFTUyBpbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSBpcyAibnVs
bCIKK1BBU1MgaW5wdXQuc3RlcCBpcyAibnVsbCIKK1BBU1MgaW5wdXQuc3RlcCBpcyAidW5kZWZp
bmVkIgorUEFTUyBpbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSBpcyAidW5kZWZpbmVkIgorUEFT
UyBpbnB1dC5zdGVwIGlzICJ1bmRlZmluZWQiCitQQVNTIGlucHV0LnN0ZXAgaXMgIjI1NiIKK1BB
U1MgaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIikgaXMgIjI1NiIKK1BBU1MgaW5wdXQuc3RlcCBp
cyAiMjU2IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzdlM2Q0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtc3RlcC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2lucHV0LXN0ZXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRl
LXN0ZXBNaXNtYXRjaC1udW1iZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3NDQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51
bWJlci5qcwpAQCAtMCwwICsxLDY5IEBACitkZXNjcmlwdGlvbignQ2hlY2sgc3RlcE1pc21hdGNo
IHJlc3VsdHMgZm9yIHR5cGU9bnVtYmVyLicpOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQudHlwZSA9ICdudW1iZXInOworCisvLyBJZiB0aGUg
dmFsdWUgaXMgZW1wdHksIGl0IG5ldmVyIG1pc21hdGNoZXMuCitpbnB1dC52YWx1ZSA9ICcnOwor
c2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQu
bWluID0gJzAuMSc7CitpbnB1dC5zdGVwID0gJzEuMCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisKKy8vIEludGVnZXJzCitpbnB1dC52YWx1ZSA9
ICcxJzsKK2lucHV0Lm1pbiA9ICcwJzsKK2lucHV0LnN0ZXAgPSAnMic7CitzaG91bGRCZSgnaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ3RydWUnKTsKK2lucHV0LnZhbHVlID0gJy0zJzsK
K2lucHV0Lm1pbiA9ICctNCc7CitpbnB1dC5zdGVwID0gJzInOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICd0cnVlJyk7CitpbnB1dC5taW4gPSAnMCc7CitpbnB1dC5t
YXggPSAnNSc7CitpbnB1dC5zdGVwID0gJzMnOworaW5wdXQudmFsdWUgPSAnNSc7CitzaG91bGRC
ZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdpbnB1
dC52YWx1ZScsICciNSInKTsKKy8vIEludmFsaWQgc3RlcCBhdHRyaWJ1dGUgaXMgaWdub3JlZC4K
K2lucHV0LnZhbHVlID0gJy0zJzsKK2lucHV0Lm1pbiA9ICctNCc7CitpbnB1dC5tYXggPSAnJzsK
K2lucHV0LnN0ZXAgPSAnLTInOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICdmYWxzZScpOworaW5wdXQuc3RlcCA9IG51bGw7CitzaG91bGRCZSgnaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC5zdGVwID0gdW5kZWZpbmVkOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworLy8gSHVnZSBu
dW1iZXJzIGFuZCBzbWFsbCBzdGVwOyB1bmNvbXBhcmFibGUKK2lucHV0LnZhbHVlID0gJzEuNzk3
NjkzMTM0ODYyMzE1N2UrMzA4JzsKK2lucHV0Lm1pbiA9ICcnOworaW5wdXQuc3RlcCA9ICczJzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0
LnZhbHVlID0gJzEuNzk3NjkzMTM0ODYyMzE1NmUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzEuNzk3NjkzMTM0
ODYyMzE1NWUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAn
ZmFsc2UnKTsKKy8vIEh1Z2UgbnVtYmVycyBhbmQgaHVnZSBzdGVwCitpbnB1dC52YWx1ZSA9ICcx
LjYwZSszMDgnOworaW5wdXQuc3RlcCA9ICcwLjIwZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS42MGUrMzA4
JzsKK2lucHV0LnN0ZXAgPSAnMC4yMmUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5z
dGVwTWlzbWF0Y2gnLCAndHJ1ZScpOworCisvLyBGcmFjdGlvbmFsIG51bWJlcnMKK2lucHV0LnZh
bHVlID0gJzAuOSc7CitpbnB1dC5zdGVwID0gJzAuMSc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcwLjknOworaW5wdXQu
c3RlcCA9ICcwLjEwMDAwMDEnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICd0cnVlJyk7CitpbnB1dC52YWx1ZSA9ICcwLjknOworaW5wdXQuc3RlcCA9ICcwLjEwMDAw
MDAwMDAwMDAwMDEnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdm
YWxzZScpOworaW5wdXQudmFsdWUgPSAnMS4wJzsKK2lucHV0LnN0ZXAgPSAnMC4zMzMzMzMzMzMz
MzMzMzMzJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2Un
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1y
YW5nZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3Rh
dGUtc3RlcE1pc21hdGNoLXJhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjNlNTk0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5qcwpAQCAtMCwwICsx
LDc0IEBACitkZXNjcmlwdGlvbignQ2hlY2sgc3RlcE1pc21hdGNoIHJlc3VsdHMgZm9yIHR5cGU9
cmFuZ2UuJyk7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7
CisvLyBOZWVkcyBhIHJlbmRlcmVyLgorZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7
CitpbnB1dC50eXBlID0gJ3JhbmdlJzsKKworLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGlucHV0cyBh
cmUgdGhlIHNhbWUgYXMgVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmpzLAorLy8g
YnV0IGFsbCBleHBlY3RlZCByZXN1bHRzIHNob3VsZCBiZSAnZmFsc2UnLgorCisvLyBJZiB0aGUg
dmFsdWUgaXMgZW1wdHksIGl0IG5ldmVyIG1pc21hdGNoZXMuCitpbnB1dC52YWx1ZSA9ICcnOwor
c2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQu
bWluID0gJzAuMSc7CitpbnB1dC5zdGVwID0gJzEuMCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisKKy8vIEludGVnZXJzCitpbnB1dC52YWx1ZSA9
ICcxJzsKK2lucHV0Lm1pbiA9ICcwJzsKK2lucHV0LnN0ZXAgPSAnMic7CitzaG91bGRCZSgnaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICctMyc7
CitpbnB1dC5taW4gPSAnLTQnOworaW5wdXQuc3RlcCA9ICcyJzsKK3Nob3VsZEJlKCdpbnB1dC52
YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0Lm1pbiA9ICcwJzsKK2lucHV0
Lm1heCA9ICc1JzsKK2lucHV0LnN0ZXAgPSAnMyc7CitpbnB1dC52YWx1ZSA9ICc1JzsKK3Nob3Vs
ZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdp
bnB1dC52YWx1ZScsICciMyInKTsKKy8vIEludmFsaWQgc3RlcCBhdHRyaWJ1dGUgaXMgaWdub3Jl
ZC4KK2lucHV0LnZhbHVlID0gJy0zJzsKK2lucHV0Lm1pbiA9ICctNCc7CitpbnB1dC5tYXggPSAn
JzsKK2lucHV0LnN0ZXAgPSAnLTInOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNt
YXRjaCcsICdmYWxzZScpOworaW5wdXQuc3RlcCA9IG51bGw7CitzaG91bGRCZSgnaW5wdXQudmFs
aWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC5zdGVwID0gdW5kZWZpbmVkOwor
c2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworLy8gSHVn
ZSBudW1iZXJzIGFuZCBzbWFsbCBzdGVwOyB1bmNvbXBhcmFibGUKK2lucHV0LnZhbHVlID0gJzEu
Nzk3NjkzMTM0ODYyMzE1N2UrMzA4JzsKK2lucHV0Lm1pbiA9ICcnOworaW5wdXQuc3RlcCA9ICcz
JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lu
cHV0LnZhbHVlID0gJzEuNzk3NjkzMTM0ODYyMzE1NmUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52
YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzEuNzk3Njkz
MTM0ODYyMzE1NWUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gn
LCAnZmFsc2UnKTsKKy8vIEh1Z2UgbnVtYmVycyBhbmQgaHVnZSBzdGVwCitpbnB1dC52YWx1ZSA9
ICcxLjYwZSszMDgnOworaW5wdXQuc3RlcCA9ICcwLjIwZSszMDgnOworc2hvdWxkQmUoJ2lucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS42MGUr
MzA4JzsKK2lucHV0LnN0ZXAgPSAnMC4yMmUrMzA4JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKworLy8gRnJhY3Rpb25hbCBudW1iZXJzCitpbnB1
dC52YWx1ZSA9ICcwLjknOworaW5wdXQuc3RlcCA9ICcwLjEnOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMC45JzsKK2lu
cHV0LnN0ZXAgPSAnMC4xMDAwMDAxJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlz
bWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzAuOSc7CitpbnB1dC5zdGVwID0gJzAu
MTAwMDAwMDAwMDAwMDAwMSc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
JywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjAnOworaW5wdXQuc3RlcCA9ICcwLjMzMzMz
MzMzMzMzMzMzMzMnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdm
YWxzZScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21h
dGNoLXVuc3VwcG9ydGVkLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
VmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjQzOWVjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVu
c3VwcG9ydGVkLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Rlc2NyaXB0aW9uKCdDaGVjayBzdGVwTWlz
bWF0Y2ggcmVzdWx0cyBmb3IgdHlwZXMgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBmb3Igc3RlcC4n
KTsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKworaW5w
dXQudHlwZSA9ICd0ZXh0JzsKK2lucHV0LnN0ZXAgPSAnMyc7CitpbnB1dC52YWx1ZSA9ICcyJzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKworaW5w
dXQudHlwZSA9ICdidXR0b24nOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdjaGVja2JveCc7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ2NvbG9yJzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0
LnR5cGUgPSAnZW1haWwnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcs
ICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdoaWRkZW4nOworc2hvdWxkQmUoJ2lucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdpbWFnZSc7CitzaG91
bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBl
ID0gJ2todG1sX2lzaW5kZXgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdwYXNzd2QnOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdyYWRpbyc7Citz
aG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50
eXBlID0gJ3Jlc2V0JzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAn
ZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAnc2VhcmNoJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAnc3VibWl0JzsKK3Nob3Vs
ZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUg
PSAndGVsJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2Un
KTsKK2lucHV0LnR5cGUgPSAndXJsJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlz
bWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAnZmlsZSc7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVz
dHMvaW5wdXQtc3RlcC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lu
cHV0LXN0ZXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2YTAwOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lu
cHV0LXN0ZXAuanMKQEAgLTAsMCArMSwzNiBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgdGhlIGJlaGF2
aW9yIG9mIHN0ZXAgYXR0cmlidXRlIGFuZCBzdGVwIERPTSBwcm9wZXJ0eS4nKTsKKwordmFyIGlu
cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKK2lucHV0LnR5cGUgPSAnbnVt
YmVyJzsKKworLy8gTm8gc3RlcCBhdHRyaWJ1dGUuCitzaG91bGRCZSgnaW5wdXQuc3RlcCcsICci
IicpOworCisvLyBTZXQgYW4gaW52YWxpZCBzdGVwIHZhbHVlLgoraW5wdXQuc3RlcCA9ICdmb28n
Oworc2hvdWxkQmUoJ2lucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpJywgJyJmb28iJyk7CitpbnB1
dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCAnYmFyJyk7CitzaG91bGRCZSgnaW5wdXQuc3RlcCcsICci
YmFyIicpOworCisvLyBOdWxsLgoraW5wdXQuc3RlcCA9IG51bGw7CitzaG91bGRCZSgnaW5wdXQu
c3RlcCcsICcibnVsbCInKTsKK3Nob3VsZEJlKCdpbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKScs
ICcibnVsbCInKTsKK2lucHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsIG51bGwpOworc2hvdWxkQmUo
J2lucHV0LnN0ZXAnLCAnIm51bGwiJyk7CisKKy8vIFVuZGVmaW5lZC4KK2lucHV0LnN0ZXAgPSB1
bmRlZmluZWQ7CitzaG91bGRCZSgnaW5wdXQuc3RlcCcsICcidW5kZWZpbmVkIicpOworc2hvdWxk
QmUoJ2lucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpJywgJyJ1bmRlZmluZWQiJyk7CitpbnB1dC5z
ZXRBdHRyaWJ1dGUoJ3N0ZXAnLCB1bmRlZmluZWQpOworc2hvdWxkQmUoJ2lucHV0LnN0ZXAnLCAn
InVuZGVmaW5lZCInKTsKKworLy8gTm9uLXN0cmluZy4KK2lucHV0LnN0ZXAgPSAyNTY7CitzaG91
bGRCZSgnaW5wdXQuc3RlcCcsICciMjU2IicpOworc2hvdWxkQmUoJ2lucHV0LmdldEF0dHJpYnV0
ZSgic3RlcCIpJywgJyIyNTYiJyk7CitpbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLCAyNTYpOwor
c2hvdWxkQmUoJ2lucHV0LnN0ZXAnLCAnIjI1NiInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDlmYTA5MTUuLjljYjZkODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMTEtMTUgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIHN0ZXAgYXR0cmlidXRlIGFuZCBW
YWxpZGl0eVN0YWUuc3RlcE1pc21hdGNoIGZvcgorICAgICAgICB0eXBlPW51bWJlciBhbmQgcmFu
Z2UuICBzdGVwTWlzbWF0Y2ggd2lsbCBiZSBmYWxzZSBpZiB0aGUKKyAgICAgICAgZGlmZmVyZW5j
ZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHZhbHVlIGFuZCBhIG11bHRpcGxlIG9mIHRoZSBzdGVwCisg
ICAgICAgIHZhbHVlIGlzIHZlcnkgc21hbGwuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBiZWhhdmlv
ciBvZiBSZW5kZXJTbGlkZXIgc28gdGhhdCBpdCBhbHdheXMgaGFzIGEgdmFsdWUKKyAgICAgICAg
cm91bmRlZCB0byB0aGUgc3RlcCBhdHRyaWJ1dGUgdmFsdWUuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzMxCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1
cHBvcnRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL2lucHV0LXN0ZXAuaHRtbAor
CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZCAic3RlcCIuCisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOiBBZGQgInN0ZXAi
LgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
YWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2gpOiBGb3J3YXJkIHRvIEhUTUxJbnB1dEVsZW1lbnQ6
OnN0ZXBNaXNtYXRjaCgpLgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
UmFuZ2U6OlNsaWRlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclJhbmdlOjpjbGFt
cFZhbHVlKToKKwogMjAwOS0xMS0xNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgppbmRleCA3ZmVmM2MyLi5hNGFhYWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KQEAgLTIzNSw2ICsyMzUsNyBAQCBzcGVsbGNoZWNrCiBzcmMKIHN0YW5kYnkKIHN0YXJ0
CitzdGVwCiBzdHlsZQogc3VtbWFyeQogdGFiaW5kZXgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCBlMzQxZDBlLi4xNGRlZmVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC03Myw2ICs3MywxMCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBjb25zdCBpbnQg
bWF4U2F2ZWRSZXN1bHRzID0gMjU2OwogCisvLyBDb25zdGFudCB2YWx1ZXMgZm9yIGdldEFsbG93
ZWRWYWx1ZVN0ZXAoKS4KK3N0YXRpYyBjb25zdCBkb3VibGUgbnVtYmVyRGVmYXVsdFN0ZXAgPSAx
LjA7CitzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlclN0ZXBTY2FsZUZhY3RvciA9IDEuMDsKKwog
SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jLCBIVE1MRm9ybUVsZW1lbnQqIGYpCiAgICAgOiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2MsIGYpCiAgICAgLCBtX3hQb3MoMCkKQEAg
LTMwOCw2ICszMTIsODggQEAgZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlTWF4aW11bSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1heDsKIH0KIAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVw
TWlzbWF0Y2goKSBjb25zdAoreworICAgIGRvdWJsZSBzdGVwOworICAgIGlmICghZ2V0QWxsb3dl
ZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaW5wdXRU
eXBlKCkgPT0gTlVNQkVSKSB7CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICAgICAg
aWYgKCFmb3JtU3RyaW5nVG9Eb3VibGUodmFsdWUoKSwgJmRvdWJsZVZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlIG1pbiA9IDAuMDsKKyAgICAgICAgZm9y
bVN0cmluZ1RvRG91YmxlKGdldEF0dHJpYnV0ZShtaW5BdHRyKSwgJm1pbik7CisgICAgICAgIGRv
dWJsZVZhbHVlID0gZmFicyhkb3VibGVWYWx1ZSAtIG1pbik7CisgICAgICAgIC8vIGRvdWJsZSdz
IGZyYWN0aW9uYWwgcGFydCBzaXplIGlzIERCTF9NQU5fRElHLWJpdC4gIElmIHRoZSBjdXJyZW50
CisgICAgICAgIC8vIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJMX01BTlRfRElHLCB0
aGUgZm9sbG93aW5nIGZtb2QoKSBtYWtlcworICAgICAgICAvLyBubyBzZW5zZS4KKyAgICAgICAg
aWYgKGRvdWJsZVZhbHVlIC8gcG93KDIsIERCTF9NQU5UX0RJRykgPiBzdGVwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgcmVtYWluZGVyID0gZm1vZChkb3VibGVW
YWx1ZSwgc3RlcCk7CisgICAgICAgIC8vIEFjY2VwdHMgZXJyb3JzIGxlc3MgdGhhbiA3LWJpdC4K
KyAgICAgICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IHN0ZXAgLyBwb3coMiwgREJMX01BTlRf
RElHIC0gNyk7CisgICAgICAgIHJldHVybiBhY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYg
cmVtYWluZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3IpOworICAgIH0KKyAgICAvLyBOb24t
UkFOR0UgdHlwZXMgc2hvdWxkIGJlIHJlamVjdGVkIGJ5IGdldEFsbG93ZWRWYWx1ZVN0ZXAoKS4K
KyAgICBBU1NFUlQoaW5wdXRUeXBlKCkgPT0gUkFOR0UpOworICAgIC8vIHN0ZXBNaXNtYXRjaCBk
b2Vzbid0IG9jY3VyIGZvciBSQU5HRS4gUmVuZGVyU2xpZGVyIGd1YXJhbnRlZXMgdGhlCisgICAg
Ly8gdmFsdWUgbWF0Y2hlcyB0byBzdGVwLgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoc3RlcCk7CisgICAgZG91YmxlIGRlZmF1bHRTdGVwID0gMDsKKyAgICBk
b3VibGUgc3RlcFNjYWxlRmFjdG9yID0gMDsKKyAgICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7Cisg
ICAgY2FzZSBOVU1CRVI6CisgICAgY2FzZSBSQU5HRToKKyAgICAgICAgZGVmYXVsdFN0ZXAgPSBu
dW1iZXJEZWZhdWx0U3RlcDsKKyAgICAgICAgc3RlcFNjYWxlRmFjdG9yID0gbnVtYmVyU3RlcFNj
YWxlRmFjdG9yOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERBVEU6CisgICAgY2FzZSBEQVRF
VElNRToKKyAgICBjYXNlIERBVEVUSU1FTE9DQUw6CisgICAgY2FzZSBNT05USDoKKyAgICBjYXNl
IFRJTUU6CisgICAgY2FzZSBXRUVLOgorICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciB0
aGVzZSB0eXBlcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgQlVUVE9OOgorICAg
IGNhc2UgQ0hFQ0tCT1g6CisgICAgY2FzZSBDT0xPUjoKKyAgICBjYXNlIEVNQUlMOgorICAgIGNh
c2UgRklMRToKKyAgICBjYXNlIEhJRERFTjoKKyAgICBjYXNlIElNQUdFOgorICAgIGNhc2UgSVNJ
TkRFWDoKKyAgICBjYXNlIFBBU1NXT1JEOgorICAgIGNhc2UgUkFESU86CisgICAgY2FzZSBSRVNF
VDoKKyAgICBjYXNlIFNFQVJDSDoKKyAgICBjYXNlIFNVQk1JVDoKKyAgICBjYXNlIFRFTEVQSE9O
RToKKyAgICBjYXNlIFRFWFQ6CisgICAgY2FzZSBVUkw6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGVwU3RyaW5nID0gZ2V0QXR0cmlidXRl
KHN0ZXBBdHRyKTsKKyAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgKnN0
ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgcGFyc2VkOworICAgIGlmICghZm9ybVN0
cmluZ1RvRG91YmxlKHN0ZXBTdHJpbmcsICZwYXJzZWQpIHx8IHBhcnNlZCA8PSAwLjApIHsKKyAg
ICAgICAgKnN0ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgICpzdGVwID0gcGFyc2VkICogc3RlcFNjYWxlRmFjdG9yOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgaW5saW5lIENoZWNrZWRSYWRpb0J1dHRvbnMm
IGNoZWNrZWRSYWRpb0J1dHRvbnMoY29uc3QgSFRNTElucHV0RWxlbWVudCAqZWxlbWVudCkKIHsK
ICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gZWxlbWVudC0+Zm9ybSgpKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKaW5kZXggNzFkMjFkNi4uMjQwZTQ5YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCkBAIC0xMTAsNiArMTEwLDExIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBt
YXhpbXVtIHZhbHVlIGZvciB0eXBlPXJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0
eXBlcy4KICAgICAvLyBUaGlzIGFsd2F5cyByZXR1cm5zIGEgdmFsdWUgd2hpY2ggaXMgPD0gcmFu
Z2VNaW5pbXVtKCkuCiAgICAgZG91YmxlIHJhbmdlTWF4aW11bSgpIGNvbnN0OworICAgIC8vIFNl
dHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0
aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2ludGVyLgorICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhl
cmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3RlcC4iCisgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVT
dGVwKGRvdWJsZSopIGNvbnN0OworICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlLgorICAgIGJvb2wg
c3RlcE1pc21hdGNoKCkgY29uc3Q7CiAKICAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBTVUJNSVQgfHwgbV90eXBlID09IFJFU0VUIHx8IG1fdHlwZSA9PSBC
VVRUT047IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBSQURJTzsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaWRsIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IDU5MjQ4
ZjQuLmI0NWQxOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTYzLDEyICs2Mywx
NCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nICAgc2l6ZTsgLy8gQ2hhbmdlZCBzdHJpbmcgLT4gbG9uZyBhcyBwYXJ0IG9mIERPTSBsZXZl
bCAyCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIHNyYzsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtSZWZs
ZWN0XSBET01TdHJpbmcgc3RlcDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFRvTnVsbFN0cmluZywgSlNDQ3VzdG9tR2V0dGVyXSBET01TdHJpbmcgdHlwZTsgLy8gcmVh
ZG9ubHkgZHJvcHBlZCBhcyBwYXJ0IG9mIERPTSBsZXZlbCAyCiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB1c2VNYXA7CiAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyB2YWx1ZTsKICNpZiBkZWZpbmVkKEVOQUJMRV9EQVRBTElTVCkgJiYgRU5BQkxFX0RBVEFMSVNU
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MT3B0aW9uRWxlbWVudCBzZWxlY3RlZE9w
dGlvbjsKICNlbmRpZgorCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAg
ICAgd2lsbFZhbGlkYXRlOwogICAgICAgICBib29sZWFuICAgICAgICAgICAgY2hlY2tWYWxpZGl0
eSgpOwogICAgICAgICB2b2lkICAgICAgICAgICAgICAgc2V0Q3VzdG9tVmFsaWRpdHkoaW4gW0Nv
bnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBlcnJvcik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgYi9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5jcHAKaW5kZXggNmIwYTBiNC4uMmM2ZTdhNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRl
LmNwcApAQCAtOTMsNiArOTMsMTMgQEAgYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZU92ZXJmbG93
KCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2woKSkt
PnJhbmdlT3ZlcmZsb3coKTsKIH0KIAorYm9vbCBWYWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2go
KQoreworICAgIGlmICghY29udHJvbCgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
Y29udHJvbCgpKS0+c3RlcE1pc21hdGNoKCk7Cit9CisKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFs
aWQoKQogewogICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1pc21h
dGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkgfHwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9XZWJDb3JlL2h0bWwvVmFsaWRpdHlT
dGF0ZS5oCmluZGV4IDFkZWUzMDYuLjRlMjQwZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmgKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgdG9vTG9uZygpIHsg
cmV0dXJuIGNvbnRyb2woKS0+dG9vTG9uZygpOyB9CiAgICAgICAgIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKTsKICAgICAgICAgYm9vbCByYW5nZU92ZXJmbG93KCk7Ci0gICAgICAgIGJvb2wgc3RlcE1p
c21hdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgYm9vbCBzdGVwTWlzbWF0Y2goKTsK
ICAgICAgICAgYm9vbCBjdXN0b21FcnJvcigpIHsgcmV0dXJuICFtX2N1c3RvbUVycm9yTWVzc2Fn
ZS5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCB2YWxpZCgpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcAppbmRleCA2NDQ4ZmI5Li5lMThiNDMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VHJhY2tM
ZW5ndGggPSAxMjk7CiAvLyBGSVhNRTogVGhlIFNsaWRlclJhbmdlIGNsYXNzIGFuZCBmdW5jdGlv
bnMgYXJlIGVudGlyZWx5IGJhc2VkIG9uIHRoZSBET00sCiAvLyBhbmQgY291bGQgYmUgcHV0IHdp
dGggSFRNTElucHV0RWxlbWVudCAocG9zc2libHkgd2l0aCBhIG5ldyBuYW1lKSBpbnN0ZWFkIG9m
IGhlcmUuCiBzdHJ1Y3QgU2xpZGVyUmFuZ2UgewotICAgIGJvb2wgaXNJbnRlZ3JhbDsKKyAgICBi
b29sIGhhc1N0ZXA7CisgICAgZG91YmxlIHN0ZXA7CiAgICAgZG91YmxlIG1pbmltdW07CiAgICAg
ZG91YmxlIG1heGltdW07ICAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11bS4KIApAQCAtNzUs
MTAgKzc2LDExIEBAIHN0cnVjdCBTbGlkZXJSYW5nZSB7CiAKIFNsaWRlclJhbmdlOjpTbGlkZXJS
YW5nZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBXaGF0J3Mg
dGhlIHJpZ2h0IHdheSB0byBoYW5kbGUgYW4gaW50ZWdyYWwgcmFuZ2Ugd2l0aCBub24taW50ZWdy
YWwgbWluaW11bSBhbmQgbWF4aW11bT8KLSAgICAvLyBDdXJyZW50bHkgdmFsdWVzIGFyZSBndWFy
YW50ZWVkIHRvIGJlIGludGVncmFsIGJ1dCBjb3VsZCBiZSBvdXRzaWRlIHRoZSByYW5nZSBpbiB0
aGF0IGNhc2UuCi0KLSAgICBpc0ludGVncmFsID0gIWVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQt
PmdldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyKSwgImZsb2F0Iik7CisgICAgaWYgKGVsZW1lbnQt
Pmhhc0F0dHJpYnV0ZShwcmVjaXNpb25BdHRyKSkgeworICAgICAgICBzdGVwID0gMS4wOworICAg
ICAgICBoYXNTdGVwID0gIWVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShw
cmVjaXNpb25BdHRyKSwgImZsb2F0Iik7CisgICAgfSBlbHNlCisgICAgICAgIGhhc1N0ZXAgPSBl
bGVtZW50LT5nZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKTsKIAogICAgIG1heGltdW0gPSBlbGVt
ZW50LT5yYW5nZU1heGltdW0oKTsKICAgICBtaW5pbXVtID0gZWxlbWVudC0+cmFuZ2VNaW5pbXVt
KCk7CkBAIC04Nyw3ICs4OSwxNSBAQCBTbGlkZXJSYW5nZTo6U2xpZGVyUmFuZ2UoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKIGRvdWJsZSBTbGlkZXJSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUg
dmFsdWUpCiB7CiAgICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVtLCBtaW4odmFs
dWUsIG1heGltdW0pKTsKLSAgICByZXR1cm4gaXNJbnRlZ3JhbCA/IHJvdW5kKGNsYW1wZWRWYWx1
ZSkgOiBjbGFtcGVkVmFsdWU7CisgICAgaWYgKCFoYXNTdGVwKQorICAgICAgICByZXR1cm4gY2xh
bXBlZFZhbHVlOworICAgIC8vIFJvdW5kcyBjbGFtcGVkVmFsdWUgdG8gbWluaW11bSArIE4gKiBz
dGVwLgorICAgIGNsYW1wZWRWYWx1ZSA9IG1pbmltdW0gKyByb3VuZCgoY2xhbXBlZFZhbHVlIC0g
bWluaW11bSkgLyBzdGVwKSAqIHN0ZXA7CisgICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1heGltdW0p
CisgICAgICAgY2xhbXBlZFZhbHVlIC09IHN0ZXA7CisgICAgQVNTRVJUKGNsYW1wZWRWYWx1ZSA+
PSBtaW5pbXVtKTsKKyAgICBBU1NFUlQoY2xhbXBlZFZhbHVlIDw9IG1heGltdW0pOworICAgIHJl
dHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKIGRvdWJsZSBTbGlkZXJSYW5nZTo6dmFsdWVGcm9tRWxl
bWVudChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29sKiB3YXNDbGFtcGVkKQotLSAKMS42
LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43350</attachid>
            <date>2009-11-17 02:22:21 -0800</date>
            <delta_ts>2009-11-18 17:49:02 -0800</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>0001-step-2-validity-4.patch</filename>
            <type>text/plain</type>
            <size>30181</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSBjZjBmZjk5MzM2YjFkZmJlNWVlNzIwZjQ1YzRiNzY1OGQ4OTBjZGNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDE3IE5vdiAyMDA5IDE4OjIzOjI1ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gc3RlcC0y
LXZhbGlkaXR5LTQKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDIwICsrKysKIC4uLi9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1u
dW1iZXItZXhwZWN0ZWQudHh0IHwgICAyNyArKysrKysKIC4uLi9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbCAgIHwgICAxMyArKysKIC4uLi9WYWxpZGl0eVN0YXRl
LXN0ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3RlZC50eHQgIHwgICAyNyArKysrKysKIC4uLi9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5odG1sICAgIHwgICAxMyArKysKIC4u
LmRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQudHh0IHwgICAyNSAr
KysrKwogLi4uL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0bWwgICAg
fCAgIDEzICsrKwogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLWV4cGVjdGVkLnR4
dCAgICAgfCAgIDIxICsrKysKIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcC5odG1s
ICAgICAgICAgICAgIHwgICAxMyArKysKIC4uLi9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1u
dW1iZXIuanMgICAgICAgICAgIHwgICA2OSArKysrKysrKysrKysrKwogLi4uL1ZhbGlkaXR5U3Rh
dGUtc3RlcE1pc21hdGNoLXJhbmdlLmpzICAgICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrKysr
KwogLi4uL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmpzICAgICAgfCAg
IDQxICsrKysrKysrCiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1z
dGVwLmpzICB8ICAgMzYgKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDMzICsrKysrKysKIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4gICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICB8ICAgOTggKysrKysrKysrKysrKysrKysr
KysKIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggICAgICAgICAgICAgICAgICAgIHwg
ICAgOCArKy0KIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCAgICAgICAgICAgICAg
ICAgIHwgICAgMiArCiBXZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDcgKysKIFdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cCAgICAgICAgICAgICAgICAgfCAgIDIyICsrKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDU1NyBpbnNl
cnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLWV4cGVjdGVkLnR4
dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4
dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0
eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcC5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtbnVtYmVyLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFu
Z2UuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5qcwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXAu
anMKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYTYzNjZiZS4uNmY5ZDczMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5
LTExLTE3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFZhbGlkaXR5
U3RhdGUuc3RlcE1pc21hdGNoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzEzMzEKKworICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1z
dGVwTWlzbWF0Y2gtbnVtYmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlz
bWF0Y2gtcmFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNo
LW51bWJlci5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFs
aWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVk
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVw
LmpzOiBBZGRlZC4KKwogMjAwOS0xMS0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBEaXNhYmxpbmcgV2ViU29ja2V0IHRlc3RzIG9uIFRpZ2VyIGFuZCBX
aW5kb3dzIGFnYWluLCBhcyB0aGV5IHN0aWxsIHRpbWUgb3V0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRj
aC1udW1iZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM2OTAzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBA
QAorQ2hlY2sgc3RlcE1pc21hdGNoIHJlc3VsdHMgZm9yIHR5cGU9bnVtYmVyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gg
aXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNT
IGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyB0cnVlCitQQVNTIGlucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCBpcyB0cnVlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBp
cyB0cnVlCitQQVNTIGlucHV0LnZhbHVlIGlzICI1IgorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVw
TWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZh
bHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3Rl
cE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBm
YWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIHRydWUKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3Rl
cE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyB0
cnVlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJlci5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzk2N2JmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1i
ZXIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBN
aXNtYXRjaC1udW1iZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21h
dGNoLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY0MWU1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI3IEBACitDaGVjayBzdGVwTWlzbWF0Y2ggcmVzdWx0cyBmb3IgdHlwZT1yYW5n
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQudmFsaWRpdHku
c3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBp
cyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mg
aW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWx1ZSBpcyAiMyIKK1BBU1MgaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0
ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMg
ZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlu
cHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5z
dGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlz
IGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBp
bnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHku
c3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBp
cyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNo
LXJhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4Zjc4NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1z
dGVwTWlzbWF0Y2gtcmFuZ2UuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9WYWxp
ZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNkNTBmNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlz
bWF0Y2gtdW5zdXBwb3J0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0NoZWNrIHN0
ZXBNaXNtYXRjaCByZXN1bHRzIGZvciB0eXBlcyB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGZvciBz
dGVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnB1dC52YWxpZGl0
eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
IGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFT
UyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRp
dHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BB
U1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoIGlzIGZhbHNlCitQ
QVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1MgaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCBpcyBmYWxzZQor
UEFTUyBpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2ggaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVuc3VwcG9ydGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVu
c3VwcG9ydGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5YzRl
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS1zdGVwTWlzbWF0Y2gtdW5zdXBwb3J0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LXN0ZXAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZhMWI2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LXN0ZXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgdGhlIGJlaGF2aW9yIG9m
IHN0ZXAgYXR0cmlidXRlIGFuZCBzdGVwIERPTSBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQuc3RlcCBpcyAiIgorUEFTUyBpbnB1dC5nZXRBdHRy
aWJ1dGUoInN0ZXAiKSBpcyAiZm9vIgorUEFTUyBpbnB1dC5zdGVwIGlzICJiYXIiCitQQVNTIGlu
cHV0LnN0ZXAgaXMgIm51bGwiCitQQVNTIGlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpIGlzICJu
dWxsIgorUEFTUyBpbnB1dC5zdGVwIGlzICJudWxsIgorUEFTUyBpbnB1dC5zdGVwIGlzICJ1bmRl
ZmluZWQiCitQQVNTIGlucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIpIGlzICJ1bmRlZmluZWQiCitQ
QVNTIGlucHV0LnN0ZXAgaXMgInVuZGVmaW5lZCIKK1BBU1MgaW5wdXQuc3RlcCBpcyAiMjU2Igor
UEFTUyBpbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSBpcyAiMjU2IgorUEFTUyBpbnB1dC5zdGVw
IGlzICIyNTYiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zN2UzZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvaW5wdXQtc3RlcC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3Rh
dGUtc3RlcE1pc21hdGNoLW51bWJlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0
LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLW51bWJlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjc0NDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gt
bnVtYmVyLmpzCkBAIC0wLDAgKzEsNjkgQEAKK2Rlc2NyaXB0aW9uKCdDaGVjayBzdGVwTWlzbWF0
Y2ggcmVzdWx0cyBmb3IgdHlwZT1udW1iZXIuJyk7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CitpbnB1dC50eXBlID0gJ251bWJlcic7CisKKy8vIElmIHRo
ZSB2YWx1ZSBpcyBlbXB0eSwgaXQgbmV2ZXIgbWlzbWF0Y2hlcy4KK2lucHV0LnZhbHVlID0gJyc7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1
dC5taW4gPSAnMC4xJzsKK2lucHV0LnN0ZXAgPSAnMS4wJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKworLy8gSW50ZWdlcnMKK2lucHV0LnZhbHVl
ID0gJzEnOworaW5wdXQubWluID0gJzAnOworaW5wdXQuc3RlcCA9ICcyJzsKK3Nob3VsZEJlKCdp
bnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAndHJ1ZScpOworaW5wdXQudmFsdWUgPSAnLTMn
OworaW5wdXQubWluID0gJy00JzsKK2lucHV0LnN0ZXAgPSAnMic7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ3RydWUnKTsKK2lucHV0Lm1pbiA9ICcwJzsKK2lucHV0
Lm1heCA9ICc1JzsKK2lucHV0LnN0ZXAgPSAnMyc7CitpbnB1dC52YWx1ZSA9ICc1JzsKK3Nob3Vs
ZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAndHJ1ZScpOworc2hvdWxkQmUoJ2lu
cHV0LnZhbHVlJywgJyI1IicpOworLy8gSW52YWxpZCBzdGVwIGF0dHJpYnV0ZSBpcyBpZ25vcmVk
LgoraW5wdXQudmFsdWUgPSAnLTMnOworaW5wdXQubWluID0gJy00JzsKK2lucHV0Lm1heCA9ICcn
OworaW5wdXQuc3RlcCA9ICctMic7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoJywgJ2ZhbHNlJyk7CitpbnB1dC5zdGVwID0gbnVsbDsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnN0ZXAgPSB1bmRlZmluZWQ7Citz
aG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisvLyBIdWdl
IG51bWJlcnMgYW5kIHNtYWxsIHN0ZXA7IHVuY29tcGFyYWJsZQoraW5wdXQudmFsdWUgPSAnMS43
OTc2OTMxMzQ4NjIzMTU3ZSszMDgnOworaW5wdXQubWluID0gJyc7CitpbnB1dC5zdGVwID0gJzMn
Oworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5w
dXQudmFsdWUgPSAnMS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZh
bGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS43OTc2OTMx
MzQ4NjIzMTU1ZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcs
ICdmYWxzZScpOworLy8gSHVnZSBudW1iZXJzIGFuZCBodWdlIHN0ZXAKK2lucHV0LnZhbHVlID0g
JzEuNjBlKzMwOCc7CitpbnB1dC5zdGVwID0gJzAuMjBlKzMwOCc7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjYwZSsz
MDgnOworaW5wdXQuc3RlcCA9ICcwLjIyZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5
LnN0ZXBNaXNtYXRjaCcsICd0cnVlJyk7CisKKy8vIEZyYWN0aW9uYWwgbnVtYmVycworaW5wdXQu
dmFsdWUgPSAnMC45JzsKK2lucHV0LnN0ZXAgPSAnMC4xJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzAuOSc7CitpbnB1
dC5zdGVwID0gJzAuMTAwMDAwMSc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoJywgJ3RydWUnKTsKK2lucHV0LnZhbHVlID0gJzAuOSc7CitpbnB1dC5zdGVwID0gJzAuMTAw
MDAwMDAwMDAwMDAwMSc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywg
J2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjAnOworaW5wdXQuc3RlcCA9ICcwLjMzMzMzMzMz
MzMzMzMzMzMnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxz
ZScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNo
LXJhbmdlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlT
dGF0ZS1zdGVwTWlzbWF0Y2gtcmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2U1OTQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXJhbmdlLmpzCkBAIC0wLDAg
KzEsNzQgQEAKK2Rlc2NyaXB0aW9uKCdDaGVjayBzdGVwTWlzbWF0Y2ggcmVzdWx0cyBmb3IgdHlw
ZT1yYW5nZS4nKTsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQn
KTsKKy8vIE5lZWRzIGEgcmVuZGVyZXIuCitkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0
KTsKK2lucHV0LnR5cGUgPSAncmFuZ2UnOworCisvLyBUaGUgZm9sbG93aW5nIHRlc3QgaW5wdXRz
IGFyZSB0aGUgc2FtZSBhcyBWYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuanMsCisv
LyBidXQgYWxsIGV4cGVjdGVkIHJlc3VsdHMgc2hvdWxkIGJlICdmYWxzZScuCisKKy8vIElmIHRo
ZSB2YWx1ZSBpcyBlbXB0eSwgaXQgbmV2ZXIgbWlzbWF0Y2hlcy4KK2lucHV0LnZhbHVlID0gJyc7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1
dC5taW4gPSAnMC4xJzsKK2lucHV0LnN0ZXAgPSAnMS4wJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxp
ZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKworLy8gSW50ZWdlcnMKK2lucHV0LnZhbHVl
ID0gJzEnOworaW5wdXQubWluID0gJzAnOworaW5wdXQuc3RlcCA9ICcyJzsKK3Nob3VsZEJlKCdp
bnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJy0z
JzsKK2lucHV0Lm1pbiA9ICctNCc7CitpbnB1dC5zdGVwID0gJzInOworc2hvdWxkQmUoJ2lucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQubWluID0gJzAnOworaW5w
dXQubWF4ID0gJzUnOworaW5wdXQuc3RlcCA9ICczJzsKK2lucHV0LnZhbHVlID0gJzUnOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworc2hvdWxkQmUo
J2lucHV0LnZhbHVlJywgJyIzIicpOworLy8gSW52YWxpZCBzdGVwIGF0dHJpYnV0ZSBpcyBpZ25v
cmVkLgoraW5wdXQudmFsdWUgPSAnLTMnOworaW5wdXQubWluID0gJy00JzsKK2lucHV0Lm1heCA9
ICcnOworaW5wdXQuc3RlcCA9ICctMic7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1p
c21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC5zdGVwID0gbnVsbDsKK3Nob3VsZEJlKCdpbnB1dC52
YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnN0ZXAgPSB1bmRlZmluZWQ7
CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CisvLyBI
dWdlIG51bWJlcnMgYW5kIHNtYWxsIHN0ZXA7IHVuY29tcGFyYWJsZQoraW5wdXQudmFsdWUgPSAn
MS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgnOworaW5wdXQubWluID0gJyc7CitpbnB1dC5zdGVwID0g
JzMnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOwor
aW5wdXQudmFsdWUgPSAnMS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgnOworc2hvdWxkQmUoJ2lucHV0
LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMS43OTc2
OTMxMzQ4NjIzMTU1ZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRj
aCcsICdmYWxzZScpOworLy8gSHVnZSBudW1iZXJzIGFuZCBodWdlIHN0ZXAKK2lucHV0LnZhbHVl
ID0gJzEuNjBlKzMwOCc7CitpbnB1dC5zdGVwID0gJzAuMjBlKzMwOCc7CitzaG91bGRCZSgnaW5w
dXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcxLjYw
ZSszMDgnOworaW5wdXQuc3RlcCA9ICcwLjIyZSszMDgnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworCisvLyBGcmFjdGlvbmFsIG51bWJlcnMKK2lu
cHV0LnZhbHVlID0gJzAuOSc7CitpbnB1dC5zdGVwID0gJzAuMSc7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC52YWx1ZSA9ICcwLjknOwor
aW5wdXQuc3RlcCA9ICcwLjEwMDAwMDEnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBN
aXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudmFsdWUgPSAnMC45JzsKK2lucHV0LnN0ZXAgPSAn
MC4xMDAwMDAwMDAwMDAwMDAxJzsKK3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0
Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnZhbHVlID0gJzEuMCc7CitpbnB1dC5zdGVwID0gJzAuMzMz
MzMzMzMzMzMzMzMzMyc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNoJywg
J2ZhbHNlJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlz
bWF0Y2gtdW5zdXBwb3J0ZWQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC11bnN1cHBvcnRlZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDM5ZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1zdGVwTWlzbWF0Y2gt
dW5zdXBwb3J0ZWQuanMKQEAgLTAsMCArMSw0MSBAQAorZGVzY3JpcHRpb24oJ0NoZWNrIHN0ZXBN
aXNtYXRjaCByZXN1bHRzIGZvciB0eXBlcyB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGZvciBzdGVw
LicpOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworCitp
bnB1dC50eXBlID0gJ3RleHQnOworaW5wdXQuc3RlcCA9ICczJzsKK2lucHV0LnZhbHVlID0gJzIn
Oworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworCitp
bnB1dC50eXBlID0gJ2J1dHRvbic7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ2NoZWNrYm94JzsKK3Nob3VsZEJlKCdpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5cGUgPSAnY29sb3In
Oworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5w
dXQudHlwZSA9ICdlbWFpbCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21hdGNo
JywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ2hpZGRlbic7CitzaG91bGRCZSgnaW5wdXQudmFs
aWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ2ltYWdlJzsKK3No
b3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0LnR5
cGUgPSAna2h0bWxfaXNpbmRleCc7CitzaG91bGRCZSgnaW5wdXQudmFsaWRpdHkuc3RlcE1pc21h
dGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ3Bhc3N3ZCc7CitzaG91bGRCZSgnaW5wdXQu
dmFsaWRpdHkuc3RlcE1pc21hdGNoJywgJ2ZhbHNlJyk7CitpbnB1dC50eXBlID0gJ3JhZGlvJzsK
K3Nob3VsZEJlKCdpbnB1dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKK2lucHV0
LnR5cGUgPSAncmVzZXQnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcs
ICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdzZWFyY2gnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlk
aXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdzdWJtaXQnOworc2hv
dWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlw
ZSA9ICd0ZWwnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBNaXNtYXRjaCcsICdmYWxz
ZScpOworaW5wdXQudHlwZSA9ICd1cmwnOworc2hvdWxkQmUoJ2lucHV0LnZhbGlkaXR5LnN0ZXBN
aXNtYXRjaCcsICdmYWxzZScpOworaW5wdXQudHlwZSA9ICdmaWxlJzsKK3Nob3VsZEJlKCdpbnB1
dC52YWxpZGl0eS5zdGVwTWlzbWF0Y2gnLCAnZmFsc2UnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10
ZXN0cy9pbnB1dC1zdGVwLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
aW5wdXQtc3RlcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTZhMDA5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
aW5wdXQtc3RlcC5qcwpAQCAtMCwwICsxLDM2IEBACitkZXNjcmlwdGlvbignVGVzdCB0aGUgYmVo
YXZpb3Igb2Ygc3RlcCBhdHRyaWJ1dGUgYW5kIHN0ZXAgRE9NIHByb3BlcnR5LicpOworCit2YXIg
aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworaW5wdXQudHlwZSA9ICdu
dW1iZXInOworCisvLyBObyBzdGVwIGF0dHJpYnV0ZS4KK3Nob3VsZEJlKCdpbnB1dC5zdGVwJywg
JyIiJyk7CisKKy8vIFNldCBhbiBpbnZhbGlkIHN0ZXAgdmFsdWUuCitpbnB1dC5zdGVwID0gJ2Zv
byc7CitzaG91bGRCZSgnaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIiknLCAnImZvbyInKTsKK2lu
cHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsICdiYXInKTsKK3Nob3VsZEJlKCdpbnB1dC5zdGVwJywg
JyJiYXIiJyk7CisKKy8vIE51bGwuCitpbnB1dC5zdGVwID0gbnVsbDsKK3Nob3VsZEJlKCdpbnB1
dC5zdGVwJywgJyJudWxsIicpOworc2hvdWxkQmUoJ2lucHV0LmdldEF0dHJpYnV0ZSgic3RlcCIp
JywgJyJudWxsIicpOworaW5wdXQuc2V0QXR0cmlidXRlKCdzdGVwJywgbnVsbCk7CitzaG91bGRC
ZSgnaW5wdXQuc3RlcCcsICcibnVsbCInKTsKKworLy8gVW5kZWZpbmVkLgoraW5wdXQuc3RlcCA9
IHVuZGVmaW5lZDsKK3Nob3VsZEJlKCdpbnB1dC5zdGVwJywgJyJ1bmRlZmluZWQiJyk7CitzaG91
bGRCZSgnaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIiknLCAnInVuZGVmaW5lZCInKTsKK2lucHV0
LnNldEF0dHJpYnV0ZSgnc3RlcCcsIHVuZGVmaW5lZCk7CitzaG91bGRCZSgnaW5wdXQuc3RlcCcs
ICcidW5kZWZpbmVkIicpOworCisvLyBOb24tc3RyaW5nLgoraW5wdXQuc3RlcCA9IDI1NjsKK3No
b3VsZEJlKCdpbnB1dC5zdGVwJywgJyIyNTYiJyk7CitzaG91bGRCZSgnaW5wdXQuZ2V0QXR0cmli
dXRlKCJzdGVwIiknLCAnIjI1NiInKTsKK2lucHV0LnNldEF0dHJpYnV0ZSgnc3RlcCcsIDI1Nik7
CitzaG91bGRCZSgnaW5wdXQuc3RlcCcsICciMjU2IicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNGQ4YzgwYi4uZWZmOTI1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMS0xNyAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3Igc3RlcCBhdHRyaWJ1dGUgYW5k
IFZhbGlkaXR5U3RhZS5zdGVwTWlzbWF0Y2ggZm9yCisgICAgICAgIHR5cGU9bnVtYmVyIGFuZCBy
YW5nZS4gIHN0ZXBNaXNtYXRjaCB3aWxsIGJlIGZhbHNlIGlmIHRoZQorICAgICAgICBkaWZmZXJl
bmNlIGJldHdlZW4gdGhlIGN1cnJlbnQgdmFsdWUgYW5kIGEgbXVsdGlwbGUgb2YgdGhlIHN0ZXAK
KyAgICAgICAgdmFsdWUgaXMgdmVyeSBzbWFsbC4KKworICAgICAgICBDaGFuZ2UgdGhlIGJlaGF2
aW9yIG9mIFJlbmRlclNsaWRlciBzbyB0aGF0IGl0IGFsd2F5cyBoYXMgYSB2YWx1ZQorICAgICAg
ICByb3VuZGVkIHRvIHRoZSBzdGVwIGF0dHJpYnV0ZSB2YWx1ZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzMzEKKworICAgICAgICBUZXN0czog
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1udW1iZXIuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXN0ZXBNaXNtYXRjaC1yYW5nZS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtc3RlcE1pc21hdGNoLXVu
c3VwcG9ydGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvaW5wdXQtc3RlcC5odG1s
CisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogQWRkICJzdGVwIi4KKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmdldFN0ZXBQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6IEFkZCAic3Rl
cCIuCisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCk6IEZvcndhcmQgdG8gSFRNTElucHV0RWxlbWVu
dDo6c3RlcE1pc21hdGNoKCkuCisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0YXRlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlk
ZXJSYW5nZTo6U2xpZGVyUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyUmFuZ2U6OmNs
YW1wVmFsdWUpOgorCiAyMDA5LTExLTE2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2QgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KaW5kZXggN2ZlZjNjMi4uYTRhYWFiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCkBAIC0yMzUsNiArMjM1LDcgQEAgc3BlbGxjaGVjawogc3JjCiBzdGFuZGJ5CiBzdGFydAor
c3RlcAogc3R5bGUKIHN1bW1hcnkKIHRhYmluZGV4CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggZTM0MWQwZS4uNWRkODU2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAt
NzMsNiArNzMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogY29uc3QgaW50IG1h
eFNhdmVkUmVzdWx0cyA9IDI1NjsKIAorLy8gQ29uc3RhbnQgdmFsdWVzIGZvciBnZXRBbGxvd2Vk
VmFsdWVTdGVwKCkuCitzdGF0aWMgY29uc3QgZG91YmxlIG51bWJlckRlZmF1bHRTdGVwID0gMS4w
Oworc3RhdGljIGNvbnN0IGRvdWJsZSBudW1iZXJTdGVwU2NhbGVGYWN0b3IgPSAxLjA7CisKIEhU
TUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVtZW50KiBmKQogICAgIDogSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jLCBmKQogICAgICwgbV94UG9zKDApCkBAIC0z
MDgsNiArMzEyLDEwMCBAQCBkb3VibGUgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VNYXhpbXVtKCkg
Y29uc3QKICAgICByZXR1cm4gbWF4OwogfQogCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBN
aXNtYXRjaCgpIGNvbnN0Cit7CisgICAgZG91YmxlIHN0ZXA7CisgICAgaWYgKCFnZXRBbGxvd2Vk
VmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpbnB1dFR5
cGUoKSA9PSBOVU1CRVIpIHsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgICAgICBp
ZiAoIWZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSgpLCAmZG91YmxlVmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgc3RlcEJhc2UgPSAwLjA7CisgICAgICAg
IGZvcm1TdHJpbmdUb0RvdWJsZShnZXRBdHRyaWJ1dGUobWluQXR0ciksICZzdGVwQmFzZSk7Cisg
ICAgICAgIGRvdWJsZVZhbHVlID0gZmFicyhkb3VibGVWYWx1ZSAtIHN0ZXBCYXNlKTsKKyAgICAg
ICAgaWYgKGlzaW5mKGRvdWJsZVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgLy8gZG91YmxlJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0
LiAgSWYgdGhlIGN1cnJlbnQKKyAgICAgICAgLy8gdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHN0ZXAq
Ml5EQkxfTUFOVF9ESUcsIHRoZSBmb2xsb3dpbmcgZm1vZCgpIG1ha2VzCisgICAgICAgIC8vIG5v
IHNlbnNlLgorICAgICAgICBpZiAoZG91YmxlVmFsdWUgLyBwb3coMiwgREJMX01BTlRfRElHKSA+
IHN0ZXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSByZW1haW5k
ZXIgPSBmbW9kKGRvdWJsZVZhbHVlLCBzdGVwKTsKKyAgICAgICAgLy8gQWNjZXB0cyBlcnJvcnMg
aW4gbG93ZXIgNy1iaXQuCisgICAgICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IgPSBzdGVwIC8g
cG93KDIsIERCTF9NQU5UX0RJRyAtIDcpOworICAgICAgICByZXR1cm4gYWNjZXB0YWJsZUVycm9y
IDwgcmVtYWluZGVyICYmIHJlbWFpbmRlciA8IChzdGVwIC0gYWNjZXB0YWJsZUVycm9yKTsKKyAg
ICB9CisgICAgLy8gTm9uLVJBTkdFIHR5cGVzIHNob3VsZCBiZSByZWplY3RlZCBieSBnZXRBbGxv
d2VkVmFsdWVTdGVwKCkuCisgICAgQVNTRVJUKGlucHV0VHlwZSgpID09IFJBTkdFKTsKKyAgICAv
LyBzdGVwTWlzbWF0Y2ggZG9lc24ndCBvY2N1ciBmb3IgUkFOR0UuIFJlbmRlclNsaWRlciBndWFy
YW50ZWVzIHRoZQorICAgIC8vIHZhbHVlIG1hdGNoZXMgdG8gc3RlcC4KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0U3RlcFBhcmFtZXRlcnMoZG91Ymxl
KiBkZWZhdWx0U3RlcCwgZG91YmxlKiBzdGVwU2NhbGVGYWN0b3IpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGRlZmF1bHRTdGVwKTsKKyAgICBBU1NFUlQoc3RlcFNjYWxlRmFjdG9yKTsKKyAgICBzd2l0
Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgY2FzZSBOVU1CRVI6CisgICAgY2FzZSBSQU5HRToKKyAg
ICAgICAgKmRlZmF1bHRTdGVwID0gbnVtYmVyRGVmYXVsdFN0ZXA7CisgICAgICAgICpzdGVwU2Nh
bGVGYWN0b3IgPSBudW1iZXJTdGVwU2NhbGVGYWN0b3I7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgREFURToKKyAgICBjYXNlIERBVEVUSU1FOgorICAgIGNhc2UgREFURVRJTUVMT0NB
TDoKKyAgICBjYXNlIE1PTlRIOgorICAgIGNhc2UgVElNRToKKyAgICBjYXNlIFdFRUs6CisgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRoZXNlIHR5cGVzLgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY2FzZSBCVVRUT046CisgICAgY2FzZSBDSEVDS0JPWDoKKyAgICBjYXNlIENP
TE9SOgorICAgIGNhc2UgRU1BSUw6CisgICAgY2FzZSBGSUxFOgorICAgIGNhc2UgSElEREVOOgor
ICAgIGNhc2UgSU1BR0U6CisgICAgY2FzZSBJU0lOREVYOgorICAgIGNhc2UgUEFTU1dPUkQ6Cisg
ICAgY2FzZSBSQURJTzoKKyAgICBjYXNlIFJFU0VUOgorICAgIGNhc2UgU0VBUkNIOgorICAgIGNh
c2UgU1VCTUlUOgorICAgIGNhc2UgVEVMRVBIT05FOgorICAgIGNhc2UgVEVYVDoKKyAgICBjYXNl
IFVSTDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0
QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0Cit7CisgICAgQVNTRVJUKHN0ZXAp
OworICAgIGRvdWJsZSBkZWZhdWx0U3RlcDsKKyAgICBkb3VibGUgc3RlcFNjYWxlRmFjdG9yOwor
ICAgIGlmICghZ2V0U3RlcFBhcmFtZXRlcnMoJmRlZmF1bHRTdGVwLCAmc3RlcFNjYWxlRmFjdG9y
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RlcFN0
cmluZyA9IGdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0
eSgpKSB7CisgICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVGYWN0b3I7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3Rl
cFN0cmluZywgImFueSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91YmxlIHBhcnNl
ZDsKKyAgICBpZiAoIWZvcm1TdHJpbmdUb0RvdWJsZShzdGVwU3RyaW5nLCAmcGFyc2VkKSB8fCBw
YXJzZWQgPD0gMC4wKSB7CisgICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVG
YWN0b3I7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAqc3RlcCA9IHBhcnNlZCAq
IHN0ZXBTY2FsZUZhY3RvcjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGlubGluZSBD
aGVja2VkUmFkaW9CdXR0b25zJiBjaGVja2VkUmFkaW9CdXR0b25zKGNvbnN0IEhUTUxJbnB1dEVs
ZW1lbnQgKmVsZW1lbnQpCiB7CiAgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGVsZW1l
bnQtPmZvcm0oKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmgg
Yi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDcxZDIxZDYuLmZmMDZmMTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMTEwLDYgKzExMCwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdHlwZT1yYW5nZS4gIERvbid0IGNh
bGwgdGhpcyBmb3Igb3RoZXIgdHlwZXMuCiAgICAgLy8gVGhpcyBhbHdheXMgcmV0dXJucyBhIHZh
bHVlIHdoaWNoIGlzIDw9IHJhbmdlTWluaW11bSgpLgogICAgIGRvdWJsZSByYW5nZU1heGltdW0o
KSBjb25zdDsKKyAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBkZWZpbmVkIGlu
IHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4KKyAgICAvLyBS
ZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgorICAgIGJv
b2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICAvLyBGb3IgVmFsaWRp
dHlTdGF0ZS4KKyAgICBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1Rl
eHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU1VCTUlUIHx8IG1fdHlwZSA9PSBS
RVNFVCB8fCBtX3R5cGUgPT0gQlVUVE9OOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0
b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gUkFESU87IH0KQEAgLTI2NSw3ICsyNzAsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25z
dDsKIAogICAgIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGVUZW1wb3JhcnlGb3Jt
Rm9ySXNJbmRleCgpOwotCisgICAgLy8gSGVscGVyIGZvciBnZXRBbGxvd2VkVmFsdWVTdGVwKCk7
CisgICAgYm9vbCBnZXRTdGVwUGFyYW1ldGVycyhkb3VibGUqIGRlZmF1bHRTdGVwLCBkb3VibGUq
IHN0ZXBTY2FsZUZhY3RvcikgY29uc3Q7CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAgIEhUTUxE
YXRhTGlzdEVsZW1lbnQqIGRhdGFMaXN0KCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmlkbAppbmRleCA1OTI0OGY0Li5iNDVkMTkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaWRsCkBAIC02MywxMiArNjMsMTQgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgIHNpemU7IC8vIENoYW5nZWQgc3RyaW5nIC0+IGxv
bmcgYXMgcGFydCBvZiBET00gbGV2ZWwgMgogI2VuZGlmCiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzcmM7CisgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHN0ZXA7CiAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIEpTQ0N1c3RvbUdldHRlcl0g
RE9NU3RyaW5nIHR5cGU7IC8vIHJlYWRvbmx5IGRyb3BwZWQgYXMgcGFydCBvZiBET00gbGV2ZWwg
MgogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgdXNlTWFwOwogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdmFsdWU7CiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUxJ
U1QpICYmIEVOQUJMRV9EQVRBTElTVAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTE9w
dGlvbkVsZW1lbnQgc2VsZWN0ZWRPcHRpb247CiAjZW5kaWYKKwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHdpbGxWYWxpZGF0ZTsKICAgICAgICAgYm9vbGVhbiAg
ICAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICAgdm9pZCAgICAgICAgICAgICAgIHNl
dEN1c3RvbVZhbGlkaXR5KGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBE
T01TdHJpbmcgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUu
Y3BwIGIvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCmluZGV4IDZiMGEwYjQuLjJjNmU3
YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTkzLDYgKzkzLDEzIEBAIGJvb2wgVmFsaWRp
dHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihjb250cm9sKCkpLT5yYW5nZU92ZXJmbG93KCk7CiB9CiAKK2Jvb2wgVmFsaWRp
dHlTdGF0ZTo6c3RlcE1pc21hdGNoKCkKK3sKKyAgICBpZiAoIWNvbnRyb2woKS0+aGFzVGFnTmFt
ZShpbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2woKSktPnN0ZXBNaXNtYXRjaCgpOworfQorCiBi
b29sIFZhbGlkaXR5U3RhdGU6OnZhbGlkKCkKIHsKICAgICBib29sIHNvbWVFcnJvciA9IHR5cGVN
aXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VP
dmVyZmxvdygpIHx8CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oIGIv
V2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCAxZGVlMzA2Li40ZTI0MGVkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIHRvb0xvbmcoKSB7IHJldHVybiBjb250cm9sKCktPnRvb0xvbmcoKTsgfQogICAg
ICAgICBib29sIHJhbmdlVW5kZXJmbG93KCk7CiAgICAgICAgIGJvb2wgcmFuZ2VPdmVyZmxvdygp
OwotICAgICAgICBib29sIHN0ZXBNaXNtYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAg
IGJvb2wgc3RlcE1pc21hdGNoKCk7CiAgICAgICAgIGJvb2wgY3VzdG9tRXJyb3IoKSB7IHJldHVy
biAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgdmFsaWQo
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggNjQ0OGZiOS4uZTE4YjQzMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC00OCw3ICs0OCw4IEBAIHN0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5OwogLy8gRklYTUU6IFRoZSBTbGlkZXJS
YW5nZSBjbGFzcyBhbmQgZnVuY3Rpb25zIGFyZSBlbnRpcmVseSBiYXNlZCBvbiB0aGUgRE9NLAog
Ly8gYW5kIGNvdWxkIGJlIHB1dCB3aXRoIEhUTUxJbnB1dEVsZW1lbnQgKHBvc3NpYmx5IHdpdGgg
YSBuZXcgbmFtZSkgaW5zdGVhZCBvZiBoZXJlLgogc3RydWN0IFNsaWRlclJhbmdlIHsKLSAgICBi
b29sIGlzSW50ZWdyYWw7CisgICAgYm9vbCBoYXNTdGVwOworICAgIGRvdWJsZSBzdGVwOwogICAg
IGRvdWJsZSBtaW5pbXVtOwogICAgIGRvdWJsZSBtYXhpbXVtOyAgLy8gbWF4aW11bSBtdXN0IGJl
ID49IG1pbmltdW0uCiAKQEAgLTc1LDEwICs3NiwxMSBAQCBzdHJ1Y3QgU2xpZGVyUmFuZ2Ugewog
CiBTbGlkZXJSYW5nZTo6U2xpZGVyUmFuZ2UoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsK
LSAgICAvLyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCB3YXkgdG8gaGFuZGxlIGFuIGludGVncmFs
IHJhbmdlIHdpdGggbm9uLWludGVncmFsIG1pbmltdW0gYW5kIG1heGltdW0/Ci0gICAgLy8gQ3Vy
cmVudGx5IHZhbHVlcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBpbnRlZ3JhbCBidXQgY291bGQgYmUg
b3V0c2lkZSB0aGUgcmFuZ2UgaW4gdGhhdCBjYXNlLgotCi0gICAgaXNJbnRlZ3JhbCA9ICFlcXVh
bElnbm9yaW5nQ2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciksICJmbG9h
dCIpOworICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikpIHsKKyAg
ICAgICAgc3RlcCA9IDEuMDsKKyAgICAgICAgaGFzU3RlcCA9ICFlcXVhbElnbm9yaW5nQ2FzZShl
bGVtZW50LT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciksICJmbG9hdCIpOworICAgIH0gZWxz
ZQorICAgICAgICBoYXNTdGVwID0gZWxlbWVudC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCk7
CiAKICAgICBtYXhpbXVtID0gZWxlbWVudC0+cmFuZ2VNYXhpbXVtKCk7CiAgICAgbWluaW11bSA9
IGVsZW1lbnQtPnJhbmdlTWluaW11bSgpOwpAQCAtODcsNyArODksMTUgQEAgU2xpZGVyUmFuZ2U6
OlNsaWRlclJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiBkb3VibGUgU2xpZGVyUmFu
Z2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKQogewogICAgIGRvdWJsZSBjbGFtcGVkVmFsdWUg
PSBtYXgobWluaW11bSwgbWluKHZhbHVlLCBtYXhpbXVtKSk7Ci0gICAgcmV0dXJuIGlzSW50ZWdy
YWwgPyByb3VuZChjbGFtcGVkVmFsdWUpIDogY2xhbXBlZFZhbHVlOworICAgIGlmICghaGFzU3Rl
cCkKKyAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKKyAgICAvLyBSb3VuZHMgY2xhbXBlZFZh
bHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KKyAgICBjbGFtcGVkVmFsdWUgPSBtaW5pbXVtICsg
cm91bmQoKGNsYW1wZWRWYWx1ZSAtIG1pbmltdW0pIC8gc3RlcCkgKiBzdGVwOworICAgIGlmIChj
bGFtcGVkVmFsdWUgPiBtYXhpbXVtKQorICAgICAgIGNsYW1wZWRWYWx1ZSAtPSBzdGVwOworICAg
IEFTU0VSVChjbGFtcGVkVmFsdWUgPj0gbWluaW11bSk7CisgICAgQVNTRVJUKGNsYW1wZWRWYWx1
ZSA8PSBtYXhpbXVtKTsKKyAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCiBkb3VibGUgU2xp
ZGVyUmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9v
bCogd2FzQ2xhbXBlZCkKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>