<?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>38845</bug_id>
          
          <creation_ts>2010-05-10 08:26:35 -0700</creation_ts>
          <short_desc>Canvas color property getters should serialize them according to spec</short_desc>
          <delta_ts>2010-05-19 11:06:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20553</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223322</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 08:26:35 -0700</bug_when>
    <thetext>See section 4.8.11.1.4 (Colors and styles):
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#serialization-of-a-color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223327</commentid>
    <comment_count>1</comment_count>
      <attachid>55555</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 08:29:06 -0700</bug_when>
    <thetext>Created attachment 55555
Proposed patch, first stab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223330</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 08:33:57 -0700</bug_when>
    <thetext>Attachment 55555 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/canvas/CanvasStyle.cpp:242:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/html/canvas/CanvasStyle.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/html/canvas/CanvasStyle.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223345</commentid>
    <comment_count>3</comment_count>
      <attachid>55557</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 09:08:03 -0700</bug_when>
    <thetext>Created attachment 55557
Proposed patch, first stab + stylefixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223803</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 00:55:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=55557) [details]
&gt; Proposed patch, first stab + stylefixes

I miss a test, where you set a color like: fillStyle = &quot;rgba(255,0,0,1.0)&quot;;
If I read the Spec correctly, we should get back &quot;#ff0000&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223804</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 00:58:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Created an attachment (id=55557) [details] [details]
&gt; &gt; Proposed patch, first stab + stylefixes
&gt; 
&gt; I miss a test, where you set a color like: fillStyle = &quot;rgba(255,0,0,1.0)&quot;;
&gt; If I read the Spec correctly, we should get back &quot;#ff0000&quot;.

Also your&apos;re violating this part:

&quot;a U+0030 DIGIT ZERO, a U+002E FULL STOP (representing the decimal point), one or more digits in the range 0-9 (U+0030 to U+0039) representing the fractional part of the alpha value&quot;

shouldBe(&quot;ctx.shadowColor&quot;, &quot;&apos;rgba(1, 2, 3, 0.40000)&apos;&quot;);

is wrong here, should be &quot;rgba(1, 2, 3, 0.4)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223806</commentid>
    <comment_count>6</comment_count>
      <attachid>55557</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 01:10:19 -0700</bug_when>
    <thetext>Comment on attachment 55557
Proposed patch, first stab + stylefixes

I&apos;m also a bit unhappy about the parsing code. We have some bugs about the performance issues on color parsing. So it&apos;s not a good idea to parse the color multiple times: in setFill(/Stroke/Shadow)Color and again in CanvasStyle::applyFill(/Stroke/Shadow)Color().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224030</commentid>
    <comment_count>7</comment_count>
      <attachid>55725</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-11 11:23:37 -0700</bug_when>
    <thetext>Created attachment 55725
Proposed patch v2

Updated patch with all comments except #5 addressed.
@Dirk, are you sure returning 0.40000 instead of 0.4 is in violation of the spec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224035</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-11 11:27:51 -0700</bug_when>
    <thetext>Attachment 55725 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/canvas/CanvasStyle.cpp:1:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebCore/html/canvas/CanvasStyle.cpp:126:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/html/canvas/CanvasStyle.cpp:169:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224045</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 11:40:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=55725) [details]
&gt; Proposed patch v2
&gt; 
&gt; Updated patch with all comments except #5 addressed.
&gt; @Dirk, are you sure returning 0.40000 instead of 0.4 is in violation of the spec?

I pasted the part of the spec. And the spec talks about one digit after the point. That doesn&apos;t mean that I agree to the spec, but if I get it right, we give back a string. And the user has to parse it on his own. So a defined output with limited digits after the point makes sense some how.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224321</commentid>
    <comment_count>10</comment_count>
      <attachid>55794</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-11 18:47:42 -0700</bug_when>
    <thetext>Created attachment 55794
Proposed patch v3

Style fixed + CanvasStyle slightly slimmed.

Dirk, I don&apos;t think I&apos;m violating the spec here, it reads to me as if this format should be acceptable.
If nothing else, it&apos;s what Gecko does. (Weak argument, I know.)

That said, I would personally also prefer returning &quot;0.4&quot; instead of &quot;0.40000&quot;. Is there a simple way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224332</commentid>
    <comment_count>11</comment_count>
      <attachid>55797</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-11 19:09:34 -0700</bug_when>
    <thetext>Created attachment 55797
Proposed patch v4

Oops! I was only running the fast/canvas tests at first and missed the fact that fast/dom/canvasContext2d-element-attribute-js-null.html checks the shadowColor property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224429</commentid>
    <comment_count>12</comment_count>
      <attachid>55797</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-11 23:09:02 -0700</bug_when>
    <thetext>Comment on attachment 55797
Proposed patch v4

The color parsing code looks better now.

&gt; +String serializedCanvasColor(const Color&amp; color)
&gt; +{
&gt; +    // FIXME: What should we do with invalid colors?
&gt; +    if (!color.isValid())
&gt; +        return String(&quot;rgba(0, 0, 0, 0.0)&quot;);
&gt; +
&gt; +    if (color.hasAlpha()) {
&gt; +        // Match Gecko (0.0 for zero, 5 decimals for anything else)
&gt; +        if (!color.alpha())
&gt; +            return String::format(&quot;rgba(%u, %u, %u, 0.0)&quot;, color.red(), color.green(), color.blue());
&gt; +        return String::format(&quot;rgba(%u, %u, %u, %.5f)&quot;, color.red(), color.green(), color.blue(), color.alpha() / 255.0f);
&gt;      }
&gt; +
&gt; +    return String::format(&quot;#%02x%02x%02x&quot;, color.red(), color.green(), color.blue());
I&apos;m sorry, I missread the spec. The spec talks about 1 _or more digits_ for fractional part. Nevertheless, if alpha is zero, you just use one digit after the point, if alpha is &gt;0 but &lt;1 you use 5? Shouldn&apos;t we have the same count of digits? What is FF and Opera doing here? Maybe we should aline to them here.
In my opinion, the fractional part should allways have the same count of digits, this makes the parsing easier for the user. If you want, you can write a mail to whatwg@lists.whatwg.org for clarification.
Another point is String::format(). This is not language aware on some posix-systems (point or comma on fractional numbers). See bug 18994. You can also ask Evan Martin for a better solution here.

&gt; +String serializedCanvasColor(const Color&amp; color);
&gt; +
&gt;      class CanvasGradient;
&gt;      class CanvasPattern;
&gt;      class GraphicsContext;
&gt;  
&gt;      class CanvasStyle : public RefCounted&lt;CanvasStyle&gt; {
&gt;      public:
&gt; +        static PassRefPtr&lt;CanvasStyle&gt; create(const Color&amp; color) { return adoptRef(new CanvasStyle(color)); }
&gt;          static PassRefPtr&lt;CanvasStyle&gt; create(const String&amp; color) { return adoptRef(new CanvasStyle(color)); }
&gt;          static PassRefPtr&lt;CanvasStyle&gt; create(float grayLevel) { return adoptRef(new CanvasStyle(grayLevel)); }
&gt;          static PassRefPtr&lt;CanvasStyle&gt; create(const String&amp; color, float alpha) { return adoptRef(new CanvasStyle(color, alpha)); }
&gt; @@ -45,14 +50,17 @@ namespace WebCore {
&gt;          static PassRefPtr&lt;CanvasStyle&gt; create(PassRefPtr&lt;CanvasGradient&gt; gradient) { return adoptRef(new CanvasStyle(gradient)); }
&gt;          static PassRefPtr&lt;CanvasStyle&gt; create(PassRefPtr&lt;CanvasPattern&gt; pattern) { return adoptRef(new CanvasStyle(pattern)); }
&gt;  
&gt; -        String color() const { return m_color; }
&gt; +        String color() const { return serializedCanvasColor(m_color); }
&gt;          CanvasGradient* canvasGradient() const { return m_gradient.get(); }
&gt;          CanvasPattern* canvasPattern() const { return m_pattern.get(); }
&gt;  
&gt;          void applyFillColor(GraphicsContext*);
&gt;          void applyStrokeColor(GraphicsContext*);
&gt;  
&gt; +        bool isValid() const;
...
the complete class shouldn&apos;t be indented, please also put serializedCanvasColor after the class definition.

The code looks much better. I would like to see Oliver to give some comments on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224442</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-12 00:09:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m sorry, I missread the spec. The spec talks about 1 _or more digits_ for fractional part. Nevertheless, if alpha is zero, you just use one digit after the point, if alpha is &gt;0 but &lt;1 you use 5? Shouldn&apos;t we have the same count of digits? What is FF and Opera doing here? Maybe we should aline to them here.
&gt; In my opinion, the fractional part should allways have the same count of digits, this makes the parsing easier for the user. If you want, you can write a mail to whatwg@lists.whatwg.org for clarification.

I copied FF&apos;s logic here: &quot;0.0&quot; for transparent, 5 digits otherwise. Just tested on Opera and they return the least possible amount of digits.

The other reason I didn&apos;t want to use 5 digits for transparent is that some of the HTML5 Canvas tests check for &quot;rgba(0, 0, 0, 0.0)&quot; ;-)

&gt; Another point is String::format(). This is not language aware on some posix-systems (point or comma on fractional numbers). See bug 18994. You can also ask Evan Martin for a better solution here.

So this will actually break on systems where %f is printed with a comma? Not good.

&gt; ...
&gt; the complete class shouldn&apos;t be indented, please also put serializedCanvasColor after the class definition.

I didn&apos;t want to mess up svn/git blame, but sure why not?

&gt; The code looks much better. I would like to see Oliver to give some comments on this bug.

That&apos;d be nice indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224768</commentid>
    <comment_count>14</comment_count>
      <attachid>55797</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-12 11:43:40 -0700</bug_when>
    <thetext>Comment on attachment 55797
Proposed patch v4

I see quite a few code changes here without corresponding tests that exercise those functions. Are there already tests covering all these code paths? Which tests?

&gt; +        * fast/dom/canvasContext2d-element-attribute-js-null-expected.txt: Updated baseline.
&gt; +        * fast/dom/canvasContext2d-element-attribute-js-null.html:

We should move these tests into fast/canvas. Doesn&apos;t need to be part of this patch, though.

&gt; +PASS ctx.strokeStyle is &apos;#000000&apos;
&gt; +PASS ctx.fillStyle is &apos;#000000&apos;
&gt; +PASS ctx.shadowColor is &apos;rgba(0, 0, 0, 0.0)&apos;
&gt; +PASS ctx.strokeStyle is &apos;#ff0000&apos;
&gt; +PASS ctx.strokeStyle is &apos;#ffffff&apos;
&gt; +PASS ctx.strokeStyle is &apos;#ffffff&apos;
&gt; +PASS ctx.fillStyle is &apos;#ff0000&apos;
&gt; +PASS ctx.fillStyle is &apos;#ffffff&apos;
&gt; +PASS ctx.fillStyle is &apos;#ffffff&apos;
&gt; +PASS ctx.fillStyle is &apos;#00ff00&apos;
&gt; +PASS ctx.shadowColor is &apos;#ff0000&apos;
&gt; +PASS ctx.shadowColor is &apos;#ffffff&apos;
&gt; +PASS ctx.shadowColor is &apos;#ffffff&apos;
&gt; +PASS ctx.shadowColor is &apos;rgba(1, 2, 3, 0.40000)&apos;

The way this test is written does not make very good use of the shouldBe macros. It&apos;s always a danger sign when the test output shows only the results and not what is being tested. It&apos;s easy to do better by doing this:

    shouldBe(&quot;ctx.strokeStyle = &apos;red&apos;; ctx.strokeStyle&quot;, &quot;&apos;#ff0000&apos;&quot;);

Or you can make helper functions. Either way, the test output is a lot clearer when the expression includes the code being tested, not just something that fetches the test result.

&gt; +    state().m_shadowColor = Color(rgba);

There should be no need to write &quot;Color(rgba)&quot; here instead of just &quot;rgba&quot;.

&gt; -    state().m_shadowColor = color;
&gt; +    state().m_shadowColor = Color(color);

Why do some call sites parse colors with CSSParser::parseColor, but this one uses the Color constructor? Could you add test cases to show the different behavior is correct?

&gt; +    // Default to transparent black
&gt; +    RGBA32 rgba = state().m_shadowColor.isValid() ? state().m_shadowColor.rgb() : 0;
&gt;      c-&gt;setShadow(IntSize(width, -height), state().m_shadowBlur, Color(colorWithOverrideAlpha(rgba, alpha)), DeviceColorSpace);

Color&apos;s rgb() function already returns 0 for invalid colors, so there&apos;s no need for the extra code here.

&gt;      RGBA32 rgba = 0; // default is transparent black
&gt; -    if (!state().m_shadowColor.isEmpty())
&gt; -        CSSParser::parseColor(rgba, state().m_shadowColor);
&gt; +    if (state().m_shadowColor.isValid())
&gt; +        rgba = state().m_shadowColor.rgb();

Color already does this 0 default, so we don&apos;t need an if statement.

&gt; -            String m_shadowColor;
&gt; +            Color m_shadowColor;

The real reason to use Color instead of RGBA32 is that Color has a distinct &quot;invalid&quot; value that can be distinguished from transparent black. If we don&apos;t need that, then we may wnat to consider using RGBA32 here instead of Color to save storage.

&gt; +CanvasStyle::CanvasStyle(const Color&amp; color)

We could consider taking an RGBA32 here instead for the same reasons mentioned above.

&gt; +    // We&apos;re only supporting 255 levels of gray here.  Since this isn&apos;t
&gt; +    // even part of HTML5, I don&apos;t expect anyone will care.  If they do
&gt; +    // we&apos;ll make a fancier Color abstraction.

I don&apos;t think this comment is helpful. It&apos;s correct, but doesn&apos;t seem to add anything. For one thing, we also only support 255 levels of R, G, B, and A in all the other constructors yet they have no comment.

On the other hand, changing the behavior of the existing code to always round colors to 255 gray levels and 255 levels of R, G, B, and A will likely change the behavior on Mac OS X, removing a feature from the canvas on that platform that some applications may depend on. I wonder what the best way to find this out is?

&gt; +    case RGBA:
&gt; +        if (m_color.isValid())
&gt; +            context-&gt;setStrokeColor(m_color.rgb(), DeviceColorSpace);
&gt; +        break;

I don&apos;t understand the handling for m_color&apos;s invalid state. When would m_color be invalid? Is there a test case that covers this code path?

&gt; +bool CanvasStyle::isValid() const
&gt; +{
&gt; +    switch (m_type) {
&gt; +    case RGBA:
&gt; +        return m_color.isValid();
&gt; +    default:
&gt; +        return true;
&gt; +    }
&gt; +}

Is this really needed?

&gt; +    // FIXME: What should we do with invalid colors?
&gt; +    if (!color.isValid())
&gt; +        return String(&quot;rgba(0, 0, 0, 0.0)&quot;);

And why do we even have the concept of an invalid color in this class?

&gt;  namespace WebCore {
&gt;  
&gt; +String serializedCanvasColor(const Color&amp; color);
&gt; +
&gt;      class CanvasGradient;
&gt;      class CanvasPattern;
&gt;      class GraphicsContext;

The function should be indented as the rest of the namespace contents is, and should be after the forward declarations, not before them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225858</commentid>
    <comment_count>15</comment_count>
      <attachid>56075</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-14 08:58:11 -0700</bug_when>
    <thetext>Created attachment 56075
Proposed patch v5

Updated patch: Prettier tests, CanvasStyle now stores an RGBA32 internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225877</commentid>
    <comment_count>16</comment_count>
      <attachid>56075</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-14 09:20:26 -0700</bug_when>
    <thetext>Comment on attachment 56075
Proposed patch v5

This is looking good. Still needs some work, though.

&gt; -    , m_shadowColor(&quot;black&quot;)
&gt; +    , m_shadowColor(Color::transparent)

Is this change correct? Does it behave like this in the other browsers? What does HTML5 say about it?

&gt; @@ -814,15 +815,18 @@ void CanvasRenderingContext2D::setShadow(float width, float height, float blur)
&gt;  {
&gt;      state().m_shadowOffset = FloatSize(width, height);
&gt;      state().m_shadowBlur = blur;
&gt; -    state().m_shadowColor = &quot;&quot;;
&gt; +    state().m_shadowColor = Color::transparent;
&gt;      applyShadow();
&gt;  }

Where&apos;s the test case for this? How does it behave in the other browsers? What does HTML5 say about it? I have the same question about many of the setShadow overloads and about clearShadow. I don&apos;t see tests that use them and then check the value of the shadowColor property, yet that&apos;s the code we&apos;re changing.

&gt; +    , m_valid(true)

For boolean members, the WebKit style has been to complete the phrase &quot;style &lt;xxx&gt;&quot;. So this would be m_isValid rather than m_valid.

&gt; +    if ((m_valid = CSSParser::parseColor(m_rgba, color)))
&gt; +        m_rgba = colorWithOverrideAlpha(m_rgba, alpha);

I think this code would be slightly clearer if it used a local variable for the result of parseColor instead of setting m_rgba first to the wrong value and then the right on.

I don&apos;t think we need to complicate things by adding in the notion of an invalid canvas style.

Instead the color parsing from the CanvasStyle constructors that take color strings should move into the CanvasStyle::create functions. Those functions will return 0 if the color cannot be parsed and create a CanvasStyle if the color can be parsed. The CanvasStyle constructors that take color strings would be removed.

&gt; +        CMYKAValues* m_cmyka;

I suggest using an OwnPtr for this instead of writing the delete explicitly. But I also don&apos;t see the need to heap allocate this.

There are a lot of changes here without test cases -- I&apos;d like to see either new or existing test cases that cover all the modified functions.

review- mainly because we need better test coverage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226095</commentid>
    <comment_count>17</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-14 18:59:57 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; -    , m_shadowColor(&quot;black&quot;)
&gt; &gt; +    , m_shadowColor(Color::transparent)
&gt; 
&gt; Is this change correct? Does it behave like this in the other browsers? What does HTML5 say about it?

From HTML5 section 4.8.11.1.6:
&quot;When the context is created, the shadowColor attribute initially must be fully-transparent black.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226098</commentid>
    <comment_count>18</comment_count>
      <attachid>56129</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-14 19:09:42 -0700</bug_when>
    <thetext>Created attachment 56129
Proposed patch v6

Updated patch with comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226101</commentid>
    <comment_count>19</comment_count>
      <attachid>56131</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-14 19:16:40 -0700</bug_when>
    <thetext>Created attachment 56131
Proposed patch v7

Updated patch - v6 missed one instance of &quot;...would be slightly clearer if it used a local variable for the result of parseColor instead of setting m_rgba first to the wrong value and then the right one...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226116</commentid>
    <comment_count>20</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-05-14 20:05:14 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; &gt; -    , m_shadowColor(&quot;black&quot;)
&gt; &gt; &gt; +    , m_shadowColor(Color::transparent)
&gt; &gt; 
&gt; &gt; Is this change correct? Does it behave like this in the other browsers? What does HTML5 say about it?
&gt; 
&gt; From HTML5 section 4.8.11.1.6:
&gt; &quot;When the context is created, the shadowColor attribute initially must be fully-transparent black.&quot;

Did you check against other browsers -- this change seems odd, as it would mean shadow colour needs to be set before you get shadows and i&apos;m 95% sure that isn&apos;t needed in browsers currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226118</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-14 20:16:52 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; From HTML5 section 4.8.11.1.6:
&gt; &gt; &quot;When the context is created, the shadowColor attribute initially must be fully-transparent black.&quot;
&gt; 
&gt; Did you check against other browsers -- this change seems odd, as it would mean shadow colour needs to be set before you get shadows and i&apos;m 95% sure that isn&apos;t needed in browsers currently.

Yes, both Opera and Firefox return &quot;rgba(0, 0, 0, 0.0)&quot; for &quot;document.createElement(&apos;canvas&apos;).getContext(&apos;2d&apos;).shadowColor&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226804</commentid>
    <comment_count>22</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-05-17 10:25:42 -0700</bug_when>
    <thetext>*** Bug 39161 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227177</commentid>
    <comment_count>23</comment_count>
      <attachid>56334</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-18 01:15:52 -0700</bug_when>
    <thetext>Created attachment 56334
Proposed patch v8

Moved color serialization into the Color class - String Color::serialized() const;
(I liked that in the patch for bug 39161)
Other than that, this is the same patch as earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227340</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-18 09:30:22 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Moved color serialization into the Color class - String Color::serialized() const;

Is this the one and only style of color serialization? Generally speaking I don&apos;t think the platform layer files, like Color, should have code that is specific to a particular part of the HTML5 specification. If the serialization rules are specific to HTML then I prefer the old way this code was divided between the source files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227341</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-18 09:31:29 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Moved color serialization into the Color class - String Color::serialized() const;
&gt; 
&gt; Is this the one and only style of color serialization? Generally speaking I don&apos;t think the platform layer files, like Color, should have code that is specific to a particular part of the HTML5 specification. If the serialization rules are specific to HTML then I prefer the old way this code was divided between the source files.

On the other hand, if the Color.h file already has the parsing that is the flip side of this serialization code, then I suppose it&apos;s good to have both in the same place. We should keep them together, whether we leave them in the platform code or move them into the HTML code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227346</commentid>
    <comment_count>26</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-18 09:35:36 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; On the other hand, if the Color.h file already has the parsing that is the flip side of this serialization code, then I suppose it&apos;s good to have both in the same place. We should keep them together, whether we leave them in the platform code or move them into the HTML code.

I agree. Any other thoughts on the patch? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227514</commentid>
    <comment_count>27</comment_count>
      <attachid>56334</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-18 14:59:50 -0700</bug_when>
    <thetext>Comment on attachment 56334
Proposed patch v8

&gt;  CanvasStyle::CanvasStyle(PassRefPtr&lt;CanvasGradient&gt; gradient)
&gt; -    : m_type(gradient ? Gradient : ColorString)
&gt; +    : m_type(gradient ? Gradient : RGBA)
&gt;      , m_gradient(gradient)
&gt;  {
&gt;  }

This will create a style with an uninitialized m_rgba with type RGBA. That&apos;s not good. The old code would have a null color string, not an uninitialized color string.

Instead, I suggest we put the null check in the CanvasStyle::create function and return 0 in that case.

Also, I&apos;d like to see test cases for this.

&gt;  CanvasStyle::CanvasStyle(PassRefPtr&lt;CanvasPattern&gt; pattern)
&gt; -    : m_type(pattern ? ImagePattern : ColorString)
&gt; +    : m_type(pattern ? ImagePattern : RGBA)
&gt;      , m_pattern(pattern)
&gt;  {
&gt;  }

Same thing.

Everything else looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227809</commentid>
    <comment_count>28</comment_count>
      <attachid>56486</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-19 07:12:01 -0700</bug_when>
    <thetext>Created attachment 56486
Proposed patch v9

Updated patch with null checks moved to create().
AFAICT there is no way to cause the CanvasStyle(Gradient/Pattern) constructors to be called with invalid arguments, so I don&apos;t know how to make a test for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227820</commentid>
    <comment_count>29</comment_count>
      <attachid>56486</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-19 07:43:43 -0700</bug_when>
    <thetext>Comment on attachment 56486
Proposed patch v9

If we don&apos;t need to allow null arguments to the CanvasStyle create functions, we could remove the &quot;return 0&quot; code and just have an assertion instead. I can&apos;t think of a good reason to have dead code for non-testable code paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227836</commentid>
    <comment_count>30</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-05-19 08:15:51 -0700</bug_when>
    <thetext>I will help to commit the patch manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227849</commentid>
    <comment_count>31</comment_count>
      <attachid>56486</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-05-19 09:12:17 -0700</bug_when>
    <thetext>Comment on attachment 56486
Proposed patch v9

committed manually, r59768.
remove flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227865</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-19 09:58:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59768 might have broken Qt Linux ARMv5 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227898</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-05-19 11:06:53 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; http://trac.webkit.org/changeset/59768 might have broken Qt Linux ARMv5 Release

No, it isn&apos;t. It was a false positive alarm because of slave lost. Sorry.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55555</attachid>
            <date>2010-05-10 08:29:06 -0700</date>
            <delta_ts>2010-05-10 09:08:03 -0700</delta_ts>
            <desc>Proposed patch, first stab</desc>
            <filename>bug-38845.diff</filename>
            <type>text/plain</type>
            <size>11207</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTFiNDBmLi41MThlZTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUt
MTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9w
ZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBiYXNl
bGluZS4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uanM6IEFkZGVkLgorCiAyMDEwLTA1LTEwICBEaXJrIFNjaHVsemUgIDxrcml0
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5ldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
c2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVy
dGlibGUtY3RtLWV4cGVjdGVkLnR4dAppbmRleCBkYjA1ZWMwLi4zOWU4OGUwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24t
aW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50
eHQKQEAgLTMsMTEgKzMsMTEgQEAgVGVzdHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhc3NpZ24gdG8g
bm9uLWN0bSBlZmZlY3RlZCBwcm9wZXJ0aWVzIHdpdGggYSBub24taW52ZXIKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGN0eC5maWxsU3R5bGUgaXMgImdyZWVuIgorRkFJTCBj
dHguZmlsbFN0eWxlIHNob3VsZCBiZSBncmVlbi4gV2FzICMwMDgwMDAuCiBQQVNTIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNTIGltYWdl
RGF0YS5kYXRhWzJdIGlzIDAKLVBBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICJncmVlbiIKK0ZBSUwg
Y3R4LnN0cm9rZVN0eWxlIHNob3VsZCBiZSBncmVlbi4gV2FzICMwMDgwMDAuCiBQQVNTIGltYWdl
RGF0YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNTIGlt
YWdlRGF0YS5kYXRhWzJdIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODU2YTAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1z
ZXJpYWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
Z2V0dGluZyBjb2xvciBwcm9wZXJ0aWVzIGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
cmV0dXJucyBwcm9wZXJseSBmb3JtYXR0ZWQgdmFsdWVzLiIpOworCit2YXIgY3R4ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworc2hvdWxkQmUo
ImN0eC5zdHJva2VTdHlsZSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxl
IiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgwLCAw
LCAwLCAwLjApJyIpOworCitjdHguc3Ryb2tlU3R5bGUgPSAicmVkIjsKK3Nob3VsZEJlKCJjdHgu
c3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CisKK2N0eC5zdHJva2VTdHlsZSA9ICJ3aGl0ZSI7
CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguc3Ryb2tl
U3R5bGUgPSAid2hpdGUiOworY3R4LnN0cm9rZVN0eWxlID0gIiI7CitzaG91bGRCZSgiY3R4LnN0
cm9rZVN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguZmlsbFN0eWxlID0gInJlZCI7CitzaG91
bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInI2ZmMDAwMCciKTsKKworY3R4LmZpbGxTdHlsZSA9ICJ3
aGl0ZSI7CitzaG91bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInI2ZmZmZmZiciKTsKKworY3R4LmZp
bGxTdHlsZSA9ICJ3aGl0ZSI7CitjdHguZmlsbFN0eWxlID0gIiI7CitzaG91bGRCZSgiY3R4LmZp
bGxTdHlsZSIsICInI2ZmZmZmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJlZCI7CitzaG91
bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworCitjdHguc2hhZG93Q29sb3Ig
PSAid2hpdGUiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInI2ZmZmZmZiciKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gIndoaXRlIjsKK2N0eC5zaGFkb3dDb2xvciA9ICIiOworc2hvdWxk
QmUoImN0eC5zaGFkb3dDb2xvciIsICInI2ZmZmZmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0g
InJnYmEoMSwyLDMsMC40KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDEs
IDIsIDMsIDAuNDAwMDApJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcz
ZmQ5NS4uMDdjMWMwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNS0xMCAgQW5kcmVhcyBLbGluZyAg
PGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCdzIHByb3BlcnR5IGdl
dHRlcnMgdGhhdCByZXR1cm4gY29sb3JzIHNob3VsZAorICAgICAgICBzZXJpYWxpemUgdGhlbSBp
biBhY2NvcmRhbmNlIHdpdGggdGhlIEhUTUw1IHNwZWMgKDQuOC4xMS4xLjQpCisgICAgICAgIFNl
dHRlcnMgc2hvdWxkIGlnbm9yZSBpbnZhbGlkIGNvbG9ycy4KKworICAgICAgICBBbHNvLCBzaGFk
b3dDb2xvciBzaG91bGQgaW5pdGlhbGx5IGJlIHRyYW5zcGFyZW50IGJsYWNrICg0LjguMTEuMS42
KQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0
NQorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9u
Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0
cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2hhZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZWRDYW52YXNDb2xvcik6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNWYWxpZCk6CisKIDIwMTAtMDUt
MTAgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjE1YjQ1ZC4uNmU1NmQ5NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKICAgICAs
IG1fbGluZUpvaW4oTWl0ZXJKb2luKQogICAgICwgbV9taXRlckxpbWl0KDEwKQogICAgICwgbV9z
aGFkb3dCbHVyKDApCi0gICAgLCBtX3NoYWRvd0NvbG9yKCJibGFjayIpCisgICAgLCBtX3NoYWRv
d0NvbG9yKCJyZ2JhKDAsMCwwLDApIikKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1f
Z2xvYmFsQ29tcG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgLCBtX2ludmVydGlibGVD
VE0odHJ1ZSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VTdHlsZSgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKIHsK
LSAgICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewpAQCAt
MTkwLDcgKzE5MCw3IEBAIENhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGxTdHlsZSgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxs
U3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSkK
KyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAg
CiAgICAgaWYgKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CkBAIC0zMDgsMTIgKzMwOCwxNCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cihmbG9hdCBibHVy
KQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGlmIHlvdSBjYWxsZWQg
c2V0U2hhZG93IHdpdGggYSBub24tc3RyaW5nIGNvbG9yPwotICAgIHJldHVybiBzdGF0ZSgpLm1f
c2hhZG93Q29sb3I7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihzdGF0ZSgpLm1f
c2hhZG93Q29sb3IpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKKyAgICBSR0JBMzIgcmdiYTsKKyAgICBp
ZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAgICAgIHJldHVybjsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKICAgICBhcHBseVNoYWRvdygpOwog
fQpAQCAtNDk4LDYgKzUwMCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
dHJva2VDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikK
IHsKKyAgICBSR0JBMzIgcmdiYTsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2Jh
LCBjb2xvcikpCisgICAgICAgIHJldHVybjsKICAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6
OmNyZWF0ZShjb2xvcikpOwogfQogCkBAIC01MDgsNiArNTEzLDkgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwpCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwg
ZmxvYXQgYWxwaGEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBh
cnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgICAgICByZXR1cm47CiAgICAgc2V0RmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGUoY29sb3IsIGFscGhhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKaW5kZXggMzUxNWUwMy4uNGNkZjQ3MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKQEAgLTUyLDEyICs1MiwxNSBAQCBDYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoY29uc3QgU3RyaW5nJiBjb2xvcikKICAgICA6IG1fdHlwZShDb2xvclN0cmluZykKICAgICAs
IG1fY29sb3IoY29sb3IpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgbV92YWxpZCA9IENTU1Bh
cnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZShmbG9hdCBncmF5TGV2ZWwpCiAgICAgOiBtX3R5cGUoR3JheUxldmVsKQogICAgICwgbV9h
bHBoYSgxKQogICAgICwgbV9ncmF5TGV2ZWwoZ3JheUxldmVsKQorICAgICwgbV92YWxpZCh0cnVl
KQogewogfQogCkBAIC02NiwxMiArNjksMTUgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNv
bnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogICAgICwgbV9jb2xvcihjb2xvcikKICAg
ICAsIG1fYWxwaGEoYWxwaGEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgbV92YWxpZCA9IENT
U1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQogICAgIDogbV90eXBlKEdyYXlM
ZXZlbCkKICAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX2dyYXlMZXZlbChncmF5TGV2ZWwp
CisgICAgLCBtX3ZhbGlkKHRydWUpCiB7CiB9CiAKQEAgLTgxLDYgKzg3LDcgQEAgQ2FudmFzU3R5
bGU6OkNhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiAgICAg
LCBtX3JlZChyKQogICAgICwgbV9ncmVlbihnKQogICAgICwgbV9ibHVlKGIpCisgICAgLCBtX3Zh
bGlkKHRydWUpCiB7CiB9CiAKQEAgLTkxLDE4ICs5OCwyMSBAQCBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKICAgICAs
IG1fbWFnZW50YShtKQogICAgICwgbV95ZWxsb3coeSkKICAgICAsIG1fYmxhY2soaykKKyAgICAs
IG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQ
dHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KQogICAgIDogbV90eXBlKGdyYWRpZW50ID8gR3Jh
ZGllbnQgOiBDb2xvclN0cmluZykKICAgICAsIG1fZ3JhZGllbnQoZ3JhZGllbnQpCisgICAgLCBt
X3ZhbGlkKHRydWUpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRy
PENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCiAgICAgOiBtX3R5cGUocGF0dGVybiA/IEltYWdlUGF0
dGVybiA6IENvbG9yU3RyaW5nKQogICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4pCisgICAgLCBtX3Zh
bGlkKHRydWUpCiB7CiB9CiAKQEAgLTIxOCw0ICsyMjgsMjMgQEAgdm9pZCBDYW52YXNTdHlsZTo6
YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIH0KIH0KIAorU3Ry
aW5nIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQorewor
ICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCB0byB0cmFuc3BhcmVudCBibGFjaworCisg
ICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3JTdHJpbmcpKQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIENvbG9yIGNvbG9yKHJnYmEpOworCisgICAg
aWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgLy8gTWF0Y2ggR2Vja28gKDAuMCBmb3Ig
emVybywgNSBkZWNpbWFscyBmb3IgYW55dGhpbmcgZWxzZSkKKyAgICAgICAgaWYgKGNvbG9yLmFs
cGhhKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicmdiYSgldSwg
JXUsICV1LCAwLjApIiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7
CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicmdiYSgldSwgJXUsICV1LCAlLjVmKSIs
IGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCkg
LyAyNTUuMGYpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMnglMDJ4
JTAyeCIsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCkpOworfQorCiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggZmUwMWJkMS4uN2ZiNDY2YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtMjcsOSArMjcsMTIgQEAKICNkZWZpbmUgQ2FudmFz
U3R5bGVfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgU3RyaW5nIHNlcmlhbGl6ZWRDYW52
YXNDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKTsKKwogICAgIGNsYXNzIENhbnZhc0dy
YWRpZW50OwogICAgIGNsYXNzIENhbnZhc1BhdHRlcm47CiAgICAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwpAQCAtNDUsMTMgKzQ4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRp
ZW50PiBncmFkaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRpZW50
KSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNz
UmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNTdHlsZShwYXR0ZXJuKSk7IH0KIAotICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yOyB9CisgICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIHNl
cmlhbGl6ZWRDYW52YXNDb2xvcihtX2NvbG9yKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCog
Y2FudmFzR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAg
ICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm4uZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIGFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4
dCopOwogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0Kik7CiAK
KyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZDsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQ2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvcik7CiAgICAg
ICAgIENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCk7CkBAIC04Miw2ICs4Nyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgbV9tYWdlbnRhOwogICAgICAgICBmbG9hdCBt
X3llbGxvdzsKICAgICAgICAgZmxvYXQgbV9ibGFjazsKKworICAgICAgICBib29sIG1fdmFsaWQ7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55557</attachid>
            <date>2010-05-10 09:08:03 -0700</date>
            <delta_ts>2010-05-11 11:23:37 -0700</delta_ts>
            <desc>Proposed patch, first stab + stylefixes</desc>
            <filename>bug-38845-2.diff</filename>
            <type>text/plain</type>
            <size>11223</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTFiNDBmLi41MThlZTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUt
MTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9w
ZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dDogVXBkYXRlZCBiYXNl
bGluZS4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uanM6IEFkZGVkLgorCiAyMDEwLTA1LTEwICBEaXJrIFNjaHVsemUgIDxrcml0
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5ldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
c2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVy
dGlibGUtY3RtLWV4cGVjdGVkLnR4dAppbmRleCBkYjA1ZWMwLi4zOWU4OGUwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24t
aW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50
eHQKQEAgLTMsMTEgKzMsMTEgQEAgVGVzdHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhc3NpZ24gdG8g
bm9uLWN0bSBlZmZlY3RlZCBwcm9wZXJ0aWVzIHdpdGggYSBub24taW52ZXIKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGN0eC5maWxsU3R5bGUgaXMgImdyZWVuIgorRkFJTCBj
dHguZmlsbFN0eWxlIHNob3VsZCBiZSBncmVlbi4gV2FzICMwMDgwMDAuCiBQQVNTIGltYWdlRGF0
YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNTIGltYWdl
RGF0YS5kYXRhWzJdIGlzIDAKLVBBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICJncmVlbiIKK0ZBSUwg
Y3R4LnN0cm9rZVN0eWxlIHNob3VsZCBiZSBncmVlbi4gV2FzICMwMDgwMDAuCiBQQVNTIGltYWdl
RGF0YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNTIGlt
YWdlRGF0YS5kYXRhWzJdIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODU2YTAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1z
ZXJpYWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
Z2V0dGluZyBjb2xvciBwcm9wZXJ0aWVzIGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
cmV0dXJucyBwcm9wZXJseSBmb3JtYXR0ZWQgdmFsdWVzLiIpOworCit2YXIgY3R4ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworc2hvdWxkQmUo
ImN0eC5zdHJva2VTdHlsZSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxl
IiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgwLCAw
LCAwLCAwLjApJyIpOworCitjdHguc3Ryb2tlU3R5bGUgPSAicmVkIjsKK3Nob3VsZEJlKCJjdHgu
c3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CisKK2N0eC5zdHJva2VTdHlsZSA9ICJ3aGl0ZSI7
CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguc3Ryb2tl
U3R5bGUgPSAid2hpdGUiOworY3R4LnN0cm9rZVN0eWxlID0gIiI7CitzaG91bGRCZSgiY3R4LnN0
cm9rZVN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguZmlsbFN0eWxlID0gInJlZCI7CitzaG91
bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInI2ZmMDAwMCciKTsKKworY3R4LmZpbGxTdHlsZSA9ICJ3
aGl0ZSI7CitzaG91bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInI2ZmZmZmZiciKTsKKworY3R4LmZp
bGxTdHlsZSA9ICJ3aGl0ZSI7CitjdHguZmlsbFN0eWxlID0gIiI7CitzaG91bGRCZSgiY3R4LmZp
bGxTdHlsZSIsICInI2ZmZmZmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJlZCI7CitzaG91
bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworCitjdHguc2hhZG93Q29sb3Ig
PSAid2hpdGUiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInI2ZmZmZmZiciKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gIndoaXRlIjsKK2N0eC5zaGFkb3dDb2xvciA9ICIiOworc2hvdWxk
QmUoImN0eC5zaGFkb3dDb2xvciIsICInI2ZmZmZmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0g
InJnYmEoMSwyLDMsMC40KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDEs
IDIsIDMsIDAuNDAwMDApJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcz
ZmQ5NS4uMDdjMWMwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNS0xMCAgQW5kcmVhcyBLbGluZyAg
PGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCdzIHByb3BlcnR5IGdl
dHRlcnMgdGhhdCByZXR1cm4gY29sb3JzIHNob3VsZAorICAgICAgICBzZXJpYWxpemUgdGhlbSBp
biBhY2NvcmRhbmNlIHdpdGggdGhlIEhUTUw1IHNwZWMgKDQuOC4xMS4xLjQpCisgICAgICAgIFNl
dHRlcnMgc2hvdWxkIGlnbm9yZSBpbnZhbGlkIGNvbG9ycy4KKworICAgICAgICBBbHNvLCBzaGFk
b3dDb2xvciBzaG91bGQgaW5pdGlhbGx5IGJlIHRyYW5zcGFyZW50IGJsYWNrICg0LjguMTEuMS42
KQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0
NQorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9u
Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0
cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2hhZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZWRDYW52YXNDb2xvcik6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNWYWxpZCk6CisKIDIwMTAtMDUt
MTAgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjE1YjQ1ZC4uNmU1NmQ5NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKICAgICAs
IG1fbGluZUpvaW4oTWl0ZXJKb2luKQogICAgICwgbV9taXRlckxpbWl0KDEwKQogICAgICwgbV9z
aGFkb3dCbHVyKDApCi0gICAgLCBtX3NoYWRvd0NvbG9yKCJibGFjayIpCisgICAgLCBtX3NoYWRv
d0NvbG9yKCJyZ2JhKDAsMCwwLDApIikKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1f
Z2xvYmFsQ29tcG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgLCBtX2ludmVydGlibGVD
VE0odHJ1ZSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VTdHlsZSgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKIHsK
LSAgICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewpAQCAt
MTkwLDcgKzE5MCw3IEBAIENhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGxTdHlsZSgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxs
U3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSkK
KyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAg
CiAgICAgaWYgKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CkBAIC0zMDgsMTIgKzMwOCwxNCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cihmbG9hdCBibHVy
KQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGlmIHlvdSBjYWxsZWQg
c2V0U2hhZG93IHdpdGggYSBub24tc3RyaW5nIGNvbG9yPwotICAgIHJldHVybiBzdGF0ZSgpLm1f
c2hhZG93Q29sb3I7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihzdGF0ZSgpLm1f
c2hhZG93Q29sb3IpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKKyAgICBSR0JBMzIgcmdiYTsKKyAgICBp
ZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAgICAgIHJldHVybjsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKICAgICBhcHBseVNoYWRvdygpOwog
fQpAQCAtNDk4LDYgKzUwMCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
dHJva2VDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikK
IHsKKyAgICBSR0JBMzIgcmdiYTsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2Jh
LCBjb2xvcikpCisgICAgICAgIHJldHVybjsKICAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6
OmNyZWF0ZShjb2xvcikpOwogfQogCkBAIC01MDgsNiArNTEzLDkgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwpCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwg
ZmxvYXQgYWxwaGEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBh
cnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgICAgICByZXR1cm47CiAgICAgc2V0RmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGUoY29sb3IsIGFscGhhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKaW5kZXggMzUxNWUwMy4uNjEyZDgxNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKQEAgLTUyLDEyICs1MiwxNSBAQCBDYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoY29uc3QgU3RyaW5nJiBjb2xvcikKICAgICA6IG1fdHlwZShDb2xvclN0cmluZykKICAgICAs
IG1fY29sb3IoY29sb3IpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgbV92YWxpZCA9IENTU1Bh
cnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZShmbG9hdCBncmF5TGV2ZWwpCiAgICAgOiBtX3R5cGUoR3JheUxldmVsKQogICAgICwgbV9h
bHBoYSgxKQogICAgICwgbV9ncmF5TGV2ZWwoZ3JheUxldmVsKQorICAgICwgbV92YWxpZCh0cnVl
KQogewogfQogCkBAIC02NiwxMiArNjksMTUgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNv
bnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogICAgICwgbV9jb2xvcihjb2xvcikKICAg
ICAsIG1fYWxwaGEoYWxwaGEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgbV92YWxpZCA9IENT
U1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQogICAgIDogbV90eXBlKEdyYXlM
ZXZlbCkKICAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX2dyYXlMZXZlbChncmF5TGV2ZWwp
CisgICAgLCBtX3ZhbGlkKHRydWUpCiB7CiB9CiAKQEAgLTgxLDYgKzg3LDcgQEAgQ2FudmFzU3R5
bGU6OkNhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiAgICAg
LCBtX3JlZChyKQogICAgICwgbV9ncmVlbihnKQogICAgICwgbV9ibHVlKGIpCisgICAgLCBtX3Zh
bGlkKHRydWUpCiB7CiB9CiAKQEAgLTkxLDE4ICs5OCwyMSBAQCBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKICAgICAs
IG1fbWFnZW50YShtKQogICAgICwgbV95ZWxsb3coeSkKICAgICAsIG1fYmxhY2soaykKKyAgICAs
IG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQ
dHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KQogICAgIDogbV90eXBlKGdyYWRpZW50ID8gR3Jh
ZGllbnQgOiBDb2xvclN0cmluZykKICAgICAsIG1fZ3JhZGllbnQoZ3JhZGllbnQpCisgICAgLCBt
X3ZhbGlkKHRydWUpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRy
PENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCiAgICAgOiBtX3R5cGUocGF0dGVybiA/IEltYWdlUGF0
dGVybiA6IENvbG9yU3RyaW5nKQogICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4pCisgICAgLCBtX3Zh
bGlkKHRydWUpCiB7CiB9CiAKQEAgLTIxOCw0ICsyMjgsMjMgQEAgdm9pZCBDYW52YXNTdHlsZTo6
YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIH0KIH0KIAorU3Ry
aW5nIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQorewor
ICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCB0byB0cmFuc3BhcmVudCBibGFjaworCisg
ICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3JTdHJpbmcpKQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIENvbG9yIGNvbG9yKHJnYmEpOworCisgICAg
aWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgLy8gTWF0Y2ggR2Vja28gKDAuMCBmb3Ig
emVybywgNSBkZWNpbWFscyBmb3IgYW55dGhpbmcgZWxzZSkKKyAgICAgICAgaWYgKCFjb2xvci5h
bHBoYSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwg
JXUsIDAuMCkiLCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwgJXUsICUuNWYpIiwgY29s
b3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSAvIDI1
NS4wZik7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIjJTAyeCUwMnglMDJ4
IiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCBmZTAxYmQxLi4wNTI2Y2M5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5oCkBAIC0yNiwxMCArMjYsMTMgQEAKICNpZm5kZWYgQ2FudmFzU3R5
bGVfaAogI2RlZmluZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmlu
ZyBzZXJpYWxpemVkQ2FudmFzQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZyk7CisKICAg
ICBjbGFzcyBDYW52YXNHcmFkaWVudDsKICAgICBjbGFzcyBDYW52YXNQYXR0ZXJuOwogICAgIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKQEAgLTQ1LDEzICs0OCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNTdHlsZShncmFkaWVudCkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0
eWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBwYXR0ZXJuKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUocGF0dGVybikpOyB9CiAKLSAgICAgICAgU3RyaW5nIGNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgICAgICBTdHJpbmcgY29sb3IoKSBj
b25zdCB7IHJldHVybiBzZXJpYWxpemVkQ2FudmFzQ29sb3IobV9jb2xvcik7IH0KICAgICAgICAg
Q2FudmFzR3JhZGllbnQqIGNhbnZhc0dyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVu
dC5nZXQoKTsgfQogICAgICAgICBDYW52YXNQYXR0ZXJuKiBjYW52YXNQYXR0ZXJuKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCBhcHBseUZpbGxDb2xv
cihHcmFwaGljc0NvbnRleHQqKTsKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9yKEdyYXBo
aWNzQ29udGV4dCopOwogCisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsaWQ7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIENhbnZhc1N0eWxlKGNvbnN0IFN0cmlu
ZyYgY29sb3IpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwpOwpAQCAtODIs
NiArODcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG1fbWFnZW50YTsK
ICAgICAgICAgZmxvYXQgbV95ZWxsb3c7CiAgICAgICAgIGZsb2F0IG1fYmxhY2s7CisKKyAgICAg
ICAgYm9vbCBtX3ZhbGlkOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="39773"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55725</attachid>
            <date>2010-05-11 11:23:37 -0700</date>
            <delta_ts>2010-05-11 18:47:42 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-38845-3.diff</filename>
            <type>text/plain</type>
            <size>25744</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDIxYzE0Li4yN2NlMzRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUt
MTEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxl
LWN0bS5qczogQ29ycmVjdGVkIGV4cGVjdGVkIHJlc3VsdHMuCisKIDIwMTAtMDUtMTEgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDBkMWY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlh
bGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgdGhhdCBnZXR0aW5n
IGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCByZXR1cm5z
IHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LmZpbGxTdHls
ZSBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDAsIDAsIDAsIDAu
MCknCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnN0cm9rZVN0
eWxlIGlzICcjZmZmZmZmJworUEFTUyBjdHguc3Ryb2tlU3R5bGUgaXMgJyNmZmZmZmYnCitQQVNT
IGN0eC5maWxsU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgJyNmZmZm
ZmYnCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgJyNmZmZmZmYnCitQQVNTIGN0eC5maWxsU3R5bGUg
aXMgJyMwMGZmMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4
LnNoYWRvd0NvbG9yIGlzICcjZmZmZmZmJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZmZm
ZmYnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGIxYjMyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMt
d2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CmluZGV4IGRiMDVlYzAuLjE1MGQx
ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQtcHJvcGVy
dGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUt
Y3RtLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywxMSBAQCBUZXN0cyB0byBtYWtlIHN1cmUgd2Ug
Y2FuIGFzc2lnbiB0byBub24tY3RtIGVmZmVjdGVkIHByb3BlcnRpZXMgd2l0aCBhIG5vbi1pbnZl
cgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY3R4LmZpbGxTdHlsZSBpcyAi
Z3JlZW4iCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMDgwMDAiCiBQQVNTIGltYWdlRGF0YS5k
YXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNTIGltYWdlRGF0
YS5kYXRhWzJdIGlzIDAKLVBBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICJncmVlbiIKK1BBU1MgY3R4
LnN0cm9rZVN0eWxlIGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCiBQ
QVNTIGltYWdlRGF0YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEuZGF0YVsyXSBpcyAw
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LWNvbG9yLXNlcmlhbGl6YXRpb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNmFjYzJjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcwpAQCAt
MCwwICsxLDQ2IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGdldHRpbmcgY29sb3IgcHJvcGVy
dGllcyBmcm9tIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHJldHVybnMgcHJvcGVybHkgZm9y
bWF0dGVkIHZhbHVlcy4iKTsKKwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAi
JyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LmZpbGxTdHlsZSIsICInIzAwMDAwMCciKTsKK3No
b3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKKworY3R4
LnN0cm9rZVN0eWxlID0gInJlZCI7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIicjZmYw
MDAwJyIpOworCitjdHguc3Ryb2tlU3R5bGUgPSAid2hpdGUiOworc2hvdWxkQmUoImN0eC5zdHJv
a2VTdHlsZSIsICInI2ZmZmZmZiciKTsKKworY3R4LnN0cm9rZVN0eWxlID0gIndoaXRlIjsKK2N0
eC5zdHJva2VTdHlsZSA9ICIiOworc2hvdWxkQmUoImN0eC5zdHJva2VTdHlsZSIsICInI2ZmZmZm
ZiciKTsKKworY3R4LmZpbGxTdHlsZSA9ICJyZWQiOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUi
LCAiJyNmZjAwMDAnIik7CisKK2N0eC5maWxsU3R5bGUgPSAid2hpdGUiOworc2hvdWxkQmUoImN0
eC5maWxsU3R5bGUiLCAiJyNmZmZmZmYnIik7CisKK2N0eC5maWxsU3R5bGUgPSAid2hpdGUiOwor
Y3R4LmZpbGxTdHlsZSA9ICIiOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUiLCAiJyNmZmZmZmYn
Iik7CisKK2N0eC5maWxsU3R5bGUgPSAicmVkIjsKK2N0eC5maWxsU3R5bGUgPSAicmdiYSgwLDI1
NSwwLDEuMCkiOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUiLCAiJyMwMGZmMDAnIik7CisKK2N0
eC5zaGFkb3dDb2xvciA9ICJyZWQiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInI2Zm
MDAwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gIndoaXRlIjsKK3Nob3VsZEJlKCJjdHguc2hh
ZG93Q29sb3IiLCAiJyNmZmZmZmYnIik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJ3aGl0ZSI7Citj
dHguc2hhZG93Q29sb3IgPSAiIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyNmZmZm
ZmYnIik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKDEsMiwzLDAuNCkiOworc2hvdWxkQmUo
ImN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgxLCAyLCAzLCAwLjQwMDAwKSciKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGli
bGUtY3RtLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
ZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcwppbmRleCBmZjAwNTNlLi43
Y2I5MWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3BlcnRpZXMt
d2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanMKQEAgLTE2LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVz
dFBpeGVsKHgseSwgciwgZywgYikgewogY3R4LnNhdmUoKTsKIGN0eC5zY2FsZSgwLCAwKTsKIGN0
eC5maWxsU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5maWxsU3R5bGUnLCAnImdyZWVu
IicpOworc2hvdWxkQmUoJ2N0eC5maWxsU3R5bGUnLCAnIiMwMDgwMDAiJyk7CiBjdHguc2V0VHJh
bnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApOwogY3R4LmZpbGxSZWN0KDAsMCwxMDAsMTAwKTsKIHRl
c3RQaXhlbCg1MCwgNTAsIDAsIDEyOCwgMCk7CkBAIC0yOCw3ICsyOCw3IEBAIGN0eC5maWxsU3R5
bGUgPSAicmVkIjsKIGN0eC5maWxsUmVjdCgwLDAsMTAwLDEwMCk7CiBjdHguc2NhbGUoMCwgMCk7
CiBjdHguc3Ryb2tlU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5zdHJva2VTdHlsZScs
ICciZ3JlZW4iJyk7CitzaG91bGRCZSgnY3R4LnN0cm9rZVN0eWxlJywgJyIjMDA4MDAwIicpOwog
Y3R4LmxpbmVXaWR0aCA9IDEwMDsKIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7
CiBjdHguc3Ryb2tlUmVjdCgwLDAsMTAwLDEwMCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM3MGM5ODcuLmVkODc5MmYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTAtMDUtMTEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQncyBwcm9wZXJ0eSBnZXR0ZXJzIHRoYXQgcmV0dXJuIGNvbG9y
cyBzaG91bGQKKyAgICAgICAgc2VyaWFsaXplIHRoZW0gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBI
VE1MNSBzcGVjICg0LjguMTEuMS40KQorICAgICAgICBTZXR0ZXJzIHNob3VsZCBpZ25vcmUgaW52
YWxpZCBjb2xvcnMuCisKKyAgICAgICAgQWxzbywgc2hhZG93Q29sb3Igc2hvdWxkIGluaXRpYWxs
eSBiZSB0cmFuc3BhcmVudCBibGFjayAoNC44LjExLjEuNikKKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDUKKworICAgICAgICBSZWZhY3RvcmVk
IENhbnZhc1N0eWxlIHRvIHN0b3JlIGEgV2ViQ29yZTo6Q29sb3IgaW5zdGVhZCBvZiBzZXBhcmF0
ZSBSR0JBIGNvbXBvbmVudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNoYWRvd0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
bGVhclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmFwcGx5U2hhZG93KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
U3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZWRDYW52
YXNDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
U3R5bGU6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc1ZhbGlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjopOgorCiAyMDEwLTA1LTExICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjE1YjQ1ZC4uMjhjYmNmMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtMTE3LDE0ICsxMTcsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJl
c2V0KCkKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoKQotICAg
IDogbV9zdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKCJibGFjayIpKQotICAgICwgbV9m
aWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZSgiYmxhY2siKSkKKyAgICA6IG1fc3Ryb2tlU3R5
bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZShDb2xvcihDb2xvcjo6YmxhY2spKSkKKyAgICAsIG1fZmls
bFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoQ29sb3IoQ29sb3I6OmJsYWNrKSkpCiAgICAgLCBt
X2xpbmVXaWR0aCgxKQogICAgICwgbV9saW5lQ2FwKEJ1dHRDYXApCiAgICAgLCBtX2xpbmVKb2lu
KE1pdGVySm9pbikKICAgICAsIG1fbWl0ZXJMaW1pdCgxMCkKICAgICAsIG1fc2hhZG93Qmx1cigw
KQotICAgICwgbV9zaGFkb3dDb2xvcigiYmxhY2siKQorICAgICwgbV9zaGFkb3dDb2xvcihDb2xv
cjo6dHJhbnNwYXJlbnQpCiAgICAgLCBtX2dsb2JhbEFscGhhKDEpCiAgICAgLCBtX2dsb2JhbENv
bXBvc2l0ZShDb21wb3NpdGVTb3VyY2VPdmVyKQogICAgICwgbV9pbnZlcnRpYmxlQ1RNKHRydWUp
CkBAIC0xNjYsNyArMTY2LDcgQEAgQ2FudmFzU3R5bGUqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c3Ryb2tlU3R5bGUoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U3Ryb2tlU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYg
KCFzdHlsZSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKQEAgLTE5MCw3ICsx
OTAsNyBAQCBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUo
KSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKFBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogewotICAgIGlmICghc3R5bGUpCisgICAgaWYg
KCFzdHlsZSB8fCAhc3R5bGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogIAogICAgIGlm
IChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewpAQCAtMzA4LDEzICszMDgsMTcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0JsdXIoZmxvYXQgYmx1cikKIAogU3Ry
aW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IoKSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBpZiB5b3UgY2FsbGVkIHNldFNoYWRv
dyB3aXRoIGEgbm9uLXN0cmluZyBjb2xvcj8KLSAgICByZXR1cm4gc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yOworICAgIHJldHVybiBzZXJpYWxpemVkQ2FudmFzQ29sb3Ioc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9y
KGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gY29s
b3I7CisgICAgUkdCQTMyIHJnYmE7CisKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihy
Z2JhLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IENvbG9yKHJnYmEpOwogICAgIGFwcGx5U2hhZG93KCk7CiB9CiAKQEAgLTgwNyw3ICs4MTEs
NyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNl
dCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9
IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3No
YWRvd0NvbG9yID0gQ29sb3IoKTsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC04MTUsNyAr
ODE5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dP
ZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0Js
dXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOworICAgIHN0YXRl
KCkubV9zaGFkb3dDb2xvciA9IENvbG9yKGNvbG9yKTsKICAgICBhcHBseVNoYWRvdygpOwogfQog
CkBAIC04MjMsNyArODI3LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRl
KCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUo
KS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOwor
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTgzNywxNSArODQxLDE0
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0
ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0g
Ymx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKKyAgICBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IgPSBDb2xvcihjb2xvcik7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdC
QTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFz
dGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNl
Q29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKKyAgICAvLyBEZWZhdWx0IHRvIHRy
YW5zcGFyZW50IGJsYWNrCisgICAgUkdCQTMyIHJnYmEgPSBzdGF0ZSgpLm1fc2hhZG93Q29sb3Iu
aXNWYWxpZCgpID8gc3RhdGUoKS5tX3NoYWRvd0NvbG9yLnJnYigpIDogMDsKICAgICBjLT5zZXRT
aGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xv
cihjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFscGhhKSksIERldmljZUNvbG9yU3BhY2Up
OwogfQogCkBAIC04NTMsNyArODU2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAg
IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAg
c3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9
ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAKICAgICBHcmFwaGlj
c0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTg2NywyMyAr
ODcwLDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93
T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dC
bHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IgPSBDb2xvcigpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJh
d2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEz
MiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMg
dHJhbnNwYXJlbnQgYmxhY2sKLSAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5
KCkpCi0gICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0ZSgpLm1fc2hhZG93
Q29sb3IpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUo
KS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5z
ZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBD
b2xvcihyLCBnLCBiLCBhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcigpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBkYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFkYykKQEAgLTkw
NCw3ICs5MDQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3co
KQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKICAgICBzdGF0
ZSgpLm1fc2hhZG93Qmx1ciA9IDA7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7Cisg
ICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gQ29sb3IoKTsKICAgICBhcHBseVNoYWRvdygpOwog
fQogCkBAIC05MTUsOCArOTE1LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFw
cGx5U2hhZG93KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBk
ZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hhZG93Q29s
b3IuaXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yKTsKKyAgICBpZiAoc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgcmdiYSA9IHN0YXRlKCkubV9zaGFkb3dDb2xvci5yZ2IoKTsKICAgICBmbG9h
dCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICBmbG9hdCBoZWln
aHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwogICAgIGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEp
LCBEZXZpY2VDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCmluZGV4IDJiYWM5MDIuLjExYmU0YzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAj
aW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTIxOCw3ICsy
MTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBmbG9hdCBtX21pdGVyTGlt
aXQ7CiAgICAgICAgICAgICBGbG9hdFNpemUgbV9zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICBm
bG9hdCBtX3NoYWRvd0JsdXI7Ci0gICAgICAgICAgICBTdHJpbmcgbV9zaGFkb3dDb2xvcjsKKyAg
ICAgICAgICAgIENvbG9yIG1fc2hhZG93Q29sb3I7CiAgICAgICAgICAgICBmbG9hdCBtX2dsb2Jh
bEFscGhhOwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9nbG9iYWxDb21wb3NpdGU7
CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwCmluZGV4IDM1MTVlMDMuLjlmNzNiMGMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwCkBAIC0xLDMgKzEsNCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKQEAgLTQ4LDYxICs0OSw3MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKQorQ2FudmFz
U3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICA6IG1fdHlwZShDb2xv
clN0cmluZykKICAgICAsIG1fY29sb3IoY29sb3IpCisgICAgLCBtX3ZhbGlkKHRydWUpCit7Cit9
CisKK0NhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKQorICAgIDog
bV90eXBlKENvbG9yU3RyaW5nKQogeworICAgIFJHQkEzMiByZ2JhOworICAgIGlmICgobV92YWxp
ZCA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpKQorICAgICAgICBtX2NvbG9y
ID0gQ29sb3IocmdiYSk7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBncmF5
TGV2ZWwpCiAgICAgOiBtX3R5cGUoR3JheUxldmVsKQotICAgICwgbV9hbHBoYSgxKQotICAgICwg
bV9ncmF5TGV2ZWwoZ3JheUxldmVsKQorICAgICwgbV9jb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCAxLjBmKQorICAgICwgbV92YWxpZCh0cnVlKQogewogfQogCiBDYW52YXNT
dHlsZTo6Q2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCi0gICAg
OiBtX3R5cGUoQ29sb3JTdHJpbmdXaXRoQWxwaGEpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAg
ICwgbV9hbHBoYShhbHBoYSkKKyAgICA6IG1fdHlwZShDb2xvclN0cmluZykKIHsKKyAgICBSR0JB
MzIgcmdiYTsKKyAgICBpZiAoKG1fdmFsaWQgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwg
Y29sb3IpKSkKKyAgICAgICAgbV9jb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwg
YWxwaGEpOwogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBm
bG9hdCBhbHBoYSkKICAgICA6IG1fdHlwZShHcmF5TGV2ZWwpCi0gICAgLCBtX2FscGhhKGFscGhh
KQotICAgICwgbV9ncmF5TGV2ZWwoZ3JheUxldmVsKQorICAgICwgbV9jb2xvcihncmF5TGV2ZWws
IGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkKKyAgICAsIG1fdmFsaWQodHJ1ZSkKIHsKIH0K
IAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZs
b2F0IGEpCiAgICAgOiBtX3R5cGUoUkdCQSkKLSAgICAsIG1fYWxwaGEoYSkKLSAgICAsIG1fcmVk
KHIpCi0gICAgLCBtX2dyZWVuKGcpCi0gICAgLCBtX2JsdWUoYikKKyAgICAsIG1fY29sb3IoQ29s
b3IociwgZywgYiwgYSkpCisgICAgLCBtX3ZhbGlkKHRydWUpCiB7CiB9CiAKIENhbnZhc1N0eWxl
OjpDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KQogICAgIDogbV90eXBlKENNWUtBKQotICAgICwgbV9hbHBoYShhKQorICAgICwgbV9jb2xvcihD
b2xvcihjLCBtLCB5LCBrLCBhKSkKICAgICAsIG1fY3lhbihjKQogICAgICwgbV9tYWdlbnRhKG0p
CiAgICAgLCBtX3llbGxvdyh5KQogICAgICwgbV9ibGFjayhrKQorICAgICwgbV92YWxpZCh0cnVl
KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFk
aWVudD4gZ3JhZGllbnQpCiAgICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFkaWVudCA6IENvbG9y
U3RyaW5nKQogICAgICwgbV9ncmFkaWVudChncmFkaWVudCkKKyAgICAsIG1fdmFsaWQodHJ1ZSkK
IHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVy
bj4gcGF0dGVybikKICAgICA6IG1fdHlwZShwYXR0ZXJuID8gSW1hZ2VQYXR0ZXJuIDogQ29sb3JT
dHJpbmcpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKKyAgICAsIG1fdmFsaWQodHJ1ZSkKIHsK
IH0KIApAQCAtMTExLDUwICsxMjMsMzIgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VD
b2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmlu
ZzogewotICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAgICAg
aWYgKGMuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoYy5yZ2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlz
IHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBDb2xv
ciBjID0gQ29sb3IobV9jb2xvcik7Ci0gICAgICAgICAgICBpZiAoYy5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlkZUFs
cGhhKGMucmdiKCksIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8v
IGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIG1fYWxwaGEpLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICAgICAgY2FzZSBDb2xvclN0cmluZzoKKyAgICAgICAgICAgIGlm
IChtX2NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VD
b2xvcihtX2NvbG9yLnJnYigpLCBEZXZpY2VDb2xvclNwYWNlKTsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CiAgICAgICAgIGNhc2UgR3JheUxldmVsOgogICAgICAgICAgICAgLy8gV2Un
cmUgb25seSBzdXBwb3J0aW5nIDI1NSBsZXZlbHMgb2YgZ3JheSBoZXJlLiAgU2luY2UgdGhpcyBp
c24ndAogICAgICAgICAgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBh
bnlvbmUgd2lsbCBjYXJlLiAgSWYgdGhleSBkbwogICAgICAgICAgICAgLy8gd2UnbGwgbWFrZSBh
IGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24uCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihDb2xvcihtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2Fs
cGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VD
b2xvcihtX2NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFJHQkE6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cihtX3JlZCwgbV9ncmVlbiwgbV9ibHVlLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yLCBEZXZpY2VDb2xvclNw
YWNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBo
aWNzQ29udGV4dCBBUEkuCiAgICAgICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xv
ciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENZTUtBIGNvcnJlY3RseQogI2lmIFBMQVRGT1JNKENH
KQotICAgICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS1N0cm9rZUNvbG9yKGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxw
aGEpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS1N0cm9rZUNvbG9yKGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCBtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1f
Y29sb3IuYWxwaGEoKSk7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICAgICAgICAgIFFQZW4gY3Vy
cmVudFBlbiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wZW4oKTsKICAgICAgICAgICAg
IFFDb2xvciBjbHI7Ci0gICAgICAgICAgICBjbHIuc2V0Q215a0YobV9jeWFuLCBtX21hZ2VudGEs
IG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKKyAgICAgICAgICAgIGNsci5zZXRDbXlrRiht
X2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fY29sb3IuYWxwaGEoKSAvIDI1
NS4wZik7CiAgICAgICAgICAgICBjdXJyZW50UGVuLnNldENvbG9yKGNscik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOwogI2Vsc2UK
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1fY3lhbiwgbV9tYWdl
bnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEs
IG1feWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpLCBEZXZpY2VDb2xvclNwYWNlKTsK
ICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE3Miw0MCArMTY2LDMy
IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1f
dHlwZSkgewotICAgICAgICBjYXNlIENvbG9yU3RyaW5nOiB7Ci0gICAgICAgICAgICBSR0JBMzIg
cmdiYSA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlm
IChDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgbV9jb2xvcikpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKHJnYmEsIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvclN0cmluZ1dpdGhBbHBoYTog
ewotICAgICAgICAgICAgUkdCQTMyIGNvbG9yID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVu
dCBibGFjawotICAgICAgICAgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwgbV9j
b2xvcikpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yV2l0aE92
ZXJyaWRlQWxwaGEoY29sb3IsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
Y2FzZSBDb2xvclN0cmluZzoKKyAgICAgICAgICAgIGlmIChtX2NvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvci5yZ2IoKSwgRGV2aWNl
Q29sb3JTcGFjZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNl
IEdyYXlMZXZlbDoKICAgICAgICAgICAgIC8vIFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2
ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKICAgICAgICAgICAgIC8vIGV2ZW4g
cGFydCBvZiBIVE1MNSwgSSBkb24ndCBleHBlY3QgYW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkg
ZG8KICAgICAgICAgICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9u
LgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKG1fZ3JheUxldmVsLCBt
X2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBEZXZpY2VDb2xvclNwYWNl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJHQkE6Ci0gICAgICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBo
YSksIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KG1fY29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ01ZS0E6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxh
dGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KICAgICAgICAgICAgIC8vIFdl
J2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29y
cmVjdGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRDTVlLRmls
bENvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2N5YW4sIG1fbWFnZW50YSwgbV95
ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0Zp
bGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1f
eWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpOwogI2VsaWYgUExBVEZPUk0oUVQpCiAg
ICAgICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmJydXNoKCk7CiAgICAgICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNl
dENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Cisg
ICAgICAgICAgICBjbHIuc2V0Q215a0YobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2Js
YWNrLCBtX2NvbG9yLmFscGhhKCkgLyAyNTUuMGYpOwogICAgICAgICAgICAgY3VycmVudEJydXNo
LnNldENvbG9yKGNscik7CiAgICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
c2V0QnJ1c2goY3VycmVudEJydXNoKTsKICNlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2Fs
cGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFs
cGhhKCkpLCBEZXZpY2VDb2xvclNwYWNlKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTIxOCw0ICsyMDQsMjAgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxs
Q29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIH0KIH0KIAorU3RyaW5nIHNlcmlh
bGl6ZWRDYW52YXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgLy8gRklYTUU6IFdo
YXQgc2hvdWxkIHdlIGRvIHdpdGggaW52YWxpZCBjb2xvcnM/CisgICAgaWYgKCFjb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoInJnYmEoMCwgMCwgMCwgMC4wKSIpOworCisg
ICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgLy8gTWF0Y2ggR2Vja28gKDAuMCBm
b3IgemVybywgNSBkZWNpbWFscyBmb3IgYW55dGhpbmcgZWxzZSkKKyAgICAgICAgaWYgKCFjb2xv
ci5hbHBoYSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAl
dSwgJXUsIDAuMCkiLCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwgJXUsICUuNWYpIiwg
Y29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSAv
IDI1NS4wZik7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIjJTAyeCUwMngl
MDJ4IiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCBmZTAxYmQxLi4wZWVmMGE1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC0yNiwxNiArMjYsMjAgQEAKICNpZm5kZWYgQ2FudmFz
U3R5bGVfaAogI2RlZmluZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5n
IHNlcmlhbGl6ZWRDYW52YXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpOworCiAgICAgY2xhc3Mg
Q2FudmFzR3JhZGllbnQ7CiAgICAgY2xhc3MgQ2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbnZhc1N0eWxlPiB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IENvbG9yJiBjb2xvcikgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IENhbnZhc1N0eWxlKGNvbG9yKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FudmFzU3R5bGUoY29sb3IpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGdyYXlMZXZlbCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGdyYXlMZXZlbCkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvciwgYWxwaGEpKTsgfQpAQCAtNDUsMTQgKzQ5
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRpZW50KSk7IH0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHBhdHRlcm4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShwYXR0ZXJuKSk7
IH0KIAotICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Cisg
ICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xv
cihtX2NvbG9yKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCogY2FudmFzR3JhZGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAgICAgIENhbnZhc1BhdHRlcm4q
IGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAogICAg
ICAgICB2b2lkIGFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4dCopOwogICAgICAgICB2b2lk
IGFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0Kik7CiAKKyAgICAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZDsgfQorCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
Q2FudmFzU3R5bGUoY29uc3QgQ29sb3ImIGNvbG9yKTsKICAgICAgICAgQ2FudmFzU3R5bGUoY29u
c3QgU3RyaW5nJiBjb2xvcik7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCk7
CiAgICAgICAgIENhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsK
QEAgLTYyLDI2ICs2OSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENhbnZhc1N0
eWxlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+KTsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFz
c1JlZlB0cjxDYW52YXNQYXR0ZXJuPik7CiAKLSAgICAgICAgZW51bSBUeXBlIHsgQ29sb3JTdHJp
bmcsIENvbG9yU3RyaW5nV2l0aEFscGhhLCBHcmF5TGV2ZWwsIFJHQkEsIENNWUtBLCBHcmFkaWVu
dCwgSW1hZ2VQYXR0ZXJuIH07CisgICAgICAgIGVudW0gVHlwZSB7IENvbG9yU3RyaW5nLCBHcmF5
TGV2ZWwsIFJHQkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CiAKICAgICAgICAg
VHlwZSBtX3R5cGU7CiAKLSAgICAgICAgU3RyaW5nIG1fY29sb3I7CisgICAgICAgIENvbG9yIG1f
Y29sb3I7CiAgICAgICAgIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gbV9ncmFkaWVudDsKICAgICAg
ICAgUmVmUHRyPENhbnZhc1BhdHRlcm4+IG1fcGF0dGVybjsKIAotICAgICAgICBmbG9hdCBtX2Fs
cGhhOwotCi0gICAgICAgIGZsb2F0IG1fZ3JheUxldmVsOwotCi0gICAgICAgIGZsb2F0IG1fcmVk
OwotICAgICAgICBmbG9hdCBtX2dyZWVuOwotICAgICAgICBmbG9hdCBtX2JsdWU7Ci0KICAgICAg
ICAgZmxvYXQgbV9jeWFuOwogICAgICAgICBmbG9hdCBtX21hZ2VudGE7CiAgICAgICAgIGZsb2F0
IG1feWVsbG93OwogICAgICAgICBmbG9hdCBtX2JsYWNrOworCisgICAgICAgIGJvb2wgbV92YWxp
ZDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55794</attachid>
            <date>2010-05-11 18:47:42 -0700</date>
            <delta_ts>2010-05-11 19:09:34 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-38845-4.diff</filename>
            <type>text/plain</type>
            <size>27898</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMTE0ZjFlLi45ZDI2ZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUt
MTEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxl
LWN0bS5qczogQ29ycmVjdGVkIHR3byBzaG91bGRCZSgpcy4KKwogMjAxMC0wNS0xMSAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXph
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3It
c2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNmQwZDFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBA
CitUZXN0IHRoYXQgZ2V0dGluZyBjb2xvciBwcm9wZXJ0aWVzIGZyb20gYSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQgcmV0dXJucyBwcm9wZXJseSBmb3JtYXR0ZWQgdmFsdWVzLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHguc3Ryb2tlU3R5bGUgaXMgJyMwMDAwMDAn
CitQQVNTIGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBp
cyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyBjdHguc3Ryb2tlU3R5bGUgaXMgJyNmZjAwMDAn
CitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAnI2ZmZmZmZicKK1BBU1MgY3R4LnN0cm9rZVN0eWxl
IGlzICcjZmZmZmZmJworUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHgu
ZmlsbFN0eWxlIGlzICcjZmZmZmZmJworUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmZmZmZmJwor
UEFTUyBjdHguZmlsbFN0eWxlIGlzICcjMDBmZjAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMg
JyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmZmZmZicKK1BBU1MgY3R4LnNo
YWRvd0NvbG9yIGlzICcjZmZmZmZmJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJ3JnYmEoMSwg
MiwgMywgMC40MDAwMCknCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b2xvci1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzRiMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtY29sb3It
c2VyaWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24t
aW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dApp
bmRleCBkYjA1ZWMwLi4xNTBkMWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13
aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQKQEAgLTMsMTEgKzMsMTEgQEAgVGVz
dHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhc3NpZ24gdG8gbm9uLWN0bSBlZmZlY3RlZCBwcm9wZXJ0
aWVzIHdpdGggYSBub24taW52ZXIKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNT
IGN0eC5maWxsU3R5bGUgaXMgImdyZWVuIgorUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjMDA4MDAw
IgogUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCiBQQVNTIGltYWdlRGF0YS5kYXRhWzFdIGlz
IDEyOAogUEFTUyBpbWFnZURhdGEuZGF0YVsyXSBpcyAwCi1QQVNTIGN0eC5zdHJva2VTdHlsZSBp
cyAiZ3JlZW4iCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAiIzAwODAwMCIKIFBBU1MgaW1hZ2VE
YXRhLmRhdGFbMF0gaXMgMAogUEFTUyBpbWFnZURhdGEuZGF0YVsxXSBpcyAxMjgKIFBBU1MgaW1h
Z2VEYXRhLmRhdGFbMl0gaXMgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhY2MyYzIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uanMKQEAgLTAsMCArMSw0NiBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBn
ZXR0aW5nIGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBy
ZXR1cm5zIHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuIik7CisKK3ZhciBjdHggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpOworCitzaG91bGRCZSgi
Y3R4LnN0cm9rZVN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUi
LCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDAsIDAs
IDAsIDAuMCknIik7CisKK2N0eC5zdHJva2VTdHlsZSA9ICJyZWQiOworc2hvdWxkQmUoImN0eC5z
dHJva2VTdHlsZSIsICInI2ZmMDAwMCciKTsKKworY3R4LnN0cm9rZVN0eWxlID0gIndoaXRlIjsK
K3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZmZmZmYnIik7CisKK2N0eC5zdHJva2VT
dHlsZSA9ICJ3aGl0ZSI7CitjdHguc3Ryb2tlU3R5bGUgPSAiIjsKK3Nob3VsZEJlKCJjdHguc3Ry
b2tlU3R5bGUiLCAiJyNmZmZmZmYnIik7CisKK2N0eC5maWxsU3R5bGUgPSAicmVkIjsKK3Nob3Vs
ZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworCitjdHguZmlsbFN0eWxlID0gIndo
aXRlIjsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguZmls
bFN0eWxlID0gIndoaXRlIjsKK2N0eC5maWxsU3R5bGUgPSAiIjsKK3Nob3VsZEJlKCJjdHguZmls
bFN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguZmlsbFN0eWxlID0gInJlZCI7CitjdHguZmls
bFN0eWxlID0gInJnYmEoMCwyNTUsMCwxLjApIjsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwg
IicjMDBmZjAwJyIpOworCitjdHguc2hhZG93Q29sb3IgPSAicmVkIjsKK3Nob3VsZEJlKCJjdHgu
c2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJ3aGl0ZSI7
CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjZmZmZmZmJyIpOworCitjdHguc2hhZG93
Q29sb3IgPSAid2hpdGUiOworY3R4LnNoYWRvd0NvbG9yID0gIiI7CitzaG91bGRCZSgiY3R4LnNo
YWRvd0NvbG9yIiwgIicjZmZmZmZmJyIpOworCitjdHguc2hhZG93Q29sb3IgPSAicmdiYSgxLDIs
MywwLjQpIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEoMSwgMiwgMywgMC40
MDAwMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGll
cy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0u
anMKaW5kZXggZmYwMDUzZS4uN2NiOTFlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRp
YmxlLWN0bS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzCkBAIC0xNiw3ICsx
Niw3IEBAIGZ1bmN0aW9uIHRlc3RQaXhlbCh4LHksIHIsIGcsIGIpIHsKIGN0eC5zYXZlKCk7CiBj
dHguc2NhbGUoMCwgMCk7CiBjdHguZmlsbFN0eWxlID0gImdyZWVuIjsKLXNob3VsZEJlKCdjdHgu
ZmlsbFN0eWxlJywgJyJncmVlbiInKTsKK3Nob3VsZEJlKCdjdHguZmlsbFN0eWxlJywgJyIjMDA4
MDAwIicpOwogY3R4LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTsKIGN0eC5maWxsUmVj
dCgwLDAsMTAwLDEwMCk7CiB0ZXN0UGl4ZWwoNTAsIDUwLCAwLCAxMjgsIDApOwpAQCAtMjgsNyAr
MjgsNyBAQCBjdHguZmlsbFN0eWxlID0gInJlZCI7CiBjdHguZmlsbFJlY3QoMCwwLDEwMCwxMDAp
OwogY3R4LnNjYWxlKDAsIDApOwogY3R4LnN0cm9rZVN0eWxlID0gImdyZWVuIjsKLXNob3VsZEJl
KCdjdHguc3Ryb2tlU3R5bGUnLCAnImdyZWVuIicpOworc2hvdWxkQmUoJ2N0eC5zdHJva2VTdHls
ZScsICciIzAwODAwMCInKTsKIGN0eC5saW5lV2lkdGggPSAxMDA7CiBjdHguc2V0VHJhbnNmb3Jt
KDEsIDAsIDAsIDEsIDAsIDApOwogY3R4LnN0cm9rZVJlY3QoMCwwLDEwMCwxMDApOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZDA4MTE2
Li5mMWMwYzRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEwLTA1LTExICBBbmRyZWFzIEtsaW5nICA8YW5k
cmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJ3MgcHJvcGVydHkgZ2V0dGVy
cyB0aGF0IHJldHVybiBjb2xvcnMgc2hvdWxkCisgICAgICAgIHNlcmlhbGl6ZSB0aGVtIGluIGFj
Y29yZGFuY2Ugd2l0aCB0aGUgSFRNTDUgc3BlYyAoNC44LjExLjEuNCkKKyAgICAgICAgU2V0dGVy
cyBzaG91bGQgaWdub3JlIGludmFsaWQgY29sb3JzLgorCisgICAgICAgIEFsc28sIHNoYWRvd0Nv
bG9yIHNob3VsZCBpbml0aWFsbHkgYmUgdHJhbnNwYXJlbnQgYmxhY2sgKDQuOC4xMS4xLjYpCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODQ1CisK
KyAgICAgICAgUmVmYWN0b3JlZCBDYW52YXNTdHlsZSB0byBzdG9yZSBhIFdlYkNvcmU6OkNvbG9y
IGluc3RlYWQgb2YgUkdCQSBjb21wb25lbnRzIGFuZC9vciB0aGUgY29sb3Igc3RyaW5nLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwK
KworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hh
ZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5
bGU6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplZENhbnZhc0NvbG9yKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6Oik6CisKIDIwMTAtMDUtMTEgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggNjE1YjQ1ZC4uMjhjYmNmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE3LDE0ICsxMTcsMTQgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0KCkKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpTdGF0ZTo6U3RhdGUoKQotICAgIDogbV9zdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRl
KCJibGFjayIpKQotICAgICwgbV9maWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZSgiYmxhY2si
KSkKKyAgICA6IG1fc3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZShDb2xvcihDb2xvcjo6
YmxhY2spKSkKKyAgICAsIG1fZmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoQ29sb3IoQ29s
b3I6OmJsYWNrKSkpCiAgICAgLCBtX2xpbmVXaWR0aCgxKQogICAgICwgbV9saW5lQ2FwKEJ1dHRD
YXApCiAgICAgLCBtX2xpbmVKb2luKE1pdGVySm9pbikKICAgICAsIG1fbWl0ZXJMaW1pdCgxMCkK
ICAgICAsIG1fc2hhZG93Qmx1cigwKQotICAgICwgbV9zaGFkb3dDb2xvcigiYmxhY2siKQorICAg
ICwgbV9zaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCiAgICAgLCBtX2dsb2JhbEFscGhh
KDEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShDb21wb3NpdGVTb3VyY2VPdmVyKQogICAgICwg
bV9pbnZlcnRpYmxlQ1RNKHRydWUpCkBAIC0xNjYsNyArMTY2LDcgQEAgQ2FudmFzU3R5bGUqIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoKSBjb25zdAogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHls
ZT4gc3R5bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSkKKyAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNs
ZWFuKCkpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpmaWxsU3R5bGUoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogewotICAg
IGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogIAogICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewpAQCAtMzA4
LDEzICszMDgsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0Js
dXIoZmxvYXQgYmx1cikKIAogU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93
Q29sb3IoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBp
ZiB5b3UgY2FsbGVkIHNldFNoYWRvdyB3aXRoIGEgbm9uLXN0cmluZyBjb2xvcj8KLSAgICByZXR1
cm4gc3RhdGUoKS5tX3NoYWRvd0NvbG9yOworICAgIHJldHVybiBzZXJpYWxpemVkQ2FudmFzQ29s
b3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yID0gY29sb3I7CisgICAgUkdCQTMyIHJnYmE7CisKKyAgICBpZiAoIUNT
U1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKworICAg
IHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKHJnYmEpOwogICAgIGFwcGx5U2hhZG93KCk7
CiB9CiAKQEAgLTgwNyw3ICs4MTEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiB7CiAgICAg
c3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
dGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
IiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gQ29sb3IoKTsKICAgICBhcHBseVNoYWRv
dygpOwogfQogCkBAIC04MTUsNyArODE5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewog
ICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAg
ICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IGNvbG9yOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKGNvbG9yKTsKICAg
ICBhcHBseVNoYWRvdygpOwogfQogCkBAIC04MjMsNyArODI3LDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgs
IGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCku
bV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICgh
YykKQEAgLTgzNywxNSArODQxLDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKIHsKICAgICBz
dGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0
YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBj
b2xvcjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcihjb2xvcik7CiAKICAgICBH
cmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFy
ZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0eSgpKQotICAg
ICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsK
KyAgICAvLyBEZWZhdWx0IHRvIHRyYW5zcGFyZW50IGJsYWNrCisgICAgUkdCQTMyIHJnYmEgPSBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNWYWxpZCgpID8gc3RhdGUoKS5tX3NoYWRvd0NvbG9yLnJn
YigpIDogMDsKICAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFscGhh
KSksIERldmljZUNvbG9yU3BhY2UpOwogfQogCkBAIC04NTMsNyArODU2LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUo
d2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0
YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENv
bG9yKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKQEAgLTg2NywyMyArODcwLDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKIHsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcigpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywg
YiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICBpZiAoIXN0YXRlKCku
bV9zaGFkb3dDb2xvci5pc0VtcHR5KCkpCi0gICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihy
Z2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdp
ZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0
YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyLCBnLCBiLCBhKSwgRGV2aWNlQ29sb3JTcGFjZSk7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwg
ZmxvYXQgaywgZmxvYXQgYSkKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAg
ICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ig
PSBDb2xvcigpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBkYyA9IGRyYXdpbmdDb250ZXh0KCk7
CiAgICAgaWYgKCFkYykKQEAgLTkwNCw3ICs5MDQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y2xlYXJTaGFkb3coKQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBG
bG9hdFNpemUoKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IDA7Ci0gICAgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gQ29sb3IoKTsK
ICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC05MTUsOCArOTE1LDggQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYg
KCFzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBh
cnNlQ29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKKyAgICBpZiAoc3RhdGUoKS5t
X3NoYWRvd0NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmdiYSA9IHN0YXRlKCkubV9zaGFkb3dD
b2xvci5yZ2IoKTsKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lk
dGgoKTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgp
OwogICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDJiYWM5MDIuLjExYmU0
YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKQEAgLTIxOCw3ICsyMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBmbG9hdCBtX21pdGVyTGltaXQ7CiAgICAgICAgICAgICBGbG9hdFNpemUgbV9zaGFkb3dP
ZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBtX3NoYWRvd0JsdXI7Ci0gICAgICAgICAgICBTdHJp
bmcgbV9zaGFkb3dDb2xvcjsKKyAgICAgICAgICAgIENvbG9yIG1fc2hhZG93Q29sb3I7CiAgICAg
ICAgICAgICBmbG9hdCBtX2dsb2JhbEFscGhhOwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgbV9nbG9iYWxDb21wb3NpdGU7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFu
c2Zvcm07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBi
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IDM1MTVlMDMuLjg3NzI1
OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKQEAgLTQ4LDQ1ICs0OCw1NSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNv
bG9yKQotICAgIDogbV90eXBlKENvbG9yU3RyaW5nKQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxl
KGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICA6IG1fdHlwZShSR0JBKQogICAgICwgbV9jb2xvcihj
b2xvcikKIHsKIH0KIAorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYgY29s
b3IpCisgICAgOiBtX3R5cGUoUkdCQSkKK3sKKyAgICBSR0JBMzIgcmdiYTsKKyAgICBpZiAoQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICAgICAgbV9jb2xvciA9IENvbG9y
KHJnYmEpOworfQorCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsKQot
ICAgIDogbV90eXBlKEdyYXlMZXZlbCkKLSAgICAsIG1fYWxwaGEoMSkKLSAgICAsIG1fZ3JheUxl
dmVsKGdyYXlMZXZlbCkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9jb2xvcihncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKQogeworICAgIC8vIFdlJ3JlIG9ubHkgc3Vw
cG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKKyAgICAv
LyBldmVuIHBhcnQgb2YgSFRNTDUsIEkgZG9uJ3QgZXhwZWN0IGFueW9uZSB3aWxsIGNhcmUuICBJ
ZiB0aGV5IGRvCisgICAgLy8gd2UnbGwgbWFrZSBhIGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24u
CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9h
dCBhbHBoYSkKLSAgICA6IG1fdHlwZShDb2xvclN0cmluZ1dpdGhBbHBoYSkKLSAgICAsIG1fY29s
b3IoY29sb3IpCi0gICAgLCBtX2FscGhhKGFscGhhKQorICAgIDogbV90eXBlKFJHQkEpCiB7Cisg
ICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xv
cikpCisgICAgICAgIG1fY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFscGhh
KTsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQg
YWxwaGEpCi0gICAgOiBtX3R5cGUoR3JheUxldmVsKQotICAgICwgbV9hbHBoYShhbHBoYSkKLSAg
ICAsIG1fZ3JheUxldmVsKGdyYXlMZXZlbCkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9j
b2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkKIHsKKyAgICAvLyBX
ZSdyZSBvbmx5IHN1cHBvcnRpbmcgMjU1IGxldmVscyBvZiBncmF5IGhlcmUuICBTaW5jZSB0aGlz
IGlzbid0CisgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUg
d2lsbCBjYXJlLiAgSWYgdGhleSBkbworICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENvbG9y
IGFic3RyYWN0aW9uLgogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxv
YXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKICAgICA6IG1fdHlwZShSR0JBKQotICAgICwgbV9hbHBo
YShhKQotICAgICwgbV9yZWQocikKLSAgICAsIG1fZ3JlZW4oZykKLSAgICAsIG1fYmx1ZShiKQor
ICAgICwgbV9jb2xvcihDb2xvcihyLCBnLCBiLCBhKSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCiAg
ICAgOiBtX3R5cGUoQ01ZS0EpCi0gICAgLCBtX2FscGhhKGEpCisgICAgLCBtX2NvbG9yKENvbG9y
KGMsIG0sIHksIGssIGEpKQogICAgICwgbV9jeWFuKGMpCiAgICAgLCBtX21hZ2VudGEobSkKICAg
ICAsIG1feWVsbG93KHkpCkBAIC05NSwxMyArMTA1LDEzIEBAIENhbnZhc1N0eWxlOjpDYW52YXNT
dHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogfQogCiBD
YW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGll
bnQpCi0gICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFkaWVudCA6IENvbG9yU3RyaW5nKQorICAg
IDogbV90eXBlKGdyYWRpZW50ID8gR3JhZGllbnQgOiBSR0JBKQogICAgICwgbV9ncmFkaWVudChn
cmFkaWVudCkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2Fu
dmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1fdHlwZShwYXR0ZXJuID8gSW1hZ2VQYXR0ZXJu
IDogQ29sb3JTdHJpbmcpCisgICAgOiBtX3R5cGUocGF0dGVybiA/IEltYWdlUGF0dGVybiA6IFJH
QkEpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKIHsKIH0KQEAgLTExMCw2MCArMTIwLDM0IEBA
IHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOworCiAgICAgc3dpdGNo
IChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewotICAgICAgICAgICAgQ29s
b3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAgICAgaWYgKGMuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYy5yZ2IoKSwgRGV2aWNlQ29s
b3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0g
ICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9y
U3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBDb2xvciBjID0gQ29sb3IobV9jb2xvcik7
Ci0gICAgICAgICAgICBpZiAoYy5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGMucmdiKCksIG1fYWxwaGEp
LCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJl
bnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1f
Y29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoY29sb3IsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3JheUxldmVsOgotICAgICAg
ICAgICAgLy8gV2UncmUgb25seSBzdXBwb3J0aW5nIDI1NSBsZXZlbHMgb2YgZ3JheSBoZXJlLiAg
U2luY2UgdGhpcyBpc24ndAotICAgICAgICAgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRv
bid0IGV4cGVjdCBhbnlvbmUgd2lsbCBjYXJlLiAgSWYgdGhleSBkbwotICAgICAgICAgICAgLy8g
d2UnbGwgbWFrZSBhIGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24uCi0gICAgICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3Jh
eUxldmVsLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBSR0JBOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2Up
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01ZS0E6IHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3ND
b250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFi
c3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29ycmVjdGx5CisgICAgY2FzZSBSR0JBOgorICAg
ICAgICBpZiAobV9jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihtX2NvbG9yLnJnYigpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBs
YXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCisgICAgICAgIC8vIFdlJ2xs
IG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVj
dGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRDTVlLU3Ryb2tl
Q29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY3lhbiwgbV9tYWdlbnRhLCBtX3ll
bGxvdywgbV9ibGFjaywgbV9hbHBoYSk7CisgICAgICAgIENHQ29udGV4dFNldENNWUtTdHJva2VD
b2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVs
bG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAg
ICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVu
KCk7Ci0gICAgICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNldENteWtGKG1f
Y3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAg
ICBjdXJyZW50UGVuLnNldENvbG9yKGNscik7Ci0gICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOworICAgICAgICBRUGVuIGN1cnJlbnRQZW4g
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVuKCk7CisgICAgICAgIFFDb2xvciBjbHI7
CisgICAgICAgIGNsci5zZXRDbXlrRihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxh
Y2ssIG1fY29sb3IuYWxwaGEoKSAvIDI1NS4wZik7CisgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29s
b3IoY2xyKTsKKyAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldFBlbihjdXJy
ZW50UGVuKTsKICNlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9jeWFu
LCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpLCBEZXZpY2VD
b2xvclNwYWNlKTsKICNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBHcmFkaWVudDoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50
KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0
dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEltYWdlUGF0dGVybjoKKyAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KIApAQCAtMTcxLDUxICsxNTUsNjEgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlG
aWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOworCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBD
b2xvclN0cmluZzogewotICAgICAgICAgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlz
IHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KHJnYmEsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihy
Z2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQ29sb3JTdHJpbmdXaXRoQWxwaGE6IHsKLSAgICAgICAgICAgIFJHQkEzMiBj
b2xvciA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlm
IChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBtX2Fs
cGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEdyYXlMZXZlbDoKLSAgICAgICAgICAgIC8vIFdlJ3JlIG9ubHkgc3VwcG9y
dGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKLSAgICAgICAg
ICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1MNSwgSSBkb24ndCBleHBlY3QgYW55b25lIHdpbGwgY2Fy
ZS4gIElmIHRoZXkgZG8KLSAgICAgICAgICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENvbG9y
IGFic3RyYWN0aW9uLgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKG1f
Z3JheUxldmVsLCBtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fYWxwaGEpLCBEZXZpY2VDb2xv
clNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJHQkE6Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwg
bV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ01ZS0E6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxh
dGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdl
J2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29y
cmVjdGx5CisgICAgY2FzZSBSR0JBOgorICAgICAgICBpZiAobV9jb2xvci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvci5yZ2IoKSwgRGV2aWNlQ29s
b3JTcGFjZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ01ZS0E6IHsKKyAgICAgICAgLy8g
RklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRl
eHQgQVBJLgorICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlv
biB0byBzdXBwb3J0IENNWUtBIGNvcnJlY3RseQogI2lmIFBMQVRGT1JNKENHKQotICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKKyAgICAgICAg
Q0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9j
eWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpOwogI2Vs
aWYgUExBVEZPUk0oUVQpCi0gICAgICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNoKCk7Ci0gICAgICAgICAgICBRQ29sb3IgY2xyOwot
ICAgICAgICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9i
bGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50QnJ1c2guc2V0Q29sb3IoY2xyKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRCcnVzaChjdXJyZW50
QnJ1c2gpOworICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmJydXNoKCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAgIGNsci5zZXRD
bXlrRihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fY29sb3IuYWxwaGEo
KSAvIDI1NS4wZik7CisgICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOworICAgICAg
ICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0QnJ1c2goY3VycmVudEJydXNoKTsKICNl
bHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9jeWFuLCBtX21h
Z2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95
ZWxsb3csIG1fYmxhY2ssIG1fY29sb3IuYWxwaGEoKSksIERldmljZUNvbG9yU3BhY2UpOwogI2Vu
ZGlmCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYWRpZW50
OgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCkt
PmdyYWRpZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VQYXR0
ZXJuOgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4oY2FudmFzUGF0dGVybigp
LT5wYXR0ZXJuKCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEdyYWRpZW50OgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY2Fu
dmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1h
Z2VQYXR0ZXJuOgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQYXR0ZXJu
KCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBDYW52YXNT
dHlsZTo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IFJHQkE6CisgICAgICAgIHJldHVybiBtX2NvbG9yLmlzVmFsaWQoKTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKK1N0cmluZyBzZXJpYWxpemVkQ2FudmFz
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3
ZSBkbyB3aXRoIGludmFsaWQgY29sb3JzPworICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKKworICAgIGlmIChjb2xv
ci5oYXNBbHBoYSgpKSB7CisgICAgICAgIC8vIE1hdGNoIEdlY2tvICgwLjAgZm9yIHplcm8sIDUg
ZGVjaW1hbHMgZm9yIGFueXRoaW5nIGVsc2UpCisgICAgICAgIGlmICghY29sb3IuYWxwaGEoKSkK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicmdiYSgldSwgJXUsICV1LCAwLjAp
IiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7CisgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgicmdiYSgldSwgJXUsICV1LCAlLjVmKSIsIGNvbG9yLnJlZCgp
LCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCkgLyAyNTUuMGYpOwog
ICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMnglMDJ4JTAyeCIsIGNvbG9y
LnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmgKaW5kZXggZmUwMWJkMS4uYTgyZmIxYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxNiArMjcsMjAgQEAKICNpZm5kZWYgQ2FudmFz
U3R5bGVfaAogI2RlZmluZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5n
IHNlcmlhbGl6ZWRDYW52YXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpOworCiAgICAgY2xhc3Mg
Q2FudmFzR3JhZGllbnQ7CiAgICAgY2xhc3MgQ2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbnZhc1N0eWxlPiB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IENvbG9yJiBjb2xvcikgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IENhbnZhc1N0eWxlKGNvbG9yKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FudmFzU3R5bGUoY29sb3IpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGdyYXlMZXZlbCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGdyYXlMZXZlbCkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvciwgYWxwaGEpKTsgfQpAQCAtNDUsMTQgKzUw
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRpZW50KSk7IH0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHBhdHRlcm4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShwYXR0ZXJuKSk7
IH0KIAotICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Cisg
ICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xv
cihtX2NvbG9yKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCogY2FudmFzR3JhZGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAgICAgIENhbnZhc1BhdHRlcm4q
IGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAogICAg
ICAgICB2b2lkIGFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4dCopOwogICAgICAgICB2b2lk
IGFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0Kik7CiAKKyAgICAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgorICAgICAgICBDYW52YXNTdHlsZShjb25zdCBD
b2xvciYgY29sb3IpOwogICAgICAgICBDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKTsK
ICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsKTsKICAgICAgICAgQ2FudmFzU3R5
bGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOwpAQCAtNjIsMjIgKzcwLDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52
YXNHcmFkaWVudD4pOwogICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRl
cm4+KTsKIAotICAgICAgICBlbnVtIFR5cGUgeyBDb2xvclN0cmluZywgQ29sb3JTdHJpbmdXaXRo
QWxwaGEsIEdyYXlMZXZlbCwgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4gfTsK
KyAgICAgICAgZW51bSBUeXBlIHsgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4g
fTsKIAogICAgICAgICBUeXBlIG1fdHlwZTsKIAotICAgICAgICBTdHJpbmcgbV9jb2xvcjsKKyAg
ICAgICAgQ29sb3IgbV9jb2xvcjsKICAgICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dy
YWRpZW50OwogICAgICAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwogCi0gICAg
ICAgIGZsb2F0IG1fYWxwaGE7Ci0KLSAgICAgICAgZmxvYXQgbV9ncmF5TGV2ZWw7Ci0KLSAgICAg
ICAgZmxvYXQgbV9yZWQ7Ci0gICAgICAgIGZsb2F0IG1fZ3JlZW47Ci0gICAgICAgIGZsb2F0IG1f
Ymx1ZTsKLQogICAgICAgICBmbG9hdCBtX2N5YW47CiAgICAgICAgIGZsb2F0IG1fbWFnZW50YTsK
ICAgICAgICAgZmxvYXQgbV95ZWxsb3c7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55797</attachid>
            <date>2010-05-11 19:09:34 -0700</date>
            <delta_ts>2010-05-14 08:58:11 -0700</delta_ts>
            <desc>Proposed patch v4</desc>
            <filename>bug-38845-5.diff</filename>
            <type>text/plain</type>
            <size>29821</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMTE0ZjFlLi4yNWMwNDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDUt
MTEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxl
LWN0bS5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRy
aWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgYmFzZWxpbmUuCisgICAgICAgICog
ZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbDoK
KwogMjAxMC0wNS0xMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQwZDFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0IHRoYXQgZ2V0dGluZyBjb2xvciBwcm9wZXJ0aWVz
IGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcmV0dXJucyBwcm9wZXJseSBmb3JtYXR0
ZWQgdmFsdWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHguc3Ry
b2tlU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQ
QVNTIGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyBjdHguc3Ry
b2tlU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAnI2ZmZmZmZicK
K1BBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmZmZmZmJworUEFTUyBjdHguZmlsbFN0eWxlIGlz
ICcjZmYwMDAwJworUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmZmZmZmJworUEFTUyBjdHguZmls
bFN0eWxlIGlzICcjZmZmZmZmJworUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjMDBmZjAwJworUEFT
UyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAn
I2ZmZmZmZicKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmZmZmZmJworUEFTUyBjdHguc2hh
ZG93Q29sb3IgaXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGli
bGUtY3RtLWV4cGVjdGVkLnR4dAppbmRleCBkYjA1ZWMwLi4xNTBkMWRiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52
ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQK
QEAgLTMsMTEgKzMsMTEgQEAgVGVzdHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhc3NpZ24gdG8gbm9u
LWN0bSBlZmZlY3RlZCBwcm9wZXJ0aWVzIHdpdGggYSBub24taW52ZXIKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIGN0eC5maWxsU3R5bGUgaXMgImdyZWVuIgorUEFTUyBjdHgu
ZmlsbFN0eWxlIGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCiBQQVNT
IGltYWdlRGF0YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEuZGF0YVsyXSBpcyAwCi1Q
QVNTIGN0eC5zdHJva2VTdHlsZSBpcyAiZ3JlZW4iCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAi
IzAwODAwMCIKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAogUEFTUyBpbWFnZURhdGEuZGF0
YVsxXSBpcyAxMjgKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0
aW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xv
ci1zZXJpYWxpemF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZh
Y2MyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKQEAgLTAsMCArMSw0NiBAQAorZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBnZXR0aW5nIGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCByZXR1cm5zIHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuIik7
CisKK3ZhciBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0
KCcyZCcpOworCitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hv
dWxkQmUoImN0eC5maWxsU3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRv
d0NvbG9yIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CisKK2N0eC5zdHJva2VTdHlsZSA9ICJy
ZWQiOworc2hvdWxkQmUoImN0eC5zdHJva2VTdHlsZSIsICInI2ZmMDAwMCciKTsKKworY3R4LnN0
cm9rZVN0eWxlID0gIndoaXRlIjsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZmZm
ZmYnIik7CisKK2N0eC5zdHJva2VTdHlsZSA9ICJ3aGl0ZSI7CitjdHguc3Ryb2tlU3R5bGUgPSAi
IjsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZmZmZmYnIik7CisKK2N0eC5maWxs
U3R5bGUgPSAicmVkIjsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOwor
CitjdHguZmlsbFN0eWxlID0gIndoaXRlIjsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicj
ZmZmZmZmJyIpOworCitjdHguZmlsbFN0eWxlID0gIndoaXRlIjsKK2N0eC5maWxsU3R5bGUgPSAi
IjsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmZmZmZmJyIpOworCitjdHguZmlsbFN0
eWxlID0gInJlZCI7CitjdHguZmlsbFN0eWxlID0gInJnYmEoMCwyNTUsMCwxLjApIjsKK3Nob3Vs
ZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjMDBmZjAwJyIpOworCitjdHguc2hhZG93Q29sb3IgPSAi
cmVkIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CisKK2N0eC5z
aGFkb3dDb2xvciA9ICJ3aGl0ZSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjZmZm
ZmZmJyIpOworCitjdHguc2hhZG93Q29sb3IgPSAid2hpdGUiOworY3R4LnNoYWRvd0NvbG9yID0g
IiI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjZmZmZmZmJyIpOworCitjdHguc2hh
ZG93Q29sb3IgPSAicmdiYSgxLDIsMywwLjQpIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3Ii
LCAiJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3Rz
L2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0
aC1ub24taW52ZXJ0aWJsZS1jdG0uanMKaW5kZXggZmYwMDUzZS4uN2NiOTFlOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVy
dGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGli
bGUtY3RtLmpzCkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0aW9uIHRlc3RQaXhlbCh4LHksIHIsIGcs
IGIpIHsKIGN0eC5zYXZlKCk7CiBjdHguc2NhbGUoMCwgMCk7CiBjdHguZmlsbFN0eWxlID0gImdy
ZWVuIjsKLXNob3VsZEJlKCdjdHguZmlsbFN0eWxlJywgJyJncmVlbiInKTsKK3Nob3VsZEJlKCdj
dHguZmlsbFN0eWxlJywgJyIjMDA4MDAwIicpOwogY3R4LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAx
LCAwLCAwKTsKIGN0eC5maWxsUmVjdCgwLDAsMTAwLDEwMCk7CiB0ZXN0UGl4ZWwoNTAsIDUwLCAw
LCAxMjgsIDApOwpAQCAtMjgsNyArMjgsNyBAQCBjdHguZmlsbFN0eWxlID0gInJlZCI7CiBjdHgu
ZmlsbFJlY3QoMCwwLDEwMCwxMDApOwogY3R4LnNjYWxlKDAsIDApOwogY3R4LnN0cm9rZVN0eWxl
ID0gImdyZWVuIjsKLXNob3VsZEJlKCdjdHguc3Ryb2tlU3R5bGUnLCAnImdyZWVuIicpOworc2hv
dWxkQmUoJ2N0eC5zdHJva2VTdHlsZScsICciIzAwODAwMCInKTsKIGN0eC5saW5lV2lkdGggPSAx
MDA7CiBjdHguc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApOwogY3R4LnN0cm9rZVJlY3Qo
MCwwLDEwMCwxMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29u
dGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhw
ZWN0ZWQudHh0CmluZGV4IGJkNWU5N2QuLjhiZGZkM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVu
dC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw2IEBAIFRoaXMgdGVz
dCBzZXR0aW5nIHZhcmlvdXMgYXR0cmlidXRlcyBvZiBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCB0byBKYXZhU2NyaXB0CiBURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5n
ICdzb3VyY2Utb3ZlcicuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmdsb2JhbENv
bXBvc2l0ZU9wZXJhdGlvbl0KIFRFU1QgU1VDQ0VFREVEOiBUaGUgdmFsdWUgd2FzIHRoZSBzdHJp
bmcgJ2J1dHQnLiBbdGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5saW5lQ2FwXQogVEVT
VCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnbWl0ZXInLiBbdGVzdGVkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5saW5lSm9pbl0KLVRFU1QgU1VDQ0VFREVEOiBUaGUgdmFs
dWUgd2FzIHRoZSBlbXB0eSBzdHJpbmcuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LnNoYWRvd0NvbG9yXQorVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAn
cmdiYSgwLCAwLCAwLCAwLjApJy4gW3Rlc3RlZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2hh
ZG93Q29sb3JdCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29u
dGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwKaW5kZXgg
ZDllN2Y3YS4uM2FjYzY3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFz
Q29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1s
CkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2dsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbicsIGV4cGVjdGVkTnVsbDogJ3NvdXJjZS1vdmVyJ30sCiAgICAg
ICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xpbmVDYXAnLCBleHBlY3RlZE51bGw6ICdidXR0
J30sCiAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xpbmVKb2luJywgZXhwZWN0ZWRO
dWxsOiAnbWl0ZXInfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAnc2hhZG93Q29s
b3InLCBleHBlY3RlZE51bGw6ICcnfSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAge25hbWU6ICdzaGFkb3dDb2xvcicsIGV4cGVjdGVkTnVsbDogJ3JnYmEo
MCwgMCwgMCwgMC4wKSd9CiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA5ZDA4MTE2Li5mMWMwYzRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEwLTA1
LTExICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEJ3MgcHJvcGVydHkgZ2V0dGVycyB0aGF0IHJldHVybiBjb2xvcnMgc2hvdWxkCisgICAg
ICAgIHNlcmlhbGl6ZSB0aGVtIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgSFRNTDUgc3BlYyAoNC44
LjExLjEuNCkKKyAgICAgICAgU2V0dGVycyBzaG91bGQgaWdub3JlIGludmFsaWQgY29sb3JzLgor
CisgICAgICAgIEFsc28sIHNoYWRvd0NvbG9yIHNob3VsZCBpbml0aWFsbHkgYmUgdHJhbnNwYXJl
bnQgYmxhY2sgKDQuOC4xMS4xLjYpCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4ODQ1CisKKyAgICAgICAgUmVmYWN0b3JlZCBDYW52YXNTdHlsZSB0
byBzdG9yZSBhIFdlYkNvcmU6OkNvbG9yIGluc3RlYWQgb2YgUkdCQSBjb21wb25lbnRzIGFuZC9v
ciB0aGUgY29sb3Igc3RyaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1j
b2xvci1zZXJpYWxpemF0aW9uLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
c2VyaWFsaXplZENhbnZhc0NvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHls
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNTdHlsZTo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5
bGU6Oik6CisKIDIwMTAtMDUtMTEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjE1YjQ1ZC4uMjhjYmNmMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTE3LDE0
ICsxMTcsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0KCkKIH0KIAog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoKQotICAgIDogbV9zdHJva2VT
dHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKCJibGFjayIpKQotICAgICwgbV9maWxsU3R5bGUoQ2Fu
dmFzU3R5bGU6OmNyZWF0ZSgiYmxhY2siKSkKKyAgICA6IG1fc3Ryb2tlU3R5bGUoQ2FudmFzU3R5
bGU6OmNyZWF0ZShDb2xvcihDb2xvcjo6YmxhY2spKSkKKyAgICAsIG1fZmlsbFN0eWxlKENhbnZh
c1N0eWxlOjpjcmVhdGUoQ29sb3IoQ29sb3I6OmJsYWNrKSkpCiAgICAgLCBtX2xpbmVXaWR0aCgx
KQogICAgICwgbV9saW5lQ2FwKEJ1dHRDYXApCiAgICAgLCBtX2xpbmVKb2luKE1pdGVySm9pbikK
ICAgICAsIG1fbWl0ZXJMaW1pdCgxMCkKICAgICAsIG1fc2hhZG93Qmx1cigwKQotICAgICwgbV9z
aGFkb3dDb2xvcigiYmxhY2siKQorICAgICwgbV9zaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgLCBtX2dsb2JhbEFscGhhKDEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShDb21w
b3NpdGVTb3VyY2VPdmVyKQogICAgICwgbV9pbnZlcnRpYmxlQ1RNKHRydWUpCkBAIC0xNjYsNyAr
MTY2LDcgQEAgQ2FudmFzU3R5bGUqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5
bGUoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSkKKyAg
ICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBDYW52
YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoKSBjb25zdAogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IHN0eWxlKQogewotICAgIGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZSB8fCAh
c3R5bGUtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogIAogICAgIGlmIChjYW52YXMoKS0+
b3JpZ2luQ2xlYW4oKSkgewpAQCAtMzA4LDEzICszMDgsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFNoYWRvd0JsdXIoZmxvYXQgYmx1cikKIAogU3RyaW5nIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCB0aGlzIHJldHVybiBpZiB5b3UgY2FsbGVkIHNldFNoYWRvdyB3aXRoIGEgbm9u
LXN0cmluZyBjb2xvcj8KLSAgICByZXR1cm4gc3RhdGUoKS5tX3NoYWRvd0NvbG9yOworICAgIHJl
dHVybiBzZXJpYWxpemVkQ2FudmFzQ29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gY29sb3I7CisgICAgUkdC
QTMyIHJnYmE7CisKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKHJn
YmEpOwogICAgIGFwcGx5U2hhZG93KCk7CiB9CiAKQEAgLTgwNyw3ICs4MTEsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IGJsdXIpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6
ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
Q29sb3IoKTsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC04MTUsNyArODE5LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9h
dFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwot
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOworICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9IENvbG9yKGNvbG9yKTsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC04MjMsNyAr
ODI3LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dP
ZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0Js
dXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCku
bV9zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTgzNywxNSArODQxLDE0IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXpl
KHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ig
PSBDb2xvcihjb2xvcik7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSAw
OyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IuaXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKKyAgICAvLyBEZWZhdWx0IHRvIHRyYW5zcGFyZW50IGJs
YWNrCisgICAgUkdCQTMyIHJnYmEgPSBzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNWYWxpZCgpID8g
c3RhdGUoKS5tX3NoYWRvd0NvbG9yLnJnYigpIDogMDsKICAgICBjLT5zZXRTaGFkb3coSW50U2l6
ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihjb2xvcldpdGhP
dmVycmlkZUFscGhhKHJnYmEsIGFscGhhKSksIERldmljZUNvbG9yU3BhY2UpOwogfQogCkBAIC04
NTMsNyArODU2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAgIHN0YXRlKCkubV9z
aGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0
YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTg2NywyMyArODcwLDIwIEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCwgZmxvYXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxv
YXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsK
LSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IgPSBDb2xvcigpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gbWFr
ZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQg
YmxhY2sKLSAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5KCkpCi0gICAgICAg
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IpOwotICAg
IGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0Js
dXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50
U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyLCBnLCBi
LCBhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKICAgICBzdGF0ZSgp
Lm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCku
bV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAg
ICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcigpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
KiBkYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFkYykKQEAgLTkwNCw3ICs5MDQsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQogewogICAgIHN0
YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciA9IDA7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yID0gQ29sb3IoKTsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC05MTUs
OCArOTE1LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRy
YW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0eSgp
KQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yKTsKKyAgICBpZiAoc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
cmdiYSA9IHN0YXRlKCkubV9zaGFkb3dDb2xvci5yZ2IoKTsKICAgICBmbG9hdCB3aWR0aCA9IHN0
YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgp
Lm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwogICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xv
clNwYWNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCmluZGV4IDJiYWM5MDIuLjExYmU0YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiRm9u
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTIxOCw3ICsyMTksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBmbG9hdCBtX21pdGVyTGltaXQ7CiAgICAgICAg
ICAgICBGbG9hdFNpemUgbV9zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBtX3NoYWRv
d0JsdXI7Ci0gICAgICAgICAgICBTdHJpbmcgbV9zaGFkb3dDb2xvcjsKKyAgICAgICAgICAgIENv
bG9yIG1fc2hhZG93Q29sb3I7CiAgICAgICAgICAgICBmbG9hdCBtX2dsb2JhbEFscGhhOwogICAg
ICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9nbG9iYWxDb21wb3NpdGU7CiAgICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUu
Y3BwCmluZGV4IDM1MTVlMDMuLjZhZTMzMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKQEAgLTQ4
LDQ1ICs0OCw1NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKQotICAgIDogbV90eXBlKENvbG9yU3RyaW5nKQor
Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICA6IG1fdHlw
ZShSR0JBKQogICAgICwgbV9jb2xvcihjb2xvcikKIHsKIH0KIAorQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKGNvbnN0IFN0cmluZyYgY29sb3IpCisgICAgOiBtX3R5cGUoUkdCQSkKK3sKKyAgICBS
R0JBMzIgcmdiYTsKKyAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkK
KyAgICAgICAgbV9jb2xvciA9IENvbG9yKHJnYmEpOworfQorCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgZ3JheUxldmVsKQotICAgIDogbV90eXBlKEdyYXlMZXZlbCkKLSAgICAsIG1f
YWxwaGEoMSkKLSAgICAsIG1fZ3JheUxldmVsKGdyYXlMZXZlbCkKKyAgICA6IG1fdHlwZShSR0JB
KQorICAgICwgbV9jb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKQog
eworICAgIC8vIFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4g
IFNpbmNlIHRoaXMgaXNuJ3QKKyAgICAvLyBldmVuIHBhcnQgb2YgSFRNTDUsIEkgZG9uJ3QgZXhw
ZWN0IGFueW9uZSB3aWxsIGNhcmUuICBJZiB0aGV5IGRvCisgICAgLy8gd2UnbGwgbWFrZSBhIGZh
bmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24uCiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShj
b25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShDb2xvclN0cmlu
Z1dpdGhBbHBoYSkKLSAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgLCBtX2FscGhhKGFscGhhKQor
ICAgIDogbV90eXBlKFJHQkEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKENTU1BhcnNl
cjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAgICAgIG1fY29sb3IgPSBjb2xvcldpdGhP
dmVycmlkZUFscGhhKHJnYmEsIGFscGhhKTsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxl
KGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3R5cGUoR3JheUxldmVsKQot
ICAgICwgbV9hbHBoYShhbHBoYSkKLSAgICAsIG1fZ3JheUxldmVsKGdyYXlMZXZlbCkKKyAgICA6
IG1fdHlwZShSR0JBKQorICAgICwgbV9jb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBhbHBoYSkKIHsKKyAgICAvLyBXZSdyZSBvbmx5IHN1cHBvcnRpbmcgMjU1IGxldmVscyBv
ZiBncmF5IGhlcmUuICBTaW5jZSB0aGlzIGlzbid0CisgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1
LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUgd2lsbCBjYXJlLiAgSWYgdGhleSBkbworICAgIC8vIHdl
J2xsIG1ha2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgogfQogCiBDYW52YXNTdHlsZTo6
Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKICAgICA6IG1f
dHlwZShSR0JBKQotICAgICwgbV9hbHBoYShhKQotICAgICwgbV9yZWQocikKLSAgICAsIG1fZ3Jl
ZW4oZykKLSAgICAsIG1fYmx1ZShiKQorICAgICwgbV9jb2xvcihDb2xvcihyLCBnLCBiLCBhKSkK
IHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0
IHksIGZsb2F0IGssIGZsb2F0IGEpCiAgICAgOiBtX3R5cGUoQ01ZS0EpCi0gICAgLCBtX2FscGhh
KGEpCisgICAgLCBtX2NvbG9yKENvbG9yKGMsIG0sIHksIGssIGEpKQogICAgICwgbV9jeWFuKGMp
CiAgICAgLCBtX21hZ2VudGEobSkKICAgICAsIG1feWVsbG93KHkpCkBAIC05NSwxMyArMTA1LDEz
IEBAIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBm
bG9hdCBrLCBmbG9hdCBhKQogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi0gICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFk
aWVudCA6IENvbG9yU3RyaW5nKQorICAgIDogbV90eXBlKGdyYWRpZW50ID8gR3JhZGllbnQgOiBS
R0JBKQogICAgICwgbV9ncmFkaWVudChncmFkaWVudCkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1fdHlw
ZShwYXR0ZXJuID8gSW1hZ2VQYXR0ZXJuIDogQ29sb3JTdHJpbmcpCisgICAgOiBtX3R5cGUocGF0
dGVybiA/IEltYWdlUGF0dGVybiA6IFJHQkEpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKIHsK
IH0KQEAgLTExMCw2MCArMTIwLDM0IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOworCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0
cmluZzogewotICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAg
ICAgaWYgKGMuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoYy5yZ2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0
IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VD
b2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBD
b2xvciBjID0gQ29sb3IobV9jb2xvcik7Ci0gICAgICAgICAgICBpZiAoYy5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlk
ZUFscGhhKGMucmdiKCksIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7
IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIG1fYWxwaGEpLCBE
ZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR3JheUxldmVsOgotICAgICAgICAgICAgLy8gV2UncmUgb25seSBzdXBwb3J0aW5nIDI1
NSBsZXZlbHMgb2YgZ3JheSBoZXJlLiAgU2luY2UgdGhpcyBpc24ndAotICAgICAgICAgICAgLy8g
ZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUgd2lsbCBjYXJlLiAgSWYg
dGhleSBkbwotICAgICAgICAgICAgLy8gd2UnbGwgbWFrZSBhIGZhbmNpZXIgQ29sb3IgYWJzdHJh
Y3Rpb24uCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtX2dyYXlM
ZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFj
ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSR0JBOgotICAgICAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9h
bHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ01ZS0E6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZv
cm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdlJ2xs
IG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29ycmVj
dGx5CisgICAgY2FzZSBSR0JBOgorICAgICAgICBpZiAobV9jb2xvci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yLnJnYigpLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBG
SVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4
dCBBUEkuCisgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9u
IHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVjdGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAg
ICBDR0NvbnRleHRTZXRDTVlLU3Ryb2tlQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7CisgICAgICAg
IENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
bV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkgLyAy
NTUuMGYpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgICAgICBRUGVuIGN1cnJlbnRQZW4g
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVuKCk7Ci0gICAgICAgICAgICBRQ29sb3Ig
Y2xyOwotICAgICAgICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxv
dywgbV9ibGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50UGVuLnNldENvbG9yKGNs
cik7Ci0gICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0UGVuKGN1cnJl
bnRQZW4pOworICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+cGVuKCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAgIGNsci5zZXRDbXlrRiht
X2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fY29sb3IuYWxwaGEoKSAvIDI1
NS4wZik7CisgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29sb3IoY2xyKTsKKyAgICAgICAgY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldFBlbihjdXJyZW50UGVuKTsKICNlbHNlCi0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95
ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBt
X2JsYWNrLCBtX2NvbG9yLmFscGhhKCkpLCBEZXZpY2VDb2xvclNwYWNlKTsKICNlbmRpZgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHcmFkaWVudDoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRp
ZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBh
dHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNhbnZh
c0dyYWRpZW50KCktPmdyYWRpZW50KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEltYWdl
UGF0dGVybjoKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybihjYW52YXNQYXR0ZXJu
KCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMTcxLDUxICsx
NTUsNjEgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOworCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewotICAgICAgICAg
ICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAg
ICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIG1fY29sb3IpKQotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihyZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3JTdHJpbmdX
aXRoQWxwaGE6IHsKLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8vIGRlZmF1bHQgaXMg
dHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
Y29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihj
b2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXlMZXZlbDoK
LSAgICAgICAgICAgIC8vIFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkg
aGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKLSAgICAgICAgICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1M
NSwgSSBkb24ndCBleHBlY3QgYW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkgZG8KLSAgICAgICAg
ICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgotICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKG1fZ3JheUxldmVsLCBtX2dyYXlMZXZlbCwg
bV9ncmF5TGV2ZWwsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFJHQkE6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSksIERldmljZUNvbG9yU3Bh
Y2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01ZS0E6IHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhp
Y3NDb250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9y
IGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29ycmVjdGx5CisgICAgY2FzZSBSR0JBOgor
ICAgICAgICBpZiAobV9jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IobV9jb2xvci5yZ2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ01ZS0E6IHsKKyAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgorICAgICAgICAvLyBXZSds
bCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtBIGNvcnJl
Y3RseQogI2lmIFBMQVRGT1JNKENHKQotICAgICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxD
b2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVs
bG93LCBtX2JsYWNrLCBtX2FscGhhKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xv
cihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93
LCBtX2JsYWNrLCBtX2NvbG9yLmFscGhhKCkgLyAyNTUuMGYpOwogI2VsaWYgUExBVEZPUk0oUVQp
Ci0gICAgICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmJydXNoKCk7Ci0gICAgICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xy
LnNldENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7
Ci0gICAgICAgICAgICBjdXJyZW50QnJ1c2guc2V0Q29sb3IoY2xyKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRCcnVzaChjdXJyZW50QnJ1c2gpOworICAgICAg
ICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNo
KCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAgIGNsci5zZXRDbXlrRihtX2N5YW4sIG1f
bWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fY29sb3IuYWxwaGEoKSAvIDI1NS4wZik7Cisg
ICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOworICAgICAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+c2V0QnJ1c2goY3VycmVudEJydXNoKTsKICNlbHNlCi0gICAgICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93
LCBtX2JsYWNrLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ss
IG1fY29sb3IuYWxwaGEoKSksIERldmljZUNvbG9yU3BhY2UpOwogI2VuZGlmCi0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYWRpZW50OgotICAgICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgotICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYWRp
ZW50OgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY2FudmFzR3JhZGllbnQoKS0+
Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgorICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBDYW52YXNTdHlsZTo6aXNWYWxpZCgp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFJHQkE6CisgICAgICAg
IHJldHVybiBtX2NvbG9yLmlzVmFsaWQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9Cit9CisKK1N0cmluZyBzZXJpYWxpemVkQ2FudmFzQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBkbyB3aXRoIGludmFs
aWQgY29sb3JzPworICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKKworICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKSB7
CisgICAgICAgIC8vIE1hdGNoIEdlY2tvICgwLjAgZm9yIHplcm8sIDUgZGVjaW1hbHMgZm9yIGFu
eXRoaW5nIGVsc2UpCisgICAgICAgIGlmICghY29sb3IuYWxwaGEoKSkKKyAgICAgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgicmdiYSgldSwgJXUsICV1LCAwLjApIiwgY29sb3IucmVkKCks
IGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgicmdiYSgldSwgJXUsICV1LCAlLjVmKSIsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigp
LCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCkgLyAyNTUuMGYpOwogICAgIH0KKworICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMnglMDJ4JTAyeCIsIGNvbG9yLnJlZCgpLCBjb2xvci5n
cmVlbigpLCBjb2xvci5ibHVlKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1N0eWxlLmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgK
aW5kZXggZmUwMWJkMS4uYTgyZmIxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNiwxNiArMjcsMjAgQEAKICNpZm5kZWYgQ2FudmFzU3R5bGVfaAogI2RlZmlu
ZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNlcmlhbGl6ZWRDYW52
YXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpOworCiAgICAgY2xhc3MgQ2FudmFzR3JhZGllbnQ7
CiAgICAgY2xhc3MgQ2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAK
ICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1N0eWxlPiB7
CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3Jl
YXRlKGNvbnN0IENvbG9yJiBjb2xvcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxl
KGNvbG9yKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGNvbG9yKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUo
Y29sb3IpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KGZsb2F0IGdyYXlMZXZlbCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYXlM
ZXZlbCkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YW52YXNTdHlsZShjb2xvciwgYWxwaGEpKTsgfQpAQCAtNDUsMTQgKzUwLDE3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0
ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IENhbnZhc1N0eWxlKGdyYWRpZW50KSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShwYXR0ZXJuKSk7IH0KIAotICAgICAgICBT
dHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgICAgIFN0cmluZyBj
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihtX2NvbG9yKTsgfQog
ICAgICAgICBDYW52YXNHcmFkaWVudCogY2FudmFzR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2dyYWRpZW50LmdldCgpOyB9CiAgICAgICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRlcm4o
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIGFwcGx5
RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4dCopOwogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGhpY3NDb250ZXh0Kik7CiAKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisK
ICAgICBwcml2YXRlOgorICAgICAgICBDYW52YXNTdHlsZShjb25zdCBDb2xvciYgY29sb3IpOwog
ICAgICAgICBDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKTsKICAgICAgICAgQ2FudmFz
U3R5bGUoZmxvYXQgZ3JheUxldmVsKTsKICAgICAgICAgQ2FudmFzU3R5bGUoY29uc3QgU3RyaW5n
JiBjb2xvciwgZmxvYXQgYWxwaGEpOwpAQCAtNjIsMjIgKzcwLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwog
ICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKIAotICAgICAg
ICBlbnVtIFR5cGUgeyBDb2xvclN0cmluZywgQ29sb3JTdHJpbmdXaXRoQWxwaGEsIEdyYXlMZXZl
bCwgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4gfTsKKyAgICAgICAgZW51bSBU
eXBlIHsgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4gfTsKIAogICAgICAgICBU
eXBlIG1fdHlwZTsKIAotICAgICAgICBTdHJpbmcgbV9jb2xvcjsKKyAgICAgICAgQ29sb3IgbV9j
b2xvcjsKICAgICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAg
ICBSZWZQdHI8Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwogCi0gICAgICAgIGZsb2F0IG1fYWxw
aGE7Ci0KLSAgICAgICAgZmxvYXQgbV9ncmF5TGV2ZWw7Ci0KLSAgICAgICAgZmxvYXQgbV9yZWQ7
Ci0gICAgICAgIGZsb2F0IG1fZ3JlZW47Ci0gICAgICAgIGZsb2F0IG1fYmx1ZTsKLQogICAgICAg
ICBmbG9hdCBtX2N5YW47CiAgICAgICAgIGZsb2F0IG1fbWFnZW50YTsKICAgICAgICAgZmxvYXQg
bV95ZWxsb3c7Cg==
</data>
<flag name="review"
          id="40069"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56075</attachid>
            <date>2010-05-14 08:58:11 -0700</date>
            <delta_ts>2010-05-14 19:09:42 -0700</delta_ts>
            <desc>Proposed patch v5</desc>
            <filename>bug-38845-9.diff</filename>
            <type>text/plain</type>
            <size>34691</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNjZhNTk3Li44ZTY4OWU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDUt
MTMgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0cnlTZXR0aW5n
U3Ryb2tlU3R5bGUpOgorICAgICAgICAodHJ5U2V0dGluZ0ZpbGxTdHlsZSk6CisgICAgICAgICh0
cnlTZXR0aW5nU2hhZG93Q29sb3IpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yKToKKyAgICAg
ICAgKGNoZWNrRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzOgorICAg
ICAgICAqIGZhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxs
LWV4cGVjdGVkLnR4dDogVXBkYXRlZCBiYXNlbGluZS4KKyAgICAgICAgKiBmYXN0L2RvbS9jYW52
YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sOgorCiAyMDEwLTA1LTE0
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgdW5za2lwIHBhc3NpbmcgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3YzQyMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYzIEBACitUZXN0IHRoYXQgZ2V0dGluZyBjb2xvciBw
cm9wZXJ0aWVzIGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcmV0dXJucyBwcm9wZXJs
eSBmb3JtYXR0ZWQgdmFsdWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBjaGVja0RlZmF1bHRWYWx1ZShjdHguc3Ryb2tlU3R5bGUpIGlzICcjMDAwMDAwJworUEFTUyBj
aGVja0RlZmF1bHRWYWx1ZShjdHguZmlsbFN0eWxlKSBpcyAnIzAwMDAwMCcKK1BBU1MgY2hlY2tE
ZWZhdWx0VmFsdWUoY3R4LnNoYWRvd0NvbG9yKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFT
UyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgndHJhbnNwYXJlbnQnKSBpcyAncmdiYSgw
LCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3RyYW5zcGFyZW50Jykg
aXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCdyZWQn
KSBpcyAnI2ZmMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgncmVkJykgaXMgJyNmZjAw
MDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigncmVkJykgaXMgJyNmZjAwMDAnCitQQVNT
IHRyeVNldHRpbmdTdHJva2VTdHlsZSgnd2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0
dGluZ0ZpbGxTdHlsZSgnd2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0NvbG9yKCd3aGl0ZScpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUo
JycpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCcnKSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCcnKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5
U2V0dGluZ1N0cm9rZVN0eWxlKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnUkdCQSgwLCAwLCAwLCAwKScpIGlzICdy
Z2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignUkdCQSgwLCAw
LCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VT
dHlsZSgncmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ0Zp
bGxTdHlsZSgncmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGlu
Z1NoYWRvd0NvbG9yKCdyZ2JhKDAsMjU1LDAsMS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlT
ZXR0aW5nU3Ryb2tlU3R5bGUoJ3JnYmEoMSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAu
NDAwMDApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAn
cmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCdyZ2Jh
KDEsMiwzLDAuNCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGlu
Z1N0cm9rZVN0eWxlKCdSZ0IoMSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdG
aWxsU3R5bGUoJ1JnQigxLDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0NvbG9yKCdSZ0IoMSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdTdHJva2VT
dHlsZSgnckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsU3R5bGUoJ3JHYkEoMSwyLDMsMCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJwor
UEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3JHYkEoMSwyLDMsMCknKSBpcyAncmdiYSgxLCAy
LCAzLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUodHJ1ZSkgaXMgJyM2NjY2NjYn
CitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUodHJ1ZSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDb2xvcih0cnVlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9r
ZVN0eWxlKGZhbHNlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZShmYWxz
ZSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcihmYWxzZSkgaXMgJyM2
NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgwKSBpcyAnIzY2NjY2NicKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxTdHlsZSgwKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0NvbG9yKDApIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoMSkgaXMg
JyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoMSkgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDb2xvcigxKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZVN0eWxlKC0xKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgtMSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigtMSkgaXMgJyM2NjY2NjYn
CitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZShOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlT
ZXR0aW5nRmlsbFN0eWxlKE5hTikgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dD
b2xvcihOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoSW5maW5p
dHkpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKEluZmluaXR5KSBpcyAn
IzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKEluZmluaXR5KSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKG51bGwpIGlzICcjNjY2NjY2JworUEFTUyB0
cnlTZXR0aW5nRmlsbFN0eWxlKG51bGwpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93Q29sb3IobnVsbCkgaXMgJyM2NjY2NjYnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzRiMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRp
ZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4
cGVjdGVkLnR4dAppbmRleCBkYjA1ZWMwLi4xNTBkMWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1j
dG0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQt
cHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQKQEAgLTMsMTEg
KzMsMTEgQEAgVGVzdHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhc3NpZ24gdG8gbm9uLWN0bSBlZmZl
Y3RlZCBwcm9wZXJ0aWVzIHdpdGggYSBub24taW52ZXIKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1QQVNTIGN0eC5maWxsU3R5bGUgaXMgImdyZWVuIgorUEFTUyBjdHguZmlsbFN0eWxl
IGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0YVswXSBpcyAwCiBQQVNTIGltYWdlRGF0
YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEuZGF0YVsyXSBpcyAwCi1QQVNTIGN0eC5z
dHJva2VTdHlsZSBpcyAiZ3JlZW4iCitQQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAiIzAwODAwMCIK
IFBBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAogUEFTUyBpbWFnZURhdGEuZGF0YVsxXSBpcyAx
MjgKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxp
emF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MDE0ZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKQEAgLTAsMCArMSw1NSBAQAorZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBnZXR0aW5nIGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCByZXR1cm5zIHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuIik7CisKK2N0eCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2Z1
bmN0aW9uIHRyeVNldHRpbmdTdHJva2VTdHlsZSh2YWx1ZSkgeworICAgIGN0eC5zdHJva2VTdHls
ZSA9ICcjNjY2JzsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4
LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbFN0eWxlKHZhbHVlKSB7
CisgICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguZmlsbFN0eWxlID0gdmFsdWU7
CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFk
b3dDb2xvcih2YWx1ZSkgeworICAgIGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHgu
c2hhZG93Q29sb3IgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitm
dW5jdGlvbiB0cnlTZXR0aW5nQ29sb3IodmFsdWUsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUo
InRyeVNldHRpbmdTdHJva2VTdHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBz
aG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxTdHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsK
KyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCIgKyB2YWx1ZSArICIpIiwgZXhw
ZWN0ZWQpOworfQorCitmdW5jdGlvbiBjaGVja0RlZmF1bHRWYWx1ZSh2YWx1ZSkgeworICAgIHJl
dHVybiB2YWx1ZTsKK30KKworc2hvdWxkQmUoImNoZWNrRGVmYXVsdFZhbHVlKGN0eC5zdHJva2VT
dHlsZSkiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4LmZp
bGxTdHlsZSkiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4
LnNoYWRvd0NvbG9yKSIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOworCit0cnlTZXR0aW5nQ29s
b3IoIid0cmFuc3BhcmVudCciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdD
b2xvcigiJ3JlZCciLCAiJyNmZjAwMDAnIik7Cit0cnlTZXR0aW5nQ29sb3IoIid3aGl0ZSciLCAi
JyNmZmZmZmYnIik7Cit0cnlTZXR0aW5nQ29sb3IoIicnIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0
dGluZ0NvbG9yKCInUkdCQSgwLCAwLCAwLCAwKSciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsK
K3RyeVNldHRpbmdDb2xvcigiJ3JnYmEoMCwyNTUsMCwxLjApJyIsICInIzAwZmYwMCciKTsKK3Ry
eVNldHRpbmdDb2xvcigiJ3JnYmEoMSwyLDMsMC40KSciLCAiJ3JnYmEoMSwgMiwgMywgMC40MDAw
MCknIik7Cit0cnlTZXR0aW5nQ29sb3IoIidSZ0IoMSwyLDMpJyIsICInIzAxMDIwMyciKTsKK3Ry
eVNldHRpbmdDb2xvcigiJ3JHYkEoMSwyLDMsMCknIiwgIidyZ2JhKDEsIDIsIDMsIDAuMCknIik7
Cit0cnlTZXR0aW5nQ29sb3IoInRydWUiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3Io
ImZhbHNlIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCIwIiwgIicjNjY2NjY2JyIp
OwordHJ5U2V0dGluZ0NvbG9yKCIxIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCIt
MSIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiTmFOIiwgIicjNjY2NjY2JyIpOwor
dHJ5U2V0dGluZ0NvbG9yKCJJbmZpbml0eSIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xv
cigibnVsbCIsICInIzY2NjY2NiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1p
bnZlcnRpYmxlLWN0bS5qcwppbmRleCBmZjAwNTNlLi43Y2I5MWU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdp
dGgtbm9uLWludmVydGlibGUtY3RtLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0u
anMKQEAgLTE2LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVzdFBpeGVsKHgseSwgciwgZywgYikgewog
Y3R4LnNhdmUoKTsKIGN0eC5zY2FsZSgwLCAwKTsKIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOwot
c2hvdWxkQmUoJ2N0eC5maWxsU3R5bGUnLCAnImdyZWVuIicpOworc2hvdWxkQmUoJ2N0eC5maWxs
U3R5bGUnLCAnIiMwMDgwMDAiJyk7CiBjdHguc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDAp
OwogY3R4LmZpbGxSZWN0KDAsMCwxMDAsMTAwKTsKIHRlc3RQaXhlbCg1MCwgNTAsIDAsIDEyOCwg
MCk7CkBAIC0yOCw3ICsyOCw3IEBAIGN0eC5maWxsU3R5bGUgPSAicmVkIjsKIGN0eC5maWxsUmVj
dCgwLDAsMTAwLDEwMCk7CiBjdHguc2NhbGUoMCwgMCk7CiBjdHguc3Ryb2tlU3R5bGUgPSAiZ3Jl
ZW4iOwotc2hvdWxkQmUoJ2N0eC5zdHJva2VTdHlsZScsICciZ3JlZW4iJyk7CitzaG91bGRCZSgn
Y3R4LnN0cm9rZVN0eWxlJywgJyIjMDA4MDAwIicpOwogY3R4LmxpbmVXaWR0aCA9IDEwMDsKIGN0
eC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7CiBjdHguc3Ryb2tlUmVjdCgwLDAsMTAw
LDEwMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50
eHQKaW5kZXggYmQ1ZTk3ZC4uOGJkZmQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJp
YnV0ZS1qcy1udWxsLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDYgQEAgVGhpcyB0ZXN0IHNldHRp
bmcgdmFyaW91cyBhdHRyaWJ1dGVzIG9mIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIEph
dmFTY3JpcHQKIFRFU1QgU1VDQ0VFREVEOiBUaGUgdmFsdWUgd2FzIHRoZSBzdHJpbmcgJ3NvdXJj
ZS1vdmVyJy4gW3Rlc3RlZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uXQogVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnYnV0
dCcuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmxpbmVDYXBdCiBURVNUIFNVQ0NF
RURFRDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5nICdtaXRlcicuIFt0ZXN0ZWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmxpbmVKb2luXQotVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMg
dGhlIGVtcHR5IHN0cmluZy4gW3Rlc3RlZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2hhZG93
Q29sb3JdCitURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5nICdyZ2JhKDAs
IDAsIDAsIDAuMCknLiBbdGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zaGFkb3dDb2xv
cl0KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2Fu
dmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbAppbmRleCBkOWU3Zjdh
Li4zYWNjNjcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0
MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwKQEAgLTU0
LDcgKzU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAnZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0aW9uJywgZXhwZWN0ZWROdWxsOiAnc291cmNlLW92ZXInfSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHtuYW1lOiAnbGluZUNhcCcsIGV4cGVjdGVkTnVsbDogJ2J1dHQnfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAnbGluZUpvaW4nLCBleHBlY3RlZE51bGw6ICdt
aXRlcid9LAotICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdzaGFkb3dDb2xvcicsIGV4
cGVjdGVkTnVsbDogJyd9ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgICAgICB7bmFtZTogJ3NoYWRvd0NvbG9yJywgZXhwZWN0ZWROdWxsOiAncmdiYSgwLCAwLCAw
LCAwLjApJ30KICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIF07CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDQyNjQ5OTEuLmZiMDM1YjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAtMDUtMTMgIEFu
ZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQn
cyBwcm9wZXJ0eSBnZXR0ZXJzIHRoYXQgcmV0dXJuIGNvbG9ycyBzaG91bGQKKyAgICAgICAgc2Vy
aWFsaXplIHRoZW0gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBIVE1MNSBzcGVjICg0LjguMTEuMS40
KQorICAgICAgICBTZXR0ZXJzIHNob3VsZCBpZ25vcmUgaW52YWxpZCBjb2xvcnMuCisKKyAgICAg
ICAgQWxzbywgc2hhZG93Q29sb3Igc2hvdWxkIGluaXRpYWxseSBiZSB0cmFuc3BhcmVudCBibGFj
ayAoNC44LjExLjEuNikKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg4NDUKKworICAgICAgICBSZWZhY3RvcmVkIENhbnZhc1N0eWxlIHRvIHN0b3Jl
IGFuIFJHQkEzMiBpbnN0ZWFkIG9mIFJHQkEgY29tcG9uZW50cyBhbmQvb3IgdGhlIGNvbG9yIHN0
cmluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXph
dGlvbi5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjp+Q2FudmFzU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNlcmlhbGl6ZWRDYW52YXNDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1N0eWxlOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjopOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNNWUtBVmFsdWVzOjpDTVlLQVZhbHVlcyk6
CisKIDIwMTAtMDUtMTQgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2NDMwZGRlLi4zMGQ5MTE2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgpAQCAtMTE4LDE0ICsxMTgsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnJlc2V0KCkKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3Rh
dGUoKQotICAgIDogbV9zdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKCIjMDAwMDAwIikp
Ci0gICAgLCBtX2ZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKCIjMDAwMDAwIikpCisgICAg
OiBtX3N0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoQ29sb3I6OmJsYWNrKSkKKyAgICAs
IG1fZmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoQ29sb3I6OmJsYWNrKSkKICAgICAsIG1f
bGluZVdpZHRoKDEpCiAgICAgLCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4o
TWl0ZXJKb2luKQogICAgICwgbV9taXRlckxpbWl0KDEwKQogICAgICwgbV9zaGFkb3dCbHVyKDAp
Ci0gICAgLCBtX3NoYWRvd0NvbG9yKCJibGFjayIpCisgICAgLCBtX3NoYWRvd0NvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCkKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xvYmFsQ29t
cG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgLCBtX2ludmVydGlibGVDVE0odHJ1ZSkK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBDYW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzdHJva2VTdHlsZSgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKIHsKLSAgICBpZiAo
IXN0eWxlKQorICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewpAQCAtMTkxLDcgKzE5
MSw3IEBAIENhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZSgp
IGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoUGFz
c1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYgKCFzdHlsZSkKKyAgICBpZiAo
IXN0eWxlIHx8ICFzdHlsZS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAgCiAgICAgaWYg
KGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CkBAIC0zMTUsMTMgKzMxNSwxNCBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cihmbG9hdCBibHVyKQogCiBTdHJp
bmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0CiB7Ci0gICAg
Ly8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGlmIHlvdSBjYWxsZWQgc2V0U2hhZG93
IHdpdGggYSBub24tc3RyaW5nIGNvbG9yPwotICAgIHJldHVybiBzdGF0ZSgpLm1fc2hhZG93Q29s
b3I7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29s
b3IpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Q29sb3Io
Y29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xv
cjsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3Is
IGNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXBwbHlTaGFkb3coKTsKIH0KIApAQCAt
ODE0LDE1ICs4MTUsMTggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRv
dyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQogewogICAgIHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5t
X3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAg
IHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBhcHBseVNo
YWRvdygpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3Ip
CiB7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9y
LCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKwogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQg
PSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBi
bHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOworCiAgICAgYXBwbHlTaGFk
b3coKTsKIH0KIApAQCAtODMwLDY1ICs4MzQsNjEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAog
ewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZik7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUo
d2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IocmdiYSksIERldmlj
ZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciwg
ZmxvYXQgYWxwaGEpCiB7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUoKS5t
X3NoYWRvd0NvbG9yLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKwogICAgIHN0YXRlKCkubV9z
aGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFu
c3BhcmVudCBibGFjawotICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkK
LSAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xv
cik7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1f
c2hhZG93Qmx1ciwgQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdo
dCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBjb2xvcldpdGhPdmVycmlkZUFscGhhKHN0YXRlKCku
bV9zaGFkb3dDb2xvciwgYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQogewogICAgIHN0YXRl
KCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUo
KS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOwor
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCog
YyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGFscGhhKTsKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhl
aWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFj
ZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1f
c2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9h
dCBhKQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhl
aWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9z
aGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJG
cm9tRmxvYXRzKHIsIGcsIGIsIGEpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2lu
Z0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiBy
Z2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJh
bnNwYXJlbnQgYmxhY2sKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCks
IHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBm
bG9hdCBhKQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgs
IGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCku
bV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JB
RnJvbUNNWUtBKGMsIG0sIHksIGssIGEpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBkYyA9IGRy
YXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFkYykKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IGJsdXIsCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGRjLT5wbGF0
Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwg
c2hhZG93Q29sb3IpOwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKICNlbHNlCi0g
ICAgZGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgQ29sb3IoYywg
bSwgeSwgaywgYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGRjLT5zZXRTaGFkb3coSW50U2l6
ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29s
b3JTcGFjZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09m
ZnNldCA9IEZsb2F0U2l6ZSgpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gMDsKLSAgICBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBD
b2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgYXBwbHlTaGFkb3coKTsKIH0KIApAQCAtOTE5LDEyICs5
MTksOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3coKQogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZh
dWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hhZG93Q29sb3Iu
aXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yKTsKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQu
d2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdo
dCgpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5t
X3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRT
aGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0
ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiBzdGF0aWMgSW50U2l6
ZSBzaXplKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMmJhYzkwMi4uNjRmZGM4OCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpA
QCAtMjE4LDcgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGZsb2F0
IG1fbWl0ZXJMaW1pdDsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBtX3NoYWRvd09mZnNldDsKICAg
ICAgICAgICAgIGZsb2F0IG1fc2hhZG93Qmx1cjsKLSAgICAgICAgICAgIFN0cmluZyBtX3NoYWRv
d0NvbG9yOworICAgICAgICAgICAgUkdCQTMyIG1fc2hhZG93Q29sb3I7CiAgICAgICAgICAgICBm
bG9hdCBtX2dsb2JhbEFscGhhOwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9nbG9i
YWxDb21wb3NpdGU7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IDM1MTVlMDMuLjFkMmQzNmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgogICoKQEAgLTQ4LDEyMiArNDgsMTA3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFJHQkEzMiByZ2JhKQorICAgIDogbV90
eXBlKFJHQkEpCisgICAgLCBtX3JnYmEocmdiYSkKKyAgICAsIG1fdmFsaWQodHJ1ZSkKK3sKK30K
KwogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYgY29sb3IpCi0gICAgOiBt
X3R5cGUoQ29sb3JTdHJpbmcpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQorICAgIDogbV90eXBlKFJH
QkEpCisgICAgLCBtX3JnYmEoMCkKIHsKKyAgICBtX3ZhbGlkID0gQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKG1fcmdiYSwgY29sb3IpOwogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQg
Z3JheUxldmVsKQotICAgIDogbV90eXBlKEdyYXlMZXZlbCkKLSAgICAsIG1fYWxwaGEoMSkKLSAg
ICAsIG1fZ3JheUxldmVsKGdyYXlMZXZlbCkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9y
Z2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IDEuMGYpKQorICAgICwgbV92YWxpZCh0cnVlKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3R5cGUoQ29s
b3JTdHJpbmdXaXRoQWxwaGEpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9hbHBoYShh
bHBoYSkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9yZ2JhKDApCiB7CisgICAgaWYgKCht
X3ZhbGlkID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKG1fcmdiYSwgY29sb3IpKSkKKyAgICAgICAg
bV9yZ2JhID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShtX3JnYmEsIGFscGhhKTsKIH0KIAogQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCi0gICAg
OiBtX3R5cGUoR3JheUxldmVsKQotICAgICwgbV9hbHBoYShhbHBoYSkKLSAgICAsIG1fZ3JheUxl
dmVsKGdyYXlMZXZlbCkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9yZ2JhKG1ha2VSR0JB
MzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKKyAg
ICAsIG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0
IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiAgICAgOiBtX3R5cGUoUkdCQSkKLSAgICAs
IG1fYWxwaGEoYSkKLSAgICAsIG1fcmVkKHIpCi0gICAgLCBtX2dyZWVuKGcpCi0gICAgLCBtX2Js
dWUoYikKKyAgICAsIG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkKKyAg
ICAsIG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0
IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCiAgICAgOiBtX3R5cGUoQ01Z
S0EpCi0gICAgLCBtX2FscGhhKGEpCi0gICAgLCBtX2N5YW4oYykKLSAgICAsIG1fbWFnZW50YSht
KQotICAgICwgbV95ZWxsb3coeSkKLSAgICAsIG1fYmxhY2soaykKKyAgICAsIG1fcmdiYShtYWtl
UkdCQUZyb21DTVlLQShjLCBtLCB5LCBrLCBhKSkKKyAgICAsIG1fY215a2EobmV3IENNWUtBVmFs
dWVzKGMsIG0sIHksIGssIGEpKQorICAgICwgbV92YWxpZCh0cnVlKQogewogfQogCiBDYW52YXNT
dHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi0g
ICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFkaWVudCA6IENvbG9yU3RyaW5nKQorICAgIDogbV90
eXBlKGdyYWRpZW50ID8gR3JhZGllbnQgOiBSR0JBKQogICAgICwgbV9ncmFkaWVudChncmFkaWVu
dCkKKyAgICAsIG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxl
KFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1fdHlwZShwYXR0ZXJu
ID8gSW1hZ2VQYXR0ZXJuIDogQ29sb3JTdHJpbmcpCisgICAgOiBtX3R5cGUocGF0dGVybiA/IElt
YWdlUGF0dGVybiA6IFJHQkEpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKKyAgICAsIG1fdmFs
aWQodHJ1ZSkKIHsKIH0KIAorQ2FudmFzU3R5bGU6On5DYW52YXNTdHlsZSgpCit7CisgICAgaWYg
KG1fdHlwZSA9PSBDTVlLQSkKKyAgICAgICAgZGVsZXRlIG1fY215a2E7Cit9CisKIHZvaWQgQ2Fu
dmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7
Ci0gICAgICAgIGNhc2UgQ29sb3JTdHJpbmc6IHsKLSAgICAgICAgICAgIENvbG9yIGMgPSBDb2xv
cihtX2NvbG9yKTsKLSAgICAgICAgICAgIGlmIChjLmlzVmFsaWQoKSkgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGMucmdiKCksIERldmljZUNvbG9yU3BhY2UpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUkdCQTMy
IGNvbG9yID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgICAgICAgICAg
aWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwgbV9jb2xvcikpCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2UpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvclN0cmluZ1dpdGhB
bHBoYTogewotICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAg
ICAgaWYgKGMuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjLnJnYigpLCBtX2FscGhhKSwgRGV2aWNlQ29s
b3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0g
ICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlkZUFs
cGhhKGNvbG9yLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXlMZXZlbDoKLSAgICAgICAgICAgIC8vIFdl
J3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMg
aXNuJ3QKLSAgICAgICAgICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1MNSwgSSBkb24ndCBleHBlY3Qg
YW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkgZG8KLSAgICAgICAgICAgIC8vIHdlJ2xsIG1ha2Ug
YSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3IobV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2dyYXlMZXZlbCwgbV9h
bHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUkdCQToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1fcmVk
LCBtX2dyZWVuLCBtX2JsdWUsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENNWUtBOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
RG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEku
Ci0gICAgICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0
byBzdXBwb3J0IENZTUtBIGNvcnJlY3RseQorICAgIGNhc2UgUkdCQToKKyAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdo
IHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCisgICAgICAgIC8vIFdl
J2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29y
cmVjdGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRDTVlLU3Ry
b2tlQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY3lhbiwgbV9tYWdlbnRhLCBt
X3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7CisgICAgICAgIENHQ29udGV4dFNldENNWUtTdHJv
a2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9jbXlrYS0+
bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CiAjZWxpZiBQTEFURk9STShR
VCkKLSAgICAgICAgICAgIFFQZW4gY3VycmVudFBlbiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5wZW4oKTsKLSAgICAgICAgICAgIFFDb2xvciBjbHI7Ci0gICAgICAgICAgICBjbHIuc2V0
Q215a0YobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKLSAg
ICAgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29sb3IoY2xyKTsKLSAgICAgICAgICAgIGNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5zZXRQZW4oY3VycmVudFBlbik7CisgICAgICAgIFFQZW4gY3Vy
cmVudFBlbiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wZW4oKTsKKyAgICAgICAgUUNv
bG9yIGNscjsKKyAgICAgICAgY2xyLnNldENteWtGKG1fY215a2EtPmMsIG1fY215a2EtPm0sIG1f
Y215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOworICAgICAgICBjdXJyZW50UGVuLnNl
dENvbG9yKGNscik7CisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRQZW4o
Y3VycmVudFBlbik7CiAjZWxzZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKSwgRGV2
aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fcmdiYSwg
RGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR3JhZGllbnQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VH
cmFkaWVudChjYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEltYWdlUGF0dGVybjoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdyYWRpZW50OgorICAgICAgICBj
b250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChjYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbWFnZVBhdHRlcm46CisgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZVBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOworICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKQEAgLTE3Miw1MCArMTU3LDQ2IEBAIHZvaWQgQ2FudmFzU3R5bGU6
OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNl
IENvbG9yU3RyaW5nOiB7Ci0gICAgICAgICAgICBSR0JBMzIgcmdiYSA9IDA7IC8vIGRlZmF1bHQg
aXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29s
b3IocmdiYSwgbV9jb2xvcikpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KHJnYmEsIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDb2xvclN0cmluZ1dpdGhBbHBoYTogewotICAgICAgICAgICAgUkdCQTMy
IGNvbG9yID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgICAgICAgICAg
aWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwgbV9jb2xvcikpCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIG1f
YWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR3JheUxldmVsOgotICAgICAgICAgICAgLy8gV2UncmUgb25seSBzdXBw
b3J0aW5nIDI1NSBsZXZlbHMgb2YgZ3JheSBoZXJlLiAgU2luY2UgdGhpcyBpc24ndAotICAgICAg
ICAgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUgd2lsbCBj
YXJlLiAgSWYgdGhleSBkbwotICAgICAgICAgICAgLy8gd2UnbGwgbWFrZSBhIGZhbmNpZXIgQ29s
b3IgYWJzdHJhY3Rpb24uCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3Io
bV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2dyYXlMZXZlbCwgbV9hbHBoYSksIERldmljZUNv
bG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUkdCQToKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcihtX3JlZCwgbV9ncmVlbiwgbV9ibHVl
LCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDTVlLQTogewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgotICAgICAgICAgICAgLy8g
V2UnbGwgbmVlZCBhIGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24gdG8gc3VwcG9ydCBDWU1LQSBj
b3JyZWN0bHkKKyAgICBjYXNlIFJHQkE6CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvciht
X3JnYmEsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENNWUtB
OiB7CisgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRl
bnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KKyAgICAgICAgLy8gV2UnbGwgbmVlZCBhIGZhbmNpZXIg
Q29sb3IgYWJzdHJhY3Rpb24gdG8gc3VwcG9ydCBDTVlLQSBjb3JyZWN0bHkKICNpZiBQTEFURk9S
TShDRykKLSAgICAgICAgICAgIENHQ29udGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9h
bHBoYSk7CisgICAgICAgIENHQ29udGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIG1fY215a2EtPmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2Et
PmssIG1fY215a2EtPmEpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgICAgICBRQnJ1c2gg
Y3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNoKCk7Ci0gICAg
ICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9t
YWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50
QnJ1c2guc2V0Q29sb3IoY2xyKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5zZXRCcnVzaChjdXJyZW50QnJ1c2gpOworICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNo
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNoKCk7CisgICAgICAgIFFDb2xvciBj
bHI7CisgICAgICAgIGNsci5zZXRDbXlrRihtX2NteWthLT5jLCBtX2NteWthLT5tLCBtX2NteWth
LT55LCBtX2NteWthLT5rLCBtX2NteWthLT5hKTsKKyAgICAgICAgY3VycmVudEJydXNoLnNldENv
bG9yKGNscik7CisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRCcnVzaChj
dXJyZW50QnJ1c2gpOwogI2Vsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdiYSwgRGV2
aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgR3JhZGllbnQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBJbWFnZVBhdHRlcm46Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0
dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxHcmFkaWVudChjYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbWFnZVBhdHRlcm46CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxQ
YXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCitTdHJpbmcgc2VyaWFsaXplZENhbnZhc0NvbG9yKFJHQkEzMiByZ2JhKQoreworICAg
IENvbG9yIGNvbG9yKHJnYmEpOworCisgICAgaWYgKCFjb2xvci5oYXNBbHBoYSgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiMlMDJ4JTAyeCUwMngiLCBjb2xvci5yZWQoKSwgY29s
b3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKworICAgIC8vIE1hdGNoIEdlY2tvICgwLjAgZm9y
IHplcm8sIDUgZGVjaW1hbHMgZm9yIGFueXRoaW5nIGVsc2UpCisgICAgaWYgKCFjb2xvci5hbHBo
YSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInJnYmEoJXUsICV1LCAldSwgMC4w
KSIsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCkpOworCisgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwgJXUsICUuNWYpIiwgY29sb3IucmVkKCks
IGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSAvIDI1NS4wZik7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCBmZTAxYmQxLi42OTAyZjA4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI3LDcgQEAK
ICNpZm5kZWYgQ2FudmFzU3R5bGVfaAogI2RlZmluZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM0LDggKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBD
YW52YXNQYXR0ZXJuOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAorICAgIFN0cmluZyBz
ZXJpYWxpemVkQ2FudmFzQ29sb3IoUkdCQTMyIHJnYmEpOworCiAgICAgY2xhc3MgQ2FudmFzU3R5
bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewogICAgIHB1YmxpYzoKKyAgICAg
ICAgfkNhbnZhc1N0eWxlKCk7CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5
bGU+IGNyZWF0ZShSR0JBMzIgcmdiYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxl
KHJnYmEpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgY29sb3IpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShj
b2xvcikpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUo
ZmxvYXQgZ3JheUxldmVsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoZ3JheUxl
dmVsKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGNvbG9yLCBhbHBoYSkpOyB9CkBAIC00NSwxNCArNTIsMTcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FudmFzU3R5bGUoZ3JhZGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKHBhdHRlcm4pKTsgfQogCi0gICAgICAgIFN0
cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKyAgICAgICAgU3RyaW5nIGNv
bG9yKCkgY29uc3QgeyByZXR1cm4gc2VyaWFsaXplZENhbnZhc0NvbG9yKG1fcmdiYSk7IH0KICAg
ICAgICAgQ2FudmFzR3JhZGllbnQqIGNhbnZhc0dyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9n
cmFkaWVudC5nZXQoKTsgfQogICAgICAgICBDYW52YXNQYXR0ZXJuKiBjYW52YXNQYXR0ZXJuKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCBhcHBseUZp
bGxDb2xvcihHcmFwaGljc0NvbnRleHQqKTsKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9y
KEdyYXBoaWNzQ29udGV4dCopOwogCisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsaWQ7IH0KKwogICAgIHByaXZhdGU6CisgICAgICAgIENhbnZhc1N0eWxlKFJHQkEz
MiByZ2JhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvcik7CiAgICAg
ICAgIENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCk7CiAgICAgICAgIENhbnZhc1N0eWxlKGNv
bnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKQEAgLTYyLDI2ICs3MiwyNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzR3Jh
ZGllbnQ+KTsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPik7
CiAKLSAgICAgICAgZW51bSBUeXBlIHsgQ29sb3JTdHJpbmcsIENvbG9yU3RyaW5nV2l0aEFscGhh
LCBHcmF5TGV2ZWwsIFJHQkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CisgICAg
ICAgIGVudW0gVHlwZSB7IFJHQkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CiAK
ICAgICAgICAgVHlwZSBtX3R5cGU7CiAKLSAgICAgICAgU3RyaW5nIG1fY29sb3I7CisgICAgICAg
IFJHQkEzMiBtX3JnYmE7CisKICAgICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRp
ZW50OwogICAgICAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwogCi0gICAgICAg
IGZsb2F0IG1fYWxwaGE7Ci0KLSAgICAgICAgZmxvYXQgbV9ncmF5TGV2ZWw7CisgICAgICAgIHN0
cnVjdCBDTVlLQVZhbHVlcyB7CisgICAgICAgICAgICBDTVlLQVZhbHVlcyhmbG9hdCBjeWFuLCBm
bG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkgOiBj
KGN5YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhhKSB7fQorICAg
ICAgICAgICAgZmxvYXQgYzsKKyAgICAgICAgICAgIGZsb2F0IG07CisgICAgICAgICAgICBmbG9h
dCB5OworICAgICAgICAgICAgZmxvYXQgazsKKyAgICAgICAgICAgIGZsb2F0IGE7CisgICAgICAg
IH07CiAKLSAgICAgICAgZmxvYXQgbV9yZWQ7Ci0gICAgICAgIGZsb2F0IG1fZ3JlZW47Ci0gICAg
ICAgIGZsb2F0IG1fYmx1ZTsKKyAgICAgICAgQ01ZS0FWYWx1ZXMqIG1fY215a2E7CiAKLSAgICAg
ICAgZmxvYXQgbV9jeWFuOwotICAgICAgICBmbG9hdCBtX21hZ2VudGE7Ci0gICAgICAgIGZsb2F0
IG1feWVsbG93OwotICAgICAgICBmbG9hdCBtX2JsYWNrOworICAgICAgICBib29sIG1fdmFsaWQ7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="40405"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56129</attachid>
            <date>2010-05-14 19:09:42 -0700</date>
            <delta_ts>2010-05-14 19:16:40 -0700</delta_ts>
            <desc>Proposed patch v6</desc>
            <filename>bug-38845-10.diff</filename>
            <type>text/plain</type>
            <size>49541</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTQzNzViLi5mZjI0NWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDUt
MTQgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0cnlTZXR0aW5n
U3Ryb2tlU3R5bGUpOgorICAgICAgICAodHJ5U2V0dGluZ0ZpbGxTdHlsZSk6CisgICAgICAgICh0
cnlTZXR0aW5nU2hhZG93Q29sb3IpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yKToKKyAgICAg
ICAgKHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIpOgorICAgICAgICAodHJ5U2V0dGlu
Z0ZpbGxDb2xvcldpdGhTZXR0ZXIpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0
ZXIpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcik6CisgICAgICAgICh0cnlT
ZXR0aW5nRmlsbENvbG9yUkdCQSk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JB
KToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dSR0JBKToKKyAgICAgICAgKHRyeVNldHRpbmdS
R0JBKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSk6CisgICAgICAgICh0cnlT
ZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93Q01ZS0Ep
OgorICAgICAgICAodHJ5U2V0dGluZ0NNWUtBKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsQ29s
b3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRo
T3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93V2l0aE92ZXJyaWRlQWxw
aGEpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yV2l0aE92ZXJyaWRlQWxwaGEpOgorICAgICAg
ICAodHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JHcmF5TGV2ZWwpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCk6
CisgICAgICAgICh0cnlTZXR0aW5nR3JheUxldmVsKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxs
Q29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZUNvbG9y
R3JheUxldmVsV2l0aEFscGhhKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxX
aXRoQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSk6CisgICAg
ICAgICh0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGluZ0NvbG9yKToKKyAgICAgICAgKGNoZWNrRGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNl
dC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzOgorICAgICAgICAqIGZhc3Qv
ZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVkLnR4
dDogVXBkYXRlZCBiYXNlbGluZS4KKyAgICAgICAgKiBmYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sOgorCiAyMDEwLTA1LTE0ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEluc3BpcmVkIGJ5IFNpbW9uIEZy
YXNlciwgcnViYmVyLXN0YW1wZWQgYnkgR2VvZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjMDc1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJp
YWxpemF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2NCBAQAorVGVzdCB0aGF0IGdldHRp
bmcgY29sb3IgcHJvcGVydGllcyBmcm9tIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHJldHVy
bnMgcHJvcGVybHkgZm9ybWF0dGVkIHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnN0cm9rZVN0eWxlKSBpcyAnIzAwMDAw
MCcKK1BBU1MgY2hlY2tEZWZhdWx0VmFsdWUoY3R4LmZpbGxTdHlsZSkgaXMgJyMwMDAwMDAnCitQ
QVNTIGNoZWNrRGVmYXVsdFZhbHVlKGN0eC5zaGFkb3dDb2xvcikgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhhKCdyZWQnLCAw
KSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldp
dGhPdmVycmlkZUFscGhhKCdyZWQnLCAwKSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYSgncmVkJywgMCkgaXMgJ3JnYmEoMjU1
LCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aE92ZXJyaWRlQWxwaGEo
J2JsYWNrJywgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhP
dmVycmlkZUFscGhhKCdibGFjaycsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93V2l0aE92ZXJyaWRlQWxwaGEoJ2JsYWNrJywgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JSR0JBKDAsIDAsIDAsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQ
QVNTIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEoMCwgMCwgMCwgMCkgaXMgJ3JnYmEoMCwgMCwg
MCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1JHQkEoMCwgMCwgMCwgMCkgaXMgJ3JnYmEo
MCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoMjU1LCAyNTUsIDI1
NSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEoMjU1LCAy
NTUsIDI1NSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dSR0JBKDI1NSwg
MjU1LCAyNTUsIDEpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yUkdCQSgy
NTUsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZUNvbG9yUkdCQSgyNTUsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BB
U1MgdHJ5U2V0dGluZ1NoYWRvd1JHQkEoMjU1LCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDAs
IDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JSR0JBKDI1NSwgMCwgMCwgMC40KSBpcyAn
cmdiYSgyNTUsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JB
KDI1NSwgMCwgMCwgMC40KSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93UkdCQSgyNTUsIDAsIDAsIDAuNCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjQw
MDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDAsIDAsIDAsIDApIGlzICdy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtB
KDAsIDAsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMCwgMCwgMCwgMSkgaXMgJyNm
ZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtBKDAsIDAsIDAsIDAsIDEpIGlz
ICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q01ZS0EoMCwgMCwgMCwgMCwgMSkgaXMg
JyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAwKSBp
cyAncmdiYSgyNTUsIDAsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01Z
S0EoMCwgMSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAyNTUsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDTVlLQSgwLCAxLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDI1NSwgMC4w
KScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDEsIDAsIDAsIDEpIGlzICcjZmYw
MGZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAxKSBpcyAn
I2ZmMDBmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDEsIDAsIDAsIDEpIGlzICcj
ZmYwMGZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMCwgMCwgMSwgMCkgaXMg
J3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwg
MCwgMCwgMSwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0NNWUtBKDAsIDAsIDAsIDEsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAwLCAwLCAxLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5
U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwgMCwgMCwgMSwgMSkgaXMgJyMwMDAwMDAnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAwLCAxLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCgwKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0
dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsKDApIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93R3JheUxldmVsKDApIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
R3JheUxldmVsKDAuNSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdy
YXlMZXZlbCgwLjUpIGlzICcjODA4MDgwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVs
KDAuNSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWwoMSkg
aXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbCgxKSBpcyAn
I2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCgxKSBpcyAnI2ZmZmZmZicK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLCAwKSBpcyAncmdi
YSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRo
QWxwaGEoMCwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0dyYXlMZXZlbFdpdGhBbHBoYSgwLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAsIDAuNCkgaXMgJ3JnYmEoMCwg
MCwgMCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhB
bHBoYSgwLCAwLjQpIGlzICdyZ2JhKDAsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93R3JheUxldmVsV2l0aEFscGhhKDAsIDAuNCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC40MDAw
MCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMSkgaXMg
JyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgw
LCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBo
YSgwLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdp
dGhBbHBoYSgwLjUsIDApIGlzICdyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDApIGlzICdyZ2JhKDEyOCwg
MTI4LCAxMjgsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEo
MC41LCAwKSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmls
bENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAuNSwgMC40KSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4
LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhh
KDAuNSwgMC40KSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDAuNCkgaXMgJ3JnYmEoMTI4LCAxMjgs
IDEyOCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxw
aGEoMC41LCAxKSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxl
dmVsV2l0aEFscGhhKDAuNSwgMSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dH
cmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAxKSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ0Zp
bGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgxLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMSwgMCkg
aXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlM
ZXZlbFdpdGhBbHBoYSgxLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDAuNCkgaXMgJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZl
bFdpdGhBbHBoYSgxLCAwLjQpIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDAwMDApJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDEsIDAuNCkgaXMgJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxX
aXRoQWxwaGEoMSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdy
YXlMZXZlbFdpdGhBbHBoYSgxLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0dyYXlMZXZlbFdpdGhBbHBoYSgxLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZVN0eWxlKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsU3R5bGUoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAs
IDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgncmVkJykgaXMgJyNmZjAwMDAn
CitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93Q29sb3IoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlTZXR0aW5nU3Ry
b2tlU3R5bGUoJ3doaXRlJykgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUo
J3doaXRlJykgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignd2hpdGUn
KSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCcnKSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnJykgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDb2xvcignJykgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VT
dHlsZSgnUkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsU3R5bGUoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAncmdiYSgwLCAwLCAwLCAw
LjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3JnYmEoMCwy
NTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoJ3JnYmEo
MCwyNTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcign
cmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0
eWxlKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxTdHlsZSgncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywg
MC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigncmdiYSgxLDIsMywwLjQpJykg
aXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgn
UmdCKDEsMiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCdSZ0Io
MSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignUmdCKDEs
MiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3JHYkEoMSwy
LDMsMCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxl
KCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwgMywgMC4wKScKK1BBU1MgdHJ5U2V0dGlu
Z1NoYWRvd0NvbG9yKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwgMywgMC4wKScKK1BB
U1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKHRydWUpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0
aW5nRmlsbFN0eWxlKHRydWUpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29s
b3IodHJ1ZSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZShmYWxzZSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoZmFsc2UpIGlzICcjNjY2NjY2
JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoZmFsc2UpIGlzICcjNjY2NjY2JworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlU3R5bGUoMCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxs
U3R5bGUoMCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigwKSBpcyAn
IzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKDEpIGlzICcjNjY2NjY2JworUEFT
UyB0cnlTZXR0aW5nRmlsbFN0eWxlKDEpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93Q29sb3IoMSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgtMSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoLTEpIGlzICcjNjY2NjY2Jwor
UEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoLTEpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0
aW5nU3Ryb2tlU3R5bGUoTmFOKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHls
ZShOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoTmFOKSBpcyAn
IzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKEluZmluaXR5KSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZShJbmZpbml0eSkgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDb2xvcihJbmZpbml0eSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdTdHJva2VTdHlsZShudWxsKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxT
dHlsZShudWxsKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKG51bGwp
IGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCd0cmFu
c3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29s
b3JXaXRoU2V0dGVyKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAs
IDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3JlZCcpIGlz
ICcjZmYwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcigncmVkJykgaXMg
JyNmZjAwMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCdyZWQnKSBpcyAnI2Zm
MDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcignd2hpdGUnKSBpcyAn
I2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3doaXRlJykgaXMg
JyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCd3aGl0ZScpIGlzICcj
ZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCcnKSBpcyAnIzY2
NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJycpIGlzICcjNjY2NjY2
JworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcignJykgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcign
UkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRp
bmdTaGFkb3dXaXRoU2V0dGVyKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcigncmdiYSgwLDI1NSww
LDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIo
J3JnYmEoMCwyNTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dX
aXRoU2V0dGVyKCdyZ2JhKDAsMjU1LDAsMS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0
aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdiYSgxLCAy
LCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3JnYmEo
MSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93V2l0aFNldHRlcigncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywgMC40
MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ1JnQigxLDIsMykn
KSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ1JnQigx
LDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ1Jn
QigxLDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNl
dHRlcignckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwg
MywgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3JHYkEoMSwyLDMsMCkn
KSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGlu
Z0NvbG9yKCdyZWQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlDbGVhclNoYWRv
d0FmdGVyU2V0dGluZ0NvbG9yKCdyZ2JhKDAsIDUsIDEwLCAwLjQpJykgaXMgJ3JnYmEoMCwgMCwg
MCwgMC4wKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2Vy
aWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGIx
YjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNlcmlhbGl6YXRpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxp
emF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRp
YmxlLWN0bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CmluZGV4IGRi
MDVlYzAuLjE1MGQxZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9u
LWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywxMSBAQCBUZXN0cyB0byBt
YWtlIHN1cmUgd2UgY2FuIGFzc2lnbiB0byBub24tY3RtIGVmZmVjdGVkIHByb3BlcnRpZXMgd2l0
aCBhIG5vbi1pbnZlcgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY3R4LmZp
bGxTdHlsZSBpcyAiZ3JlZW4iCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMDgwMDAiCiBQQVNT
IGltYWdlRGF0YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQ
QVNTIGltYWdlRGF0YS5kYXRhWzJdIGlzIDAKLVBBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICJncmVl
biIKK1BBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0
YVswXSBpcyAwCiBQQVNTIGltYWdlRGF0YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEu
ZGF0YVsyXSBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxNWM5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXph
dGlvbi5qcwpAQCAtMCwwICsxLDI0NyBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBnZXR0aW5n
IGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCByZXR1cm5z
IHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuIik7CisKK2N0eCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdT
dHJva2VTdHlsZSh2YWx1ZSkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBj
dHguc3Ryb2tlU3R5bGUgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbFN0eWxlKHZhbHVlKSB7CisgICAgY3R4LmZpbGxTdHls
ZSA9ICcjNjY2JzsKKyAgICBjdHguZmlsbFN0eWxlID0gdmFsdWU7CisgICAgcmV0dXJuIGN0eC5m
aWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dDb2xvcih2YWx1ZSkgewor
ICAgIGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2hhZG93Q29sb3IgPSB2YWx1
ZTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5n
Q29sb3IodmFsdWUsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VT
dHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGlu
Z0ZpbGxTdHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5
U2V0dGluZ1NoYWRvd0NvbG9yKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworfQorCitmdW5j
dGlvbiB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKHZhbHVlKSB7CisgICAgY3R4LnN0
cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcih2YWx1ZSk7CisgICAg
cmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0ZpbGxDb2xv
cldpdGhTZXR0ZXIodmFsdWUpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0
eC5zZXRGaWxsQ29sb3IodmFsdWUpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitm
dW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcih2YWx1ZSkgeworICAgIGN0eC5zaGFk
b3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2V0U2hhZG93KDAsIDAsIDAsIHZhbHVlKTsKKyAg
ICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nQ29sb3JX
aXRoU2V0dGVyKHZhbHVlLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JXaXRoU2V0dGVyKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3Vs
ZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcigiICsgdmFsdWUgKyAiKSIsIGV4cGVj
dGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoIiArIHZhbHVl
ICsgIikiLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JSR0JB
KHIsIGcsIGIsIGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRG
aWxsQ29sb3IociwgZywgYiwgYSk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1
bmN0aW9uIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEociwgZywgYiwgYSkgeworICAgIGN0eC5z
dHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IociwgZywgYiwgYSk7
CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1No
YWRvd1JHQkEociwgZywgYiwgYSkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAg
ICBjdHguc2V0U3Ryb2tlQ29sb3IociwgZywgYiwgYSk7CisgICAgcmV0dXJuIGN0eC5zdHJva2VT
dHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1JHQkEociwgZywgYiwgYSwgZXhwZWN0ZWQp
IHsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoIiArIHIgKyAiLCAiICsg
ZyArICIsICIgKyBiICsgIiwgIiArIGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgi
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQSgiICsgciArICIsICIgKyBnICsgIiwgIiArIGIgKyAi
LCAiICsgYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93
UkdCQSgiICsgciArICIsICIgKyBnICsgIiwgIiArIGIgKyAiLCAiICsgYSArICIpIiwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoYywgbSwgeSwgaywg
YSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldEZpbGxDb2xvcihj
LCBtLCB5LCBrLCBhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24g
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoYywgbSwgeSwgaywgYSkgeworICAgIGN0eC5zdHJv
a2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoYywgbSwgeSwgaywgYSk7
CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1No
YWRvd0NNWUtBKGMsIG0sIHksIGssIGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7
CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKGMsIG0sIHksIGssIGEpOworICAgIHJldHVybiBjdHgu
c3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdDTVlLQShjLCBtLCB5LCBrLCBh
LCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoIiAr
IGMgKyAiLCAiICsgbSArICIsICIgKyB5ICsgIiwgIiArIGsgKyAiLCAiICsgYSArICIpIiwgZXhw
ZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgiICsgYyAr
ICIsICIgKyBtICsgIiwgIiArIHkgKyAiLCAiICsgayArICIsICIgKyBhICsgIikiLCBleHBlY3Rl
ZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dDTVlLQSgiICsgYyArICIsICIgKyBt
ICsgIiwgIiArIHkgKyAiLCAiICsgayArICIsICIgKyBhICsgIikiLCBleHBlY3RlZCk7Cit9CisK
K2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxw
aGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxsQ29sb3Io
Y29sb3IsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24g
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSB7Cisg
ICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihjb2xv
ciwgYWxwaGEpOworICAgIHJldHVybiBjdHguc3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRy
eVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEpIHsKKyAgICBjdHgu
c2hhZG93Q29sb3IgPSAnIzY2Nic7CisgICAgY3R4LnNldFNoYWRvdygwLCAwLCAwLCBjb2xvciwg
YWxwaGEpOworICAgIHJldHVybiBjdHguc2hhZG93Q29sb3I7Cit9CisKK2Z1bmN0aW9uIHRyeVNl
dHRpbmdDb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYSwgZXhwZWN0ZWQpIHsKKyAg
ICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhhKCIgKyBjb2xv
ciArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0
aW5nU3Ryb2tlQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgiICsgY29sb3IgKyAiLCAiICsgYWxwaGEg
KyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVy
cmlkZUFscGhhKCIgKyBjb2xvciArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKGdyYXlMZXZlbCkgeworICAg
IGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldEZpbGxDb2xvcihncmF5TGV2ZWwp
OworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JHcmF5TGV2ZWwoZ3JheUxldmVsKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2
NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihncmF5TGV2ZWwpOworICAgIHJldHVybiBjdHgu
c3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWwoZ3Jh
eUxldmVsKSB7CisgICAgY3R4LnNoYWRvd0NvbG9yID0gJyM2NjYnOworICAgIGN0eC5zZXRTaGFk
b3coMCwgMCwgMCwgZ3JheUxldmVsKTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nR3JheUxldmVsKGdyYXlMZXZlbCwgZXhwZWN0ZWQpIHsKKyAg
ICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCgiICsgZ3JheUxldmVsICsg
IikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlM
ZXZlbCgiICsgZ3JheUxldmVsICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNl
dHRpbmdTaGFkb3dHcmF5TGV2ZWwoIiArIGdyYXlMZXZlbCArICIpIiwgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKGdyYXlMZXZl
bCwgYWxwaGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxs
Q29sb3IoZ3JheUxldmVsLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisK
K2Z1bmN0aW9uIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2
ZWwsIGFscGhhKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRT
dHJva2VDb2xvcihncmF5TGV2ZWwsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxl
OworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKGdyYXlM
ZXZlbCwgYWxwaGEpIHsKKyAgICBjdHguc2hhZG93Q29sb3IgPSAnIzY2Nic7CisgICAgY3R4LnNl
dFNoYWRvdygwLCAwLCAwLCBncmF5TGV2ZWwsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LnNoYWRv
d0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKGdyYXlM
ZXZlbCwgYWxwaGEsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdGaWxsQ29s
b3JHcmF5TGV2ZWxXaXRoQWxwaGEoIiArIGdyYXlMZXZlbCArICIsICIgKyBhbHBoYSArICIpIiwg
ZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxX
aXRoQWxwaGEoIiArIGdyYXlMZXZlbCArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOwor
ICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKCIgKyBncmF5
TGV2ZWwgKyAiLCAiICsgYWxwaGEgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5
Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcih2YWx1ZSkgeworICAgIGN0eC5zaGFkb3dDb2xv
ciA9IHZhbHVlOworICAgIGN0eC5jbGVhclNoYWRvdygpOworICAgIHJldHVybiBjdHguc2hhZG93
Q29sb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRGVmYXVsdFZhbHVlKHZhbHVlKSB7CisgICAgcmV0
dXJuIHZhbHVlOworfQorCitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnN0cm9rZVN0
eWxlKSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjaGVja0RlZmF1bHRWYWx1ZShjdHguZmls
bFN0eWxlKSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjaGVja0RlZmF1bHRWYWx1ZShjdHgu
c2hhZG93Q29sb3IpIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CisKK3RyeVNldHRpbmdDb2xv
cldpdGhPdmVycmlkZUFscGhhKCIncmVkJyIsIDAsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
Cit0cnlTZXR0aW5nQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgiJ2JsYWNrJyIsIDEsICInIzAwMDAw
MCciKTsKKwordHJ5U2V0dGluZ1JHQkEoMCwgMCwgMCwgMC4wLCAiJ3JnYmEoMCwgMCwgMCwgMC4w
KSciKTsKK3RyeVNldHRpbmdSR0JBKDI1NSwgMjU1LCAyNTUsIDEuMCwgIicjZmZmZmZmJyIpOwor
dHJ5U2V0dGluZ1JHQkEoMjU1LCAwLCAwLCAwLjAsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
Cit0cnlTZXR0aW5nUkdCQSgyNTUsIDAsIDAsIDAuNCwgIidyZ2JhKDI1NSwgMCwgMCwgMC40MDAw
MCknIik7CisKK3RyeVNldHRpbmdDTVlLQSgwLCAwLCAwLCAwLCAwLjAsICIncmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjApJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDAsIDAsIDAsIDEuMCwgIicjZmZm
ZmZmJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDEsIDAsIDAsIDAuMCwgIidyZ2JhKDI1NSwgMCwg
MjU1LCAwLjApJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDEsIDAsIDAsIDEuMCwgIicjZmYwMGZm
JyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDAsIDAsIDEsIDAuMCwgIidyZ2JhKDAsIDAsIDAsIDAu
MCknIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMCwgMCwgMSwgMS4wLCAiJyMwMDAwMDAnIik7CisK
K3RyeVNldHRpbmdHcmF5TGV2ZWwoMC4wLCAiJyMwMDAwMDAnIik7Cit0cnlTZXR0aW5nR3JheUxl
dmVsKDAuNSwgIicjODA4MDgwJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbCgxLjAsICInI2ZmZmZm
ZiciKTsKKwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjAsIDAuMCwgIidyZ2JhKDAs
IDAsIDAsIDAuMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAuMCwgMC40LCAi
J3JnYmEoMCwgMCwgMCwgMC40MDAwMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhh
KDAuMCwgMS4wLCAiJyMwMDAwMDAnIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAu
NSwgMC4wLCAiJ3JnYmEoMTI4LCAxMjgsIDEyOCwgMC4wKSciKTsKK3RyeVNldHRpbmdHcmF5TGV2
ZWxXaXRoQWxwaGEoMC41LCAwLjQsICIncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQwMDAwKSciKTsK
K3RyeVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAxLjAsICInIzgwODA4MCciKTsKK3Ry
eVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMS4wLCAwLjAsICIncmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgxLjAsIDAuNCwgIidyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuNDAwMDApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBo
YSgxLjAsIDEuMCwgIicjZmZmZmZmJyIpOworCit0cnlTZXR0aW5nQ29sb3IoIid0cmFuc3BhcmVu
dCciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcigiJ3JlZCciLCAi
JyNmZjAwMDAnIik7Cit0cnlTZXR0aW5nQ29sb3IoIid3aGl0ZSciLCAiJyNmZmZmZmYnIik7Cit0
cnlTZXR0aW5nQ29sb3IoIicnIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCInUkdC
QSgwLCAwLCAwLCAwKSciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xv
cigiJ3JnYmEoMCwyNTUsMCwxLjApJyIsICInIzAwZmYwMCciKTsKK3RyeVNldHRpbmdDb2xvcigi
J3JnYmEoMSwyLDMsMC40KSciLCAiJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknIik7Cit0cnlTZXR0
aW5nQ29sb3IoIidSZ0IoMSwyLDMpJyIsICInIzAxMDIwMyciKTsKK3RyeVNldHRpbmdDb2xvcigi
J3JHYkEoMSwyLDMsMCknIiwgIidyZ2JhKDEsIDIsIDMsIDAuMCknIik7Cit0cnlTZXR0aW5nQ29s
b3IoInRydWUiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3IoImZhbHNlIiwgIicjNjY2
NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCIwIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0Nv
bG9yKCIxIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCItMSIsICInIzY2NjY2Nici
KTsKK3RyeVNldHRpbmdDb2xvcigiTmFOIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9y
KCJJbmZpbml0eSIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigibnVsbCIsICInIzY2
NjY2NiciKTsKKwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3RyYW5zcGFyZW50JyIsICIn
cmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3JlZCci
LCAiJyNmZjAwMDAnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCInd2hpdGUnIiwgIicj
ZmZmZmZmJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJyciLCAiJyM2NjY2NjYnIik7
Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCInUkdCQSgwLCAwLCAwLCAwKSciLCAiJ3JnYmEo
MCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIidyZ2JhKDAsMjU1
LDAsMS4wKSciLCAiJyMwMGZmMDAnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCIncmdi
YSgxLDIsMywwLjQpJyIsICIncmdiYSgxLCAyLCAzLCAwLjQwMDAwKSciKTsKK3RyeVNldHRpbmdD
b2xvcldpdGhTZXR0ZXIoIidSZ0IoMSwyLDMpJyIsICInIzAxMDIwMyciKTsKK3RyeVNldHRpbmdD
b2xvcldpdGhTZXR0ZXIoIidyR2JBKDEsMiwzLDApJyIsICIncmdiYSgxLCAyLCAzLCAwLjApJyIp
OworCitzaG91bGRCZSgidHJ5Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcigncmVkJykiLCAi
J3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJ0cnlDbGVhclNoYWRvd0FmdGVyU2V0
dGluZ0NvbG9yKCdyZ2JhKDAsIDUsIDEwLCAwLjQpJykiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSci
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgt
bm9uLWludmVydGlibGUtY3RtLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcwppbmRl
eCBmZjAwNTNlLi43Y2I5MWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3Rt
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanMKQEAgLTE2LDcgKzE2LDcgQEAg
ZnVuY3Rpb24gdGVzdFBpeGVsKHgseSwgciwgZywgYikgewogY3R4LnNhdmUoKTsKIGN0eC5zY2Fs
ZSgwLCAwKTsKIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5maWxsU3R5
bGUnLCAnImdyZWVuIicpOworc2hvdWxkQmUoJ2N0eC5maWxsU3R5bGUnLCAnIiMwMDgwMDAiJyk7
CiBjdHguc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApOwogY3R4LmZpbGxSZWN0KDAsMCwx
MDAsMTAwKTsKIHRlc3RQaXhlbCg1MCwgNTAsIDAsIDEyOCwgMCk7CkBAIC0yOCw3ICsyOCw3IEBA
IGN0eC5maWxsU3R5bGUgPSAicmVkIjsKIGN0eC5maWxsUmVjdCgwLDAsMTAwLDEwMCk7CiBjdHgu
c2NhbGUoMCwgMCk7CiBjdHguc3Ryb2tlU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5z
dHJva2VTdHlsZScsICciZ3JlZW4iJyk7CitzaG91bGRCZSgnY3R4LnN0cm9rZVN0eWxlJywgJyIj
MDA4MDAwIicpOwogY3R4LmxpbmVXaWR0aCA9IDEwMDsKIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwg
MCwgMSwgMCwgMCk7CiBjdHguc3Ryb2tlUmVjdCgwLDAsMTAwLDEwMCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMt
bnVsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQKaW5kZXggYmQ1ZTk3ZC4uOGJk
ZmQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVs
ZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVk
LnR4dApAQCAtMyw2ICszLDYgQEAgVGhpcyB0ZXN0IHNldHRpbmcgdmFyaW91cyBhdHRyaWJ1dGVz
IG9mIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIEphdmFTY3JpcHQKIFRFU1QgU1VDQ0VF
REVEOiBUaGUgdmFsdWUgd2FzIHRoZSBzdHJpbmcgJ3NvdXJjZS1vdmVyJy4gW3Rlc3RlZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXQogVEVTVCBTVUND
RUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnYnV0dCcuIFt0ZXN0ZWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmxpbmVDYXBdCiBURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0
aGUgc3RyaW5nICdtaXRlcicuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmxpbmVK
b2luXQotVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIGVtcHR5IHN0cmluZy4gW3Rl
c3RlZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2hhZG93Q29sb3JdCitURVNUIFNVQ0NFRURF
RDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5nICdyZ2JhKDAsIDAsIDAsIDAuMCknLiBbdGVzdGVk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zaGFkb3dDb2xvcl0KIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMt
bnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQt
YXR0cmlidXRlLWpzLW51bGwuaHRtbAppbmRleCBkOWU3ZjdhLi4zYWNjNjcwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUt
anMtbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1l
bGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgIHtuYW1lOiAnZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uJywgZXhwZWN0
ZWROdWxsOiAnc291cmNlLW92ZXInfSwKICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAn
bGluZUNhcCcsIGV4cGVjdGVkTnVsbDogJ2J1dHQnfSwKICAgICAgICAgICAgICAgICAgICAgICAg
IHtuYW1lOiAnbGluZUpvaW4nLCBleHBlY3RlZE51bGw6ICdtaXRlcid9LAotICAgICAgICAgICAg
ICAgICAgICAgICAge25hbWU6ICdzaGFkb3dDb2xvcicsIGV4cGVjdGVkTnVsbDogJyd9ICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ3NoYWRv
d0NvbG9yJywgZXhwZWN0ZWROdWxsOiAncmdiYSgwLCAwLCAwLCAwLjApJ30KICAgICAgICAgICAg
ICAgICAgICAgXQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNiNmEzNzQuLjA4
MjhlOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDUtMTQgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFz
LmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQncyBwcm9wZXJ0eSBnZXR0ZXJzIHRo
YXQgcmV0dXJuIGNvbG9ycyBzaG91bGQKKyAgICAgICAgc2VyaWFsaXplIHRoZW0gaW4gYWNjb3Jk
YW5jZSB3aXRoIHRoZSBIVE1MNSBzcGVjICg0LjguMTEuMS40KQorICAgICAgICBTZXR0ZXJzIHNo
b3VsZCBpZ25vcmUgaW52YWxpZCBjb2xvcnMuCisKKyAgICAgICAgQWxzbywgc2hhZG93Q29sb3Ig
c2hvdWxkIGluaXRpYWxseSBiZSB0cmFuc3BhcmVudCBibGFjayAoNC44LjExLjEuNikKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDUKKworICAg
ICAgICBSZWZhY3RvcmVkIENhbnZhc1N0eWxlIHRvIHN0b3JlIGFuIFJHQkEzMiBpbnN0ZWFkIG9m
IFJHQkEgY29tcG9uZW50cyBhbmQvb3IgdGhlIGNvbG9yIHN0cmluZy4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5odG1sCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlcmlhbGl6ZWRDYW52YXNDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNNWUtB
VmFsdWVzOjpDTVlLQVZhbHVlcyk6CisKIDIwMTAtMDUtMTQgIE5vYW0gUm9zZW50aGFsICA8bm9h
bS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IDY0MzBkZGUuLmM0ZjE5ODkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CkBAIC0xMTgs
MTQgKzExOCwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogfQog
CiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCi0gICAgOiBtX3N0cm9r
ZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoIiMwMDAwMDAiKSkKLSAgICAsIG1fZmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGUoIiMwMDAwMDAiKSkKKyAgICA6IG1fc3Ryb2tlU3R5bGUoQ2Fu
dmFzU3R5bGU6OmNyZWF0ZShDb2xvcjo6YmxhY2spKQorICAgICwgbV9maWxsU3R5bGUoQ2FudmFz
U3R5bGU6OmNyZWF0ZShDb2xvcjo6YmxhY2spKQogICAgICwgbV9saW5lV2lkdGgoMSkKICAgICAs
IG1fbGluZUNhcChCdXR0Q2FwKQogICAgICwgbV9saW5lSm9pbihNaXRlckpvaW4pCiAgICAgLCBt
X21pdGVyTGltaXQoMTApCiAgICAgLCBtX3NoYWRvd0JsdXIoMCkKLSAgICAsIG1fc2hhZG93Q29s
b3IoImJsYWNrIikKKyAgICAsIG1fc2hhZG93Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQogICAg
ICwgbV9nbG9iYWxBbHBoYSgxKQogICAgICwgbV9nbG9iYWxDb21wb3NpdGUoQ29tcG9zaXRlU291
cmNlT3ZlcikKICAgICAsIG1faW52ZXJ0aWJsZUNUTSh0cnVlKQpAQCAtMzE1LDEzICszMTUsMTQg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0JsdXIoZmxvYXQgYmx1
cikKIAogU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBpZiB5b3UgY2FsbGVk
IHNldFNoYWRvdyB3aXRoIGEgbm9uLXN0cmluZyBjb2xvcj8KLSAgICByZXR1cm4gc3RhdGUoKS5t
X3NoYWRvd0NvbG9yOworICAgIHJldHVybiBzZXJpYWxpemVkQ2FudmFzQ29sb3Ioc3RhdGUoKS5t
X3NoYWRvd0NvbG9yKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvd0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yID0gY29sb3I7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUoKS5tX3No
YWRvd0NvbG9yLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKwogICAgIGFwcGx5U2hhZG93KCk7
CiB9CiAKQEAgLTgxNCwxNSArODE1LDE4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1cikKIHsKICAg
ICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAg
IHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ig
PSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAg
ICAgYXBwbHlTaGFkb3coKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJp
bmcmIGNvbG9yKQogeworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgY29sb3IpKQorICAgICAgICByZXR1cm47CisKICAgICBzdGF0ZSgpLm1fc2hh
ZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFk
b3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKKwogICAg
IGFwcGx5U2hhZG93KCk7CiB9CiAKQEAgLTgzMCw2NSArODM0LDYyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRo
LCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBtYWtlUkdC
QTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRz
KGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOwotICAgIGMtPnNldFNoYWRv
dyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJn
YmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwg
LWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERl
dmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmlu
ZyYgY29sb3IsIGZsb2F0IGFscGhhKQogeworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKQorICAgICAgICByZXR1cm47CisKKyAgICBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgYWxwaGEpOwogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNp
emUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAg
IHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBj
ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgIGlm
ICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkKLSAgICAgICAgQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xvcik7Ci0gICAgYy0+c2V0U2hhZG93
KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IoY29s
b3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dC
bHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7CiAgICAg
c3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
dGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
IiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3Jh
eUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5
TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2Up
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIs
IGZsb2F0IGEpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0
aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFrZVJH
QkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdC
QTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsgLy8gZGVmYXVsdCBp
cyB0cmFuc3BhcmVudCBibGFjawotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNl
KTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9z
aGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQog
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0
IGssIGZsb2F0IGEpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFr
ZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRj
ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWRjKQpAQCAtOTAxLDcgKzkwMiw3IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGMt
PnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lkdGgsIC1oZWlnaHQpLCBi
bHVyLCBzaGFkb3dDb2xvcik7CiAgICAgQ0dDb2xvclJlbGVhc2Uoc2hhZG93Q29sb3IpOwogI2Vs
c2UKLSAgICBkYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBDb2xv
cihjLCBtLCB5LCBrLCBhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKICNlbmRpZgogfQogCkBAIC05MDksNyArOTEwLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkKIHsKICAgICBzdGF0ZSgpLm1fc2hh
ZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSAwOwot
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC05MTks
MTIgKzkyMCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdygp
CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdiYSA9IDA7IC8v
IGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dD
b2xvci5pc0VtcHR5KCkpCi0gICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0
ZSgpLm1fc2hhZG93Q29sb3IpOwogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09m
ZnNldC53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQu
aGVpZ2h0KCk7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0
ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IocmdiYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGMt
PnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIs
IHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHN0YXRpYyBJ
bnRTaXplIHNpemUoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCAyYmFjOTAyLi42NGZkYzg4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
LmgiCkBAIC0yMTgsNyArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
ZmxvYXQgbV9taXRlckxpbWl0OwogICAgICAgICAgICAgRmxvYXRTaXplIG1fc2hhZG93T2Zmc2V0
OwogICAgICAgICAgICAgZmxvYXQgbV9zaGFkb3dCbHVyOwotICAgICAgICAgICAgU3RyaW5nIG1f
c2hhZG93Q29sb3I7CisgICAgICAgICAgICBSR0JBMzIgbV9zaGFkb3dDb2xvcjsKICAgICAgICAg
ICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBt
X2dsb2JhbENvbXBvc2l0ZTsKICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9y
bTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggMzUxNWUwMy4uZGJlOWEzYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+CiAgKgpAQCAtNDgsMTIyICs0OCw5NSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9y
KQotICAgIDogbV90eXBlKENvbG9yU3RyaW5nKQotICAgICwgbV9jb2xvcihjb2xvcikKK0NhbnZh
c1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKKyAgICA6IG1fdHlwZShSR0JBKQorICAg
ICwgbV9yZ2JhKHJnYmEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBn
cmF5TGV2ZWwpCi0gICAgOiBtX3R5cGUoR3JheUxldmVsKQotICAgICwgbV9hbHBoYSgxKQotICAg
ICwgbV9ncmF5TGV2ZWwoZ3JheUxldmVsKQotewotfQotCi1DYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3R5cGUoQ29sb3JT
dHJpbmdXaXRoQWxwaGEpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9hbHBoYShhbHBo
YSkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRz
KGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpKQogewogfQogCiBDYW52YXNT
dHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1f
dHlwZShHcmF5TGV2ZWwpCi0gICAgLCBtX2FscGhhKGFscGhhKQotICAgICwgbV9ncmF5TGV2ZWwo
Z3JheUxldmVsKQorICAgIDogbV90eXBlKFJHQkEpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZy
b21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKQogewogfQog
CiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxv
YXQgYSkKICAgICA6IG1fdHlwZShSR0JBKQotICAgICwgbV9hbHBoYShhKQotICAgICwgbV9yZWQo
cikKLSAgICAsIG1fZ3JlZW4oZykKLSAgICAsIG1fYmx1ZShiKQorICAgICwgbV9yZ2JhKG1ha2VS
R0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKICAgICA6
IG1fdHlwZShDTVlLQSkKLSAgICAsIG1fYWxwaGEoYSkKLSAgICAsIG1fY3lhbihjKQotICAgICwg
bV9tYWdlbnRhKG0pCi0gICAgLCBtX3llbGxvdyh5KQotICAgICwgbV9ibGFjayhrKQorICAgICwg
bV9yZ2JhKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpKQorICAgICwgbV9jbXlrYShj
LCBtLCB5LCBrLCBhKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi0gICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFk
aWVudCA6IENvbG9yU3RyaW5nKQorICAgIDogbV90eXBlKGdyYWRpZW50ID8gR3JhZGllbnQgOiBS
R0JBKQogICAgICwgbV9ncmFkaWVudChncmFkaWVudCkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1fdHlw
ZShwYXR0ZXJuID8gSW1hZ2VQYXR0ZXJuIDogQ29sb3JTdHJpbmcpCisgICAgOiBtX3R5cGUocGF0
dGVybiA/IEltYWdlUGF0dGVybiA6IFJHQkEpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKIHsK
IH0KIAorUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGNvbG9yKQoreworICAgIFJHQkEzMiByZ2JhOworICAgIGlmICghQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7Cit9CisKK1Bhc3NSZWZQdHI8Q2FudmFzU3R5
bGU+IENhbnZhc1N0eWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEp
Cit7CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Iocmdi
YSwgY29sb3IpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpKSk7Cit9CisKIHZv
aWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7Ci0gICAgICAgIGNhc2UgQ29sb3JTdHJpbmc6IHsKLSAgICAgICAgICAgIENvbG9yIGMg
PSBDb2xvcihtX2NvbG9yKTsKLSAgICAgICAgICAgIGlmIChjLmlzVmFsaWQoKSkgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGMucmdiKCksIERldmljZUNvbG9yU3Bh
Y2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
UkdCQTMyIGNvbG9yID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgICAg
ICAgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwgbV9jb2xvcikpCi0gICAgICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2Up
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvclN0cmlu
Z1dpdGhBbHBoYTogewotICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAg
ICAgICAgICAgaWYgKGMuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjLnJnYigpLCBtX2FscGhhKSwgRGV2
aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJs
YWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9y
KSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVy
cmlkZUFscGhhKGNvbG9yLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXlMZXZlbDoKLSAgICAgICAgICAg
IC8vIFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNl
IHRoaXMgaXNuJ3QKLSAgICAgICAgICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1MNSwgSSBkb24ndCBl
eHBlY3QgYW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkgZG8KLSAgICAgICAgICAgIC8vIHdlJ2xs
IG1ha2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2dyYXlMZXZl
bCwgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUkdCQToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KG1fcmVkLCBtX2dyZWVuLCBtX2JsdWUsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENNWUtBOiB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4
dCBBUEkuCi0gICAgICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFj
dGlvbiB0byBzdXBwb3J0IENZTUtBIGNvcnJlY3RseQorICAgIGNhc2UgUkdCQToKKyAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCisgICAgICAg
IC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01Z
S0EgY29ycmVjdGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRD
TVlLU3Ryb2tlQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY3lhbiwgbV9tYWdl
bnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7CisgICAgICAgIENHQ29udGV4dFNldENN
WUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS5jLCBtX2Nt
eWthLm0sIG1fY215a2EueSwgbV9jbXlrYS5rLCBtX2NteWthLmEpOwogI2VsaWYgUExBVEZPUk0o
UVQpCi0gICAgICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+cGVuKCk7Ci0gICAgICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNl
dENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Ci0g
ICAgICAgICAgICBjdXJyZW50UGVuLnNldENvbG9yKGNscik7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOworICAgICAgICBRUGVuIGN1
cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVuKCk7CisgICAgICAgIFFD
b2xvciBjbHI7CisgICAgICAgIGNsci5zZXRDbXlrRihtX2NteWthLmMsIG1fY215a2EubSwgbV9j
bXlrYS55LCBtX2NteWthLmssIG1fY215a2EuYSk7CisgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29s
b3IoY2xyKTsKKyAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldFBlbihjdXJy
ZW50UGVuKTsKICNlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBEZXZp
Y2VDb2xvclNwYWNlKTsKICNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBHcmFkaWVudDoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRp
ZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
UGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNvbnRl
eHQtPnNldFN0cm9rZUdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEltYWdlUGF0dGVybjoKKyAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KIApAQCAtMTcyLDUwICsxNDUsNDYgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBw
bHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgQ29s
b3JTdHJpbmc6IHsKLSAgICAgICAgICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0
cmFuc3BhcmVudCBibGFjawotICAgICAgICAgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihy
Z2JhLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Iocmdi
YSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBSR0JBMzIgY29s
b3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAo
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgbV9hbHBo
YSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBHcmF5TGV2ZWw6Ci0gICAgICAgICAgICAvLyBXZSdyZSBvbmx5IHN1cHBvcnRp
bmcgMjU1IGxldmVscyBvZiBncmF5IGhlcmUuICBTaW5jZSB0aGlzIGlzbid0Ci0gICAgICAgICAg
ICAvLyBldmVuIHBhcnQgb2YgSFRNTDUsIEkgZG9uJ3QgZXhwZWN0IGFueW9uZSB3aWxsIGNhcmUu
ICBJZiB0aGV5IGRvCi0gICAgICAgICAgICAvLyB3ZSdsbCBtYWtlIGEgZmFuY2llciBDb2xvciBh
YnN0cmFjdGlvbi4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcihtX2dy
YXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JT
cGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSR0JBOgotICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKG1fcmVkLCBtX2dyZWVuLCBtX2JsdWUsIG1f
YWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENNWUtBOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRm
b3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0gICAgICAgICAgICAvLyBXZSds
bCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENZTUtBIGNvcnJl
Y3RseQorICAgIGNhc2UgUkdCQToKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ01ZS0E6IHsK
KyAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBH
cmFwaGljc0NvbnRleHQgQVBJLgorICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xv
ciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtBIGNvcnJlY3RseQogI2lmIFBMQVRGT1JNKENH
KQotICAgICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhh
KTsKKyAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSwgbV9jbXlrYS5jLCBtX2NteWthLm0sIG1fY215a2EueSwgbV9jbXlrYS5rLCBtX2Nt
eWthLmEpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgICAgICBRQnJ1c2ggY3VycmVudEJy
dXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNoKCk7Ci0gICAgICAgICAgICBR
Q29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBt
X3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50QnJ1c2guc2V0
Q29sb3IoY2xyKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRC
cnVzaChjdXJyZW50QnJ1c2gpOworICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmJydXNoKCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAg
ICAgIGNsci5zZXRDbXlrRihtX2NteWthLmMsIG1fY215a2EubSwgbV9jbXlrYS55LCBtX2NteWth
LmssIG1fY215a2EuYSk7CisgICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOworICAg
ICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0QnJ1c2goY3VycmVudEJydXNoKTsK
ICNlbHNlCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9jeWFuLCBt
X21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2Up
OwogI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdy
YWRpZW50OgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNhbnZhc0dyYWRp
ZW50KCktPmdyYWRpZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1h
Z2VQYXR0ZXJuOgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4oY2FudmFzUGF0
dGVybigpLT5wYXR0ZXJuKCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICBjYXNlIEdyYWRpZW50OgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSW1hZ2VQYXR0ZXJuOgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQ
YXR0ZXJuKCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworU3RyaW5n
IHNlcmlhbGl6ZWRDYW52YXNDb2xvcihSR0JBMzIgcmdiYSkKK3sKKyAgICBDb2xvciBjb2xvcihy
Z2JhKTsKKworICAgIGlmICghY29sb3IuaGFzQWxwaGEoKSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIjJTAyeCUwMnglMDJ4IiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNv
bG9yLmJsdWUoKSk7CisKKyAgICAvLyBNYXRjaCBHZWNrbyAoMC4wIGZvciB6ZXJvLCA1IGRlY2lt
YWxzIGZvciBhbnl0aGluZyBlbHNlKQorICAgIGlmICghY29sb3IuYWxwaGEoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwgJXUsIDAuMCkiLCBjb2xvci5yZWQo
KSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgicmdiYSgldSwgJXUsICV1LCAlLjVmKSIsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigp
LCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCkgLyAyNTUuMGYpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggZmUwMWJkMS4uMGY1YWUxNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjaWZuZGVmIENhbnZh
c1N0eWxlX2gKICNkZWZpbmUgQ2FudmFzU3R5bGVfaAogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwx
OCArMzYsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhbnZhc1BhdHRlcm47
CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCisgICAgU3RyaW5nIHNlcmlhbGl6ZWRDYW52
YXNDb2xvcihSR0JBMzIgcmdiYSk7CisKICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENhbnZhc1N0eWxlPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3IpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvcikpOyB9CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoUkdCQTMyIHJnYmEpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKTsKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBh
bHBoYSk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoZmxv
YXQgZ3JheUxldmVsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoZ3JheUxldmVs
KSk7IH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZh
c1N0eWxlKGNvbG9yLCBhbHBoYSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBjcmVhdGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYXlMZXZlbCwgYWxwaGEpKTsgfQogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyLCBnLCBiLCBh
KSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgQ2FudmFzU3R5bGUoYywgbSwgeSwgaywgYSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3Jh
ZGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmFkaWVudCkpOyB9CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxD
YW52YXNQYXR0ZXJuPiBwYXR0ZXJuKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUo
cGF0dGVybikpOyB9CiAKLSAgICAgICAgU3RyaW5nIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvcjsgfQorICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBzZXJpYWxpemVk
Q2FudmFzQ29sb3IobV9yZ2JhKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCogY2FudmFzR3Jh
ZGllbnQoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAgICAgIENhbnZh
c1BhdHRlcm4qIGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7
IH0KIApAQCAtNTMsMzUgKzU4LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBhcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCopOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgQ2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvcik7CisgICAgICAgIENhbnZhc1N0
eWxlKFJHQkEzMiByZ2JhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsKTsK
LSAgICAgICAgQ2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOwog
ICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKICAgICAg
ICAgQ2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAg
ICAgIENhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0
IGEpOwogICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50Pik7CiAg
ICAgICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4pOwogCi0gICAgICAg
IGVudW0gVHlwZSB7IENvbG9yU3RyaW5nLCBDb2xvclN0cmluZ1dpdGhBbHBoYSwgR3JheUxldmVs
LCBSR0JBLCBDTVlLQSwgR3JhZGllbnQsIEltYWdlUGF0dGVybiB9OworICAgICAgICBlbnVtIFR5
cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQsIEltYWdlUGF0dGVybiB9OwogCiAgICAgICAgIFR5
cGUgbV90eXBlOwogCi0gICAgICAgIFN0cmluZyBtX2NvbG9yOworICAgICAgICBSR0JBMzIgbV9y
Z2JhOworCiAgICAgICAgIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gbV9ncmFkaWVudDsKICAgICAg
ICAgUmVmUHRyPENhbnZhc1BhdHRlcm4+IG1fcGF0dGVybjsKIAotICAgICAgICBmbG9hdCBtX2Fs
cGhhOwotCi0gICAgICAgIGZsb2F0IG1fZ3JheUxldmVsOwotCi0gICAgICAgIGZsb2F0IG1fcmVk
OwotICAgICAgICBmbG9hdCBtX2dyZWVuOwotICAgICAgICBmbG9hdCBtX2JsdWU7Ci0KLSAgICAg
ICAgZmxvYXQgbV9jeWFuOwotICAgICAgICBmbG9hdCBtX21hZ2VudGE7Ci0gICAgICAgIGZsb2F0
IG1feWVsbG93OwotICAgICAgICBmbG9hdCBtX2JsYWNrOworICAgICAgICBzdHJ1Y3QgQ01ZS0FW
YWx1ZXMgeworICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoKSB7fQorICAgICAgICAgICAgQ01ZS0FW
YWx1ZXMoZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFj
aywgZmxvYXQgYWxwaGEpIDogYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxsb3cpLCBrKGJsYWNr
KSwgYShhbHBoYSkge30KKyAgICAgICAgICAgIGZsb2F0IGM7CisgICAgICAgICAgICBmbG9hdCBt
OworICAgICAgICAgICAgZmxvYXQgeTsKKyAgICAgICAgICAgIGZsb2F0IGs7CisgICAgICAgICAg
ICBmbG9hdCBhOworICAgICAgICB9IG1fY215a2E7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56131</attachid>
            <date>2010-05-14 19:16:40 -0700</date>
            <delta_ts>2010-05-18 09:33:33 -0700</delta_ts>
            <desc>Proposed patch v7</desc>
            <filename>bug-38845-11.diff</filename>
            <type>text/plain</type>
            <size>49525</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTQzNzViLi5mZjI0NWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDUt
MTQgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qczogQWRkZWQuCisgICAgICAgICh0cnlTZXR0aW5n
U3Ryb2tlU3R5bGUpOgorICAgICAgICAodHJ5U2V0dGluZ0ZpbGxTdHlsZSk6CisgICAgICAgICh0
cnlTZXR0aW5nU2hhZG93Q29sb3IpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yKToKKyAgICAg
ICAgKHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIpOgorICAgICAgICAodHJ5U2V0dGlu
Z0ZpbGxDb2xvcldpdGhTZXR0ZXIpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0
ZXIpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcik6CisgICAgICAgICh0cnlT
ZXR0aW5nRmlsbENvbG9yUkdCQSk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JB
KToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dSR0JBKToKKyAgICAgICAgKHRyeVNldHRpbmdS
R0JBKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSk6CisgICAgICAgICh0cnlT
ZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93Q01ZS0Ep
OgorICAgICAgICAodHJ5U2V0dGluZ0NNWUtBKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsQ29s
b3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRo
T3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93V2l0aE92ZXJyaWRlQWxw
aGEpOgorICAgICAgICAodHJ5U2V0dGluZ0NvbG9yV2l0aE92ZXJyaWRlQWxwaGEpOgorICAgICAg
ICAodHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JHcmF5TGV2ZWwpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCk6
CisgICAgICAgICh0cnlTZXR0aW5nR3JheUxldmVsKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxs
Q29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZUNvbG9y
R3JheUxldmVsV2l0aEFscGhhKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxX
aXRoQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSk6CisgICAg
ICAgICh0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGluZ0NvbG9yKToKKyAgICAgICAgKGNoZWNrRGVm
YXVsdFZhbHVlKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNl
dC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLmpzOgorICAgICAgICAqIGZhc3Qv
ZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVkLnR4
dDogVXBkYXRlZCBiYXNlbGluZS4KKyAgICAgICAgKiBmYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sOgorCiAyMDEwLTA1LTE0ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEluc3BpcmVkIGJ5IFNpbW9uIEZy
YXNlciwgcnViYmVyLXN0YW1wZWQgYnkgR2VvZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjMDc1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJp
YWxpemF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2NCBAQAorVGVzdCB0aGF0IGdldHRp
bmcgY29sb3IgcHJvcGVydGllcyBmcm9tIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHJldHVy
bnMgcHJvcGVybHkgZm9ybWF0dGVkIHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnN0cm9rZVN0eWxlKSBpcyAnIzAwMDAw
MCcKK1BBU1MgY2hlY2tEZWZhdWx0VmFsdWUoY3R4LmZpbGxTdHlsZSkgaXMgJyMwMDAwMDAnCitQ
QVNTIGNoZWNrRGVmYXVsdFZhbHVlKGN0eC5zaGFkb3dDb2xvcikgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhhKCdyZWQnLCAw
KSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldp
dGhPdmVycmlkZUFscGhhKCdyZWQnLCAwKSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYSgncmVkJywgMCkgaXMgJ3JnYmEoMjU1
LCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aE92ZXJyaWRlQWxwaGEo
J2JsYWNrJywgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhP
dmVycmlkZUFscGhhKCdibGFjaycsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93V2l0aE92ZXJyaWRlQWxwaGEoJ2JsYWNrJywgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JSR0JBKDAsIDAsIDAsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQ
QVNTIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEoMCwgMCwgMCwgMCkgaXMgJ3JnYmEoMCwgMCwg
MCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1JHQkEoMCwgMCwgMCwgMCkgaXMgJ3JnYmEo
MCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoMjU1LCAyNTUsIDI1
NSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEoMjU1LCAy
NTUsIDI1NSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dSR0JBKDI1NSwg
MjU1LCAyNTUsIDEpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yUkdCQSgy
NTUsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZUNvbG9yUkdCQSgyNTUsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BB
U1MgdHJ5U2V0dGluZ1NoYWRvd1JHQkEoMjU1LCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDAs
IDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JSR0JBKDI1NSwgMCwgMCwgMC40KSBpcyAn
cmdiYSgyNTUsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JB
KDI1NSwgMCwgMCwgMC40KSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93UkdCQSgyNTUsIDAsIDAsIDAuNCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjQw
MDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDAsIDAsIDAsIDApIGlzICdy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtB
KDAsIDAsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMCwgMCwgMCwgMSkgaXMgJyNm
ZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtBKDAsIDAsIDAsIDAsIDEpIGlz
ICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q01ZS0EoMCwgMCwgMCwgMCwgMSkgaXMg
JyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAwKSBp
cyAncmdiYSgyNTUsIDAsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01Z
S0EoMCwgMSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAyNTUsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDTVlLQSgwLCAxLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDI1NSwgMC4w
KScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDEsIDAsIDAsIDEpIGlzICcjZmYw
MGZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAxKSBpcyAn
I2ZmMDBmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDEsIDAsIDAsIDEpIGlzICcj
ZmYwMGZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMCwgMCwgMSwgMCkgaXMg
J3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwg
MCwgMCwgMSwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0NNWUtBKDAsIDAsIDAsIDEsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAwLCAwLCAxLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5
U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwgMCwgMCwgMSwgMSkgaXMgJyMwMDAwMDAnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAwLCAxLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCgwKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0
dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsKDApIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93R3JheUxldmVsKDApIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
R3JheUxldmVsKDAuNSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdy
YXlMZXZlbCgwLjUpIGlzICcjODA4MDgwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVs
KDAuNSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWwoMSkg
aXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbCgxKSBpcyAn
I2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCgxKSBpcyAnI2ZmZmZmZicK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLCAwKSBpcyAncmdi
YSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRo
QWxwaGEoMCwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0dyYXlMZXZlbFdpdGhBbHBoYSgwLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAsIDAuNCkgaXMgJ3JnYmEoMCwg
MCwgMCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhB
bHBoYSgwLCAwLjQpIGlzICdyZ2JhKDAsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93R3JheUxldmVsV2l0aEFscGhhKDAsIDAuNCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC40MDAw
MCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMSkgaXMg
JyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgw
LCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBo
YSgwLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdp
dGhBbHBoYSgwLjUsIDApIGlzICdyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDApIGlzICdyZ2JhKDEyOCwg
MTI4LCAxMjgsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEo
MC41LCAwKSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmls
bENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAuNSwgMC40KSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4
LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhh
KDAuNSwgMC40KSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDAuNCkgaXMgJ3JnYmEoMTI4LCAxMjgs
IDEyOCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxw
aGEoMC41LCAxKSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxl
dmVsV2l0aEFscGhhKDAuNSwgMSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dH
cmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAxKSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ0Zp
bGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgxLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMSwgMCkg
aXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlM
ZXZlbFdpdGhBbHBoYSgxLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDAuNCkgaXMgJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZl
bFdpdGhBbHBoYSgxLCAwLjQpIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDAwMDApJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDEsIDAuNCkgaXMgJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxX
aXRoQWxwaGEoMSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdy
YXlMZXZlbFdpdGhBbHBoYSgxLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d0dyYXlMZXZlbFdpdGhBbHBoYSgxLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZVN0eWxlKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsU3R5bGUoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAs
IDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgncmVkJykgaXMgJyNmZjAwMDAn
CitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93Q29sb3IoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlTZXR0aW5nU3Ry
b2tlU3R5bGUoJ3doaXRlJykgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUo
J3doaXRlJykgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignd2hpdGUn
KSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCcnKSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnJykgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dDb2xvcignJykgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VT
dHlsZSgnUkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsU3R5bGUoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAncmdiYSgwLCAwLCAwLCAw
LjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3JnYmEoMCwy
NTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoJ3JnYmEo
MCwyNTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcign
cmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0
eWxlKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxTdHlsZSgncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywg
MC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigncmdiYSgxLDIsMywwLjQpJykg
aXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgn
UmdCKDEsMiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCdSZ0Io
MSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignUmdCKDEs
MiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3JHYkEoMSwy
LDMsMCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxl
KCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwgMywgMC4wKScKK1BBU1MgdHJ5U2V0dGlu
Z1NoYWRvd0NvbG9yKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwgMywgMC4wKScKK1BB
U1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKHRydWUpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0
aW5nRmlsbFN0eWxlKHRydWUpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29s
b3IodHJ1ZSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZShmYWxzZSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoZmFsc2UpIGlzICcjNjY2NjY2
JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoZmFsc2UpIGlzICcjNjY2NjY2JworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlU3R5bGUoMCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxs
U3R5bGUoMCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigwKSBpcyAn
IzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKDEpIGlzICcjNjY2NjY2JworUEFT
UyB0cnlTZXR0aW5nRmlsbFN0eWxlKDEpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93Q29sb3IoMSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgtMSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoLTEpIGlzICcjNjY2NjY2Jwor
UEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoLTEpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0
aW5nU3Ryb2tlU3R5bGUoTmFOKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHls
ZShOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoTmFOKSBpcyAn
IzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKEluZmluaXR5KSBpcyAnIzY2NjY2
NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZShJbmZpbml0eSkgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDb2xvcihJbmZpbml0eSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdTdHJva2VTdHlsZShudWxsKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxT
dHlsZShudWxsKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKG51bGwp
IGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCd0cmFu
c3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29s
b3JXaXRoU2V0dGVyKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAs
IDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3JlZCcpIGlz
ICcjZmYwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcigncmVkJykgaXMg
JyNmZjAwMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCdyZWQnKSBpcyAnI2Zm
MDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcignd2hpdGUnKSBpcyAn
I2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3doaXRlJykgaXMg
JyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCd3aGl0ZScpIGlzICcj
ZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCcnKSBpcyAnIzY2
NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJycpIGlzICcjNjY2NjY2
JworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcignJykgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcign
UkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRp
bmdTaGFkb3dXaXRoU2V0dGVyKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcigncmdiYSgwLDI1NSww
LDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIo
J3JnYmEoMCwyNTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dX
aXRoU2V0dGVyKCdyZ2JhKDAsMjU1LDAsMS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0
aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdiYSgxLCAy
LCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3JnYmEo
MSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93V2l0aFNldHRlcigncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywgMC40
MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ1JnQigxLDIsMykn
KSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ1JnQigx
LDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ1Jn
QigxLDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNl
dHRlcignckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwg
MywgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3JHYkEoMSwyLDMsMCkn
KSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGlu
Z0NvbG9yKCdyZWQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlDbGVhclNoYWRv
d0FmdGVyU2V0dGluZ0NvbG9yKCdyZ2JhKDAsIDUsIDEwLCAwLjQpJykgaXMgJ3JnYmEoMCwgMCwg
MCwgMC4wKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2Vy
aWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGIx
YjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNlcmlhbGl6YXRpb24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xvci1zZXJpYWxp
emF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRp
YmxlLWN0bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CmluZGV4IGRi
MDVlYzAuLjE1MGQxZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9u
LWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywxMSBAQCBUZXN0cyB0byBt
YWtlIHN1cmUgd2UgY2FuIGFzc2lnbiB0byBub24tY3RtIGVmZmVjdGVkIHByb3BlcnRpZXMgd2l0
aCBhIG5vbi1pbnZlcgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgY3R4LmZp
bGxTdHlsZSBpcyAiZ3JlZW4iCitQQVNTIGN0eC5maWxsU3R5bGUgaXMgIiMwMDgwMDAiCiBQQVNT
IGltYWdlRGF0YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQ
QVNTIGltYWdlRGF0YS5kYXRhWzJdIGlzIDAKLVBBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICJncmVl
biIKK1BBU1MgY3R4LnN0cm9rZVN0eWxlIGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0
YVswXSBpcyAwCiBQQVNTIGltYWdlRGF0YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEu
ZGF0YVsyXSBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxNWM5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXph
dGlvbi5qcwpAQCAtMCwwICsxLDI0NyBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBnZXR0aW5n
IGNvbG9yIHByb3BlcnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCByZXR1cm5z
IHByb3Blcmx5IGZvcm1hdHRlZCB2YWx1ZXMuIik7CisKK2N0eCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdT
dHJva2VTdHlsZSh2YWx1ZSkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBj
dHguc3Ryb2tlU3R5bGUgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbFN0eWxlKHZhbHVlKSB7CisgICAgY3R4LmZpbGxTdHls
ZSA9ICcjNjY2JzsKKyAgICBjdHguZmlsbFN0eWxlID0gdmFsdWU7CisgICAgcmV0dXJuIGN0eC5m
aWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dDb2xvcih2YWx1ZSkgewor
ICAgIGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2hhZG93Q29sb3IgPSB2YWx1
ZTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5n
Q29sb3IodmFsdWUsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VT
dHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGlu
Z0ZpbGxTdHlsZSgiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5
U2V0dGluZ1NoYWRvd0NvbG9yKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworfQorCitmdW5j
dGlvbiB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKHZhbHVlKSB7CisgICAgY3R4LnN0
cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcih2YWx1ZSk7CisgICAg
cmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0ZpbGxDb2xv
cldpdGhTZXR0ZXIodmFsdWUpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0
eC5zZXRGaWxsQ29sb3IodmFsdWUpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitm
dW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcih2YWx1ZSkgeworICAgIGN0eC5zaGFk
b3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2V0U2hhZG93KDAsIDAsIDAsIHZhbHVlKTsKKyAg
ICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nQ29sb3JX
aXRoU2V0dGVyKHZhbHVlLCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JXaXRoU2V0dGVyKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3Vs
ZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcigiICsgdmFsdWUgKyAiKSIsIGV4cGVj
dGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoIiArIHZhbHVl
ICsgIikiLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JSR0JB
KHIsIGcsIGIsIGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRG
aWxsQ29sb3IociwgZywgYiwgYSk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1
bmN0aW9uIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEociwgZywgYiwgYSkgeworICAgIGN0eC5z
dHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IociwgZywgYiwgYSk7
CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1No
YWRvd1JHQkEociwgZywgYiwgYSkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAg
ICBjdHguc2V0U3Ryb2tlQ29sb3IociwgZywgYiwgYSk7CisgICAgcmV0dXJuIGN0eC5zdHJva2VT
dHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1JHQkEociwgZywgYiwgYSwgZXhwZWN0ZWQp
IHsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoIiArIHIgKyAiLCAiICsg
ZyArICIsICIgKyBiICsgIiwgIiArIGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgi
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQSgiICsgciArICIsICIgKyBnICsgIiwgIiArIGIgKyAi
LCAiICsgYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93
UkdCQSgiICsgciArICIsICIgKyBnICsgIiwgIiArIGIgKyAiLCAiICsgYSArICIpIiwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoYywgbSwgeSwgaywg
YSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldEZpbGxDb2xvcihj
LCBtLCB5LCBrLCBhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24g
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoYywgbSwgeSwgaywgYSkgeworICAgIGN0eC5zdHJv
a2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoYywgbSwgeSwgaywgYSk7
CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1No
YWRvd0NNWUtBKGMsIG0sIHksIGssIGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7
CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKGMsIG0sIHksIGssIGEpOworICAgIHJldHVybiBjdHgu
c3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdDTVlLQShjLCBtLCB5LCBrLCBh
LCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoIiAr
IGMgKyAiLCAiICsgbSArICIsICIgKyB5ICsgIiwgIiArIGsgKyAiLCAiICsgYSArICIpIiwgZXhw
ZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgiICsgYyAr
ICIsICIgKyBtICsgIiwgIiArIHkgKyAiLCAiICsgayArICIsICIgKyBhICsgIikiLCBleHBlY3Rl
ZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dDTVlLQSgiICsgYyArICIsICIgKyBt
ICsgIiwgIiArIHkgKyAiLCAiICsgayArICIsICIgKyBhICsgIikiLCBleHBlY3RlZCk7Cit9CisK
K2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxw
aGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxsQ29sb3Io
Y29sb3IsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24g
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSB7Cisg
ICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihjb2xv
ciwgYWxwaGEpOworICAgIHJldHVybiBjdHguc3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRy
eVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEpIHsKKyAgICBjdHgu
c2hhZG93Q29sb3IgPSAnIzY2Nic7CisgICAgY3R4LnNldFNoYWRvdygwLCAwLCAwLCBjb2xvciwg
YWxwaGEpOworICAgIHJldHVybiBjdHguc2hhZG93Q29sb3I7Cit9CisKK2Z1bmN0aW9uIHRyeVNl
dHRpbmdDb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYSwgZXhwZWN0ZWQpIHsKKyAg
ICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhhKCIgKyBjb2xv
ciArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0
aW5nU3Ryb2tlQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgiICsgY29sb3IgKyAiLCAiICsgYWxwaGEg
KyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVy
cmlkZUFscGhhKCIgKyBjb2xvciArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKGdyYXlMZXZlbCkgeworICAg
IGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldEZpbGxDb2xvcihncmF5TGV2ZWwp
OworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JHcmF5TGV2ZWwoZ3JheUxldmVsKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2
NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihncmF5TGV2ZWwpOworICAgIHJldHVybiBjdHgu
c3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWwoZ3Jh
eUxldmVsKSB7CisgICAgY3R4LnNoYWRvd0NvbG9yID0gJyM2NjYnOworICAgIGN0eC5zZXRTaGFk
b3coMCwgMCwgMCwgZ3JheUxldmVsKTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nR3JheUxldmVsKGdyYXlMZXZlbCwgZXhwZWN0ZWQpIHsKKyAg
ICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCgiICsgZ3JheUxldmVsICsg
IikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlM
ZXZlbCgiICsgZ3JheUxldmVsICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNl
dHRpbmdTaGFkb3dHcmF5TGV2ZWwoIiArIGdyYXlMZXZlbCArICIpIiwgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKGdyYXlMZXZl
bCwgYWxwaGEpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxs
Q29sb3IoZ3JheUxldmVsLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisK
K2Z1bmN0aW9uIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2
ZWwsIGFscGhhKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRT
dHJva2VDb2xvcihncmF5TGV2ZWwsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxl
OworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKGdyYXlM
ZXZlbCwgYWxwaGEpIHsKKyAgICBjdHguc2hhZG93Q29sb3IgPSAnIzY2Nic7CisgICAgY3R4LnNl
dFNoYWRvdygwLCAwLCAwLCBncmF5TGV2ZWwsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LnNoYWRv
d0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKGdyYXlM
ZXZlbCwgYWxwaGEsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdGaWxsQ29s
b3JHcmF5TGV2ZWxXaXRoQWxwaGEoIiArIGdyYXlMZXZlbCArICIsICIgKyBhbHBoYSArICIpIiwg
ZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxX
aXRoQWxwaGEoIiArIGdyYXlMZXZlbCArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOwor
ICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKCIgKyBncmF5
TGV2ZWwgKyAiLCAiICsgYWxwaGEgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5
Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcih2YWx1ZSkgeworICAgIGN0eC5zaGFkb3dDb2xv
ciA9IHZhbHVlOworICAgIGN0eC5jbGVhclNoYWRvdygpOworICAgIHJldHVybiBjdHguc2hhZG93
Q29sb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRGVmYXVsdFZhbHVlKHZhbHVlKSB7CisgICAgcmV0
dXJuIHZhbHVlOworfQorCitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnN0cm9rZVN0
eWxlKSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjaGVja0RlZmF1bHRWYWx1ZShjdHguZmls
bFN0eWxlKSIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjaGVja0RlZmF1bHRWYWx1ZShjdHgu
c2hhZG93Q29sb3IpIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CisKK3RyeVNldHRpbmdDb2xv
cldpdGhPdmVycmlkZUFscGhhKCIncmVkJyIsIDAsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
Cit0cnlTZXR0aW5nQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgiJ2JsYWNrJyIsIDEsICInIzAwMDAw
MCciKTsKKwordHJ5U2V0dGluZ1JHQkEoMCwgMCwgMCwgMC4wLCAiJ3JnYmEoMCwgMCwgMCwgMC4w
KSciKTsKK3RyeVNldHRpbmdSR0JBKDI1NSwgMjU1LCAyNTUsIDEuMCwgIicjZmZmZmZmJyIpOwor
dHJ5U2V0dGluZ1JHQkEoMjU1LCAwLCAwLCAwLjAsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
Cit0cnlTZXR0aW5nUkdCQSgyNTUsIDAsIDAsIDAuNCwgIidyZ2JhKDI1NSwgMCwgMCwgMC40MDAw
MCknIik7CisKK3RyeVNldHRpbmdDTVlLQSgwLCAwLCAwLCAwLCAwLjAsICIncmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjApJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDAsIDAsIDAsIDEuMCwgIicjZmZm
ZmZmJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDEsIDAsIDAsIDAuMCwgIidyZ2JhKDI1NSwgMCwg
MjU1LCAwLjApJyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDEsIDAsIDAsIDEuMCwgIicjZmYwMGZm
JyIpOwordHJ5U2V0dGluZ0NNWUtBKDAsIDAsIDAsIDEsIDAuMCwgIidyZ2JhKDAsIDAsIDAsIDAu
MCknIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMCwgMCwgMSwgMS4wLCAiJyMwMDAwMDAnIik7CisK
K3RyeVNldHRpbmdHcmF5TGV2ZWwoMC4wLCAiJyMwMDAwMDAnIik7Cit0cnlTZXR0aW5nR3JheUxl
dmVsKDAuNSwgIicjODA4MDgwJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbCgxLjAsICInI2ZmZmZm
ZiciKTsKKwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjAsIDAuMCwgIidyZ2JhKDAs
IDAsIDAsIDAuMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAuMCwgMC40LCAi
J3JnYmEoMCwgMCwgMCwgMC40MDAwMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhh
KDAuMCwgMS4wLCAiJyMwMDAwMDAnIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAu
NSwgMC4wLCAiJ3JnYmEoMTI4LCAxMjgsIDEyOCwgMC4wKSciKTsKK3RyeVNldHRpbmdHcmF5TGV2
ZWxXaXRoQWxwaGEoMC41LCAwLjQsICIncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQwMDAwKSciKTsK
K3RyeVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAxLjAsICInIzgwODA4MCciKTsKK3Ry
eVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMS4wLCAwLjAsICIncmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgxLjAsIDAuNCwgIidyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuNDAwMDApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBo
YSgxLjAsIDEuMCwgIicjZmZmZmZmJyIpOworCit0cnlTZXR0aW5nQ29sb3IoIid0cmFuc3BhcmVu
dCciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcigiJ3JlZCciLCAi
JyNmZjAwMDAnIik7Cit0cnlTZXR0aW5nQ29sb3IoIid3aGl0ZSciLCAiJyNmZmZmZmYnIik7Cit0
cnlTZXR0aW5nQ29sb3IoIicnIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCInUkdC
QSgwLCAwLCAwLCAwKSciLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xv
cigiJ3JnYmEoMCwyNTUsMCwxLjApJyIsICInIzAwZmYwMCciKTsKK3RyeVNldHRpbmdDb2xvcigi
J3JnYmEoMSwyLDMsMC40KSciLCAiJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknIik7Cit0cnlTZXR0
aW5nQ29sb3IoIidSZ0IoMSwyLDMpJyIsICInIzAxMDIwMyciKTsKK3RyeVNldHRpbmdDb2xvcigi
J3JHYkEoMSwyLDMsMCknIiwgIidyZ2JhKDEsIDIsIDMsIDAuMCknIik7Cit0cnlTZXR0aW5nQ29s
b3IoInRydWUiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3IoImZhbHNlIiwgIicjNjY2
NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCIwIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0Nv
bG9yKCIxIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCItMSIsICInIzY2NjY2Nici
KTsKK3RyeVNldHRpbmdDb2xvcigiTmFOIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9y
KCJJbmZpbml0eSIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigibnVsbCIsICInIzY2
NjY2NiciKTsKKwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3RyYW5zcGFyZW50JyIsICIn
cmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3JlZCci
LCAiJyNmZjAwMDAnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCInd2hpdGUnIiwgIicj
ZmZmZmZmJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJyciLCAiJyM2NjY2NjYnIik7
Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCInUkdCQSgwLCAwLCAwLCAwKSciLCAiJ3JnYmEo
MCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIidyZ2JhKDAsMjU1
LDAsMS4wKSciLCAiJyMwMGZmMDAnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCIncmdi
YSgxLDIsMywwLjQpJyIsICIncmdiYSgxLCAyLCAzLCAwLjQwMDAwKSciKTsKK3RyeVNldHRpbmdD
b2xvcldpdGhTZXR0ZXIoIidSZ0IoMSwyLDMpJyIsICInIzAxMDIwMyciKTsKK3RyeVNldHRpbmdD
b2xvcldpdGhTZXR0ZXIoIidyR2JBKDEsMiwzLDApJyIsICIncmdiYSgxLCAyLCAzLCAwLjApJyIp
OworCitzaG91bGRCZSgidHJ5Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcigncmVkJykiLCAi
J3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJ0cnlDbGVhclNoYWRvd0FmdGVyU2V0
dGluZ0NvbG9yKCdyZ2JhKDAsIDUsIDEwLCAwLjQpJykiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSci
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgt
bm9uLWludmVydGlibGUtY3RtLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcwppbmRl
eCBmZjAwNTNlLi43Y2I5MWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3Rt
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanMKQEAgLTE2LDcgKzE2LDcgQEAg
ZnVuY3Rpb24gdGVzdFBpeGVsKHgseSwgciwgZywgYikgewogY3R4LnNhdmUoKTsKIGN0eC5zY2Fs
ZSgwLCAwKTsKIGN0eC5maWxsU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5maWxsU3R5
bGUnLCAnImdyZWVuIicpOworc2hvdWxkQmUoJ2N0eC5maWxsU3R5bGUnLCAnIiMwMDgwMDAiJyk7
CiBjdHguc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApOwogY3R4LmZpbGxSZWN0KDAsMCwx
MDAsMTAwKTsKIHRlc3RQaXhlbCg1MCwgNTAsIDAsIDEyOCwgMCk7CkBAIC0yOCw3ICsyOCw3IEBA
IGN0eC5maWxsU3R5bGUgPSAicmVkIjsKIGN0eC5maWxsUmVjdCgwLDAsMTAwLDEwMCk7CiBjdHgu
c2NhbGUoMCwgMCk7CiBjdHguc3Ryb2tlU3R5bGUgPSAiZ3JlZW4iOwotc2hvdWxkQmUoJ2N0eC5z
dHJva2VTdHlsZScsICciZ3JlZW4iJyk7CitzaG91bGRCZSgnY3R4LnN0cm9rZVN0eWxlJywgJyIj
MDA4MDAwIicpOwogY3R4LmxpbmVXaWR0aCA9IDEwMDsKIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwg
MCwgMSwgMCwgMCk7CiBjdHguc3Ryb2tlUmVjdCgwLDAsMTAwLDEwMCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMt
bnVsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQt
ZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQKaW5kZXggYmQ1ZTk3ZC4uOGJk
ZmQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVs
ZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVk
LnR4dApAQCAtMyw2ICszLDYgQEAgVGhpcyB0ZXN0IHNldHRpbmcgdmFyaW91cyBhdHRyaWJ1dGVz
IG9mIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIEphdmFTY3JpcHQKIFRFU1QgU1VDQ0VF
REVEOiBUaGUgdmFsdWUgd2FzIHRoZSBzdHJpbmcgJ3NvdXJjZS1vdmVyJy4gW3Rlc3RlZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXQogVEVTVCBTVUND
RUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnYnV0dCcuIFt0ZXN0ZWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmxpbmVDYXBdCiBURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0
aGUgc3RyaW5nICdtaXRlcicuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmxpbmVK
b2luXQotVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIGVtcHR5IHN0cmluZy4gW3Rl
c3RlZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2hhZG93Q29sb3JdCitURVNUIFNVQ0NFRURF
RDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5nICdyZ2JhKDAsIDAsIDAsIDAuMCknLiBbdGVzdGVk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zaGFkb3dDb2xvcl0KIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMt
bnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQt
YXR0cmlidXRlLWpzLW51bGwuaHRtbAppbmRleCBkOWU3ZjdhLi4zYWNjNjcwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUt
anMtbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1l
bGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgIHtuYW1lOiAnZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uJywgZXhwZWN0
ZWROdWxsOiAnc291cmNlLW92ZXInfSwKICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAn
bGluZUNhcCcsIGV4cGVjdGVkTnVsbDogJ2J1dHQnfSwKICAgICAgICAgICAgICAgICAgICAgICAg
IHtuYW1lOiAnbGluZUpvaW4nLCBleHBlY3RlZE51bGw6ICdtaXRlcid9LAotICAgICAgICAgICAg
ICAgICAgICAgICAge25hbWU6ICdzaGFkb3dDb2xvcicsIGV4cGVjdGVkTnVsbDogJyd9ICAgICAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ3NoYWRv
d0NvbG9yJywgZXhwZWN0ZWROdWxsOiAncmdiYSgwLCAwLCAwLCAwLjApJ30KICAgICAgICAgICAg
ICAgICAgICAgXQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNiNmEzNzQuLjA4
MjhlOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDUtMTQgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFz
LmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQncyBwcm9wZXJ0eSBnZXR0ZXJzIHRo
YXQgcmV0dXJuIGNvbG9ycyBzaG91bGQKKyAgICAgICAgc2VyaWFsaXplIHRoZW0gaW4gYWNjb3Jk
YW5jZSB3aXRoIHRoZSBIVE1MNSBzcGVjICg0LjguMTEuMS40KQorICAgICAgICBTZXR0ZXJzIHNo
b3VsZCBpZ25vcmUgaW52YWxpZCBjb2xvcnMuCisKKyAgICAgICAgQWxzbywgc2hhZG93Q29sb3Ig
c2hvdWxkIGluaXRpYWxseSBiZSB0cmFuc3BhcmVudCBibGFjayAoNC44LjExLjEuNikKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDUKKworICAg
ICAgICBSZWZhY3RvcmVkIENhbnZhc1N0eWxlIHRvIHN0b3JlIGFuIFJHQkEzMiBpbnN0ZWFkIG9m
IFJHQkEgY29tcG9uZW50cyBhbmQvb3IgdGhlIGNvbG9yIHN0cmluZy4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5odG1sCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdyk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlcmlhbGl6ZWRDYW52YXNDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNNWUtB
VmFsdWVzOjpDTVlLQVZhbHVlcyk6CisKIDIwMTAtMDUtMTQgIE5vYW0gUm9zZW50aGFsICA8bm9h
bS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IDY0MzBkZGUuLmMwM2NiNTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CkBAIC0xMTgs
MTQgKzExOCwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogfQog
CiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCi0gICAgOiBtX3N0cm9r
ZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoIiMwMDAwMDAiKSkKLSAgICAsIG1fZmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGUoIiMwMDAwMDAiKSkKKyAgICA6IG1fc3Ryb2tlU3R5bGUoQ2Fu
dmFzU3R5bGU6OmNyZWF0ZShDb2xvcjo6YmxhY2spKQorICAgICwgbV9maWxsU3R5bGUoQ2FudmFz
U3R5bGU6OmNyZWF0ZShDb2xvcjo6YmxhY2spKQogICAgICwgbV9saW5lV2lkdGgoMSkKICAgICAs
IG1fbGluZUNhcChCdXR0Q2FwKQogICAgICwgbV9saW5lSm9pbihNaXRlckpvaW4pCiAgICAgLCBt
X21pdGVyTGltaXQoMTApCiAgICAgLCBtX3NoYWRvd0JsdXIoMCkKLSAgICAsIG1fc2hhZG93Q29s
b3IoImJsYWNrIikKKyAgICAsIG1fc2hhZG93Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQogICAg
ICwgbV9nbG9iYWxBbHBoYSgxKQogICAgICwgbV9nbG9iYWxDb21wb3NpdGUoQ29tcG9zaXRlU291
cmNlT3ZlcikKICAgICAsIG1faW52ZXJ0aWJsZUNUTSh0cnVlKQpAQCAtMzE1LDEzICszMTUsMTQg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0JsdXIoZmxvYXQgYmx1
cikKIAogU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBpZiB5b3UgY2FsbGVk
IHNldFNoYWRvdyB3aXRoIGEgbm9uLXN0cmluZyBjb2xvcj8KLSAgICByZXR1cm4gc3RhdGUoKS5t
X3NoYWRvd0NvbG9yOworICAgIHJldHVybiBzZXJpYWxpemVkQ2FudmFzQ29sb3Ioc3RhdGUoKS5t
X3NoYWRvd0NvbG9yKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvd0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yID0gY29sb3I7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUoKS5tX3No
YWRvd0NvbG9yLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKwogICAgIGFwcGx5U2hhZG93KCk7
CiB9CiAKQEAgLTgxNCwxNSArODE1LDE3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1cikKIHsKICAg
ICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAg
IHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ig
PSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAg
ICAgYXBwbHlTaGFkb3coKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJp
bmcmIGNvbG9yKQogeworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgY29sb3IpKQorICAgICAgICByZXR1cm47CisKICAgICBzdGF0ZSgpLm1fc2hh
ZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFk
b3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKICAgICBh
cHBseVNoYWRvdygpOwogfQogCkBAIC04MzAsNjUgKzgzMyw2NCBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFrZVJHQkEz
MkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZik7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhn
cmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKTsKLSAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2Jh
KSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1o
ZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcm
IGNvbG9yLCBmbG9hdCBhbHBoYSkKIHsKKyAgICBSR0JBMzIgcmdiYTsKKworICAgIGlmICghQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBo
YSk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yID0gY29sb3I7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSAw
OyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IuaXNFbXB0eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwg
LWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihjb2xvcldpdGhPdmVycmlkZUFs
cGhhKHJnYmEsIGFscGhhKSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93
T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dC
bHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBhbHBoYSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5n
Q29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJn
YmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVs
LCBhbHBoYSk7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0
ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IocmdiYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGMt
PnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIs
IHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAg
ICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAg
IHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ig
PSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhy
LCBnLCBiLCBhKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7
CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdiYSA9IG1ha2VS
R0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJs
YWNrCi0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1f
c2hhZG93Qmx1ciwgQ29sb3IocmdiYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNo
YWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRl
KCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBtYWtlUkdCQUZyb21DTVlLQShj
LCBtLCB5LCBrLCBhKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogZGMgPSBkcmF3aW5nQ29udGV4
dCgpOwogICAgIGlmICghZGMpCkBAIC05MDEsNyArOTAzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyLAogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihkYy0+cGxhdGZvcm1Db250ZXh0
KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHNoYWRvd0NvbG9y
KTsKICAgICBDR0NvbG9yUmVsZWFzZShzaGFkb3dDb2xvcik7CiAjZWxzZQotICAgIGRjLT5zZXRT
aGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIENvbG9yKGMsIG0sIHksIGssIGEp
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBkYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1o
ZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwog
I2VuZGlmCiB9CiAKQEAgLTkwOSw3ICs5MTEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Y2xlYXJTaGFkb3coKQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9h
dFNpemUoKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IDA7Ci0gICAgc3RhdGUoKS5tX3No
YWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gQ29sb3I6OnRyYW5z
cGFyZW50OwogICAgIGFwcGx5U2hhZG93KCk7CiB9CiAKQEAgLTkxOSwxMiArOTIxLDkgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKICAgICBpZiAoIWMpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFu
c3BhcmVudCBibGFjawotICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkK
LSAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xv
cik7CiAgICAgZmxvYXQgd2lkdGggPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAg
ICAgZmxvYXQgaGVpZ2h0ID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKTsKLSAgICBj
LT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVy
LCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNp
emUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogc3RhdGljIEludFNpemUgc2l6ZShIVE1M
SW1hZ2VFbGVtZW50KiBpbWFnZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCmluZGV4IDJiYWM5MDIuLjY0ZmRjODggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAj
aW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTIxOCw3ICsy
MTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBmbG9hdCBtX21pdGVyTGlt
aXQ7CiAgICAgICAgICAgICBGbG9hdFNpemUgbV9zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgICBm
bG9hdCBtX3NoYWRvd0JsdXI7Ci0gICAgICAgICAgICBTdHJpbmcgbV9zaGFkb3dDb2xvcjsKKyAg
ICAgICAgICAgIFJHQkEzMiBtX3NoYWRvd0NvbG9yOwogICAgICAgICAgICAgZmxvYXQgbV9nbG9i
YWxBbHBoYTsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fZ2xvYmFsQ29tcG9zaXRl
OwogICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcAppbmRleCAzNTE1ZTAzLi5kYmU5YTNiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqCkBAIC00OCwxMjIgKzQ4LDk1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYgY29sb3IpCi0gICAgOiBtX3R5cGUo
Q29sb3JTdHJpbmcpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0
eWxlKFJHQkEzMiByZ2JhKQorICAgIDogbV90eXBlKFJHQkEpCisgICAgLCBtX3JnYmEocmdiYSkK
IHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCkKLSAgICA6
IG1fdHlwZShHcmF5TGV2ZWwpCi0gICAgLCBtX2FscGhhKDEpCi0gICAgLCBtX2dyYXlMZXZlbChn
cmF5TGV2ZWwpCi17Ci19Ci0KLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcm
IGNvbG9yLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShDb2xvclN0cmluZ1dpdGhBbHBoYSkK
LSAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgLCBtX2FscGhhKGFscGhhKQorICAgIDogbV90eXBl
KFJHQkEpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5
TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHls
ZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQotICAgIDogbV90eXBlKEdyYXlMZXZlbCkK
LSAgICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgLCBtX2dyYXlMZXZlbChncmF5TGV2ZWwpCisgICAg
OiBtX3R5cGUoUkdCQSkKKyAgICAsIG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpD
YW52YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogICAgIDogbV90
eXBlKFJHQkEpCi0gICAgLCBtX2FscGhhKGEpCi0gICAgLCBtX3JlZChyKQotICAgICwgbV9ncmVl
bihnKQotICAgICwgbV9ibHVlKGIpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZyb21GbG9hdHMo
ciwgZywgYiwgYSkpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBjLCBm
bG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogICAgIDogbV90eXBlKENNWUtBKQot
ICAgICwgbV9hbHBoYShhKQotICAgICwgbV9jeWFuKGMpCi0gICAgLCBtX21hZ2VudGEobSkKLSAg
ICAsIG1feWVsbG93KHkpCi0gICAgLCBtX2JsYWNrKGspCisgICAgLCBtX3JnYmEobWFrZVJHQkFG
cm9tQ01ZS0EoYywgbSwgeSwgaywgYSkpCisgICAgLCBtX2NteWthKGMsIG0sIHksIGssIGEpCiB7
CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50
PiBncmFkaWVudCkKLSAgICA6IG1fdHlwZShncmFkaWVudCA/IEdyYWRpZW50IDogQ29sb3JTdHJp
bmcpCisgICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFkaWVudCA6IFJHQkEpCiAgICAgLCBtX2dy
YWRpZW50KGdyYWRpZW50KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1Jl
ZlB0cjxDYW52YXNQYXR0ZXJuPiBwYXR0ZXJuKQotICAgIDogbV90eXBlKHBhdHRlcm4gPyBJbWFn
ZVBhdHRlcm4gOiBDb2xvclN0cmluZykKKyAgICA6IG1fdHlwZShwYXR0ZXJuID8gSW1hZ2VQYXR0
ZXJuIDogUkdCQSkKICAgICAsIG1fcGF0dGVybihwYXR0ZXJuKQogewogfQogCitQYXNzUmVmUHRy
PENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3IpCit7
CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwg
Y29sb3IpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZh
c1N0eWxlKHJnYmEpKTsKK30KKworUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKK3sKKyAgICBSR0JBMzIg
cmdiYTsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpKTsKK30KKwogdm9pZCBDYW52YXNTdHlsZTo6
YXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAg
Y2FzZSBDb2xvclN0cmluZzogewotICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3Ip
OwotICAgICAgICAgICAgaWYgKGMuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoYy5yZ2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAw
OyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0g
ICAgICAgICAgICBDb2xvciBjID0gQ29sb3IobV9jb2xvcik7Ci0gICAgICAgICAgICBpZiAoYy5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xv
cldpdGhPdmVycmlkZUFscGhhKGMucmdiKCksIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJHQkEz
MiBjb2xvciA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAg
IGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3Is
IG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR3JheUxldmVsOgotICAgICAgICAgICAgLy8gV2UncmUgb25seSBz
dXBwb3J0aW5nIDI1NSBsZXZlbHMgb2YgZ3JheSBoZXJlLiAgU2luY2UgdGhpcyBpc24ndAotICAg
ICAgICAgICAgLy8gZXZlbiBwYXJ0IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUgd2ls
bCBjYXJlLiAgSWYgdGhleSBkbwotICAgICAgICAgICAgLy8gd2UnbGwgbWFrZSBhIGZhbmNpZXIg
Q29sb3IgYWJzdHJhY3Rpb24uCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihD
b2xvcihtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKSwgRGV2
aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSR0JBOgot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4s
IG1fYmx1ZSwgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ01ZS0E6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRo
cm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSAgICAgICAg
ICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQg
Q1lNS0EgY29ycmVjdGx5CisgICAgY2FzZSBSR0JBOgorICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENNWUtBOiB7CisgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0t
aW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KKyAgICAgICAgLy8gV2UnbGwgbmVlZCBh
IGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24gdG8gc3VwcG9ydCBDTVlLQSBjb3JyZWN0bHkKICNp
ZiBQTEFURk9STShDRykKLSAgICAgICAgICAgIENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBt
X2JsYWNrLCBtX2FscGhhKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS1N0cm9rZUNvbG9yKGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2NteWthLmMsIG1fY215a2EubSwgbV9jbXlrYS55
LCBtX2NteWthLmssIG1fY215a2EuYSk7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICAgICAgICAg
IFFQZW4gY3VycmVudFBlbiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wZW4oKTsKLSAg
ICAgICAgICAgIFFDb2xvciBjbHI7Ci0gICAgICAgICAgICBjbHIuc2V0Q215a0YobV9jeWFuLCBt
X21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKLSAgICAgICAgICAgIGN1cnJl
bnRQZW4uc2V0Q29sb3IoY2xyKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5zZXRQZW4oY3VycmVudFBlbik7CisgICAgICAgIFFQZW4gY3VycmVudFBlbiA9IGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wZW4oKTsKKyAgICAgICAgUUNvbG9yIGNscjsKKyAgICAg
ICAgY2xyLnNldENteWtGKG1fY215a2EuYywgbV9jbXlrYS5tLCBtX2NteWthLnksIG1fY215a2Eu
aywgbV9jbXlrYS5hKTsKKyAgICAgICAgY3VycmVudFBlbi5zZXRDb2xvcihjbHIpOworICAgICAg
ICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOwogI2Vsc2UK
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1fY3lhbiwgbV9tYWdl
bnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2UpOwog
I2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYWRp
ZW50OgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY2FudmFzR3JhZGll
bnQoKS0+Z3JhZGllbnQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbWFn
ZVBhdHRlcm46Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKGNhbnZhc1Bh
dHRlcm4oKS0+cGF0dGVybigpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBHcmFkaWVudDoKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3Jh
ZGllbnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSW1hZ2VQYXR0ZXJuOgorICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKGNh
bnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBA
IC0xNzIsNTAgKzE0NSw0NiBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewotICAg
ICAgICAgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNr
Ci0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIG1fY29sb3IpKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihyZ2JhLCBEZXZpY2VDb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3JT
dHJpbmdXaXRoQWxwaGE6IHsKLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8vIGRlZmF1
bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JT
cGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXlM
ZXZlbDoKLSAgICAgICAgICAgIC8vIFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9m
IGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKLSAgICAgICAgICAgIC8vIGV2ZW4gcGFydCBv
ZiBIVE1MNSwgSSBkb24ndCBleHBlY3QgYW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkgZG8KLSAg
ICAgICAgICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgotICAg
ICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKG1fZ3JheUxldmVsLCBtX2dyYXlM
ZXZlbCwgbV9ncmF5TGV2ZWwsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJHQkE6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSksIERldmljZUNv
bG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01ZS0E6IHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQg
R3JhcGhpY3NDb250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVy
IENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29ycmVjdGx5CisgICAgY2FzZSBS
R0JBOgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNw
YWNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBGSVhN
RTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBB
UEkuCisgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRv
IHN1cHBvcnQgQ01ZS0EgY29ycmVjdGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBD
R0NvbnRleHRTZXRDTVlLRmlsbENvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2N5
YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpOworICAgICAgICBDR0Nv
bnRleHRTZXRDTVlLRmlsbENvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2NteWth
LmMsIG1fY215a2EubSwgbV9jbXlrYS55LCBtX2NteWthLmssIG1fY215a2EuYSk7CiAjZWxpZiBQ
TEFURk9STShRVCkKLSAgICAgICAgICAgIFFCcnVzaCBjdXJyZW50QnJ1c2ggPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+YnJ1c2goKTsKLSAgICAgICAgICAgIFFDb2xvciBjbHI7Ci0gICAg
ICAgICAgICBjbHIuc2V0Q215a0YobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNr
LCBtX2FscGhhKTsKLSAgICAgICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOwotICAg
ICAgICAgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldEJydXNoKGN1cnJlbnRCcnVz
aCk7CisgICAgICAgIFFCcnVzaCBjdXJyZW50QnJ1c2ggPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+YnJ1c2goKTsKKyAgICAgICAgUUNvbG9yIGNscjsKKyAgICAgICAgY2xyLnNldENteWtG
KG1fY215a2EuYywgbV9jbXlrYS5tLCBtX2NteWthLnksIG1fY215a2EuaywgbV9jbXlrYS5hKTsK
KyAgICAgICAgY3VycmVudEJydXNoLnNldENvbG9yKGNscik7CisgICAgICAgIGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5zZXRCcnVzaChjdXJyZW50QnJ1c2gpOwogI2Vsc2UKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxs
b3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKG1fcmdiYSwgRGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3JhZGllbnQ6Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbWFnZVBhdHRlcm46Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4o
KSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
R3JhZGllbnQ6CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjYW52YXNHcmFkaWVu
dCgpLT5ncmFkaWVudCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbWFnZVBhdHRlcm46
CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVy
bigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitTdHJpbmcgc2VyaWFsaXplZENhbnZh
c0NvbG9yKFJHQkEzMiByZ2JhKQoreworICAgIENvbG9yIGNvbG9yKHJnYmEpOworCisgICAgaWYg
KCFjb2xvci5oYXNBbHBoYSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiMlMDJ4
JTAyeCUwMngiLCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpKTsKKwor
ICAgIC8vIE1hdGNoIEdlY2tvICgwLjAgZm9yIHplcm8sIDUgZGVjaW1hbHMgZm9yIGFueXRoaW5n
IGVsc2UpCisgICAgaWYgKCFjb2xvci5hbHBoYSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoInJnYmEoJXUsICV1LCAldSwgMC4wKSIsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigp
LCBjb2xvci5ibHVlKCkpOworCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAl
dSwgJXUsICUuNWYpIiwgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwg
Y29sb3IuYWxwaGEoKSAvIDI1NS4wZik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUu
aAppbmRleCBmZTAxYmQxLi4wZjVhZTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI2LDYgKzI3LDcgQEAKICNpZm5kZWYgQ2FudmFzU3R5bGVfaAogI2RlZmlu
ZSBDYW52YXNTdHlsZV9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDE4ICszNiwyMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiAKKyAgICBTdHJpbmcgc2VyaWFsaXplZENhbnZhc0NvbG9yKFJHQkEzMiBy
Z2JhKTsKKwogICAgIGNsYXNzIENhbnZhc1N0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFz
U3R5bGU+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0
eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGNvbG9yKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5
bGU+IGNyZWF0ZShSR0JBMzIgcmdiYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxl
KHJnYmEpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNT
dHlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShmbG9hdCBncmF5TGV2ZWwpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmF5TGV2ZWwpKTsgfQotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3Is
IGZsb2F0IGFscGhhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoY29sb3IsIGFs
cGhhKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShm
bG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFz
U3R5bGUoZ3JheUxldmVsLCBhbHBoYSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENh
bnZhc1N0eWxlPiBjcmVhdGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKHIsIGcsIGIsIGEpKTsgfQogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGMsIGZsb2F0IG0sIGZs
b2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHls
ZShjLCBtLCB5LCBrLCBhKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5
bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRpZW50KSk7IH0KICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBh
dHRlcm4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShwYXR0ZXJuKSk7IH0KIAot
ICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgICAg
IFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIHNlcmlhbGl6ZWRDYW52YXNDb2xvcihtX3Jn
YmEpOyB9CiAgICAgICAgIENhbnZhc0dyYWRpZW50KiBjYW52YXNHcmFkaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZ3JhZGllbnQuZ2V0KCk7IH0KICAgICAgICAgQ2FudmFzUGF0dGVybiogY2FudmFz
UGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQogCkBAIC01MywzNSAr
NTgsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGhpY3NDb250ZXh0Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDYW52YXNTdHls
ZShjb25zdCBTdHJpbmcmIGNvbG9yKTsKKyAgICAgICAgQ2FudmFzU3R5bGUoUkdCQTMyIHJnYmEp
OwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwpOwotICAgICAgICBDYW52YXNT
dHlsZShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSk7CiAgICAgICAgIENhbnZhc1N0
eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOwogICAgICAgICBDYW52YXNTdHlsZShm
bG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICAgICAgQ2FudmFzU3R5bGUo
ZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAgICAgICAgIENh
bnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+KTsKICAgICAgICAgQ2FudmFzU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPik7CiAKLSAgICAgICAgZW51bSBUeXBlIHsgQ29s
b3JTdHJpbmcsIENvbG9yU3RyaW5nV2l0aEFscGhhLCBHcmF5TGV2ZWwsIFJHQkEsIENNWUtBLCBH
cmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CisgICAgICAgIGVudW0gVHlwZSB7IFJHQkEsIENNWUtB
LCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CiAKICAgICAgICAgVHlwZSBtX3R5cGU7CiAKLSAg
ICAgICAgU3RyaW5nIG1fY29sb3I7CisgICAgICAgIFJHQkEzMiBtX3JnYmE7CisKICAgICAgICAg
UmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAgICBSZWZQdHI8Q2FudmFz
UGF0dGVybj4gbV9wYXR0ZXJuOwogCi0gICAgICAgIGZsb2F0IG1fYWxwaGE7Ci0KLSAgICAgICAg
ZmxvYXQgbV9ncmF5TGV2ZWw7Ci0KLSAgICAgICAgZmxvYXQgbV9yZWQ7Ci0gICAgICAgIGZsb2F0
IG1fZ3JlZW47Ci0gICAgICAgIGZsb2F0IG1fYmx1ZTsKLQotICAgICAgICBmbG9hdCBtX2N5YW47
Ci0gICAgICAgIGZsb2F0IG1fbWFnZW50YTsKLSAgICAgICAgZmxvYXQgbV95ZWxsb3c7Ci0gICAg
ICAgIGZsb2F0IG1fYmxhY2s7CisgICAgICAgIHN0cnVjdCBDTVlLQVZhbHVlcyB7CisgICAgICAg
ICAgICBDTVlLQVZhbHVlcygpIHt9CisgICAgICAgICAgICBDTVlLQVZhbHVlcyhmbG9hdCBjeWFu
LCBmbG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkg
OiBjKGN5YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhhKSB7fQor
ICAgICAgICAgICAgZmxvYXQgYzsKKyAgICAgICAgICAgIGZsb2F0IG07CisgICAgICAgICAgICBm
bG9hdCB5OworICAgICAgICAgICAgZmxvYXQgazsKKyAgICAgICAgICAgIGZsb2F0IGE7CisgICAg
ICAgIH0gbV9jbXlrYTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56334</attachid>
            <date>2010-05-18 01:15:52 -0700</date>
            <delta_ts>2010-05-19 07:12:01 -0700</delta_ts>
            <desc>Proposed patch v8</desc>
            <filename>bug-38845-v8.diff</filename>
            <type>text/plain</type>
            <size>50693</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMzQwMDk0Li5mNjkwODZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDUt
MTggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgIFNwZWMgbGluazoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2VyaWFsaXphdGlvbi1vZi1hLWNv
bG9yCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BT
ISkKKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNl
cmlhbGl6YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNl
dC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dDogVXBkYXRl
ZCBiYXNlbGluZS4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNv
bG9yLXNlcmlhbGl6YXRpb24uanM6IEFkZGVkLgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZVN0
eWxlKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsU3R5bGUpOgorICAgICAgICAodHJ5U2V0dGlu
Z1NoYWRvd0NvbG9yKToKKyAgICAgICAgKHRyeVNldHRpbmdDb2xvcik6CisgICAgICAgICh0cnlT
ZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKToKKyAgICAgICAgKHRyeVNldHRpbmdGaWxsQ29s
b3JXaXRoU2V0dGVyKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKToKKyAg
ICAgICAgKHRyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIpOgorICAgICAgICAodHJ5U2V0dGluZ0Zp
bGxDb2xvclJHQkEpOgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQSk6CisgICAg
ICAgICh0cnlTZXR0aW5nU2hhZG93UkdCQSk6CisgICAgICAgICh0cnlTZXR0aW5nUkdCQSk6Cisg
ICAgICAgICh0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EpOgorICAgICAgICAodHJ5U2V0dGluZ1N0
cm9rZUNvbG9yQ01ZS0EpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd0NNWUtBKToKKyAgICAg
ICAgKHRyeVNldHRpbmdDTVlLQSk6CisgICAgICAgICh0cnlTZXR0aW5nRmlsbENvbG9yV2l0aE92
ZXJyaWRlQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aE92ZXJyaWRl
QWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVycmlkZUFscGhhKToKKyAg
ICAgICAgKHRyeVNldHRpbmdDb2xvcldpdGhPdmVycmlkZUFscGhhKToKKyAgICAgICAgKHRyeVNl
dHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWwpOgorICAgICAgICAodHJ5U2V0dGluZ1N0cm9rZUNvbG9y
R3JheUxldmVsKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWwpOgorICAgICAg
ICAodHJ5U2V0dGluZ0dyYXlMZXZlbCk6CisgICAgICAgICh0cnlTZXR0aW5nRmlsbENvbG9yR3Jh
eUxldmVsV2l0aEFscGhhKToKKyAgICAgICAgKHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZl
bFdpdGhBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhh
KToKKyAgICAgICAgKHRyeVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEpOgorICAgICAgICAodHJ5
Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcik6CisgICAgICAgIChjaGVja0RlZmF1bHRWYWx1
ZSk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVy
dGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9jYW52
YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQgYmFzZWxpbmUuCisgICAgICAgICogZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQt
YXR0cmlidXRlLWpzLW51bGwuaHRtbDoKKwogMjAxMC0wNS0xNyAgRHJldyBXaWxzb24gIDxhdHdp
bHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9u
cyB1cGRhdGUgZm9yIGNocm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYzA3NWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNjQgQEAKK1Rlc3QgdGhhdCBnZXR0aW5nIGNvbG9yIHByb3Bl
cnRpZXMgZnJvbSBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCByZXR1cm5zIHByb3Blcmx5IGZv
cm1hdHRlZCB2YWx1ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNo
ZWNrRGVmYXVsdFZhbHVlKGN0eC5zdHJva2VTdHlsZSkgaXMgJyMwMDAwMDAnCitQQVNTIGNoZWNr
RGVmYXVsdFZhbHVlKGN0eC5maWxsU3R5bGUpIGlzICcjMDAwMDAwJworUEFTUyBjaGVja0RlZmF1
bHRWYWx1ZShjdHguc2hhZG93Q29sb3IpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgncmVkJywgMCkgaXMgJ3JnYmEoMjU1
LCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoT3ZlcnJpZGVBbHBo
YSgncmVkJywgMCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93V2l0aE92ZXJyaWRlQWxwaGEoJ3JlZCcsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhhKCdibGFjaycsIDEpIGlz
ICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgn
YmxhY2snLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVycmlk
ZUFscGhhKCdibGFjaycsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
UkdCQSgwLCAwLCAwLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5n
U3Ryb2tlQ29sb3JSR0JBKDAsIDAsIDAsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dSR0JBKDAsIDAsIDAsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCkn
CitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JSR0JBKDI1NSwgMjU1LCAyNTUsIDEpIGlzICcjZmZm
ZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JBKDI1NSwgMjU1LCAyNTUsIDEpIGlz
ICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93UkdCQSgyNTUsIDI1NSwgMjU1LCAxKSBp
cyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoMjU1LCAwLCAwLCAwKSBp
cyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEo
MjU1LCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdT
aGFkb3dSR0JBKDI1NSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yUkdCQSgyNTUsIDAsIDAsIDAuNCkgaXMgJ3JnYmEoMjU1LCAwLCAw
LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQSgyNTUsIDAsIDAsIDAu
NCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1JH
QkEoMjU1LCAwLCAwLCAwLjQpIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC40MDAwMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAwLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwg
MjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgwLCAwLCAwLCAwLCAw
KSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q01Z
S0EoMCwgMCwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5
U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDAsIDAsIDAsIDEpIGlzICcjZmZmZmZmJworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgwLCAwLCAwLCAwLCAxKSBpcyAnI2ZmZmZmZicKK1BB
U1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDAsIDAsIDAsIDEpIGlzICcjZmZmZmZmJworUEFT
UyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAw
LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtBKDAsIDEsIDAsIDAs
IDApIGlzICdyZ2JhKDI1NSwgMCwgMjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q01Z
S0EoMCwgMSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAyNTUsIDAuMCknCitQQVNTIHRyeVNl
dHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAxKSBpcyAnI2ZmMDBmZicKK1BBU1MgdHJ5
U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwgMSwgMCwgMCwgMSkgaXMgJyNmZjAwZmYnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dDTVlLQSgwLCAxLCAwLCAwLCAxKSBpcyAnI2ZmMDBmZicKK1BBU1Mg
dHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDAsIDAsIDEsIDApIGlzICdyZ2JhKDAsIDAsIDAs
IDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtBKDAsIDAsIDAsIDEsIDApIGlz
ICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAw
LCAxLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
Q01ZS0EoMCwgMCwgMCwgMSwgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VD
b2xvckNNWUtBKDAsIDAsIDAsIDEsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93Q01ZS0EoMCwgMCwgMCwgMSwgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdGaWxs
Q29sb3JHcmF5TGV2ZWwoMCkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xv
ckdyYXlMZXZlbCgwKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZl
bCgwKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbCgwLjUp
IGlzICcjODA4MDgwJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWwoMC41KSBp
cyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCgwLjUpIGlzICcjODA4
MDgwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKDEpIGlzICcjZmZmZmZmJwor
UEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWwoMSkgaXMgJyNmZmZmZmYnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWwoMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRp
bmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4w
KScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhhKDAsIDApIGlz
ICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRo
QWxwaGEoMCwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxD
b2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLCAwLjQpIGlzICdyZ2JhKDAsIDAsIDAsIDAuNDAwMDAp
JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMC40KSBp
cyAncmdiYSgwLCAwLCAwLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZl
bFdpdGhBbHBoYSgwLCAwLjQpIGlzICdyZ2JhKDAsIDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlT
ZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAsIDEpIGlzICcjMDAwMDAwJworUEFT
UyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMSkgaXMgJyMwMDAw
MDAnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMSkgaXMgJyMw
MDAwMDAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAw
KSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29s
b3JHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAwKSBpcyAncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjAp
JworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDAuNSwgMCkgaXMgJ3Jn
YmEoMTI4LCAxMjgsIDEyOCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZl
bFdpdGhBbHBoYSgwLjUsIDAuNCkgaXMgJ3JnYmEoMTI4LCAxMjgsIDEyOCwgMC40MDAwMCknCitQ
QVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDAuNCkgaXMg
J3JnYmEoMTI4LCAxMjgsIDEyOCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5
TGV2ZWxXaXRoQWxwaGEoMC41LCAwLjQpIGlzICdyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNDAwMDAp
JworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAuNSwgMSkgaXMg
JyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgw
LjUsIDEpIGlzICcjODA4MDgwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFs
cGhhKDAuNSwgMSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2
ZWxXaXRoQWxwaGEoMSwgMCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5
U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDApIGlzICdyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEo
MSwgMCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxD
b2xvckdyYXlMZXZlbFdpdGhBbHBoYSgxLCAwLjQpIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
NDAwMDApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMSwg
MC40KSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1No
YWRvd0dyYXlMZXZlbFdpdGhBbHBoYSgxLCAwLjQpIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
NDAwMDApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDEp
IGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxw
aGEoMSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRo
QWxwaGEoMSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgndHJh
bnNwYXJlbnQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0
eWxlKCd0cmFuc3BhcmVudCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRp
bmdTaGFkb3dDb2xvcigndHJhbnNwYXJlbnQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFT
UyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlTZXR0
aW5nRmlsbFN0eWxlKCdyZWQnKSBpcyAnI2ZmMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0Nv
bG9yKCdyZWQnKSBpcyAnI2ZmMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCd3aGl0
ZScpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCd3aGl0ZScpIGlzICcj
ZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3doaXRlJykgaXMgJyNmZmZmZmYn
CitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgnJykgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdGaWxsU3R5bGUoJycpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29s
b3IoJycpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ1JHQkEoMCwg
MCwgMCwgMCknKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0
eWxlKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5
U2V0dGluZ1NoYWRvd0NvbG9yKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCdyZ2JhKDAsMjU1LDAsMS4wKScpIGlz
ICcjMDBmZjAwJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCdyZ2JhKDAsMjU1LDAsMS4wKScp
IGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3JnYmEoMCwyNTUsMCwx
LjApJykgaXMgJyMwMGZmMDAnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgncmdiYSgxLDIs
MywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdGaWxs
U3R5bGUoJ3JnYmEoMSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3JnYmEoMSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIs
IDMsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ1JnQigxLDIsMyknKSBp
cyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnUmdCKDEsMiwzKScpIGlzICcj
MDEwMjAzJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ1JnQigxLDIsMyknKSBpcyAnIzAx
MDIwMycKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCdyR2JBKDEsMiwzLDApJykgaXMgJ3Jn
YmEoMSwgMiwgMywgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnckdiQSgxLDIsMyww
KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcign
ckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNldHRpbmdT
dHJva2VTdHlsZSh0cnVlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSh0
cnVlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKHRydWUpIGlzICcj
NjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoZmFsc2UpIGlzICcjNjY2NjY2Jwor
UEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKGZhbHNlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd0NvbG9yKGZhbHNlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9r
ZVN0eWxlKDApIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKDApIGlzICcj
NjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoMCkgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTdHJva2VTdHlsZSgxKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0Zp
bGxTdHlsZSgxKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKDEpIGlz
ICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoLTEpIGlzICcjNjY2NjY2Jwor
UEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKC0xKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGlu
Z1NoYWRvd0NvbG9yKC0xKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxl
KE5hTikgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoTmFOKSBpcyAnIzY2
NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKE5hTikgaXMgJyM2NjY2NjYnCitQQVNT
IHRyeVNldHRpbmdTdHJva2VTdHlsZShJbmZpbml0eSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNl
dHRpbmdGaWxsU3R5bGUoSW5maW5pdHkpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93Q29sb3IoSW5maW5pdHkpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5
bGUobnVsbCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUobnVsbCkgaXMg
JyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcihudWxsKSBpcyAnIzY2NjY2NicK
K1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcigndHJhbnNwYXJlbnQnKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcign
dHJhbnNwYXJlbnQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hh
ZG93V2l0aFNldHRlcigndHJhbnNwYXJlbnQnKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFT
UyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCdyZWQnKSBpcyAnI2ZmMDAwMCcKK1BB
U1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3JlZCcpIGlzICcjZmYwMDAwJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcigncmVkJykgaXMgJyNmZjAwMDAnCitQQVNTIHRy
eVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3doaXRlJykgaXMgJyNmZmZmZmYnCitQQVNT
IHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCd3aGl0ZScpIGlzICcjZmZmZmZmJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcignd2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1Mg
dHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcignJykgaXMgJyM2NjY2NjYnCitQQVNTIHRy
eVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCcnKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJycpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JXaXRoU2V0dGVyKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ1JHQkEoMCwgMCwgMCwg
MCknKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0aFNl
dHRlcignUkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3JnYmEoMCwyNTUsMCwxLjApJykgaXMgJyMw
MGZmMDAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCdyZ2JhKDAsMjU1LDAs
MS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcigncmdi
YSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9y
V2l0aFNldHRlcigncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCkn
CitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCdyZ2JhKDEsMiwzLDAuNCknKSBp
cyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0
ZXIoJ3JnYmEoMSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCdSZ0IoMSwyLDMpJykgaXMgJyMwMTAyMDMn
CitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCdSZ0IoMSwyLDMpJykgaXMgJyMw
MTAyMDMnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCdSZ0IoMSwyLDMpJykgaXMg
JyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3JHYkEoMSwy
LDMsMCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
V2l0aFNldHRlcignckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwg
MiwgMywgMC4wKScKK1BBU1MgdHJ5Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcigncmVkJykg
aXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdD
b2xvcigncmdiYSgwLCA1LCAxMCwgMC40KScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiMWIzMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0
aW9uLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdp
dGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dAppbmRleCBkYjA1ZWMwLi4xNTBkMWRi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRp
ZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0
bS1leHBlY3RlZC50eHQKQEAgLTMsMTEgKzMsMTEgQEAgVGVzdHMgdG8gbWFrZSBzdXJlIHdlIGNh
biBhc3NpZ24gdG8gbm9uLWN0bSBlZmZlY3RlZCBwcm9wZXJ0aWVzIHdpdGggYSBub24taW52ZXIK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGN0eC5maWxsU3R5bGUgaXMgImdy
ZWVuIgorUEFTUyBjdHguZmlsbFN0eWxlIGlzICIjMDA4MDAwIgogUEFTUyBpbWFnZURhdGEuZGF0
YVswXSBpcyAwCiBQQVNTIGltYWdlRGF0YS5kYXRhWzFdIGlzIDEyOAogUEFTUyBpbWFnZURhdGEu
ZGF0YVsyXSBpcyAwCi1QQVNTIGN0eC5zdHJva2VTdHlsZSBpcyAiZ3JlZW4iCitQQVNTIGN0eC5z
dHJva2VTdHlsZSBpcyAiIzAwODAwMCIKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAogUEFT
UyBpbWFnZURhdGEuZGF0YVsxXSBpcyAxMjgKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1j
b2xvci1zZXJpYWxpemF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFiMTVjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uanMKQEAgLTAs
MCArMSwyNDcgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZ2V0dGluZyBjb2xvciBwcm9wZXJ0
aWVzIGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcmV0dXJucyBwcm9wZXJseSBmb3Jt
YXR0ZWQgdmFsdWVzLiIpOworCitjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KS5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUodmFs
dWUpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnN0cm9rZVN0eWxl
ID0gdmFsdWU7CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5
U2V0dGluZ0ZpbGxTdHlsZSh2YWx1ZSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7Cisg
ICAgY3R4LmZpbGxTdHlsZSA9IHZhbHVlOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93Q29sb3IodmFsdWUpIHsKKyAgICBjdHguc2hhZG93
Q29sb3IgPSAnIzY2Nic7CisgICAgY3R4LnNoYWRvd0NvbG9yID0gdmFsdWU7CisgICAgcmV0dXJu
IGN0eC5zaGFkb3dDb2xvcjsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0NvbG9yKHZhbHVlLCBl
eHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoIiArIHZhbHVl
ICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdGaWxsU3R5bGUoIiAr
IHZhbHVlICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dD
b2xvcigiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGlu
Z1N0cm9rZUNvbG9yV2l0aFNldHRlcih2YWx1ZSkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcj
NjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IodmFsdWUpOworICAgIHJldHVybiBjdHguc3Ry
b2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKHZh
bHVlKSB7CisgICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0RmlsbENvbG9y
KHZhbHVlKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0
dGluZ1NoYWRvd1dpdGhTZXR0ZXIodmFsdWUpIHsKKyAgICBjdHguc2hhZG93Q29sb3IgPSAnIzY2
Nic7CisgICAgY3R4LnNldFNoYWRvdygwLCAwLCAwLCB2YWx1ZSk7CisgICAgcmV0dXJuIGN0eC5z
aGFkb3dDb2xvcjsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcih2YWx1
ZSwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNl
dHRlcigiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGlu
Z0ZpbGxDb2xvcldpdGhTZXR0ZXIoIiArIHZhbHVlICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hv
dWxkQmUoInRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nRmlsbENvbG9yUkdCQShyLCBnLCBiLCBhKSB7
CisgICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0RmlsbENvbG9yKHIsIGcs
IGIsIGEpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0
aW5nU3Ryb2tlQ29sb3JSR0JBKHIsIGcsIGIsIGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAn
IzY2Nic7CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBj
dHguc3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dSR0JBKHIsIGcs
IGIsIGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldFN0cm9r
ZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBjdHguc3Ryb2tlU3R5bGU7Cit9CisKK2Z1
bmN0aW9uIHRyeVNldHRpbmdSR0JBKHIsIGcsIGIsIGEsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxk
QmUoInRyeVNldHRpbmdGaWxsQ29sb3JSR0JBKCIgKyByICsgIiwgIiArIGcgKyAiLCAiICsgYiAr
ICIsICIgKyBhICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJv
a2VDb2xvclJHQkEoIiArIHIgKyAiLCAiICsgZyArICIsICIgKyBiICsgIiwgIiArIGEgKyAiKSIs
IGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd1JHQkEoIiArIHIgKyAi
LCAiICsgZyArICIsICIgKyBiICsgIiwgIiArIGEgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVu
Y3Rpb24gdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKGMsIG0sIHksIGssIGEpIHsKKyAgICBjdHgu
ZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxsQ29sb3IoYywgbSwgeSwgaywgYSk7
CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTdHJv
a2VDb2xvckNNWUtBKGMsIG0sIHksIGssIGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2
Nic7CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKGMsIG0sIHksIGssIGEpOworICAgIHJldHVybiBj
dHguc3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dDTVlLQShjLCBt
LCB5LCBrLCBhKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRT
dHJva2VDb2xvcihjLCBtLCB5LCBrLCBhKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOwor
fQorCitmdW5jdGlvbiB0cnlTZXR0aW5nQ01ZS0EoYywgbSwgeSwgaywgYSwgZXhwZWN0ZWQpIHsK
KyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKCIgKyBjICsgIiwgIiArIG0g
KyAiLCAiICsgeSArICIsICIgKyBrICsgIiwgIiArIGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBz
aG91bGRCZSgidHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoIiArIGMgKyAiLCAiICsgbSArICIs
ICIgKyB5ICsgIiwgIiArIGsgKyAiLCAiICsgYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3Vs
ZEJlKCJ0cnlTZXR0aW5nU2hhZG93Q01ZS0EoIiArIGMgKyAiLCAiICsgbSArICIsICIgKyB5ICsg
IiwgIiArIGsgKyAiLCAiICsgYSArICIpIiwgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiB0cnlT
ZXR0aW5nRmlsbENvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSB7CisgICAgY3R4
LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0RmlsbENvbG9yKGNvbG9yLCBhbHBoYSk7
CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTdHJv
a2VDb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYSkgeworICAgIGN0eC5zdHJva2VT
dHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoY29sb3IsIGFscGhhKTsKKyAg
ICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93
V2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSB7CisgICAgY3R4LnNoYWRvd0NvbG9yID0g
JyM2NjYnOworICAgIGN0eC5zZXRTaGFkb3coMCwgMCwgMCwgY29sb3IsIGFscGhhKTsKKyAgICBy
ZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nQ29sb3JXaXRo
T3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRy
eVNldHRpbmdGaWxsQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSgiICsgY29sb3IgKyAiLCAiICsgYWxw
aGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1N0cm9rZUNvbG9y
V2l0aE92ZXJyaWRlQWxwaGEoIiArIGNvbG9yICsgIiwgIiArIGFscGhhICsgIikiLCBleHBlY3Rl
ZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYSgiICsg
Y29sb3IgKyAiLCAiICsgYWxwaGEgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5
U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbChncmF5TGV2ZWwpIHsKKyAgICBjdHguZmlsbFN0eWxl
ID0gJyM2NjYnOworICAgIGN0eC5zZXRGaWxsQ29sb3IoZ3JheUxldmVsKTsKKyAgICByZXR1cm4g
Y3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxl
dmVsKGdyYXlMZXZlbCkgeworICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHgu
c2V0U3Ryb2tlQ29sb3IoZ3JheUxldmVsKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOwor
fQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsKGdyYXlMZXZlbCkgeworICAg
IGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2V0U2hhZG93KDAsIDAsIDAsIGdy
YXlMZXZlbCk7CisgICAgcmV0dXJuIGN0eC5zaGFkb3dDb2xvcjsKK30KKworZnVuY3Rpb24gdHJ5
U2V0dGluZ0dyYXlMZXZlbChncmF5TGV2ZWwsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRy
eVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWwoIiArIGdyYXlMZXZlbCArICIpIiwgZXhwZWN0ZWQp
OworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWwoIiArIGdyYXlM
ZXZlbCArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93R3Jh
eUxldmVsKCIgKyBncmF5TGV2ZWwgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5
U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIGFscGhhKSB7Cisg
ICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0RmlsbENvbG9yKGdyYXlMZXZl
bCwgYWxwaGEpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQorCitmdW5jdGlvbiB0cnlT
ZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoZ3JheUxldmVsLCBhbHBoYSkgewor
ICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoZ3Jh
eUxldmVsLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rp
b24gdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIGFscGhhKSB7
CisgICAgY3R4LnNoYWRvd0NvbG9yID0gJyM2NjYnOworICAgIGN0eC5zZXRTaGFkb3coMCwgMCwg
MCwgZ3JheUxldmVsLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5zaGFkb3dDb2xvcjsKK30KKwor
ZnVuY3Rpb24gdHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIGFscGhhLCBl
eHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0
aEFscGhhKCIgKyBncmF5TGV2ZWwgKyAiLCAiICsgYWxwaGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAg
ICBzaG91bGRCZSgidHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhhKCIgKyBn
cmF5TGV2ZWwgKyAiLCAiICsgYWxwaGEgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgi
dHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBoYSgiICsgZ3JheUxldmVsICsgIiwgIiAr
IGFscGhhICsgIikiLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeUNsZWFyU2hhZG93QWZ0
ZXJTZXR0aW5nQ29sb3IodmFsdWUpIHsKKyAgICBjdHguc2hhZG93Q29sb3IgPSB2YWx1ZTsKKyAg
ICBjdHguY2xlYXJTaGFkb3coKTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0NvbG9yOworfQorCitm
dW5jdGlvbiBjaGVja0RlZmF1bHRWYWx1ZSh2YWx1ZSkgeworICAgIHJldHVybiB2YWx1ZTsKK30K
Kworc2hvdWxkQmUoImNoZWNrRGVmYXVsdFZhbHVlKGN0eC5zdHJva2VTdHlsZSkiLCAiJyMwMDAw
MDAnIik7CitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4LmZpbGxTdHlsZSkiLCAiJyMw
MDAwMDAnIik7CitzaG91bGRCZSgiY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnNoYWRvd0NvbG9yKSIs
ICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOworCit0cnlTZXR0aW5nQ29sb3JXaXRoT3ZlcnJpZGVB
bHBoYSgiJ3JlZCciLCAwLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ0Nv
bG9yV2l0aE92ZXJyaWRlQWxwaGEoIidibGFjayciLCAxLCAiJyMwMDAwMDAnIik7CisKK3RyeVNl
dHRpbmdSR0JBKDAsIDAsIDAsIDAuMCwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7Cit0cnlTZXR0
aW5nUkdCQSgyNTUsIDI1NSwgMjU1LCAxLjAsICInI2ZmZmZmZiciKTsKK3RyeVNldHRpbmdSR0JB
KDI1NSwgMCwgMCwgMC4wLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ1JH
QkEoMjU1LCAwLCAwLCAwLjQsICIncmdiYSgyNTUsIDAsIDAsIDAuNDAwMDApJyIpOworCit0cnlT
ZXR0aW5nQ01ZS0EoMCwgMCwgMCwgMCwgMC4wLCAiJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSci
KTsKK3RyeVNldHRpbmdDTVlLQSgwLCAwLCAwLCAwLCAxLjAsICInI2ZmZmZmZiciKTsKK3RyeVNl
dHRpbmdDTVlLQSgwLCAxLCAwLCAwLCAwLjAsICIncmdiYSgyNTUsIDAsIDI1NSwgMC4wKSciKTsK
K3RyeVNldHRpbmdDTVlLQSgwLCAxLCAwLCAwLCAxLjAsICInI2ZmMDBmZiciKTsKK3RyeVNldHRp
bmdDTVlLQSgwLCAwLCAwLCAxLCAwLjAsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5U2V0
dGluZ0NNWUtBKDAsIDAsIDAsIDEsIDEuMCwgIicjMDAwMDAwJyIpOworCit0cnlTZXR0aW5nR3Jh
eUxldmVsKDAuMCwgIicjMDAwMDAwJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbCgwLjUsICInIzgw
ODA4MCciKTsKK3RyeVNldHRpbmdHcmF5TGV2ZWwoMS4wLCAiJyNmZmZmZmYnIik7CisKK3RyeVNl
dHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMC4wLCAwLjAsICIncmdiYSgwLCAwLCAwLCAwLjApJyIp
OwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjAsIDAuNCwgIidyZ2JhKDAsIDAsIDAs
IDAuNDAwMDApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjAsIDEuMCwgIicj
MDAwMDAwJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDAuMCwgIidyZ2Jh
KDEyOCwgMTI4LCAxMjgsIDAuMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAu
NSwgMC40LCAiJ3JnYmEoMTI4LCAxMjgsIDEyOCwgMC40MDAwMCknIik7Cit0cnlTZXR0aW5nR3Jh
eUxldmVsV2l0aEFscGhhKDAuNSwgMS4wLCAiJyM4MDgwODAnIik7Cit0cnlTZXR0aW5nR3JheUxl
dmVsV2l0aEFscGhhKDEuMCwgMC4wLCAiJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSciKTsKK3Ry
eVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMS4wLCAwLjQsICIncmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjQwMDAwKSciKTsKK3RyeVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEoMS4wLCAxLjAsICIn
I2ZmZmZmZiciKTsKKwordHJ5U2V0dGluZ0NvbG9yKCIndHJhbnNwYXJlbnQnIiwgIidyZ2JhKDAs
IDAsIDAsIDAuMCknIik7Cit0cnlTZXR0aW5nQ29sb3IoIidyZWQnIiwgIicjZmYwMDAwJyIpOwor
dHJ5U2V0dGluZ0NvbG9yKCInd2hpdGUnIiwgIicjZmZmZmZmJyIpOwordHJ5U2V0dGluZ0NvbG9y
KCInJyIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiJ1JHQkEoMCwgMCwgMCwgMCkn
IiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7Cit0cnlTZXR0aW5nQ29sb3IoIidyZ2JhKDAsMjU1
LDAsMS4wKSciLCAiJyMwMGZmMDAnIik7Cit0cnlTZXR0aW5nQ29sb3IoIidyZ2JhKDEsMiwzLDAu
NCknIiwgIidyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJyIpOwordHJ5U2V0dGluZ0NvbG9yKCInUmdC
KDEsMiwzKSciLCAiJyMwMTAyMDMnIik7Cit0cnlTZXR0aW5nQ29sb3IoIidyR2JBKDEsMiwzLDAp
JyIsICIncmdiYSgxLCAyLCAzLCAwLjApJyIpOwordHJ5U2V0dGluZ0NvbG9yKCJ0cnVlIiwgIicj
NjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCJmYWxzZSIsICInIzY2NjY2NiciKTsKK3RyeVNl
dHRpbmdDb2xvcigiMCIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiMSIsICInIzY2
NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiLTEiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5n
Q29sb3IoIk5hTiIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiSW5maW5pdHkiLCAi
JyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3IoIm51bGwiLCAiJyM2NjY2NjYnIik7CisKK3Ry
eVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIid0cmFuc3BhcmVudCciLCAiJ3JnYmEoMCwgMCwgMCwg
MC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIidyZWQnIiwgIicjZmYwMDAwJyIp
OwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3doaXRlJyIsICInI2ZmZmZmZiciKTsKK3Ry
eVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIicnIiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0Nv
bG9yV2l0aFNldHRlcigiJ1JHQkEoMCwgMCwgMCwgMCknIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCkn
Iik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCIncmdiYSgwLDI1NSwwLDEuMCknIiwgIicj
MDBmZjAwJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3JnYmEoMSwyLDMsMC40KSci
LCAiJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVy
KCInUmdCKDEsMiwzKSciLCAiJyMwMTAyMDMnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVy
KCInckdiQSgxLDIsMywwKSciLCAiJ3JnYmEoMSwgMiwgMywgMC4wKSciKTsKKworc2hvdWxkQmUo
InRyeUNsZWFyU2hhZG93QWZ0ZXJTZXR0aW5nQ29sb3IoJ3JlZCcpIiwgIidyZ2JhKDAsIDAsIDAs
IDAuMCknIik7CitzaG91bGRCZSgidHJ5Q2xlYXJTaGFkb3dBZnRlclNldHRpbmdDb2xvcigncmdi
YSgwLCA1LCAxMCwgMC40KScpIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxl
LWN0bS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0
LXByb3BlcnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanMKaW5kZXggZmYwMDUzZS4uN2Ni
OTFlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdp
dGgtbm9uLWludmVydGlibGUtY3RtLmpzCkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0aW9uIHRlc3RQ
aXhlbCh4LHksIHIsIGcsIGIpIHsKIGN0eC5zYXZlKCk7CiBjdHguc2NhbGUoMCwgMCk7CiBjdHgu
ZmlsbFN0eWxlID0gImdyZWVuIjsKLXNob3VsZEJlKCdjdHguZmlsbFN0eWxlJywgJyJncmVlbiIn
KTsKK3Nob3VsZEJlKCdjdHguZmlsbFN0eWxlJywgJyIjMDA4MDAwIicpOwogY3R4LnNldFRyYW5z
Zm9ybSgxLCAwLCAwLCAxLCAwLCAwKTsKIGN0eC5maWxsUmVjdCgwLDAsMTAwLDEwMCk7CiB0ZXN0
UGl4ZWwoNTAsIDUwLCAwLCAxMjgsIDApOwpAQCAtMjgsNyArMjgsNyBAQCBjdHguZmlsbFN0eWxl
ID0gInJlZCI7CiBjdHguZmlsbFJlY3QoMCwwLDEwMCwxMDApOwogY3R4LnNjYWxlKDAsIDApOwog
Y3R4LnN0cm9rZVN0eWxlID0gImdyZWVuIjsKLXNob3VsZEJlKCdjdHguc3Ryb2tlU3R5bGUnLCAn
ImdyZWVuIicpOworc2hvdWxkQmUoJ2N0eC5zdHJva2VTdHlsZScsICciIzAwODAwMCInKTsKIGN0
eC5saW5lV2lkdGggPSAxMDA7CiBjdHguc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApOwog
Y3R4LnN0cm9rZVJlY3QoMCwwLDEwMCwxMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmli
dXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0CmluZGV4IGJkNWU5N2QuLjhiZGZkM2MgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0
ZS1qcy1udWxsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXND
b250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQKQEAgLTMsNiAr
Myw2IEBAIFRoaXMgdGVzdCBzZXR0aW5nIHZhcmlvdXMgYXR0cmlidXRlcyBvZiBhIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCB0byBKYXZhU2NyaXB0CiBURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVl
IHdhcyB0aGUgc3RyaW5nICdzb3VyY2Utb3ZlcicuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbl0KIFRFU1QgU1VDQ0VFREVEOiBUaGUgdmFs
dWUgd2FzIHRoZSBzdHJpbmcgJ2J1dHQnLiBbdGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5saW5lQ2FwXQogVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnbWl0
ZXInLiBbdGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5saW5lSm9pbl0KLVRFU1QgU1VD
Q0VFREVEOiBUaGUgdmFsdWUgd2FzIHRoZSBlbXB0eSBzdHJpbmcuIFt0ZXN0ZWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELnNoYWRvd0NvbG9yXQorVEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3
YXMgdGhlIHN0cmluZyAncmdiYSgwLCAwLCAwLCAwLjApJy4gW3Rlc3RlZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuc2hhZG93Q29sb3JdCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1u
dWxsLmh0bWwKaW5kZXggZDllN2Y3YS4uM2FjYzY3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1
dGUtanMtbnVsbC5odG1sCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICB7bmFtZTogJ2dsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbicsIGV4cGVjdGVkTnVsbDogJ3NvdXJj
ZS1vdmVyJ30sCiAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xpbmVDYXAnLCBleHBl
Y3RlZE51bGw6ICdidXR0J30sCiAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xpbmVK
b2luJywgZXhwZWN0ZWROdWxsOiAnbWl0ZXInfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHtu
YW1lOiAnc2hhZG93Q29sb3InLCBleHBlY3RlZE51bGw6ICcnfSAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdzaGFkb3dDb2xvcicsIGV4cGVj
dGVkTnVsbDogJ3JnYmEoMCwgMCwgMCwgMC4wKSd9CiAgICAgICAgICAgICAgICAgICAgIF0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MDY3YWE5Li5kNDc2YmQ1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDEwLTA1LTE4ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEJ3MgcHJvcGVydHkgZ2V0dGVycyB0aGF0IHJldHVybiBjb2xv
cnMgc2hvdWxkCisgICAgICAgIHNlcmlhbGl6ZSB0aGVtIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg
SFRNTDUgc3BlYyAoNC44LjExLjEuNCkKKyAgICAgICAgU2V0dGVycyBzaG91bGQgaWdub3JlIGlu
dmFsaWQgY29sb3JzLgorCisgICAgICAgIEFsc28sIHNoYWRvd0NvbG9yIHNob3VsZCBpbml0aWFs
bHkgYmUgdHJhbnNwYXJlbnQgYmxhY2sgKDQuOC4xMS4xLjYpCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODQ1CisKKyAgICAgICAgUmVmYWN0b3Jl
ZCBDYW52YXNTdHlsZSB0byBzdG9yZSBhbiBSR0JBMzIgaW5zdGVhZCBvZiBSR0JBIGNvbXBvbmVu
dHMgYW5kL29yIHRoZSBjb2xvciBzdHJpbmcuCisKKyAgICAgICAgU3BlYyBsaW5rczoKKyAgICAg
ICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2Vy
aWFsaXphdGlvbi1vZi1hLWNvbG9yCisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS1jb250ZXh0LTJkLXNoYWRvd2NvbG9yCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbAor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFy
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBw
bHlTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNTdHlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0
cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xv
cik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6
OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjopOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzU3R5bGU6OkNNWUtBVmFsdWVzOjpDTVlLQVZhbHVlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNl
cmlhbGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisKIDIwMTAt
MDUtMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCA3Y2RmNWQ2Li4xODRjYzE0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA4IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgpAQCAtMTE4
LDE0ICsxMTgsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0KCkKIH0K
IAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoKQotICAgIDogbV9zdHJv
a2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKCIjMDAwMDAwIikpCi0gICAgLCBtX2ZpbGxTdHls
ZShDYW52YXNTdHlsZTo6Y3JlYXRlKCIjMDAwMDAwIikpCisgICAgOiBtX3N0cm9rZVN0eWxlKENh
bnZhc1N0eWxlOjpjcmVhdGUoQ29sb3I6OmJsYWNrKSkKKyAgICAsIG1fZmlsbFN0eWxlKENhbnZh
c1N0eWxlOjpjcmVhdGUoQ29sb3I6OmJsYWNrKSkKICAgICAsIG1fbGluZVdpZHRoKDEpCiAgICAg
LCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4oTWl0ZXJKb2luKQogICAgICwg
bV9taXRlckxpbWl0KDEwKQogICAgICwgbV9zaGFkb3dCbHVyKDApCi0gICAgLCBtX3NoYWRvd0Nv
bG9yKCJibGFjayIpCisgICAgLCBtX3NoYWRvd0NvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKICAg
ICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xvYmFsQ29tcG9zaXRlKENvbXBvc2l0ZVNv
dXJjZU92ZXIpCiAgICAgLCBtX2ludmVydGlibGVDVE0odHJ1ZSkKQEAgLTMxNSwxMyArMzE1LDE0
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dCbHVyKGZsb2F0IGJs
dXIpCiAKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNoYWRvd0NvbG9yKCkgY29u
c3QKIHsKLSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gaWYgeW91IGNhbGxl
ZCBzZXRTaGFkb3cgd2l0aCBhIG5vbi1zdHJpbmcgY29sb3I/Ci0gICAgcmV0dXJuIHN0YXRlKCku
bV9zaGFkb3dDb2xvcjsKKyAgICByZXR1cm4gQ29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yKS5z
ZXJpYWxpemVkKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3dDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQogewotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IGNvbG9yOworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFk
b3dDb2xvciwgY29sb3IpKQorICAgICAgICByZXR1cm47CisKICAgICBhcHBseVNoYWRvdygpOwog
fQogCkBAIC04MTQsMTUgKzgxNSwxNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiB7CiAgICAg
c3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
dGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
IiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAg
IGFwcGx5U2hhZG93KCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5n
JiBjb2xvcikKIHsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc3RhdGUoKS5tX3NoYWRv
d09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gY29sb3I7CiAgICAgYXBw
bHlTaGFkb3coKTsKIH0KIApAQCAtODMwLDY1ICs4MzMsNjQgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyLAogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhl
aWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9z
aGFkb3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJG
cm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3Jh
eUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZik7Ci0gICAgYy0+c2V0U2hhZG93KElu
dFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IocmdiYSks
IERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNl
Q29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBj
b2xvciwgZmxvYXQgYWxwaGEpCiB7CisgICAgUkdCQTMyIHJnYmE7CisKKyAgICBpZiAoIUNTU1Bh
cnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKworICAgIHN0
YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEp
OwogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9IGNvbG9yOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0gMDsg
Ly8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgIGlmICghc3RhdGUoKS5tX3NoYWRv
d0NvbG9yLmlzRW1wdHkoKSkKLSAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0
YXRlKCkubV9zaGFkb3dDb2xvcik7Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1o
ZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBo
YShyZ2JhLCBhbHBoYSkpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50
U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIs
IGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09m
ZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1
ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gIiI7CisgICAgc3RhdGUoKS5t
X3NoYWRvd0NvbG9yID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWws
IGdyYXlMZXZlbCwgYWxwaGEpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2Jh
ID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUo
KS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5z
ZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQs
IGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7CiAgICAg
c3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBz
dGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
IiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwg
ZywgYiwgYSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwog
ICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdC
QTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFj
awotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFk
b3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCiB7CiAg
ICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAg
ICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9y
ID0gIiI7CisgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0gbWFrZVJHQkFGcm9tQ01ZS0EoYywg
bSwgeSwgaywgYSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRjID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICBpZiAoIWRjKQpAQCAtOTAxLDcgKzkwMyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwKICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGMtPnBsYXRmb3JtQ29udGV4dCgp
LCBhZGp1c3RlZFNoYWRvd1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzaGFkb3dDb2xvcik7
CiAgICAgQ0dDb2xvclJlbGVhc2Uoc2hhZG93Q29sb3IpOwogI2Vsc2UKLSAgICBkYy0+c2V0U2hh
ZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBDb2xvcihjLCBtLCB5LCBrLCBhKSwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKICNl
bmRpZgogfQogCkBAIC05MDksNyArOTExLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmNsZWFyU2hhZG93KCkKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSAwOwotICAgIHN0YXRlKCkubV9zaGFk
b3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yOjp0cmFuc3Bh
cmVudDsKICAgICBhcHBseVNoYWRvdygpOwogfQogCkBAIC05MTksMTIgKzkyMSw5IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdygpCiAgICAgaWYgKCFjKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdiYSA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNw
YXJlbnQgYmxhY2sKLSAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5KCkpCi0g
ICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3Ip
OwogICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC53aWR0aCgpOwogICAg
IGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCk7Ci0gICAgYy0+
c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
Q29sb3IocmdiYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXpl
KHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dD
b2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRNTElt
YWdlRWxlbWVudCogaW1hZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAppbmRleCBhNDlmZjgxLi5kNmIwYzhhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC0yMTksNyArMjIw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgZmxvYXQgbV9taXRlckxpbWl0
OwogICAgICAgICAgICAgRmxvYXRTaXplIG1fc2hhZG93T2Zmc2V0OwogICAgICAgICAgICAgZmxv
YXQgbV9zaGFkb3dCbHVyOwotICAgICAgICAgICAgU3RyaW5nIG1fc2hhZG93Q29sb3I7CisgICAg
ICAgICAgICBSR0JBMzIgbV9zaGFkb3dDb2xvcjsKICAgICAgICAgICAgIGZsb2F0IG1fZ2xvYmFs
QWxwaGE7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2dsb2JhbENvbXBvc2l0ZTsK
ICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKaW5kZXggMzUxNWUwMy4uYWFiMDcyYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CiAgKgpAQCAtNDgsMTIyICs0OCw5NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhbnZh
c1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKQotICAgIDogbV90eXBlKENv
bG9yU3RyaW5nKQotICAgICwgbV9jb2xvcihjb2xvcikKK0NhbnZhc1N0eWxlOjpDYW52YXNTdHls
ZShSR0JBMzIgcmdiYSkKKyAgICA6IG1fdHlwZShSR0JBKQorICAgICwgbV9yZ2JhKHJnYmEpCiB7
CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwpCi0gICAgOiBt
X3R5cGUoR3JheUxldmVsKQotICAgICwgbV9hbHBoYSgxKQotICAgICwgbV9ncmF5TGV2ZWwoZ3Jh
eUxldmVsKQotewotfQotCi1DYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29uc3QgU3RyaW5nJiBj
b2xvciwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3R5cGUoQ29sb3JTdHJpbmdXaXRoQWxwaGEpCi0g
ICAgLCBtX2NvbG9yKGNvbG9yKQotICAgICwgbV9hbHBoYShhbHBoYSkKKyAgICA6IG1fdHlwZShS
R0JBKQorICAgICwgbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBncmF5TGV2ZWwsIDEuMGYpKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
ZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShHcmF5TGV2ZWwpCi0g
ICAgLCBtX2FscGhhKGFscGhhKQotICAgICwgbV9ncmF5TGV2ZWwoZ3JheUxldmVsKQorICAgIDog
bV90eXBlKFJHQkEpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2Fu
dmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKICAgICA6IG1fdHlw
ZShSR0JBKQotICAgICwgbV9hbHBoYShhKQotICAgICwgbV9yZWQocikKLSAgICAsIG1fZ3JlZW4o
ZykKLSAgICAsIG1fYmx1ZShiKQorICAgICwgbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIs
IGcsIGIsIGEpKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgYywgZmxv
YXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKICAgICA6IG1fdHlwZShDTVlLQSkKLSAg
ICAsIG1fYWxwaGEoYSkKLSAgICAsIG1fY3lhbihjKQotICAgICwgbV9tYWdlbnRhKG0pCi0gICAg
LCBtX3llbGxvdyh5KQotICAgICwgbV9ibGFjayhrKQorICAgICwgbV9yZ2JhKG1ha2VSR0JBRnJv
bUNNWUtBKGMsIG0sIHksIGssIGEpKQorICAgICwgbV9jbXlrYShjLCBtLCB5LCBrLCBhKQogewog
fQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4g
Z3JhZGllbnQpCi0gICAgOiBtX3R5cGUoZ3JhZGllbnQgPyBHcmFkaWVudCA6IENvbG9yU3RyaW5n
KQorICAgIDogbV90eXBlKGdyYWRpZW50ID8gR3JhZGllbnQgOiBSR0JBKQogICAgICwgbV9ncmFk
aWVudChncmFkaWVudCkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQ
dHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1fdHlwZShwYXR0ZXJuID8gSW1hZ2VQ
YXR0ZXJuIDogQ29sb3JTdHJpbmcpCisgICAgOiBtX3R5cGUocGF0dGVybiA/IEltYWdlUGF0dGVy
biA6IFJHQkEpCiAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKIHsKIH0KIAorUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKQorewor
ICAgIFJHQkEzMiByZ2JhOworICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNv
bG9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNT
dHlsZShyZ2JhKSk7Cit9CisKK1Bhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCit7CisgICAgUkdCQTMyIHJn
YmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpKSk7Cit9CisKIHZvaWQgQ2FudmFzU3R5bGU6OmFw
cGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNh
c2UgQ29sb3JTdHJpbmc6IHsKLSAgICAgICAgICAgIENvbG9yIGMgPSBDb2xvcihtX2NvbG9yKTsK
LSAgICAgICAgICAgIGlmIChjLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKGMucmdiKCksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUkdCQTMyIGNvbG9yID0gMDsg
Ly8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgICAgICAgICAgaWYgKENTU1BhcnNl
cjo6cGFyc2VDb2xvcihjb2xvciwgbV9jb2xvcikpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb2xvclN0cmluZ1dpdGhBbHBoYTogewotICAg
ICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAgICAgaWYgKGMuaXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShjLnJnYigpLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSR0JBMzIg
Y29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBp
ZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBt
X2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEdyYXlMZXZlbDoKLSAgICAgICAgICAgIC8vIFdlJ3JlIG9ubHkgc3Vw
cG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRoaXMgaXNuJ3QKLSAgICAg
ICAgICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1MNSwgSSBkb24ndCBleHBlY3QgYW55b25lIHdpbGwg
Y2FyZS4gIElmIHRoZXkgZG8KLSAgICAgICAgICAgIC8vIHdlJ2xsIG1ha2UgYSBmYW5jaWVyIENv
bG9yIGFic3RyYWN0aW9uLgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29s
b3IobV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2dyYXlMZXZlbCwgbV9hbHBoYSksIERldmlj
ZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUkdCQToKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1fcmVkLCBtX2dyZWVuLCBt
X2JsdWUsIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENNWUtBOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJv
dWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0gICAgICAgICAg
ICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENZ
TUtBIGNvcnJlY3RseQorICAgIGNhc2UgUkdCQToKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDTVlLQTogeworICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWlu
ZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCisgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBm
YW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVjdGx5CiAjaWYg
UExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRDTVlLU3Ryb2tlQ29sb3IoY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9i
bGFjaywgbV9hbHBoYSk7CisgICAgICAgIENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS5jLCBtX2NteWthLm0sIG1fY215a2EueSwg
bV9jbXlrYS5rLCBtX2NteWthLmEpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgICAgICBR
UGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVuKCk7Ci0gICAg
ICAgICAgICBRQ29sb3IgY2xyOwotICAgICAgICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9t
YWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywgbV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50
UGVuLnNldENvbG9yKGNscik7Ci0gICAgICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+c2V0UGVuKGN1cnJlbnRQZW4pOworICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVuKCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAg
IGNsci5zZXRDbXlrRihtX2NteWthLmMsIG1fY215a2EubSwgbV9jbXlrYS55LCBtX2NteWthLmss
IG1fY215a2EuYSk7CisgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29sb3IoY2xyKTsKKyAgICAgICAg
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNldFBlbihjdXJyZW50UGVuKTsKICNlbHNlCi0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50
YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKICNl
bmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHcmFkaWVu
dDoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNhbnZhc0dyYWRpZW50
KCktPmdyYWRpZW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VQ
YXR0ZXJuOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybihjYW52YXNQYXR0
ZXJuKCktPnBhdHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRp
ZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEltYWdlUGF0dGVybjoKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlUGF0dGVybihjYW52
YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAt
MTcyLDQ5ICsxNDUsMzEgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
ICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgQ29sb3JTdHJpbmc6IHsKLSAgICAg
ICAgICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawot
ICAgICAgICAgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBtX2NvbG9yKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IocmdiYSwgRGV2aWNlQ29sb3JTcGFj
ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9yU3Ry
aW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0
IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKGNvbG9yLCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgbV9hbHBoYSksIERldmljZUNvbG9yU3Bh
Y2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHcmF5TGV2
ZWw6Ci0gICAgICAgICAgICAvLyBXZSdyZSBvbmx5IHN1cHBvcnRpbmcgMjU1IGxldmVscyBvZiBn
cmF5IGhlcmUuICBTaW5jZSB0aGlzIGlzbid0Ci0gICAgICAgICAgICAvLyBldmVuIHBhcnQgb2Yg
SFRNTDUsIEkgZG9uJ3QgZXhwZWN0IGFueW9uZSB3aWxsIGNhcmUuICBJZiB0aGV5IGRvCi0gICAg
ICAgICAgICAvLyB3ZSdsbCBtYWtlIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbi4KLSAgICAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcihtX2dyYXlMZXZlbCwgbV9ncmF5TGV2
ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBSR0JBOgotICAgICAgICAgICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKENvbG9yKG1fcmVkLCBtX2dyZWVuLCBtX2JsdWUsIG1fYWxwaGEpLCBEZXZpY2VDb2xv
clNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENNWUtBOiB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdy
YXBoaWNzQ29udGV4dCBBUEkuCi0gICAgICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBD
b2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENZTUtBIGNvcnJlY3RseQorICAgIGNhc2UgUkdC
QToKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdiYSwgRGV2aWNlQ29sb3JTcGFj
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ01ZS0E6IHsKKyAgICAgICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgorICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBz
dXBwb3J0IENNWUtBIGNvcnJlY3RseQogI2lmIFBMQVRGT1JNKENHKQotICAgICAgICAgICAgQ0dD
b250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jeWFu
LCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKKyAgICAgICAgQ0dDb250
ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS5j
LCBtX2NteWthLm0sIG1fY215a2EueSwgbV9jbXlrYS5rLCBtX2NteWthLmEpOwogI2VsaWYgUExB
VEZPUk0oUVQpCi0gICAgICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmJydXNoKCk7Ci0gICAgICAgICAgICBRQ29sb3IgY2xyOwotICAgICAg
ICAgICAgY2xyLnNldENteWtGKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFjaywg
bV9hbHBoYSk7Ci0gICAgICAgICAgICBjdXJyZW50QnJ1c2guc2V0Q29sb3IoY2xyKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRCcnVzaChjdXJyZW50QnJ1c2gp
OworICAgICAgICBRQnJ1c2ggY3VycmVudEJydXNoID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmJydXNoKCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAgIGNsci5zZXRDbXlrRiht
X2NteWthLmMsIG1fY215a2EubSwgbV9jbXlrYS55LCBtX2NteWthLmssIG1fY215a2EuYSk7Cisg
ICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOworICAgICAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+c2V0QnJ1c2goY3VycmVudEJydXNoKTsKICNlbHNlCi0gICAgICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93
LCBtX2JsYWNrLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2UpOwogI2VuZGlmCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYWRpZW50OgotICAgICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNhbnZhc0dyYWRpZW50KCktPmdyYWRpZW50KCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgotICAgICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdy
YWRpZW50OgorICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY2FudmFzR3JhZGllbnQo
KS0+Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgor
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4o
KSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTdHlsZS5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5o
CmluZGV4IGZlMDFiZDEuLjc5MDEzYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI2lmbmRlZiBDYW52YXNTdHlsZV9oCiAjZGVmaW5l
IENhbnZhc1N0eWxlX2gKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMTYgKzM4LDE3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhbnZhc1N0eWxlIDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FudmFzU3R5bGU+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENhbnZhc1N0eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvcikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENhbnZhc1N0eWxlKGNvbG9yKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FudmFzU3R5bGU+IGNyZWF0ZShSR0JBMzIgcmdiYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKHJnYmEpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHls
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShmbG9hdCBncmF5
TGV2ZWwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmF5TGV2ZWwpKTsgfQot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgY29sb3IsIGZsb2F0IGFscGhhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUo
Y29sb3IsIGFscGhhKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
IGNyZWF0ZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FudmFzU3R5bGUoZ3JheUxldmVsLCBhbHBoYSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxv
YXQgYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKHIsIGcsIGIsIGEpKTsgfQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGMsIGZs
b2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YW52YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRpZW50KSk7IH0KICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1Bh
dHRlcm4+IHBhdHRlcm4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShwYXR0ZXJu
KSk7IH0KIAotICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9
CisgICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiYSkuc2Vy
aWFsaXplZCgpOyB9CiAgICAgICAgIENhbnZhc0dyYWRpZW50KiBjYW52YXNHcmFkaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JhZGllbnQuZ2V0KCk7IH0KICAgICAgICAgQ2FudmFzUGF0dGVybiog
Y2FudmFzUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQogCkBAIC01
MywzNSArNTYsMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5U3Ry
b2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBDYW52
YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yKTsKKyAgICAgICAgQ2FudmFzU3R5bGUoUkdCQTMy
IHJnYmEpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwpOwotICAgICAgICBD
YW52YXNTdHlsZShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSk7CiAgICAgICAgIENh
bnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOwogICAgICAgICBDYW52YXNT
dHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICAgICAgQ2FudmFz
U3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAgICAg
ICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+KTsKICAgICAgICAgQ2Fu
dmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPik7CiAKLSAgICAgICAgZW51bSBUeXBl
IHsgQ29sb3JTdHJpbmcsIENvbG9yU3RyaW5nV2l0aEFscGhhLCBHcmF5TGV2ZWwsIFJHQkEsIENN
WUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CisgICAgICAgIGVudW0gVHlwZSB7IFJHQkEs
IENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuIH07CiAKICAgICAgICAgVHlwZSBtX3R5cGU7
CiAKLSAgICAgICAgU3RyaW5nIG1fY29sb3I7CisgICAgICAgIFJHQkEzMiBtX3JnYmE7CisKICAg
ICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAgICBSZWZQdHI8
Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwogCi0gICAgICAgIGZsb2F0IG1fYWxwaGE7Ci0KLSAg
ICAgICAgZmxvYXQgbV9ncmF5TGV2ZWw7Ci0KLSAgICAgICAgZmxvYXQgbV9yZWQ7Ci0gICAgICAg
IGZsb2F0IG1fZ3JlZW47Ci0gICAgICAgIGZsb2F0IG1fYmx1ZTsKLQotICAgICAgICBmbG9hdCBt
X2N5YW47Ci0gICAgICAgIGZsb2F0IG1fbWFnZW50YTsKLSAgICAgICAgZmxvYXQgbV95ZWxsb3c7
Ci0gICAgICAgIGZsb2F0IG1fYmxhY2s7CisgICAgICAgIHN0cnVjdCBDTVlLQVZhbHVlcyB7Cisg
ICAgICAgICAgICBDTVlLQVZhbHVlcygpIHt9CisgICAgICAgICAgICBDTVlLQVZhbHVlcyhmbG9h
dCBjeWFuLCBmbG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBh
bHBoYSkgOiBjKGN5YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhh
KSB7fQorICAgICAgICAgICAgZmxvYXQgYzsKKyAgICAgICAgICAgIGZsb2F0IG07CisgICAgICAg
ICAgICBmbG9hdCB5OworICAgICAgICAgICAgZmxvYXQgazsKKyAgICAgICAgICAgIGZsb2F0IGE7
CisgICAgICAgIH0gbV9jbXlrYTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IGQ5OGIyMDIuLjE3YTVkMzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC0xNzgsNiArMTc4LDE4IEBAIENvbG9yOjpD
b2xvcihjb25zdCBjaGFyKiBuYW1lKQogICAgIH0KIH0KIAorU3RyaW5nIENvbG9yOjpzZXJpYWxp
emVkKCkgY29uc3QKK3sKKyAgICBpZiAoYWxwaGEoKSA9PSAweEZGKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiMlMDJ4JTAyeCUwMngiLCByZWQoKSwgZ3JlZW4oKSwgYmx1ZSgpKTsK
KworICAgIC8vIE1hdGNoIEdlY2tvICgiMC4wIiBmb3IgemVybywgNSBkZWNpbWFscyBmb3IgYW55
dGhpbmcgZWxzZSkKKyAgICBpZiAoIWFscGhhKCkpCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgicmdiYSgldSwgJXUsICV1LCAwLjApIiwgcmVkKCksIGdyZWVuKCksIGJsdWUoKSk7CisK
KyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInJnYmEoJXUsICV1LCAldSwgJS41ZikiLCByZWQo
KSwgZ3JlZW4oKSwgYmx1ZSgpLCBhbHBoYSgpIC8gMjU1LjBmKTsKK30KKwogU3RyaW5nIENvbG9y
OjpuYW1lKCkgY29uc3QKIHsKICAgICBpZiAoYWxwaGEoKSA8IDB4RkYpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmgKaW5kZXggOWEzY2E3NS4uZDE4MjIwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaApAQCAtODAsNyArODAsMTEgQEAgcHVibGljOgogICAgIENvbG9yKGZsb2F0IGMsIGZs
b2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQUZyb21D
TVlLQShjLCBtLCB5LCBrLCBhKSksIG1fdmFsaWQodHJ1ZSkgeyB9CiAgICAgZXhwbGljaXQgQ29s
b3IoY29uc3QgU3RyaW5nJik7CiAgICAgZXhwbGljaXQgQ29sb3IoY29uc3QgY2hhciopOwotICAg
IAorCisgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhY2NvcmRpbmcgdG8gSFRN
TDUKKyAgICAvLyAtIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvI3NlcmlhbGl6YXRpb24tb2YtYS1jb2xvcgorICAgIFN0cmluZyBzZXJpYWxpemVkKCkg
Y29uc3Q7CisKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmFtZWRDb2xv
cihjb25zdCBTdHJpbmcmKTsKIAo=
</data>
<flag name="review"
          id="40792"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="40793"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56486</attachid>
            <date>2010-05-19 07:12:01 -0700</date>
            <delta_ts>2010-05-19 09:12:17 -0700</delta_ts>
            <desc>Proposed patch v9</desc>
            <filename>bug-38845-v9.diff</filename>
            <type>text/plain</type>
            <size>51070</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjk0ODQ2Li40MTNiMjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTAtMDUt
MTkgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHByb3BlciBjb2xvciBzZXJpYWxpemF0aW9uIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCdzIGdldHRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NQorCisgICAgICAgIFNwZWMgbGluazoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2VyaWFsaXphdGlvbi1vZi1hLWNv
bG9yCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1z
ZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1z
ZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50eHQ6IFVwZGF0
ZWQgYmFzZWxpbmUuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1j
b2xvci1zZXJpYWxpemF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHRyeVNldHRpbmdTdHJva2VT
dHlsZSk6CisgICAgICAgICh0cnlTZXR0aW5nRmlsbFN0eWxlKToKKyAgICAgICAgKHRyeVNldHRp
bmdTaGFkb3dDb2xvcik6CisgICAgICAgICh0cnlTZXR0aW5nQ29sb3IpOgorICAgICAgICAodHJ5
U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcik6CisgICAgICAgICh0cnlTZXR0aW5nRmlsbENv
bG9yV2l0aFNldHRlcik6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcik6Cisg
ICAgICAgICh0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKToKKyAgICAgICAgKHRyeVNldHRpbmdG
aWxsQ29sb3JSR0JBKToKKyAgICAgICAgKHRyeVNldHRpbmdTdHJva2VDb2xvclJHQkEpOgorICAg
ICAgICAodHJ5U2V0dGluZ1NoYWRvd1JHQkEpOgorICAgICAgICAodHJ5U2V0dGluZ1JHQkEpOgor
ICAgICAgICAodHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKToKKyAgICAgICAgKHRyeVNldHRpbmdT
dHJva2VDb2xvckNNWUtBKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dDTVlLQSk6CisgICAg
ICAgICh0cnlTZXR0aW5nQ01ZS0EpOgorICAgICAgICAodHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhP
dmVycmlkZUFscGhhKToKKyAgICAgICAgKHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhPdmVycmlk
ZUFscGhhKToKKyAgICAgICAgKHRyeVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYSk6Cisg
ICAgICAgICh0cnlTZXR0aW5nQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICh0cnlT
ZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKToKKyAgICAgICAgKHRyeVNldHRpbmdTdHJva2VDb2xv
ckdyYXlMZXZlbCk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsKToKKyAgICAg
ICAgKHRyeVNldHRpbmdHcmF5TGV2ZWwpOgorICAgICAgICAodHJ5U2V0dGluZ0ZpbGxDb2xvckdy
YXlMZXZlbFdpdGhBbHBoYSk6CisgICAgICAgICh0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2
ZWxXaXRoQWxwaGEpOgorICAgICAgICAodHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBo
YSk6CisgICAgICAgICh0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKToKKyAgICAgICAgKHRy
eUNsZWFyU2hhZG93QWZ0ZXJTZXR0aW5nQ29sb3IpOgorICAgICAgICAoY2hlY2tEZWZhdWx0VmFs
dWUpOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3Bl
cnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanM6CisgICAgICAgICogZmFzdC9kb20vY2Fu
dmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwtZXhwZWN0ZWQudHh0OiBVcGRh
dGVkIGJhc2VsaW5lLgorICAgICAgICAqIGZhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50
LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWw6CisKIDIwMTAtMDUtMTkgIFpoZW55YW8gTW8gIDx6bW9A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxp
emF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
MGMwNzVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LWNvbG9yLXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTY0IEBACitUZXN0
IHRoYXQgZ2V0dGluZyBjb2xvciBwcm9wZXJ0aWVzIGZyb20gYSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgcmV0dXJucyBwcm9wZXJseSBmb3JtYXR0ZWQgdmFsdWVzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBjaGVja0RlZmF1bHRWYWx1ZShjdHguc3Ryb2tlU3R5bGUp
IGlzICcjMDAwMDAwJworUEFTUyBjaGVja0RlZmF1bHRWYWx1ZShjdHguZmlsbFN0eWxlKSBpcyAn
IzAwMDAwMCcKK1BBU1MgY2hlY2tEZWZhdWx0VmFsdWUoY3R4LnNoYWRvd0NvbG9yKSBpcyAncmdi
YSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aE92ZXJyaWRlQWxw
aGEoJ3JlZCcsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZUNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoJ3JlZCcsIDApIGlzICdyZ2JhKDI1NSwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVycmlkZUFscGhhKCdyZWQnLCAwKSBp
cyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoT3Zl
cnJpZGVBbHBoYSgnYmxhY2snLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9r
ZUNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoJ2JsYWNrJywgMSkgaXMgJyMwMDAwMDAnCitQQVNTIHRy
eVNldHRpbmdTaGFkb3dXaXRoT3ZlcnJpZGVBbHBoYSgnYmxhY2snLCAxKSBpcyAnIzAwMDAwMCcK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoMCwgMCwgMCwgMCkgaXMgJ3JnYmEoMCwgMCwg
MCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQSgwLCAwLCAwLCAwKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93UkdCQSgwLCAwLCAwLCAw
KSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yUkdCQSgy
NTUsIDI1NSwgMjU1LCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9y
UkdCQSgyNTUsIDI1NSwgMjU1LCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRv
d1JHQkEoMjU1LCAyNTUsIDI1NSwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdGaWxs
Q29sb3JSR0JBKDI1NSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JBKDI1NSwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAwLCAw
LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93UkdCQSgyNTUsIDAsIDAsIDApIGlzICdyZ2Jh
KDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvclJHQkEoMjU1LCAwLCAw
LCAwLjQpIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC40MDAwMCknCitQQVNTIHRyeVNldHRpbmdTdHJv
a2VDb2xvclJHQkEoMjU1LCAwLCAwLCAwLjQpIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC40MDAwMCkn
CitQQVNTIHRyeVNldHRpbmdTaGFkb3dSR0JBKDI1NSwgMCwgMCwgMC40KSBpcyAncmdiYSgyNTUs
IDAsIDAsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMCwgMCwg
MCwgMCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9r
ZUNvbG9yQ01ZS0EoMCwgMCwgMCwgMCwgMCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDAsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAwLCAwLCAw
LCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yQ01ZS0EoMCwgMCwg
MCwgMCwgMSkgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDTVlLQSgwLCAwLCAw
LCAwLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDEs
IDAsIDAsIDApIGlzICdyZ2JhKDI1NSwgMCwgMjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ry
b2tlQ29sb3JDTVlLQSgwLCAxLCAwLCAwLCAwKSBpcyAncmdiYSgyNTUsIDAsIDI1NSwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDEsIDAsIDAsIDApIGlzICdyZ2JhKDI1NSwg
MCwgMjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yQ01ZS0EoMCwgMSwgMCwgMCwg
MSkgaXMgJyNmZjAwZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckNNWUtBKDAsIDEsIDAs
IDAsIDEpIGlzICcjZmYwMGZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q01ZS0EoMCwgMSwgMCwg
MCwgMSkgaXMgJyNmZjAwZmYnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQSgwLCAwLCAw
LCAxLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29s
b3JDTVlLQSgwLCAwLCAwLCAxLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93Q01ZS0EoMCwgMCwgMCwgMSwgMCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckNNWUtBKDAsIDAsIDAsIDEsIDEpIGlzICcjMDAwMDAw
JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQSgwLCAwLCAwLCAxLCAxKSBpcyAnIzAw
MDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NNWUtBKDAsIDAsIDAsIDEsIDEpIGlzICcjMDAw
MDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKDApIGlzICcjMDAwMDAwJwor
UEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2ZWwoMCkgaXMgJyMwMDAwMDAnCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWwoMCkgaXMgJyMwMDAwMDAnCitQQVNTIHRyeVNldHRp
bmdGaWxsQ29sb3JHcmF5TGV2ZWwoMC41KSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZUNvbG9yR3JheUxldmVsKDAuNSkgaXMgJyM4MDgwODAnCitQQVNTIHRyeVNldHRpbmdTaGFk
b3dHcmF5TGV2ZWwoMC41KSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdy
YXlMZXZlbCgxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxl
dmVsKDEpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsKDEpIGlz
ICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDAs
IDApIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdy
YXlMZXZlbFdpdGhBbHBoYSgwLCAwKSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDAsIDApIGlzICdyZ2JhKDAsIDAsIDAsIDAu
MCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMC40KSBp
cyAncmdiYSgwLCAwLCAwLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3Jh
eUxldmVsV2l0aEFscGhhKDAsIDAuNCkgaXMgJ3JnYmEoMCwgMCwgMCwgMC40MDAwMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEoMCwgMC40KSBpcyAncmdiYSgwLCAw
LCAwLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdpdGhBbHBo
YSgwLCAxKSBpcyAnIzAwMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVs
V2l0aEFscGhhKDAsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxl
dmVsV2l0aEFscGhhKDAsIDEpIGlzICcjMDAwMDAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
R3JheUxldmVsV2l0aEFscGhhKDAuNSwgMCkgaXMgJ3JnYmEoMTI4LCAxMjgsIDEyOCwgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhhKDAuNSwgMCkgaXMg
J3JnYmEoMTI4LCAxMjgsIDEyOCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZl
bFdpdGhBbHBoYSgwLjUsIDApIGlzICdyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMCknCitQQVNTIHRy
eVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAwLjQpIGlzICdyZ2JhKDEy
OCwgMTI4LCAxMjgsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JHcmF5TGV2
ZWxXaXRoQWxwaGEoMC41LCAwLjQpIGlzICdyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNDAwMDApJwor
UEFTUyB0cnlTZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDAuNSwgMC40KSBpcyAncmdi
YSgxMjgsIDEyOCwgMTI4LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvckdyYXlM
ZXZlbFdpdGhBbHBoYSgwLjUsIDEpIGlzICcjODA4MDgwJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tl
Q29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMC41LCAxKSBpcyAnIzgwODA4MCcKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDEpIGlzICcjODA4MDgwJworUEFTUyB0
cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDApIGlzICdyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbFdpdGhB
bHBoYSgxLCAwKSBpcyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApJworUEFTUyB0cnlTZXR0aW5n
U2hhZG93R3JheUxldmVsV2l0aEFscGhhKDEsIDApIGlzICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
MCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxwaGEoMSwgMC40KSBp
cyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNv
bG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDAuNCkgaXMgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC40
MDAwMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxwaGEoMSwgMC40KSBp
cyAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xv
ckdyYXlMZXZlbFdpdGhBbHBoYSgxLCAxKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZUNvbG9yR3JheUxldmVsV2l0aEFscGhhKDEsIDEpIGlzICcjZmZmZmZmJworUEFTUyB0cnlT
ZXR0aW5nU2hhZG93R3JheUxldmVsV2l0aEFscGhhKDEsIDEpIGlzICcjZmZmZmZmJworUEFTUyB0
cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4w
KScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgndHJhbnNwYXJlbnQnKSBpcyAncmdiYSgwLCAw
LCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3RyYW5zcGFyZW50JykgaXMg
J3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKCdyZWQnKSBp
cyAnI2ZmMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgncmVkJykgaXMgJyNmZjAwMDAn
CitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigncmVkJykgaXMgJyNmZjAwMDAnCitQQVNTIHRy
eVNldHRpbmdTdHJva2VTdHlsZSgnd2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGlu
Z0ZpbGxTdHlsZSgnd2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0Nv
bG9yKCd3aGl0ZScpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoJycp
IGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCcnKSBpcyAnIzY2NjY2NicK
K1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCcnKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0
dGluZ1N0cm9rZVN0eWxlKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4w
KScKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgnUkdCQSgwLCAwLCAwLCAwKScpIGlzICdyZ2Jh
KDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcignUkdCQSgwLCAwLCAw
LCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHls
ZSgncmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxT
dHlsZSgncmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0dGluZ1No
YWRvd0NvbG9yKCdyZ2JhKDAsMjU1LDAsMS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0
aW5nU3Ryb2tlU3R5bGUoJ3JnYmEoMSwyLDMsMC40KScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuNDAw
MDApJworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdi
YSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKCdyZ2JhKDEs
MiwzLDAuNCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0
cm9rZVN0eWxlKCdSZ0IoMSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdGaWxs
U3R5bGUoJ1JnQigxLDIsMyknKSBpcyAnIzAxMDIwMycKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0Nv
bG9yKCdSZ0IoMSwyLDMpJykgaXMgJyMwMTAyMDMnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHls
ZSgnckdiQSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeVNldHRp
bmdGaWxsU3R5bGUoJ3JHYkEoMSwyLDMsMCknKSBpcyAncmdiYSgxLCAyLCAzLCAwLjApJworUEFT
UyB0cnlTZXR0aW5nU2hhZG93Q29sb3IoJ3JHYkEoMSwyLDMsMCknKSBpcyAncmdiYSgxLCAyLCAz
LCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUodHJ1ZSkgaXMgJyM2NjY2NjYnCitQ
QVNTIHRyeVNldHRpbmdGaWxsU3R5bGUodHJ1ZSkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRp
bmdTaGFkb3dDb2xvcih0cnVlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0
eWxlKGZhbHNlKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZShmYWxzZSkg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcihmYWxzZSkgaXMgJyM2NjY2
NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZSgwKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5
U2V0dGluZ0ZpbGxTdHlsZSgwKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0Nv
bG9yKDApIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoMSkgaXMgJyM2
NjY2NjYnCitQQVNTIHRyeVNldHRpbmdGaWxsU3R5bGUoMSkgaXMgJyM2NjY2NjYnCitQQVNTIHRy
eVNldHRpbmdTaGFkb3dDb2xvcigxKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9r
ZVN0eWxlKC0xKSBpcyAnIzY2NjY2NicKK1BBU1MgdHJ5U2V0dGluZ0ZpbGxTdHlsZSgtMSkgaXMg
JyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xvcigtMSkgaXMgJyM2NjY2NjYnCitQ
QVNTIHRyeVNldHRpbmdTdHJva2VTdHlsZShOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0
aW5nRmlsbFN0eWxlKE5hTikgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dDb2xv
cihOYU4pIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlU3R5bGUoSW5maW5pdHkp
IGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbFN0eWxlKEluZmluaXR5KSBpcyAnIzY2
NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0NvbG9yKEluZmluaXR5KSBpcyAnIzY2NjY2NicK
K1BBU1MgdHJ5U2V0dGluZ1N0cm9rZVN0eWxlKG51bGwpIGlzICcjNjY2NjY2JworUEFTUyB0cnlT
ZXR0aW5nRmlsbFN0eWxlKG51bGwpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nU2hhZG93
Q29sb3IobnVsbCkgaXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhT
ZXR0ZXIoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0
dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3RyYW5zcGFyZW50JykgaXMgJ3JnYmEoMCwgMCwgMCwg
MC4wKScKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3RyYW5zcGFyZW50JykgaXMg
J3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRl
cigncmVkJykgaXMgJyNmZjAwMDAnCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVy
KCdyZWQnKSBpcyAnI2ZmMDAwMCcKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3Jl
ZCcpIGlzICcjZmYwMDAwJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCd3
aGl0ZScpIGlzICcjZmZmZmZmJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcign
d2hpdGUnKSBpcyAnI2ZmZmZmZicKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3do
aXRlJykgaXMgJyNmZmZmZmYnCitQQVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIo
JycpIGlzICcjNjY2NjY2JworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNldHRlcignJykg
aXMgJyM2NjY2NjYnCitQQVNTIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCcnKSBpcyAnIzY2
NjY2NicKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcignUkdCQSgwLCAwLCAw
LCAwKScpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeVNldHRpbmdGaWxsQ29sb3JX
aXRoU2V0dGVyKCdSR0JBKDAsIDAsIDAsIDApJykgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BB
U1MgdHJ5U2V0dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ1JHQkEoMCwgMCwgMCwgMCknKSBpcyAncmdi
YSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoU2V0dGVyKCdy
Z2JhKDAsMjU1LDAsMS4wKScpIGlzICcjMDBmZjAwJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9y
V2l0aFNldHRlcigncmdiYSgwLDI1NSwwLDEuMCknKSBpcyAnIzAwZmYwMCcKK1BBU1MgdHJ5U2V0
dGluZ1NoYWRvd1dpdGhTZXR0ZXIoJ3JnYmEoMCwyNTUsMCwxLjApJykgaXMgJyMwMGZmMDAnCitQ
QVNTIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoJ3JnYmEoMSwyLDMsMC40KScpIGlz
ICdyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNl
dHRlcigncmdiYSgxLDIsMywwLjQpJykgaXMgJ3JnYmEoMSwgMiwgMywgMC40MDAwMCknCitQQVNT
IHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKCdyZ2JhKDEsMiwzLDAuNCknKSBpcyAncmdiYSgx
LCAyLCAzLCAwLjQwMDAwKScKK1BBU1MgdHJ5U2V0dGluZ1N0cm9rZUNvbG9yV2l0aFNldHRlcign
UmdCKDEsMiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nRmlsbENvbG9yV2l0aFNl
dHRlcignUmdCKDEsMiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0
aFNldHRlcignUmdCKDEsMiwzKScpIGlzICcjMDEwMjAzJworUEFTUyB0cnlTZXR0aW5nU3Ryb2tl
Q29sb3JXaXRoU2V0dGVyKCdyR2JBKDEsMiwzLDApJykgaXMgJ3JnYmEoMSwgMiwgMywgMC4wKScK
K1BBU1MgdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhTZXR0ZXIoJ3JHYkEoMSwyLDMsMCknKSBpcyAn
cmdiYSgxLCAyLCAzLCAwLjApJworUEFTUyB0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRlcignckdi
QSgxLDIsMywwKScpIGlzICdyZ2JhKDEsIDIsIDMsIDAuMCknCitQQVNTIHRyeUNsZWFyU2hhZG93
QWZ0ZXJTZXR0aW5nQ29sb3IoJ3JlZCcpIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRy
eUNsZWFyU2hhZG93QWZ0ZXJTZXR0aW5nQ29sb3IoJ3JnYmEoMCwgNSwgMTAsIDAuNCknKSBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtY29sb3Itc2VyaWFsaXphdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjM0YjFiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNv
bG9yLXNlcmlhbGl6YXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgt
bm9uLWludmVydGlibGUtY3RtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS1leHBlY3RlZC50
eHQKaW5kZXggZGIwNWVjMC4uMTUwZDFkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUtY3RtLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2V0LXByb3BlcnRp
ZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0tZXhwZWN0ZWQudHh0CkBAIC0zLDExICszLDExIEBA
IFRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYXNzaWduIHRvIG5vbi1jdG0gZWZmZWN0ZWQgcHJv
cGVydGllcyB3aXRoIGEgbm9uLWludmVyCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAot
UEFTUyBjdHguZmlsbFN0eWxlIGlzICJncmVlbiIKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAiIzAw
ODAwMCIKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMF0gaXMgMAogUEFTUyBpbWFnZURhdGEuZGF0YVsx
XSBpcyAxMjgKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMl0gaXMgMAotUEFTUyBjdHguc3Ryb2tlU3R5
bGUgaXMgImdyZWVuIgorUEFTUyBjdHguc3Ryb2tlU3R5bGUgaXMgIiMwMDgwMDAiCiBQQVNTIGlt
YWdlRGF0YS5kYXRhWzBdIGlzIDAKIFBBU1MgaW1hZ2VEYXRhLmRhdGFbMV0gaXMgMTI4CiBQQVNT
IGltYWdlRGF0YS5kYXRhWzJdIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjE1YzllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xv
ci1zZXJpYWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsMjQ3IEBACitkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IGdldHRpbmcgY29sb3IgcHJvcGVydGllcyBmcm9tIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIHJldHVybnMgcHJvcGVybHkgZm9ybWF0dGVkIHZhbHVlcy4iKTsKKworY3R4ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24g
dHJ5U2V0dGluZ1N0cm9rZVN0eWxlKHZhbHVlKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2
NjYnOworICAgIGN0eC5zdHJva2VTdHlsZSA9IHZhbHVlOworICAgIHJldHVybiBjdHguc3Ryb2tl
U3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsU3R5bGUodmFsdWUpIHsKKyAgICBj
dHguZmlsbFN0eWxlID0gJyM2NjYnOworICAgIGN0eC5maWxsU3R5bGUgPSB2YWx1ZTsKKyAgICBy
ZXR1cm4gY3R4LmZpbGxTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1NoYWRvd0NvbG9y
KHZhbHVlKSB7CisgICAgY3R4LnNoYWRvd0NvbG9yID0gJyM2NjYnOworICAgIGN0eC5zaGFkb3dD
b2xvciA9IHZhbHVlOworICAgIHJldHVybiBjdHguc2hhZG93Q29sb3I7Cit9CisKK2Z1bmN0aW9u
IHRyeVNldHRpbmdDb2xvcih2YWx1ZSwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZSgidHJ5U2V0
dGluZ1N0cm9rZVN0eWxlKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJl
KCJ0cnlTZXR0aW5nRmlsbFN0eWxlKCIgKyB2YWx1ZSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNo
b3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Q29sb3IoIiArIHZhbHVlICsgIikiLCBleHBlY3RlZCk7
Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIodmFsdWUpIHsK
KyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKHZh
bHVlKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0
aW5nRmlsbENvbG9yV2l0aFNldHRlcih2YWx1ZSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2
Nic7CisgICAgY3R4LnNldEZpbGxDb2xvcih2YWx1ZSk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5
bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dXaXRoU2V0dGVyKHZhbHVlKSB7Cisg
ICAgY3R4LnNoYWRvd0NvbG9yID0gJyM2NjYnOworICAgIGN0eC5zZXRTaGFkb3coMCwgMCwgMCwg
dmFsdWUpOworICAgIHJldHVybiBjdHguc2hhZG93Q29sb3I7Cit9CisKK2Z1bmN0aW9uIHRyeVNl
dHRpbmdDb2xvcldpdGhTZXR0ZXIodmFsdWUsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRy
eVNldHRpbmdTdHJva2VDb2xvcldpdGhTZXR0ZXIoIiArIHZhbHVlICsgIikiLCBleHBlY3RlZCk7
CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdGaWxsQ29sb3JXaXRoU2V0dGVyKCIgKyB2YWx1ZSAr
ICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93V2l0aFNldHRl
cigiICsgdmFsdWUgKyAiKSIsIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0Zp
bGxDb2xvclJHQkEociwgZywgYiwgYSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7Cisg
ICAgY3R4LnNldEZpbGxDb2xvcihyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxTdHls
ZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1N0cm9rZUNvbG9yUkdCQShyLCBnLCBiLCBhKSB7
CisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihy
LCBnLCBiLCBhKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0
cnlTZXR0aW5nU2hhZG93UkdCQShyLCBnLCBiLCBhKSB7CisgICAgY3R4LnN0cm9rZVN0eWxlID0g
JyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4g
Y3R4LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nUkdCQShyLCBnLCBiLCBh
LCBleHBlY3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yUkdCQSgiICsg
ciArICIsICIgKyBnICsgIiwgIiArIGIgKyAiLCAiICsgYSArICIpIiwgZXhwZWN0ZWQpOworICAg
IHNob3VsZEJlKCJ0cnlTZXR0aW5nU3Ryb2tlQ29sb3JSR0JBKCIgKyByICsgIiwgIiArIGcgKyAi
LCAiICsgYiArICIsICIgKyBhICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNl
dHRpbmdTaGFkb3dSR0JBKCIgKyByICsgIiwgIiArIGcgKyAiLCAiICsgYiArICIsICIgKyBhICsg
IikiLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JDTVlLQShj
LCBtLCB5LCBrLCBhKSB7CisgICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0
RmlsbENvbG9yKGMsIG0sIHksIGssIGEpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JDTVlLQShjLCBtLCB5LCBrLCBhKSB7Cisg
ICAgY3R4LnN0cm9rZVN0eWxlID0gJyM2NjYnOworICAgIGN0eC5zZXRTdHJva2VDb2xvcihjLCBt
LCB5LCBrLCBhKTsKKyAgICByZXR1cm4gY3R4LnN0cm9rZVN0eWxlOworfQorCitmdW5jdGlvbiB0
cnlTZXR0aW5nU2hhZG93Q01ZS0EoYywgbSwgeSwgaywgYSkgeworICAgIGN0eC5zdHJva2VTdHls
ZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0U3Ryb2tlQ29sb3IoYywgbSwgeSwgaywgYSk7CisgICAg
cmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0NNWUtBKGMs
IG0sIHksIGssIGEsIGV4cGVjdGVkKSB7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdGaWxsQ29s
b3JDTVlLQSgiICsgYyArICIsICIgKyBtICsgIiwgIiArIHkgKyAiLCAiICsgayArICIsICIgKyBh
ICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VDb2xvckNN
WUtBKCIgKyBjICsgIiwgIiArIG0gKyAiLCAiICsgeSArICIsICIgKyBrICsgIiwgIiArIGEgKyAi
KSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0NNWUtBKCIgKyBj
ICsgIiwgIiArIG0gKyAiLCAiICsgeSArICIsICIgKyBrICsgIiwgIiArIGEgKyAiKSIsIGV4cGVj
dGVkKTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ0ZpbGxDb2xvcldpdGhPdmVycmlkZUFscGhh
KGNvbG9yLCBhbHBoYSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNl
dEZpbGxDb2xvcihjb2xvciwgYWxwaGEpOworICAgIHJldHVybiBjdHguZmlsbFN0eWxlOworfQor
CitmdW5jdGlvbiB0cnlTZXR0aW5nU3Ryb2tlQ29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwg
YWxwaGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldFN0cm9r
ZUNvbG9yKGNvbG9yLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKwor
ZnVuY3Rpb24gdHJ5U2V0dGluZ1NoYWRvd1dpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYSkg
eworICAgIGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsKKyAgICBjdHguc2V0U2hhZG93KDAsIDAs
IDAsIGNvbG9yLCBhbHBoYSk7CisgICAgcmV0dXJuIGN0eC5zaGFkb3dDb2xvcjsKK30KKworZnVu
Y3Rpb24gdHJ5U2V0dGluZ0NvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhLCBleHBl
Y3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yV2l0aE92ZXJyaWRlQWxw
aGEoIiArIGNvbG9yICsgIiwgIiArIGFscGhhICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxk
QmUoInRyeVNldHRpbmdTdHJva2VDb2xvcldpdGhPdmVycmlkZUFscGhhKCIgKyBjb2xvciArICIs
ICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nU2hh
ZG93V2l0aE92ZXJyaWRlQWxwaGEoIiArIGNvbG9yICsgIiwgIiArIGFscGhhICsgIikiLCBleHBl
Y3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWwoZ3JheUxl
dmVsKSB7CisgICAgY3R4LmZpbGxTdHlsZSA9ICcjNjY2JzsKKyAgICBjdHguc2V0RmlsbENvbG9y
KGdyYXlMZXZlbCk7CisgICAgcmV0dXJuIGN0eC5maWxsU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRy
eVNldHRpbmdTdHJva2VDb2xvckdyYXlMZXZlbChncmF5TGV2ZWwpIHsKKyAgICBjdHguc3Ryb2tl
U3R5bGUgPSAnIzY2Nic7CisgICAgY3R4LnNldFN0cm9rZUNvbG9yKGdyYXlMZXZlbCk7CisgICAg
cmV0dXJuIGN0eC5zdHJva2VTdHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1NoYWRvd0dy
YXlMZXZlbChncmF5TGV2ZWwpIHsKKyAgICBjdHguc2hhZG93Q29sb3IgPSAnIzY2Nic7CisgICAg
Y3R4LnNldFNoYWRvdygwLCAwLCAwLCBncmF5TGV2ZWwpOworICAgIHJldHVybiBjdHguc2hhZG93
Q29sb3I7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdHcmF5TGV2ZWwoZ3JheUxldmVsLCBleHBl
Y3RlZCkgeworICAgIHNob3VsZEJlKCJ0cnlTZXR0aW5nRmlsbENvbG9yR3JheUxldmVsKCIgKyBn
cmF5TGV2ZWwgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgidHJ5U2V0dGluZ1N0cm9r
ZUNvbG9yR3JheUxldmVsKCIgKyBncmF5TGV2ZWwgKyAiKSIsIGV4cGVjdGVkKTsKKyAgICBzaG91
bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0dyYXlMZXZlbCgiICsgZ3JheUxldmVsICsgIikiLCBleHBl
Y3RlZCk7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdGaWxsQ29sb3JHcmF5TGV2ZWxXaXRoQWxw
aGEoZ3JheUxldmVsLCBhbHBoYSkgeworICAgIGN0eC5maWxsU3R5bGUgPSAnIzY2Nic7CisgICAg
Y3R4LnNldEZpbGxDb2xvcihncmF5TGV2ZWwsIGFscGhhKTsKKyAgICByZXR1cm4gY3R4LmZpbGxT
dHlsZTsKK30KKworZnVuY3Rpb24gdHJ5U2V0dGluZ1N0cm9rZUNvbG9yR3JheUxldmVsV2l0aEFs
cGhhKGdyYXlMZXZlbCwgYWxwaGEpIHsKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnIzY2Nic7Cisg
ICAgY3R4LnNldFN0cm9rZUNvbG9yKGdyYXlMZXZlbCwgYWxwaGEpOworICAgIHJldHVybiBjdHgu
c3Ryb2tlU3R5bGU7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRo
QWxwaGEoZ3JheUxldmVsLCBhbHBoYSkgeworICAgIGN0eC5zaGFkb3dDb2xvciA9ICcjNjY2JzsK
KyAgICBjdHguc2V0U2hhZG93KDAsIDAsIDAsIGdyYXlMZXZlbCwgYWxwaGEpOworICAgIHJldHVy
biBjdHguc2hhZG93Q29sb3I7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdHcmF5TGV2ZWxXaXRo
QWxwaGEoZ3JheUxldmVsLCBhbHBoYSwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZSgidHJ5U2V0
dGluZ0ZpbGxDb2xvckdyYXlMZXZlbFdpdGhBbHBoYSgiICsgZ3JheUxldmVsICsgIiwgIiArIGFs
cGhhICsgIikiLCBleHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTdHJva2VDb2xv
ckdyYXlMZXZlbFdpdGhBbHBoYSgiICsgZ3JheUxldmVsICsgIiwgIiArIGFscGhhICsgIikiLCBl
eHBlY3RlZCk7CisgICAgc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dHcmF5TGV2ZWxXaXRoQWxw
aGEoIiArIGdyYXlMZXZlbCArICIsICIgKyBhbHBoYSArICIpIiwgZXhwZWN0ZWQpOworfQorCitm
dW5jdGlvbiB0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGluZ0NvbG9yKHZhbHVlKSB7CisgICAgY3R4
LnNoYWRvd0NvbG9yID0gdmFsdWU7CisgICAgY3R4LmNsZWFyU2hhZG93KCk7CisgICAgcmV0dXJu
IGN0eC5zaGFkb3dDb2xvcjsKK30KKworZnVuY3Rpb24gY2hlY2tEZWZhdWx0VmFsdWUodmFsdWUp
IHsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3Nob3VsZEJlKCJjaGVja0RlZmF1bHRWYWx1ZShj
dHguc3Ryb2tlU3R5bGUpIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImNoZWNrRGVmYXVsdFZh
bHVlKGN0eC5maWxsU3R5bGUpIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImNoZWNrRGVmYXVs
dFZhbHVlKGN0eC5zaGFkb3dDb2xvcikiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKKwordHJ5
U2V0dGluZ0NvbG9yV2l0aE92ZXJyaWRlQWxwaGEoIidyZWQnIiwgMCwgIidyZ2JhKDI1NSwgMCwg
MCwgMC4wKSciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhPdmVycmlkZUFscGhhKCInYmxhY2snIiwg
MSwgIicjMDAwMDAwJyIpOworCit0cnlTZXR0aW5nUkdCQSgwLCAwLCAwLCAwLjAsICIncmdiYSgw
LCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ1JHQkEoMjU1LCAyNTUsIDI1NSwgMS4wLCAiJyNm
ZmZmZmYnIik7Cit0cnlTZXR0aW5nUkdCQSgyNTUsIDAsIDAsIDAuMCwgIidyZ2JhKDI1NSwgMCwg
MCwgMC4wKSciKTsKK3RyeVNldHRpbmdSR0JBKDI1NSwgMCwgMCwgMC40LCAiJ3JnYmEoMjU1LCAw
LCAwLCAwLjQwMDAwKSciKTsKKwordHJ5U2V0dGluZ0NNWUtBKDAsIDAsIDAsIDAsIDAuMCwgIidy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuMCknIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMCwgMCwgMCwg
MS4wLCAiJyNmZmZmZmYnIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMSwgMCwgMCwgMC4wLCAiJ3Jn
YmEoMjU1LCAwLCAyNTUsIDAuMCknIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMSwgMCwgMCwgMS4w
LCAiJyNmZjAwZmYnIik7Cit0cnlTZXR0aW5nQ01ZS0EoMCwgMCwgMCwgMSwgMC4wLCAiJ3JnYmEo
MCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdDTVlLQSgwLCAwLCAwLCAxLCAxLjAsICInIzAw
MDAwMCciKTsKKwordHJ5U2V0dGluZ0dyYXlMZXZlbCgwLjAsICInIzAwMDAwMCciKTsKK3RyeVNl
dHRpbmdHcmF5TGV2ZWwoMC41LCAiJyM4MDgwODAnIik7Cit0cnlTZXR0aW5nR3JheUxldmVsKDEu
MCwgIicjZmZmZmZmJyIpOworCit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDAuMCwgMC4w
LCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3RyeVNldHRpbmdHcmF5TGV2ZWxXaXRoQWxwaGEo
MC4wLCAwLjQsICIncmdiYSgwLCAwLCAwLCAwLjQwMDAwKSciKTsKK3RyeVNldHRpbmdHcmF5TGV2
ZWxXaXRoQWxwaGEoMC4wLCAxLjAsICInIzAwMDAwMCciKTsKK3RyeVNldHRpbmdHcmF5TGV2ZWxX
aXRoQWxwaGEoMC41LCAwLjAsICIncmdiYSgxMjgsIDEyOCwgMTI4LCAwLjApJyIpOwordHJ5U2V0
dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDAuNCwgIidyZ2JhKDEyOCwgMTI4LCAxMjgsIDAu
NDAwMDApJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgwLjUsIDEuMCwgIicjODA4
MDgwJyIpOwordHJ5U2V0dGluZ0dyYXlMZXZlbFdpdGhBbHBoYSgxLjAsIDAuMCwgIidyZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuMCknIik7Cit0cnlTZXR0aW5nR3JheUxldmVsV2l0aEFscGhhKDEuMCwg
MC40LCAiJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC40MDAwMCknIik7Cit0cnlTZXR0aW5nR3JheUxl
dmVsV2l0aEFscGhhKDEuMCwgMS4wLCAiJyNmZmZmZmYnIik7CisKK3RyeVNldHRpbmdDb2xvcigi
J3RyYW5zcGFyZW50JyIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ0NvbG9y
KCIncmVkJyIsICInI2ZmMDAwMCciKTsKK3RyeVNldHRpbmdDb2xvcigiJ3doaXRlJyIsICInI2Zm
ZmZmZiciKTsKK3RyeVNldHRpbmdDb2xvcigiJyciLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5n
Q29sb3IoIidSR0JBKDAsIDAsIDAsIDApJyIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5
U2V0dGluZ0NvbG9yKCIncmdiYSgwLDI1NSwwLDEuMCknIiwgIicjMDBmZjAwJyIpOwordHJ5U2V0
dGluZ0NvbG9yKCIncmdiYSgxLDIsMywwLjQpJyIsICIncmdiYSgxLCAyLCAzLCAwLjQwMDAwKSci
KTsKK3RyeVNldHRpbmdDb2xvcigiJ1JnQigxLDIsMyknIiwgIicjMDEwMjAzJyIpOwordHJ5U2V0
dGluZ0NvbG9yKCInckdiQSgxLDIsMywwKSciLCAiJ3JnYmEoMSwgMiwgMywgMC4wKSciKTsKK3Ry
eVNldHRpbmdDb2xvcigidHJ1ZSIsICInIzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcigiZmFs
c2UiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3IoIjAiLCAiJyM2NjY2NjYnIik7Cit0
cnlTZXR0aW5nQ29sb3IoIjEiLCAiJyM2NjY2NjYnIik7Cit0cnlTZXR0aW5nQ29sb3IoIi0xIiwg
IicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCJOYU4iLCAiJyM2NjY2NjYnIik7Cit0cnlT
ZXR0aW5nQ29sb3IoIkluZmluaXR5IiwgIicjNjY2NjY2JyIpOwordHJ5U2V0dGluZ0NvbG9yKCJu
dWxsIiwgIicjNjY2NjY2JyIpOworCit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCIndHJhbnNw
YXJlbnQnIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0
dGVyKCIncmVkJyIsICInI2ZmMDAwMCciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIid3
aGl0ZSciLCAiJyNmZmZmZmYnIik7Cit0cnlTZXR0aW5nQ29sb3JXaXRoU2V0dGVyKCInJyIsICIn
IzY2NjY2NiciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhTZXR0ZXIoIidSR0JBKDAsIDAsIDAsIDAp
JyIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOwordHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigi
J3JnYmEoMCwyNTUsMCwxLjApJyIsICInIzAwZmYwMCciKTsKK3RyeVNldHRpbmdDb2xvcldpdGhT
ZXR0ZXIoIidyZ2JhKDEsMiwzLDAuNCknIiwgIidyZ2JhKDEsIDIsIDMsIDAuNDAwMDApJyIpOwor
dHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ1JnQigxLDIsMyknIiwgIicjMDEwMjAzJyIpOwor
dHJ5U2V0dGluZ0NvbG9yV2l0aFNldHRlcigiJ3JHYkEoMSwyLDMsMCknIiwgIidyZ2JhKDEsIDIs
IDMsIDAuMCknIik7CisKK3Nob3VsZEJlKCJ0cnlDbGVhclNoYWRvd0FmdGVyU2V0dGluZ0NvbG9y
KCdyZWQnKSIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoInRyeUNsZWFyU2hh
ZG93QWZ0ZXJTZXR0aW5nQ29sb3IoJ3JnYmEoMCwgNSwgMTAsIDAuNCknKSIsICIncmdiYSgwLCAw
LCAwLCAwLjApJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3Bl
cnRpZXMtd2l0aC1ub24taW52ZXJ0aWJsZS1jdG0uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLXNldC1wcm9wZXJ0aWVzLXdpdGgtbm9uLWludmVydGlibGUt
Y3RtLmpzCmluZGV4IGZmMDA1M2UuLjdjYjkxZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2V0LXByb3BlcnRpZXMtd2l0aC1ub24taW52
ZXJ0aWJsZS1jdG0uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3Rz
L2NhbnZhcy1zZXQtcHJvcGVydGllcy13aXRoLW5vbi1pbnZlcnRpYmxlLWN0bS5qcwpAQCAtMTYs
NyArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0UGl4ZWwoeCx5LCByLCBnLCBiKSB7CiBjdHguc2F2ZSgp
OwogY3R4LnNjYWxlKDAsIDApOwogY3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7Ci1zaG91bGRCZSgn
Y3R4LmZpbGxTdHlsZScsICciZ3JlZW4iJyk7CitzaG91bGRCZSgnY3R4LmZpbGxTdHlsZScsICci
IzAwODAwMCInKTsKIGN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7CiBjdHguZmls
bFJlY3QoMCwwLDEwMCwxMDApOwogdGVzdFBpeGVsKDUwLCA1MCwgMCwgMTI4LCAwKTsKQEAgLTI4
LDcgKzI4LDcgQEAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwogY3R4LmZpbGxSZWN0KDAsMCwxMDAs
MTAwKTsKIGN0eC5zY2FsZSgwLCAwKTsKIGN0eC5zdHJva2VTdHlsZSA9ICJncmVlbiI7Ci1zaG91
bGRCZSgnY3R4LnN0cm9rZVN0eWxlJywgJyJncmVlbiInKTsKK3Nob3VsZEJlKCdjdHguc3Ryb2tl
U3R5bGUnLCAnIiMwMDgwMDAiJyk7CiBjdHgubGluZVdpZHRoID0gMTAwOwogY3R4LnNldFRyYW5z
Zm9ybSgxLCAwLCAwLCAxLCAwLCAwKTsKIGN0eC5zdHJva2VSZWN0KDAsMCwxMDAsMTAwKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0
dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZh
c0NvbnRleHQyZC1lbGVtZW50LWF0dHJpYnV0ZS1qcy1udWxsLWV4cGVjdGVkLnR4dAppbmRleCBi
ZDVlOTdkLi44YmRmZDNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXND
b250ZXh0MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2FudmFzQ29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51
bGwtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNiBAQCBUaGlzIHRlc3Qgc2V0dGluZyB2YXJpb3Vz
IGF0dHJpYnV0ZXMgb2YgYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdG8gSmF2YVNjcmlwdAog
VEVTVCBTVUNDRUVERUQ6IFRoZSB2YWx1ZSB3YXMgdGhlIHN0cmluZyAnc291cmNlLW92ZXInLiBb
dGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb25d
CiBURVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0aGUgc3RyaW5nICdidXR0Jy4gW3Rlc3Rl
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQubGluZUNhcF0KIFRFU1QgU1VDQ0VFREVEOiBUaGUg
dmFsdWUgd2FzIHRoZSBzdHJpbmcgJ21pdGVyJy4gW3Rlc3RlZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQubGluZUpvaW5dCi1URVNUIFNVQ0NFRURFRDogVGhlIHZhbHVlIHdhcyB0aGUgZW1wdHkg
c3RyaW5nLiBbdGVzdGVkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zaGFkb3dDb2xvcl0KK1RF
U1QgU1VDQ0VFREVEOiBUaGUgdmFsdWUgd2FzIHRoZSBzdHJpbmcgJ3JnYmEoMCwgMCwgMCwgMC4w
KScuIFt0ZXN0ZWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnNoYWRvd0NvbG9yXQogCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50LWF0
dHJpYnV0ZS1qcy1udWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYW52YXNDb250ZXh0
MmQtZWxlbWVudC1hdHRyaWJ1dGUtanMtbnVsbC5odG1sCmluZGV4IGQ5ZTdmN2EuLjNhY2M2NzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbnZhc0NvbnRleHQyZC1lbGVtZW50
LWF0dHJpYnV0ZS1qcy1udWxsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FudmFz
Q29udGV4dDJkLWVsZW1lbnQtYXR0cmlidXRlLWpzLW51bGwuaHRtbApAQCAtNTQsNyArNTQsNyBA
QAogICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdnbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24nLCBleHBlY3RlZE51bGw6ICdzb3VyY2Utb3Zlcid9LAogICAgICAgICAgICAgICAgICAgICAg
ICAge25hbWU6ICdsaW5lQ2FwJywgZXhwZWN0ZWROdWxsOiAnYnV0dCd9LAogICAgICAgICAgICAg
ICAgICAgICAgICAge25hbWU6ICdsaW5lSm9pbicsIGV4cGVjdGVkTnVsbDogJ21pdGVyJ30sCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ3NoYWRvd0NvbG9yJywgZXhwZWN0ZWROdWxs
OiAnJ30gICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHtu
YW1lOiAnc2hhZG93Q29sb3InLCBleHBlY3RlZE51bGw6ICdyZ2JhKDAsIDAsIDAsIDAuMCknfQog
ICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgXTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDkwZGI2My4uMDZjMWQ0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wNS0xOSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCdzIHByb3BlcnR5
IGdldHRlcnMgdGhhdCByZXR1cm4gY29sb3JzIHNob3VsZAorICAgICAgICBzZXJpYWxpemUgdGhl
bSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIEhUTUw1IHNwZWMgKDQuOC4xMS4xLjQpCisgICAgICAg
IFNldHRlcnMgc2hvdWxkIGlnbm9yZSBpbnZhbGlkIGNvbG9ycy4KKworICAgICAgICBBbHNvLCBz
aGFkb3dDb2xvciBzaG91bGQgaW5pdGlhbGx5IGJlIHRyYW5zcGFyZW50IGJsYWNrICg0LjguMTEu
MS42KQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODg0NQorCisgICAgICAgIFJlZmFjdG9yZWQgQ2FudmFzU3R5bGUgdG8gc3RvcmUgYW4gUkdCQTMy
IGluc3RlYWQgb2YgUkdCQSBjb21wb25lbnRzIGFuZC9vciB0aGUgY29sb3Igc3RyaW5nLgorCisg
ICAgICAgIFNwZWMgbGlua3M6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI3NlcmlhbGl6YXRpb24tb2YtYS1jb2xvcgorICAgICAgICBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tY29u
dGV4dC0yZC1zaGFkb3djb2xvcgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Q29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlT
aGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dHlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0cm9r
ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcik6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjopOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OkNNWUtBVmFsdWVzOjpDTVlLQVZhbHVlcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNlcmlh
bGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisKIDIwMTAtMDUt
MTkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2NkZjVkNi4uMTg0Y2MxNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
QEAgLTExOCwxNCArMTE4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNl
dCgpCiB9CiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKLSAgICA6
IG1fc3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZSgiIzAwMDAwMCIpKQotICAgICwgbV9m
aWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZSgiIzAwMDAwMCIpKQorICAgIDogbV9zdHJva2VT
dHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKENvbG9yOjpibGFjaykpCisgICAgLCBtX2ZpbGxTdHls
ZShDYW52YXNTdHlsZTo6Y3JlYXRlKENvbG9yOjpibGFjaykpCiAgICAgLCBtX2xpbmVXaWR0aCgx
KQogICAgICwgbV9saW5lQ2FwKEJ1dHRDYXApCiAgICAgLCBtX2xpbmVKb2luKE1pdGVySm9pbikK
ICAgICAsIG1fbWl0ZXJMaW1pdCgxMCkKICAgICAsIG1fc2hhZG93Qmx1cigwKQotICAgICwgbV9z
aGFkb3dDb2xvcigiYmxhY2siKQorICAgICwgbV9zaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgLCBtX2dsb2JhbEFscGhhKDEpCiAgICAgLCBtX2dsb2JhbENvbXBvc2l0ZShDb21w
b3NpdGVTb3VyY2VPdmVyKQogICAgICwgbV9pbnZlcnRpYmxlQ1RNKHRydWUpCkBAIC0zMTUsMTMg
KzMxNSwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cihm
bG9hdCBibHVyKQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xv
cigpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGlmIHlv
dSBjYWxsZWQgc2V0U2hhZG93IHdpdGggYSBub24tc3RyaW5nIGNvbG9yPwotICAgIHJldHVybiBz
dGF0ZSgpLm1fc2hhZG93Q29sb3I7CisgICAgcmV0dXJuIENvbG9yKHN0YXRlKCkubV9zaGFkb3dD
b2xvcikuc2VyaWFsaXplZCgpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IgPSBjb2xvcjsKKyAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXBwbHlTaGFk
b3coKTsKIH0KIApAQCAtODE0LDE1ICs4MTUsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQog
ewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVu
dDsKICAgICBhcHBseVNoYWRvdygpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0
IFN0cmluZyYgY29sb3IpCiB7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUo
KS5tX3NoYWRvd0NvbG9yLCBjb2xvcikpCisgICAgICAgIHJldHVybjsKKwogICAgIHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5t
X3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IGNvbG9yOwog
ICAgIGFwcGx5U2hhZG93KCk7CiB9CiAKQEAgLTgzMCw2NSArODMzLDY0IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwKIHsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdp
ZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0
ZSgpLm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBtYWtl
UkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFj
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOwotICAgIGMtPnNldFNo
YWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9y
KHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3Is
IERldmljZUNvbG9yU3BhY2UpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0
cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogeworICAgIFJHQkEzMiByZ2JhOworCisgICAgaWYg
KCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEs
IGFscGhhKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKLSAgICBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IgPSBjb2xvcjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdD
b250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBSR0JBMzIgcmdi
YSA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICBpZiAoIXN0YXRlKCku
bV9zaGFkb3dDb2xvci5pc0VtcHR5KCkpCi0gICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihy
Z2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IpOwotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdp
ZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKGNvbG9yV2l0aE92ZXJy
aWRlQWxwaGEocmdiYSwgYWxwaGEpKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hh
ZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQogewogICAgIHN0YXRlKCkubV9z
aGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9ICIiOworICAgIHN0
YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3Jh
eUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRy
YXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBSR0JB
MzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5
TGV2ZWwsIGFscGhhKTsKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCks
IHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQog
ewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKHIsIGcsIGIsIGEpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRl
eHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJHQkEzMiByZ2JhID0g
bWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJl
bnQgYmxhY2sKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+
c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KQogewogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwotICAgIHN0YXRlKCkubV9zaGFk
b3dDb2xvciA9ICIiOworICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBRnJvbUNN
WUtBKGMsIG0sIHksIGssIGEpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBkYyA9IGRyYXdpbmdD
b250ZXh0KCk7CiAgICAgaWYgKCFkYykKQEAgLTkwMSw3ICs5MDMsNyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZs
b2F0IGJsdXIsCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGRjLT5wbGF0Zm9ybUNv
bnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc2hhZG93
Q29sb3IpOwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKICNlbHNlCi0gICAgZGMt
PnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgQ29sb3IoYywgbSwgeSwg
aywgYSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGRjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0
aCwgLWhlaWdodCksIGJsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFj
ZSk7CiAjZW5kaWYKIH0KIApAQCAtOTA5LDcgKzkxMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGVhclNoYWRvdygpCiB7CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9
IEZsb2F0U2l6ZSgpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gMDsKLSAgICBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IgPSAiIjsKKyAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6
dHJhbnNwYXJlbnQ7CiAgICAgYXBwbHlTaGFkb3coKTsKIH0KIApAQCAtOTE5LDEyICs5MjEsOSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3coKQogICAgIGlmICgh
YykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlz
IHRyYW5zcGFyZW50IGJsYWNrCi0gICAgaWYgKCFzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0
eSgpKQotICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yKTsKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgo
KTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwot
ICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRv
d0JsdXIsIENvbG9yKHJnYmEpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogfQogCiBzdGF0aWMgSW50U2l6ZSBzaXpl
KEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggYTQ5ZmY4MS4uZDZiMGM4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFNpemUu
aCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtMjE5
LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGZsb2F0IG1fbWl0
ZXJMaW1pdDsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBtX3NoYWRvd09mZnNldDsKICAgICAgICAg
ICAgIGZsb2F0IG1fc2hhZG93Qmx1cjsKLSAgICAgICAgICAgIFN0cmluZyBtX3NoYWRvd0NvbG9y
OworICAgICAgICAgICAgUkdCQTMyIG1fc2hhZG93Q29sb3I7CiAgICAgICAgICAgICBmbG9hdCBt
X2dsb2JhbEFscGhhOwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9nbG9iYWxDb21w
b3NpdGU7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IDM1MTVlMDMuLjY3ZTgyMDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBA
YXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICoKQEAgLTQ4LDEyMiArNDgsMTA4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYgY29sb3IpCi0gICAgOiBt
X3R5cGUoQ29sb3JTdHJpbmcpCi0gICAgLCBtX2NvbG9yKGNvbG9yKQorQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKFJHQkEzMiByZ2JhKQorICAgIDogbV90eXBlKFJHQkEpCisgICAgLCBtX3JnYmEo
cmdiYSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCkK
LSAgICA6IG1fdHlwZShHcmF5TGV2ZWwpCi0gICAgLCBtX2FscGhhKDEpCi0gICAgLCBtX2dyYXlM
ZXZlbChncmF5TGV2ZWwpCi17Ci19Ci0KLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBT
dHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShDb2xvclN0cmluZ1dpdGhB
bHBoYSkKLSAgICAsIG1fY29sb3IoY29sb3IpCi0gICAgLCBtX2FscGhhKGFscGhhKQorICAgIDog
bV90eXBlKFJHQkEpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52
YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQotICAgIDogbV90eXBlKEdyYXlM
ZXZlbCkKLSAgICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgLCBtX2dyYXlMZXZlbChncmF5TGV2ZWwp
CisgICAgOiBtX3R5cGUoUkdCQSkKKyAgICAsIG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhn
cmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCiB7CiB9CiAKIENhbnZhc1N0
eWxlOjpDYW52YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogICAg
IDogbV90eXBlKFJHQkEpCi0gICAgLCBtX2FscGhhKGEpCi0gICAgLCBtX3JlZChyKQotICAgICwg
bV9ncmVlbihnKQotICAgICwgbV9ibHVlKGIpCisgICAgLCBtX3JnYmEobWFrZVJHQkEzMkZyb21G
bG9hdHMociwgZywgYiwgYSkpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogICAgIDogbV90eXBlKENN
WUtBKQotICAgICwgbV9hbHBoYShhKQotICAgICwgbV9jeWFuKGMpCi0gICAgLCBtX21hZ2VudGEo
bSkKLSAgICAsIG1feWVsbG93KHkpCi0gICAgLCBtX2JsYWNrKGspCisgICAgLCBtX3JnYmEobWFr
ZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSkpCisgICAgLCBtX2NteWthKGMsIG0sIHksIGss
IGEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc0dy
YWRpZW50PiBncmFkaWVudCkKLSAgICA6IG1fdHlwZShncmFkaWVudCA/IEdyYWRpZW50IDogQ29s
b3JTdHJpbmcpCisgICAgOiBtX3R5cGUoR3JhZGllbnQpCiAgICAgLCBtX2dyYWRpZW50KGdyYWRp
ZW50KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNQ
YXR0ZXJuPiBwYXR0ZXJuKQotICAgIDogbV90eXBlKHBhdHRlcm4gPyBJbWFnZVBhdHRlcm4gOiBD
b2xvclN0cmluZykKKyAgICA6IG1fdHlwZShJbWFnZVBhdHRlcm4pCiAgICAgLCBtX3BhdHRlcm4o
cGF0dGVybikKIHsKIH0KIAorUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKQoreworICAgIFJHQkEzMiByZ2JhOworICAgIGlmICgh
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwg
ZmxvYXQgYWxwaGEpCit7CisgICAgUkdCQTMyIHJnYmE7CisgICAgaWYgKCFDU1NQYXJzZXI6OnBh
cnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhc1N0eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEp
KSk7Cit9CisKK1Bhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGUoUGFz
c1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCit7CisgICAgaWYgKCFncmFkaWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShn
cmFkaWVudCkpOworfQorUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0
ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCit7CisgICAgaWYgKCFwYXR0ZXJu
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxl
KHBhdHRlcm4pKTsKK30KKwogdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1
cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewot
ICAgICAgICAgICAgQ29sb3IgYyA9IENvbG9yKG1fY29sb3IpOwotICAgICAgICAgICAgaWYgKGMu
aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYy5y
Z2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5z
cGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9y
LCBtX2NvbG9yKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xv
ciwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBDb2xvciBjID0g
Q29sb3IobV9jb2xvcik7Ci0gICAgICAgICAgICBpZiAoYy5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGMu
cmdiKCksIG1fYWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8vIGRlZmF1
bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNl
Q29sb3IoY29sb3IsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIG1fYWxwaGEpLCBEZXZpY2VDb2xv
clNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3Jh
eUxldmVsOgotICAgICAgICAgICAgLy8gV2UncmUgb25seSBzdXBwb3J0aW5nIDI1NSBsZXZlbHMg
b2YgZ3JheSBoZXJlLiAgU2luY2UgdGhpcyBpc24ndAotICAgICAgICAgICAgLy8gZXZlbiBwYXJ0
IG9mIEhUTUw1LCBJIGRvbid0IGV4cGVjdCBhbnlvbmUgd2lsbCBjYXJlLiAgSWYgdGhleSBkbwot
ICAgICAgICAgICAgLy8gd2UnbGwgbWFrZSBhIGZhbmNpZXIgQ29sb3IgYWJzdHJhY3Rpb24uCi0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtX2dyYXlMZXZlbCwgbV9n
cmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSR0JBOgotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoQ29sb3IobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSksIERl
dmljZUNvbG9yU3BhY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01ZS0E6
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBl
bmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSAgICAgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBm
YW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ1lNS0EgY29ycmVjdGx5CisgICAg
Y2FzZSBSR0JBOgorICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEsIERldmlj
ZUNvbG9yU3BhY2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENNWUtBOiB7CisgICAgICAg
IC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3ND
b250ZXh0IEFQSS4KKyAgICAgICAgLy8gV2UnbGwgbmVlZCBhIGZhbmNpZXIgQ29sb3IgYWJzdHJh
Y3Rpb24gdG8gc3VwcG9ydCBDTVlLQSBjb3JyZWN0bHkKICNpZiBQTEFURk9STShDRykKLSAgICAg
ICAgICAgIENHQ29udGV4dFNldENNWUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgbV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKKyAg
ICAgICAgQ0dDb250ZXh0U2V0Q01ZS1N0cm9rZUNvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCBtX2NteWthLmMsIG1fY215a2EubSwgbV9jbXlrYS55LCBtX2NteWthLmssIG1fY215a2Eu
YSk7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICAgICAgICAgIFFQZW4gY3VycmVudFBlbiA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wZW4oKTsKLSAgICAgICAgICAgIFFDb2xvciBjbHI7
Ci0gICAgICAgICAgICBjbHIuc2V0Q215a0YobV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBt
X2JsYWNrLCBtX2FscGhhKTsKLSAgICAgICAgICAgIGN1cnJlbnRQZW4uc2V0Q29sb3IoY2xyKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRQZW4oY3VycmVudFBl
bik7CisgICAgICAgIFFQZW4gY3VycmVudFBlbiA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5wZW4oKTsKKyAgICAgICAgUUNvbG9yIGNscjsKKyAgICAgICAgY2xyLnNldENteWtGKG1fY215
a2EuYywgbV9jbXlrYS5tLCBtX2NteWthLnksIG1fY215a2EuaywgbV9jbXlrYS5hKTsKKyAgICAg
ICAgY3VycmVudFBlbi5zZXRDb2xvcihjbHIpOworICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOwogI2Vsc2UKLSAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKG1fY3lhbiwgbV9tYWdlbnRhLCBtX3llbGxvdywgbV9ibGFj
aywgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2UpOwogI2VuZGlmCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYWRpZW50OgotICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbWFnZVBhdHRlcm46Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFk
aWVudDoKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY2FudmFzR3JhZGllbnQo
KS0+Z3JhZGllbnQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgor
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVy
bigpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNzIsNDkgKzE1OCwzMSBAQCB2
b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKLSAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewotICAgICAgICAgICAgUkdCQTMyIHJnYmEg
PSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCi0gICAgICAgICAgICBpZiAoQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIG1fY29sb3IpKQotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihyZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29sb3JTdHJpbmdXaXRoQWxwaGE6IHsKLSAg
ICAgICAgICAgIFJHQkEzMiBjb2xvciA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxh
Y2sKLSAgICAgICAgICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3Ip
KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvcldpdGhPdmVycmlk
ZUFscGhhKGNvbG9yLCBtX2FscGhhKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdyYXlMZXZlbDoKLSAgICAgICAgICAgIC8v
IFdlJ3JlIG9ubHkgc3VwcG9ydGluZyAyNTUgbGV2ZWxzIG9mIGdyYXkgaGVyZS4gIFNpbmNlIHRo
aXMgaXNuJ3QKLSAgICAgICAgICAgIC8vIGV2ZW4gcGFydCBvZiBIVE1MNSwgSSBkb24ndCBleHBl
Y3QgYW55b25lIHdpbGwgY2FyZS4gIElmIHRoZXkgZG8KLSAgICAgICAgICAgIC8vIHdlJ2xsIG1h
a2UgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uLgotICAgICAgICAgICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yKG1fZ3JheUxldmVsLCBtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1f
YWxwaGEpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFJHQkE6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IobV9yZWQs
IG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01ZS0E6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBE
byB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4K
LSAgICAgICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRv
IHN1cHBvcnQgQ1lNS0EgY29ycmVjdGx5CisgICAgY2FzZSBSR0JBOgorICAgICAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDTVlLQTogeworICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBs
YXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCisgICAgICAgIC8vIFdlJ2xs
IG5lZWQgYSBmYW5jaWVyIENvbG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVj
dGx5CiAjaWYgUExBVEZPUk0oQ0cpCi0gICAgICAgICAgICBDR0NvbnRleHRTZXRDTVlLRmlsbENv
bG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxs
b3csIG1fYmxhY2ssIG1fYWxwaGEpOworICAgICAgICBDR0NvbnRleHRTZXRDTVlLRmlsbENvbG9y
KGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2NteWthLmMsIG1fY215a2EubSwgbV9jbXlr
YS55LCBtX2NteWthLmssIG1fY215a2EuYSk7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICAgICAg
ICAgIFFCcnVzaCBjdXJyZW50QnJ1c2ggPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+YnJ1
c2goKTsKLSAgICAgICAgICAgIFFDb2xvciBjbHI7Ci0gICAgICAgICAgICBjbHIuc2V0Q215a0Yo
bV9jeWFuLCBtX21hZ2VudGEsIG1feWVsbG93LCBtX2JsYWNrLCBtX2FscGhhKTsKLSAgICAgICAg
ICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOwotICAgICAgICAgICAgY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPnNldEJydXNoKGN1cnJlbnRCcnVzaCk7CisgICAgICAgIFFCcnVzaCBj
dXJyZW50QnJ1c2ggPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+YnJ1c2goKTsKKyAgICAg
ICAgUUNvbG9yIGNscjsKKyAgICAgICAgY2xyLnNldENteWtGKG1fY215a2EuYywgbV9jbXlrYS5t
LCBtX2NteWthLnksIG1fY215a2EuaywgbV9jbXlrYS5hKTsKKyAgICAgICAgY3VycmVudEJydXNo
LnNldENvbG9yKGNscik7CisgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRC
cnVzaChjdXJyZW50QnJ1c2gpOwogI2Vsc2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcihtX2N5YW4sIG1fbWFnZW50YSwgbV95ZWxsb3csIG1fYmxhY2ssIG1fYWxwaGEp
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdi
YSwgRGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgR3JhZGllbnQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxs
R3JhZGllbnQoY2FudmFzR3JhZGllbnQoKS0+Z3JhZGllbnQoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBJbWFnZVBhdHRlcm46Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsUGF0dGVybihjYW52YXNQYXR0ZXJuKCktPnBhdHRlcm4oKSk7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR3JhZGllbnQ6CisgICAgICAgIGNv
bnRleHQtPnNldEZpbGxHcmFkaWVudChjYW52YXNHcmFkaWVudCgpLT5ncmFkaWVudCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbWFnZVBhdHRlcm46CisgICAgICAgIGNvbnRleHQtPnNl
dEZpbGxQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggZmUwMWJkMS4uMThl
NTVjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBi
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsy
Nyw3IEBACiAjaWZuZGVmIENhbnZhc1N0eWxlX2gKICNkZWZpbmUgQ2FudmFzU3R5bGVfaAogCisj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNiwxNiArMzgsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgQ2FudmFzU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGNvbG9yKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUo
Y29sb3IpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KFJHQkEzMiByZ2JhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUocmdiYSkpOyB9
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBjb2xvcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOwogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGdyYXlMZXZlbCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYXlMZXZlbCkpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxw
aGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvciwgYWxwaGEpKTsgfQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKGZsb2F0IGdyYXlM
ZXZlbCwgZmxvYXQgYWxwaGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmF5
TGV2ZWwsIGFscGhhKSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
IGNyZWF0ZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgQ2FudmFzU3R5bGUociwgZywgYiwgYSkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxv
YXQgaywgZmxvYXQgYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGMsIG0sIHks
IGssIGEpKTsgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRl
KFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FudmFzU3R5bGUoZ3JhZGllbnQpKTsgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXNTdHlsZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKHBhdHRlcm4pKTsgfQorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGll
bnQ+IGdyYWRpZW50KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNy
ZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pOwogCi0gICAgICAgIFN0cmlu
ZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKyAgICAgICAgU3RyaW5nIGNvbG9y
KCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9yZ2JhKS5zZXJpYWxpemVkKCk7IH0KICAgICAgICAg
Q2FudmFzR3JhZGllbnQqIGNhbnZhc0dyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVu
dC5nZXQoKTsgfQogICAgICAgICBDYW52YXNQYXR0ZXJuKiBjYW52YXNQYXR0ZXJuKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CiAKQEAgLTUzLDM1ICs1NiwzMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRl
eHQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENhbnZhc1N0eWxlKGNvbnN0IFN0cmluZyYg
Y29sb3IpOworICAgICAgICBDYW52YXNTdHlsZShSR0JBMzIgcmdiYSk7CiAgICAgICAgIENhbnZh
c1N0eWxlKGZsb2F0IGdyYXlMZXZlbCk7Ci0gICAgICAgIENhbnZhc1N0eWxlKGNvbnN0IFN0cmlu
ZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxl
dmVsLCBmbG9hdCBhbHBoYSk7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcs
IGZsb2F0IGIsIGZsb2F0IGEpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBt
LCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1Jl
ZlB0cjxDYW52YXNHcmFkaWVudD4pOwogICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENh
bnZhc1BhdHRlcm4+KTsKIAotICAgICAgICBlbnVtIFR5cGUgeyBDb2xvclN0cmluZywgQ29sb3JT
dHJpbmdXaXRoQWxwaGEsIEdyYXlMZXZlbCwgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBh
dHRlcm4gfTsKKyAgICAgICAgZW51bSBUeXBlIHsgUkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFn
ZVBhdHRlcm4gfTsKIAogICAgICAgICBUeXBlIG1fdHlwZTsKIAotICAgICAgICBTdHJpbmcgbV9j
b2xvcjsKKyAgICAgICAgUkdCQTMyIG1fcmdiYTsKKwogICAgICAgICBSZWZQdHI8Q2FudmFzR3Jh
ZGllbnQ+IG1fZ3JhZGllbnQ7CiAgICAgICAgIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiBtX3BhdHRl
cm47CiAKLSAgICAgICAgZmxvYXQgbV9hbHBoYTsKLQotICAgICAgICBmbG9hdCBtX2dyYXlMZXZl
bDsKLQotICAgICAgICBmbG9hdCBtX3JlZDsKLSAgICAgICAgZmxvYXQgbV9ncmVlbjsKLSAgICAg
ICAgZmxvYXQgbV9ibHVlOwotCi0gICAgICAgIGZsb2F0IG1fY3lhbjsKLSAgICAgICAgZmxvYXQg
bV9tYWdlbnRhOwotICAgICAgICBmbG9hdCBtX3llbGxvdzsKLSAgICAgICAgZmxvYXQgbV9ibGFj
azsKKyAgICAgICAgc3RydWN0IENNWUtBVmFsdWVzIHsKKyAgICAgICAgICAgIENNWUtBVmFsdWVz
KCkge30KKyAgICAgICAgICAgIENNWUtBVmFsdWVzKGZsb2F0IGN5YW4sIGZsb2F0IG1hZ2VudGEs
IGZsb2F0IHllbGxvdywgZmxvYXQgYmxhY2ssIGZsb2F0IGFscGhhKSA6IGMoY3lhbiksIG0obWFn
ZW50YSksIHkoeWVsbG93KSwgayhibGFjayksIGEoYWxwaGEpIHt9CisgICAgICAgICAgICBmbG9h
dCBjOworICAgICAgICAgICAgZmxvYXQgbTsKKyAgICAgICAgICAgIGZsb2F0IHk7CisgICAgICAg
ICAgICBmbG9hdCBrOworICAgICAgICAgICAgZmxvYXQgYTsKKyAgICAgICAgfSBtX2NteWthOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKaW5kZXggZDk4YjIwMi4uMTdhNWQzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKQEAgLTE3OCw2ICsxNzgsMTggQEAgQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUp
CiAgICAgfQogfQogCitTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25zdAoreworICAgIGlm
IChhbHBoYSgpID09IDB4RkYpCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMngl
MDJ4JTAyeCIsIHJlZCgpLCBncmVlbigpLCBibHVlKCkpOworCisgICAgLy8gTWF0Y2ggR2Vja28g
KCIwLjAiIGZvciB6ZXJvLCA1IGRlY2ltYWxzIGZvciBhbnl0aGluZyBlbHNlKQorICAgIGlmICgh
YWxwaGEoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJyZ2JhKCV1LCAldSwgJXUs
IDAuMCkiLCByZWQoKSwgZ3JlZW4oKSwgYmx1ZSgpKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgicmdiYSgldSwgJXUsICV1LCAlLjVmKSIsIHJlZCgpLCBncmVlbigpLCBibHVlKCksIGFs
cGhhKCkgLyAyNTUuMGYpOworfQorCiBTdHJpbmcgQ29sb3I6Om5hbWUoKSBjb25zdAogewogICAg
IGlmIChhbHBoYSgpIDwgMHhGRikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCA5YTNj
YTc1Li5kMTgyMjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC04MCw3ICs4MCwx
MSBAQCBwdWJsaWM6CiAgICAgQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQg
aywgZmxvYXQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpKSwg
bV92YWxpZCh0cnVlKSB7IH0KICAgICBleHBsaWNpdCBDb2xvcihjb25zdCBTdHJpbmcmKTsKICAg
ICBleHBsaWNpdCBDb2xvcihjb25zdCBjaGFyKik7Ci0gICAgCisKKyAgICAvLyBSZXR1cm5zIHRo
ZSBjb2xvciBzZXJpYWxpemVkIGFjY29yZGluZyB0byBIVE1MNQorICAgIC8vIC0gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2VyaWFsaXphdGlvbi1v
Zi1hLWNvbG9yCisgICAgU3RyaW5nIHNlcmlhbGl6ZWQoKSBjb25zdDsKKwogICAgIFN0cmluZyBu
YW1lKCkgY29uc3Q7CiAgICAgdm9pZCBzZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>