<?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>106188</bug_id>
          
          <creation_ts>2013-01-05 16:24:50 -0800</creation_ts>
          <short_desc>Proposal: Add support for even-odd fill and clip to Canvas</short_desc>
          <delta_ts>2013-01-21 13:06:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106871</dependson>
    
    <dependson>106872</dependson>
    
    <dependson>106873</dependson>
    
    <dependson>107065</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rik Cabanier">cabanier</reporter>
          <assigned_to name="Rik Cabanier">cabanier</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>krit</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>s.choi</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801010</commentid>
    <comment_count>0</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-05 16:24:50 -0800</bug_when>
    <thetext>This is a counterproposal for 105508.
This patch adds 2 new methods to the Canvas API that allow you to set the winding rule that needs to be applied when filling or clipping.

I believe the underlying code can be cleaned up since there is no need to store the fillrule separately. That can be addressed in a follow-up patch.

I also added a patch for mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=827053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801013</commentid>
    <comment_count>1</comment_count>
      <attachid>181447</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-05 16:36:35 -0800</bug_when>
    <thetext>Created attachment 181447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801014</commentid>
    <comment_count>2</comment_count>
      <attachid>181448</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-05 17:08:28 -0800</bug_when>
    <thetext>Created attachment 181448
Added support for optional winding rule in isPointInPath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801021</commentid>
    <comment_count>3</comment_count>
      <attachid>181448</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-05 18:12:15 -0800</bug_when>
    <thetext>Comment on attachment 181448
Added support for optional winding rule in isPointInPath

Attachment 181448 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15738268

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801022</commentid>
    <comment_count>4</comment_count>
      <attachid>181448</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-05 18:22:15 -0800</bug_when>
    <thetext>Comment on attachment 181448
Added support for optional winding rule in isPointInPath

Attachment 181448 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15734297

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801024</commentid>
    <comment_count>5</comment_count>
      <attachid>181448</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-05 18:33:47 -0800</bug_when>
    <thetext>Comment on attachment 181448
Added support for optional winding rule in isPointInPath

Attachment 181448 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15737280

New failing tests:
inspector/profiler/canvas2d/canvas2d-api-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801148</commentid>
    <comment_count>6</comment_count>
      <attachid>181471</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-06 21:06:02 -0800</bug_when>
    <thetext>Created attachment 181471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802626</commentid>
    <comment_count>7</comment_count>
      <attachid>181471</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-08 14:19:32 -0800</bug_when>
    <thetext>Comment on attachment 181471
Patch

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

You can not ask to stop the review process for discussion and put an own patch online that does what you want (without keeping the thread on webkit-dev in the loop). It is everything else then obvious what eoFill() and eoClip() mean. I strongly suggest another name, better another way to do it. Do not increase the number of functions on Canvas unnecessarily. I am unsetting the review flag for now. This should be discussed on the mailing list further.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:154
&gt; +    bool isPointInPath(const float x, const float y, const bool isEvenOdd);

Use enumeration here. We have an enumeration for winding rules in WebCore already. It should be exposed to the API as well.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:134
&gt;      boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
&gt; -                          in [Optional=DefaultIsUndefined] float y);
&gt; +                          in [Optional=DefaultIsUndefined] float y,
&gt; +                          in [Optional=DefaultIsUndefined] boolean isEvenOdd);

don&apos;t use an boolean for something that isn&apos;t so obvious for people who are not familiar with winding rules.

&gt; LayoutTests/ChangeLog:8
&gt; +        Add tests to verify that the winding rule work as expected

s/Add tests to verify that the winding rule work as expected/Add tests to verify that the winding rule work as expected on HTML Canvas./

The tests look fine for me.

&gt; LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js:54
&gt; +prepareTestScenario(5);

Didn&apos;t know this function. What is the test scenario 5?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802672</commentid>
    <comment_count>8</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-08 14:41:15 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 181471 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181471&amp;action=review
&gt; 
&gt; You can not ask to stop the review process for discussion and put an own patch online that does what you want (without keeping the thread on webkit-dev in the loop). It is everything else then obvious what eoFill() and eoClip() mean. I strongly suggest another name, better another way to do it. Do not increase the number of functions on Canvas unnecessarily. 

So far, canvas has been pretty close to the Core Graphics API set. Since CG has these same methods, it seems more logical to do the same in Canvas


&gt; I am unsetting the review flag for now. This should be discussed on the mailing list further.

That&apos;s fine. I&apos;m just looking for feedback. Note that I didn&apos;t ask to commit the patch.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:154
&gt; &gt; +    bool isPointInPath(const float x, const float y, const bool isEvenOdd);
&gt; 
&gt; Use enumeration here. We have an enumeration for winding rules in WebCore already. It should be exposed to the API as well.

Canvas has other instances where it uses boolean (ie clockwise).
Why not do the same here?

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:134
&gt; &gt;      boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
&gt; &gt; -                          in [Optional=DefaultIsUndefined] float y);
&gt; &gt; +                          in [Optional=DefaultIsUndefined] float y,
&gt; &gt; +                          in [Optional=DefaultIsUndefined] boolean isEvenOdd);
&gt; 
&gt; don&apos;t use an boolean for something that isn&apos;t so obvious for people who are not familiar with winding rules.

How would an enum help people that don&apos;t know about winding rules?

&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Add tests to verify that the winding rule work as expected
&gt; 
&gt; s/Add tests to verify that the winding rule work as expected/Add tests to verify that the winding rule work as expected on HTML Canvas./
&gt; 
&gt; The tests look fine for me.
&gt; 
&gt; &gt; LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js:54
&gt; &gt; +prepareTestScenario(5);
&gt; 
&gt; Didn&apos;t know this function. What is the test scenario 5?

that was a remnant of an old test. I will remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803000</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-08 21:27:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 181471 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181471&amp;action=review
&gt; &gt; 
&gt; &gt; You can not ask to stop the review process for discussion and put an own patch online that does what you want (without keeping the thread on webkit-dev in the loop). It is everything else then obvious what eoFill() and eoClip() mean. I strongly suggest another name, better another way to do it. Do not increase the number of functions on Canvas unnecessarily. 
&gt; 
&gt; So far, canvas has been pretty close to the Core Graphics API set. Since CG has these same methods, it seems more logical to do the same in Canvas

That is not a good reason at all :)

&gt; 
&gt; 
&gt; &gt; I am unsetting the review flag for now. This should be discussed on the mailing list further.
&gt; 
&gt; That&apos;s fine. I&apos;m just looking for feedback. Note that I didn&apos;t ask to commit the patch.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:154
&gt; &gt; &gt; +    bool isPointInPath(const float x, const float y, const bool isEvenOdd);
&gt; &gt; 
&gt; &gt; Use enumeration here. We have an enumeration for winding rules in WebCore already. It should be exposed to the API as well.
&gt; 
&gt; Canvas has other instances where it uses boolean (ie clockwise).
&gt; Why not do the same here?

Mistakes of the past maybe. Doesn&apos;t mean that it can&apos;t be done the right way here.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:134
&gt; &gt; &gt;      boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
&gt; &gt; &gt; -                          in [Optional=DefaultIsUndefined] float y);
&gt; &gt; &gt; +                          in [Optional=DefaultIsUndefined] float y,
&gt; &gt; &gt; +                          in [Optional=DefaultIsUndefined] boolean isEvenOdd);
&gt; &gt; 
&gt; &gt; don&apos;t use an boolean for something that isn&apos;t so obvious for people who are not familiar with winding rules.
&gt; 
&gt; How would an enum help people that don&apos;t know about winding rules?

How would a boolean help anymore then? The question is, how do people (who are familiar with winding rules) know that &apos;false&apos; is &apos;nonzero&apos; and &apos;true&apos; is &apos;evenodd&apos;?

&gt; 
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; &gt; +        Add tests to verify that the winding rule work as expected
&gt; &gt; 
&gt; &gt; s/Add tests to verify that the winding rule work as expected/Add tests to verify that the winding rule work as expected on HTML Canvas./
&gt; &gt; 
&gt; &gt; The tests look fine for me.
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js:54
&gt; &gt; &gt; +prepareTestScenario(5);
&gt; &gt; 
&gt; &gt; Didn&apos;t know this function. What is the test scenario 5?
&gt; 
&gt; that was a remnant of an old test. I will remove this.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803496</commentid>
    <comment_count>10</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-09 10:57:23 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 181471 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181471&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; You can not ask to stop the review process for discussion and put an own patch online that does what you want (without keeping the thread on webkit-dev in the loop). It is everything else then obvious what eoFill() and eoClip() mean. I strongly suggest another name, better another way to do it. Do not increase the number of functions on Canvas unnecessarily. 
&gt; &gt; 
&gt; &gt; So far, canvas has been pretty close to the Core Graphics API set. Since CG has these same methods, it seems more logical to do the same in Canvas
&gt; 
&gt; That is not a good reason at all :)

There seems to be a consensus to go with parameters instead of an optional call. I will update the patch accordingly.

&gt; 
&gt; &gt; 
&gt; &gt; 
&gt; &gt; &gt; I am unsetting the review flag for now. This should be discussed on the mailing list further.
&gt; &gt; 
&gt; &gt; That&apos;s fine. I&apos;m just looking for feedback. Note that I didn&apos;t ask to commit the patch.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:154
&gt; &gt; &gt; &gt; +    bool isPointInPath(const float x, const float y, const bool isEvenOdd);
&gt; &gt; &gt; 
&gt; &gt; &gt; Use enumeration here. We have an enumeration for winding rules in WebCore already. It should be exposed to the API as well.
&gt; &gt; 
&gt; &gt; Canvas has other instances where it uses boolean (ie clockwise).
&gt; &gt; Why not do the same here?
&gt; 
&gt; Mistakes of the past maybe. Doesn&apos;t mean that it can&apos;t be done the right way here.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:134
&gt; &gt; &gt; &gt;      boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
&gt; &gt; &gt; &gt; -                          in [Optional=DefaultIsUndefined] float y);
&gt; &gt; &gt; &gt; +                          in [Optional=DefaultIsUndefined] float y,
&gt; &gt; &gt; &gt; +                          in [Optional=DefaultIsUndefined] boolean isEvenOdd);
&gt; &gt; &gt; 
&gt; &gt; &gt; don&apos;t use an boolean for something that isn&apos;t so obvious for people who are not familiar with winding rules.
&gt; &gt; 
&gt; &gt; How would an enum help people that don&apos;t know about winding rules?
&gt; 
&gt; How would a boolean help anymore then? The question is, how do people (who are familiar with winding rules) know that &apos;false&apos; is &apos;nonzero&apos; and &apos;true&apos; is &apos;evenodd&apos;?
&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; &gt; &gt; +        Add tests to verify that the winding rule work as expected
&gt; &gt; &gt; 
&gt; &gt; &gt; s/Add tests to verify that the winding rule work as expected/Add tests to verify that the winding rule work as expected on HTML Canvas./
&gt; &gt; &gt; 
&gt; &gt; &gt; The tests look fine for me.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js:54
&gt; &gt; &gt; &gt; +prepareTestScenario(5);
&gt; &gt; &gt; 
&gt; &gt; &gt; Didn&apos;t know this function. What is the test scenario 5?
&gt; &gt; 
&gt; &gt; that was a remnant of an old test. I will remove this.
&gt; 
&gt; Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803535</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-09 11:37:44 -0800</bug_when>
    <thetext>Isn&apos;t there still the open question on whatwg list if the argument should be Boolean or enum? You may want to wait for the outcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804601</commentid>
    <comment_count>12</comment_count>
      <attachid>182181</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-10 11:50:56 -0800</bug_when>
    <thetext>Created attachment 182181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804611</commentid>
    <comment_count>13</comment_count>
      <attachid>182185</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-10 11:59:13 -0800</bug_when>
    <thetext>Created attachment 182185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804672</commentid>
    <comment_count>14</comment_count>
      <attachid>182185</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 13:25:26 -0800</bug_when>
    <thetext>Comment on attachment 182185
Patch

Attachment 182185 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15803089

New failing tests:
platform/chromium/virtual/gpu/fast/canvas/canvas-clip-rule.html
fast/canvas/canvas-clip-rule.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804697</commentid>
    <comment_count>15</comment_count>
      <attachid>182185</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-10 13:57:24 -0800</bug_when>
    <thetext>Comment on attachment 182185
Patch

Attachment 182185 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15811015

New failing tests:
platform/chromium/virtual/gpu/fast/canvas/canvas-clip-rule.html
fast/canvas/canvas-clip-rule.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810288</commentid>
    <comment_count>16</comment_count>
      <attachid>183387</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-17 23:29:55 -0800</bug_when>
    <thetext>Created attachment 183387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810332</commentid>
    <comment_count>17</comment_count>
      <attachid>183387</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 00:40:22 -0800</bug_when>
    <thetext>Comment on attachment 183387
Patch

Attachment 183387 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15943416

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810584</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-18 07:33:37 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 183387 [details])
&gt; Attachment 183387 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/15943416
&gt; 
&gt; New failing tests:
&gt; inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html

Doesn&apos;t sound like this is because of this patch. Can you investigate please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810593</commentid>
    <comment_count>19</comment_count>
      <attachid>183387</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-18 07:44:35 -0800</bug_when>
    <thetext>Comment on attachment 183387
Patch

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

Some snippets and questions.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1027
&gt; +void CanvasRenderingContext2D::fill(const String&amp; winding)

can you rename this please? To windingRuleString or windingRuleEnumeration? (at this time it is the first, so maybe choose this one).

Since you pass a value, doesn&apos;t it make sense to raise exceptions now? I would pass an EC object here and say that the passed string was invalid.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1083
&gt; +void CanvasRenderingContext2D::clip(const String&amp; winding)

Ditto.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1103
&gt; +bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const String&amp; winding)

Ditto.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1161
&gt; +bool CanvasRenderingContext2D::parseWinding(const String&amp; winding, WindRule&amp; windRule)

Ditto. Can you make this an inline function? Doesn&apos;t look like it needs to be in the class.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:26
&gt; +enum CanvasWindingRule { &quot;nonzero&quot;, &quot;evenodd&quot; };

This enumeration doesn&apos;t look like it is used. I guess you added it since it should be used as WindingRule according to WebIDL and the Firefox implementation. Can you add a comment or fixme that this should be used once we support WebIDL completely?

&gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:6
&gt; +Testing NZO isPointInPath

please use the enumeration value. Don&apos;t be lazy :)

&gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:9
&gt; +Testing NZO isPointInPath

Ditto.

&gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:10
&gt; +PASS ctx.isPointInPath(50, 50, &apos;evenodd&apos;) is false

Is the above text correct for this test?

I would also like to see a bunch of negative tests in a separate file. At least one test seems to be missing in this file: isPointInPath(50, 50, &apos;nonzero&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810749</commentid>
    <comment_count>20</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-18 09:55:44 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 183387 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183387&amp;action=review
&gt; 
&gt; Some snippets and questions.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1027
&gt; &gt; +void CanvasRenderingContext2D::fill(const String&amp; winding)
&gt; 
&gt; can you rename this please? To windingRuleString or windingRuleEnumeration? (at this time it is the first, so maybe choose this one).
&gt; 
&gt; Since you pass a value, doesn&apos;t it make sense to raise exceptions now? I would pass an EC object here and say that the passed string was invalid.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1083
&gt; &gt; +void CanvasRenderingContext2D::clip(const String&amp; winding)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1103
&gt; &gt; +bool CanvasRenderingContext2D::isPointInPath(const float x, const float y, const String&amp; winding)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1161
&gt; &gt; +bool CanvasRenderingContext2D::parseWinding(const String&amp; winding, WindRule&amp; windRule)
&gt; 
&gt; Ditto. Can you make this an inline function? Doesn&apos;t look like it needs to be in the class.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:26
&gt; &gt; +enum CanvasWindingRule { &quot;nonzero&quot;, &quot;evenodd&quot; };
&gt; 
&gt; This enumeration doesn&apos;t look like it is used. I guess you added it since it should be used as WindingRule according to WebIDL and the Firefox implementation. Can you add a comment or fixme that this should be used once we support WebIDL completely?

Will do all of the above.

&gt; 
&gt; &gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:6
&gt; &gt; +Testing NZO isPointInPath
&gt; 
&gt; please use the enumeration value. Don&apos;t be lazy :)

I will add a case for &apos;nonzero&apos; to all 3 tests.
No parameter needs to be tested too since that will be the most common case.

&gt; 
&gt; &gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:9
&gt; &gt; +Testing NZO isPointInPath
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; LayoutTests/fast/canvas/canvas-isPointInPath-winding-expected.txt:10
&gt; &gt; +PASS ctx.isPointInPath(50, 50, &apos;evenodd&apos;) is false
&gt; 
&gt; Is the above text correct for this test?

Yes. With even-odd, there&apos;s a hole in the path so isPointInPath should return false. 

&gt; 
&gt; I would also like to see a bunch of negative tests in a separate file. At least one test seems to be missing in this file: isPointInPath(50, 50, &apos;nonzero&apos;)

what&apos;s a negative test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810768</commentid>
    <comment_count>21</comment_count>
      <attachid>183494</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-18 10:13:54 -0800</bug_when>
    <thetext>Created attachment 183494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810769</commentid>
    <comment_count>22</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-18 10:14:42 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 183387 [details] [details])
&gt; &gt; Attachment 183387 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/15943416
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html
&gt; 
&gt; Doesn&apos;t sound like this is because of this patch. Can you investigate please?

I ran the test locally and it didn&apos;t crash. Flakiness?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810776</commentid>
    <comment_count>23</comment_count>
      <attachid>183496</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-18 10:20:51 -0800</bug_when>
    <thetext>Created attachment 183496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811437</commentid>
    <comment_count>24</comment_count>
      <attachid>183496</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-19 11:21:57 -0800</bug_when>
    <thetext>Comment on attachment 183496
Patch

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

Looks good. Just some snippets. Code and tests look great! r- since you are not committer yet. I would also like to wait for possible responses on webkit-dev before giving my final OK.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:287
&gt; +    

remove white spaces here please.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:26
&gt; +// FIXME: use CanvasWindingRule once support for WebIDL is completed

A real sentence please. We have a bug report for that. Can you link to this (need to search it)?

&gt; LayoutTests/ChangeLog:36
&gt; +2013-01-17  Rik Cabanier  &lt;cabanier@adobe.com&gt;
&gt; +
&gt; +        Proposal: Add support for even-odd fill and clip to Canvas
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=106188
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add tests to verify that the winding rule work as expected with clip, fill and isPointInPath
&gt; +
&gt; +        * fast/canvas/canvas-clip-rule-expected.txt: Added.
&gt; +        * fast/canvas/canvas-clip-rule.html: Added.
&gt; +        * fast/canvas/canvas-fill-rule-expected.txt: Added.

This is a duplicate. Please remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811538</commentid>
    <comment_count>25</comment_count>
      <attachid>183652</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-19 19:27:00 -0800</bug_when>
    <thetext>Created attachment 183652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811543</commentid>
    <comment_count>26</comment_count>
      <attachid>183654</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-19 19:54:09 -0800</bug_when>
    <thetext>Created attachment 183654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811544</commentid>
    <comment_count>27</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2013-01-19 19:55:04 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 183496 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183496&amp;action=review
&gt; 
&gt; Looks good. Just some snippets. Code and tests look great! r- since you are not committer yet. I would also like to wait for possible responses on webkit-dev before giving my final OK.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:287
&gt; &gt; +    
&gt; 
&gt; remove white spaces here please.

Done

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:26
&gt; &gt; +// FIXME: use CanvasWindingRule once support for WebIDL is completed
&gt; 
&gt; A real sentence please. We have a bug report for that. Can you link to this (need to search it)?

Done. Found bug and added it to fixme

&gt; 
&gt; &gt; LayoutTests/ChangeLog:36
&gt; &gt; +2013-01-17  Rik Cabanier  &lt;cabanier@adobe.com&gt;
&gt; &gt; +
&gt; &gt; +        Proposal: Add support for even-odd fill and clip to Canvas
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=106188
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Add tests to verify that the winding rule work as expected with clip, fill and isPointInPath
&gt; &gt; +
&gt; &gt; +        * fast/canvas/canvas-clip-rule-expected.txt: Added.
&gt; &gt; +        * fast/canvas/canvas-clip-rule.html: Added.
&gt; &gt; +        * fast/canvas/canvas-fill-rule-expected.txt: Added.
&gt; 
&gt; This is a duplicate. Please remove it.

Strange! removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812347</commentid>
    <comment_count>28</comment_count>
      <attachid>183654</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-01-21 13:00:06 -0800</bug_when>
    <thetext>Comment on attachment 183654
Patch

LGTM. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812353</commentid>
    <comment_count>29</comment_count>
      <attachid>183654</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 13:06:28 -0800</bug_when>
    <thetext>Comment on attachment 183654
Patch

Clearing flags on attachment: 183654

Committed r140352: &lt;http://trac.webkit.org/changeset/140352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812354</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 13:06:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181447</attachid>
            <date>2013-01-05 16:36:35 -0800</date>
            <delta_ts>2013-01-05 17:08:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130105163341.patch</filename>
            <type>text/plain</type>
            <size>11086</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODkxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAxLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9mZiBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGVvZmlsbCBhbmQgZW9jbGlwLiBUaGVzZSBjb25zdHJ1Y3RzIGFsbG93IHlvdQorICAgICAg
ICB0byBzZXQgdGhlIHdpbmRpbmcgcnVsZSB0aGF0IGlzIGFwcGxpZWQgd2hlbiBmaWxsaW5nIG9y
IGNsaXBwaW5nIHRvIGEgcGF0aAorCisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMt
Y2xpcC1ydWxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1
bGUuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDogQWRkIGltcGxlbWVudGF0aW9uIGZvciBlb2ZpbGwgYW5kIGVvY2xpcAorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVvQ2xp
cCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6Cisg
ICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IEV4dGVuZCB0aGUgY2FudmFzIEFQSSB3aXRo
IGVvZmlsbCBhbmQgZW9jbGlwCisKIDIwMTMtMDEtMDUgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVo
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFJlbmRlck9iamVjdENoaWxkTGlzdDo6
YmVmb3JlUHNldWRvRWxlbWVudFJlbmRlcmVyIGFuZCBhZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJl
cgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUxLDYgKzEwNTEsMTggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGwoKQogI2VuZGlmCiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwo
KQoreworICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgaWYg
KCFjKQorICAgICAgICByZXR1cm47CisKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IGMtPmZpbGxS
dWxlKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBmaWxsKCk7Cisg
ICAgYy0+c2V0RmlsbFJ1bGUod2luZFJ1bGUpOworfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c3Ryb2tlKCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29u
dGV4dCgpOwpAQCAtMTA4Niw2ICsxMDk4LDE4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpjbGlwKCkKICNlbmRpZgogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZW9DbGlwKCkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwor
ICAgIGlmICghYykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdpbmRSdWxlIHdpbmRSdWxl
ID0gYy0+ZmlsbFJ1bGUoKTsKKyAgICBjLT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOworICAg
IGNsaXAoKTsKKyAgICBjLT5zZXRGaWxsUnVsZSh3aW5kUnVsZSk7Cit9CisKIGJvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZs
b2F0IHkpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDgg
KzE0NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCiAgICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBlb0Zp
bGwoKTsKICAgICB2b2lkIHN0cm9rZSgpOwogICAgIHZvaWQgY2xpcCgpOworICAgIHZvaWQgZW9D
bGlwKCk7CiAKICAgICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxv
YXQgeSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkocmV2aXNpb24gMTM4OTA4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1LDggKzEyNSwxMCBAQCBpbnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEIDogQ2FuCiAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5l
ZF0gYm9vbGVhbiBhbnRpY2xvY2t3aXNlKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBlb0ZpbGwoKTsKICAgICB2b2lkIHN0cm9rZSgp
OwogICAgIHZvaWQgY2xpcCgpOworICAgIHZvaWQgZW9DbGlwKCk7CiAgICAgYm9vbGVhbiBpc1Bv
aW50SW5QYXRoKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZs
b2F0IHkpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzg5MTIpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wMS0wNSAgUmlrIENh
YmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFByb3Bvc2FsOiBBZGQgc3Vw
cG9ydCBmb3IgZXZlbi1vZmYgZmlsbCBhbmQgY2xpcCB0byBDYW52YXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJpZnkgdGhh
dCB0aGUgd2luZGluZyBydWxlIHdvcmsgYXMgZXhwZWN0ZWQKKworICAgICAgICAqIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBp
eGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFy
ZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1maWxsLXJ1bGUuanM6IEFkZGVkLgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAg
ICAgIChjaGVja1Jlc3VsdCk6CisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKwogMjAx
My0wMS0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
ZmFpbGluZyB0ZXN0IGV4cGVjdGF0aW9ucyB0byBzb21lIHRpbGUgZHJhd2luZyB0ZXN0cyBvbiBN
YWMgV2ViS2l0Mi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjEgQEAKK1NlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRz
IG9mIHRoZSB3aW5kaW5nIHJ1bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitU
ZXN0aW5nIE5aTyBmaWxsCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBv
ZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1Mg
cGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQ
b2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQorCitUZXN0aW5nIEVPIGZpbGwKK1BBU1MgcGl4
ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBv
aW50KClbMV0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMg
d2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2Yg
MjU1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVs
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Nh
bnZhcy1jbGlwLXJ1bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjEgQEAKK1NlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9m
IHRoZSB3aW5kaW5nIHJ1bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0
aW5nIE5aTyBmaWxsCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAw
CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4
ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2lu
dCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQorCitUZXN0aW5nIEVPIGZpbGwKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbMV0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0
aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZh
cy1maWxsLXJ1bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
Y2xpcC1ydWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJl
IGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlLiIpOworCisKK3ZhciB0bXBpbWcg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK3RtcGltZy53aWR0aCA9IDIwMDsK
K3RtcGltZy5oZWlnaHQgPSAyMDA7CitjdHggPSB0bXBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKwor
Ly8gQ3JlYXRlIHRoZSBpbWFnZSBmb3IgYmxlbmRpbmcgdGVzdCB3aXRoIGltYWdlcy4KK3ZhciBp
bWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK2ltZy53aWR0aCA9IDEwMDsK
K2ltZy5oZWlnaHQgPSAxMDA7Cit2YXIgaW1nQ3R4ID0gaW1nLmdldENvbnRleHQoJzJkJyk7CisK
K2Z1bmN0aW9uIHBpeGVsRGF0YUF0UG9pbnQoKQoreworICByZXR1cm4gY3R4LmdldEltYWdlRGF0
YSg1MCwgNTAsIDEsIDEpLmRhdGE7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KGV4cGVjdGVk
Q29sb3JzLCBzaWdtYSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorCSAgICBz
aG91bGRCZUNsb3NlVG8oInBpeGVsRGF0YUF0UG9pbnQoKVsiICsgaSArICJdIiwgZXhwZWN0ZWRD
b2xvcnNbaV0sIHNpZ21hKTsKK30KKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFy
ZVRlc3RTY2VuYXJpbyhzaWdtYSkgeworICAgIGRlYnVnKCdUZXN0aW5nIE5aTyBmaWxsJyk7CisJ
Y3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5i
ZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3Qo
MjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCk7CisgICAgY3R4LmJlZ2luUGF0aCgpOwor
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisJY2hlY2tSZXN1bHQoWzAsIDI1NSwg
MCwgMjU1XSwgc2lnbWEpOyAgICAgICAgICAgICAgICAgICAgICAgIAorCWRlYnVnKCcnKTsKKwkK
KyAgICBkZWJ1ZygnVGVzdGluZyBFTyBmaWxsJyk7CisJY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1
LDAsMCknOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxT
dHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVj
dCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0
eC5lb0ZpbGwoKTsKKwljaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgCisJZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBh
bGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU0IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJl
c3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVp
Z2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0
aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0
ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBw
aXhlbERhdGFBdFBvaW50KCkKK3sKKyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAx
LCAxKS5kYXRhOworfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2ln
bWEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9z
ZVRvKCJwaXhlbERhdGFBdFBvaW50KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBz
aWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFy
aW8oc2lnbWEpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gZmlsbCcpOworCWN0eC5maWxsU3R5
bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7
CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAg
ICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoKTsKKwljaGVja1Jlc3Vs
dChbMCwgMjU1LCAwLCAyNTVdLCBzaWdtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisJZGVi
dWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIEVPIGZpbGwnKTsKKwljdHguZmlsbFN0eWxl
ID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVj
dCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOwor
ICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAg
Y3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5lb0ZpbGwoKTsKKwljaGVja1Jlc3Vs
dChbMjU1LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisJZGVi
dWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0
cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181448</attachid>
            <date>2013-01-05 17:08:28 -0800</date>
            <delta_ts>2013-01-06 21:05:59 -0800</delta_ts>
            <desc>Added support for optional winding rule in isPointInPath</desc>
            <filename>bug-106188-20130105170534.patch</filename>
            <type>text/plain</type>
            <size>15406</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODkxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAxLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGVvZmlsbCBhbmQgZW9jbGlwLiBUaGVzZSBjb25zdHJ1Y3RzIGFsbG93IHlvdQorICAgICAg
ICB0byBzZXQgdGhlIHdpbmRpbmcgcnVsZSB0aGF0IGlzIGFwcGxpZWQgd2hlbiBmaWxsaW5nIG9y
IGNsaXBwaW5nIHRvIGEgcGF0aAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyBpc1Bv
aW50SW5QYXRoIHNvIGl0IGNhbiB0YWtlIHRoZSB3aW5kaW5nIHJ1bGUgaW50byBhY2NvdW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBBZGQgaW1wbGVt
ZW50YXRpb24gZm9yIGVvRmlsbCwgZW9DbGlwLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVvQ2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgpOiBBZGQgc3VwcG9y
dCBmb3Igb3B0aW9uYWwgd2luZGluZyBydWxlCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IEV4
dGVuZCB0aGUgY2FudmFzIEFQSSB3aXRoIGVvRmlsbCwgZW9DbGlwIGFuZCBpc1BvaW50SW5QYXRo
CisKIDIwMTMtMDEtMDUgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIFJlbmRlck9iamVjdENoaWxkTGlzdDo6YmVmb3JlUHNldWRvRWxlbWVu
dFJlbmRlcmVyIGFuZCBhZnRlclBzZXVkb0VsZW1lbnRSZW5kZXJlcgpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUxLDYgKzEwNTEs
MTggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQogI2VuZGlmCiB9CiAK
K3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwoKQoreworICAgIEdyYXBoaWNz
Q29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgaWYgKCFjKQorICAgICAgICByZXR1
cm47CisKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IGMtPmZpbGxSdWxlKCk7CisgICAgYy0+c2V0
RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBmaWxsKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUo
d2luZFJ1bGUpOworfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkK
IHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtMTA4Niw3
ICsxMDk4LDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKCkKICNlbmRp
ZgogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChjb25z
dCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmVvQ2xpcCgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsK
KyAgICBpZiAoIWMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXaW5kUnVsZSB3aW5kUnVs
ZSA9IGMtPmZpbGxSdWxlKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAg
ICBjbGlwKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUod2luZFJ1bGUpOworfQorCitib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBm
bG9hdCB5LCBjb25zdCBib29sIGlzRXZlbk9kZCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMg
PSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTEwOTksNyArMTEyMyw3IEBAIGJv
b2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW4KICAgICBGbG9hdFBvaW50IHRy
YW5zZm9ybWVkUG9pbnQgPSBjdG0uaW52ZXJzZSgpLm1hcFBvaW50KHBvaW50KTsKICAgICBpZiAo
IWlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhaXNmaW5pdGUodHJhbnNmb3JtZWRQ
b2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fcGF0aC5jb250
YWlucyh0cmFuc2Zvcm1lZFBvaW50KTsKKyAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHRyYW5z
Zm9ybWVkUG9pbnQsIGlzRXZlbk9kZD8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05aRVJPKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9u
IDEzODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTAgKzE0NiwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQp
OwogCiAgICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBlb0ZpbGwoKTsKICAgICB2b2lkIHN0cm9r
ZSgpOwogICAgIHZvaWQgY2xpcCgpOworICAgIHZvaWQgZW9DbGlwKCk7CiAKLSAgICBib29sIGlz
UG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSk7CisgICAgYm9vbCBpc1Bv
aW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IGJvb2wgaXNFdmVu
T2RkKTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDEz
ODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMCArMTI1LDEzIEBAIGludGVyZmFjZSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW4KICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGFudGljbG9ja3dpc2UpCiAgICAgICAgIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIGZpbGwoKTsKKyAgICB2b2lkIGVvRmlsbCgpOwog
ICAgIHZvaWQgc3Ryb2tlKCk7CiAgICAgdm9pZCBjbGlwKCk7CisgICAgdm9pZCBlb0NsaXAoKTsK
ICAgICBib29sZWFuIGlzUG9pbnRJblBhdGgoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5l
ZF0gZmxvYXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1
bHRJc1VuZGVmaW5lZF0gZmxvYXQgeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4gaXNFdmVuT2Rk
KTsKIAogICAgIC8vIHRleHQKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvbnQ7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzg5MTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMS0wNSAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJA
YWRvYmUuY29tPgorCisgICAgICAgIFByb3Bvc2FsOiBBZGQgc3VwcG9ydCBmb3IgZXZlbi1vZGQg
ZmlsbCBhbmQgY2xpcCB0byBDYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCB0aGUgd2luZGluZyBydWxl
IHdvcmsgYXMgZXhwZWN0ZWQKKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY2xp
cC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1
bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZmls
bC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50
SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHBpeGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAo
cHJlcGFyZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3Rz
L2NhbnZhcy1maWxsLXJ1bGUuanM6IEFkZGVkLgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6
CisgICAgICAgIChjaGVja1Jlc3VsdCk6CisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgt
d2luZGluZy5qczogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFBdFBvaW50KToKKyAgICAgICAg
KGNoZWNrUmVzdWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2NlbmFyaW8pOgorCiAyMDEzLTAx
LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBmYWls
aW5nIHRlc3QgZXhwZWN0YXRpb25zIHRvIHNvbWUgdGlsZSBkcmF3aW5nIHRlc3RzIG9uIE1hYyBX
ZWJLaXQyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LWNsaXAtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMSBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2Yg
dGhlIHdpbmRpbmcgcnVsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3Rp
bmcgTlpPIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhl
bERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgRU8gZmlsbAorUEFTUyBwaXhlbERh
dGFBdFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQo
KVsxXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRo
aW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFz
LWNsaXAtcnVsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZp
bGwtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMSBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhl
IHdpbmRpbmcgcnVsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3Rpbmcg
TlpPIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BB
U1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERh
dGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClb
M10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgRU8gZmlsbAorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsx
XSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4g
NSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWZp
bGwtcnVsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2lu
ZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorU2VyaWVzIG9mIHRlc3Rz
IHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZSBpbiBpc1BvaW50
SW5QYXRoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBOWk8gaXNQ
b2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTApIGlzIHRydWUKKworVGVz
dGluZyBOWk8gaXNQb2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsIHRy
dWUpIGlzIGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50
SW5QYXRoLXdpbmRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtY2xpcC1ydWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJTZXJpZXMgb2YgdGVzdHMgdG8gZW5z
dXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlLiIpOworCisKK3ZhciB0bXBp
bWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK3RtcGltZy53aWR0aCA9IDIw
MDsKK3RtcGltZy5oZWlnaHQgPSAyMDA7CitjdHggPSB0bXBpbWcuZ2V0Q29udGV4dCgnMmQnKTsK
KworLy8gQ3JlYXRlIHRoZSBpbWFnZSBmb3IgYmxlbmRpbmcgdGVzdCB3aXRoIGltYWdlcy4KK3Zh
ciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK2ltZy53aWR0aCA9IDEw
MDsKK2ltZy5oZWlnaHQgPSAxMDA7Cit2YXIgaW1nQ3R4ID0gaW1nLmdldENvbnRleHQoJzJkJyk7
CisKK2Z1bmN0aW9uIHBpeGVsRGF0YUF0UG9pbnQoKQoreworICByZXR1cm4gY3R4LmdldEltYWdl
RGF0YSg1MCwgNTAsIDEsIDEpLmRhdGE7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KGV4cGVj
dGVkQ29sb3JzLCBzaWdtYSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorCSAg
ICBzaG91bGRCZUNsb3NlVG8oInBpeGVsRGF0YUF0UG9pbnQoKVsiICsgaSArICJdIiwgZXhwZWN0
ZWRDb2xvcnNbaV0sIHNpZ21hKTsKK30KKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJl
cGFyZVRlc3RTY2VuYXJpbyhzaWdtYSkgeworICAgIGRlYnVnKCdUZXN0aW5nIE5aTyBmaWxsJyk7
CisJY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5maWxsUmVjdCgwLCAw
LCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0
eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJl
Y3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCk7CisgICAgY3R4LmJlZ2luUGF0aCgp
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisJY2hlY2tSZXN1bHQoWzAsIDI1
NSwgMCwgMjU1XSwgc2lnbWEpOyAgICAgICAgICAgICAgICAgICAgICAgIAorCWRlYnVnKCcnKTsK
KwkKKyAgICBkZWJ1ZygnVGVzdGluZyBFTyBmaWxsJyk7CisJY3R4LmZpbGxTdHlsZSA9ICdyZ2Io
MjU1LDAsMCknOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZp
bGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgu
cmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAg
IGN0eC5lb0ZpbGwoKTsKKwljaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgCisJZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFu
ZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVs
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU0IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0
IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcu
aGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0
ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVp
Z2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlv
biBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUw
LCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywg
c2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVD
bG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ld
LCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2Nl
bmFyaW8oc2lnbWEpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gZmlsbCcpOworCWN0eC5maWxs
U3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZp
bGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSww
KSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsK
KyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoKTsKKwljaGVja1Jl
c3VsdChbMCwgMjU1LCAwLCAyNTVdLCBzaWdtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisJ
ZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIEVPIGZpbGwnKTsKKwljdHguZmlsbFN0
eWxlID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxs
UmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCkn
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5lb0ZpbGwoKTsKKwljaGVja1Jl
c3VsdChbMjU1LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisJ
ZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVz
dWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9p
bnRJblBhdGgtd2luZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ0IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVu
c3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZSBpbiBpc1BvaW50SW5QYXRo
LiIpOworCisKK3ZhciB0bXBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
K3RtcGltZy53aWR0aCA9IDIwMDsKK3RtcGltZy5oZWlnaHQgPSAyMDA7CitjdHggPSB0bXBpbWcu
Z2V0Q29udGV4dCgnMmQnKTsKKworLy8gQ3JlYXRlIHRoZSBpbWFnZSBmb3IgYmxlbmRpbmcgdGVz
dCB3aXRoIGltYWdlcy4KK3ZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKK2ltZy53aWR0aCA9IDEwMDsKK2ltZy5oZWlnaHQgPSAxMDA7Cit2YXIgaW1nQ3R4ID0gaW1n
LmdldENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIHBpeGVsRGF0YUF0UG9pbnQoKQoreworICBy
ZXR1cm4gY3R4LmdldEltYWdlRGF0YSg1MCwgNTAsIDEsIDEpLmRhdGE7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrUmVzdWx0KGV4cGVjdGVkQ29sb3JzLCBzaWdtYSkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNDsgaSsrKQorCSAgICBzaG91bGRCZUNsb3NlVG8oInBpeGVsRGF0YUF0UG9pbnQoKVsi
ICsgaSArICJdIiwgZXhwZWN0ZWRDb2xvcnNbaV0sIHNpZ21hKTsKK30KKworLy8gRXhlY3V0ZSB0
ZXN0LgorZnVuY3Rpb24gcHJlcGFyZVRlc3RTY2VuYXJpbyhzaWdtYSkgeworICAgIGRlYnVnKCdU
ZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoJyk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0
eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7Cisg
ICAgc2hvdWxkQmVUcnVlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTApIik7ICAgICAgICAgICAg
IAorCWRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aCcp
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlRmFsc2UoImN0eC5pc1Bv
aW50SW5QYXRoKDUwLCA1MCwgdHJ1ZSkiKTsgICAgICAgICAgICAgCisJZGVidWcoJycpOworCit9
CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3ByZXBhcmVU
ZXN0U2NlbmFyaW8oNSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181471</attachid>
            <date>2013-01-06 21:06:02 -0800</date>
            <delta_ts>2013-01-10 11:50:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130106210307.patch</filename>
            <type>text/plain</type>
            <size>16005</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAxLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGVvZmlsbCBhbmQgZW9jbGlwLiBUaGVzZSBjb25zdHJ1Y3RzIGFsbG93IHlvdQorICAgICAg
ICB0byBzZXQgdGhlIHdpbmRpbmcgcnVsZSB0aGF0IGlzIGFwcGxpZWQgd2hlbiBmaWxsaW5nIG9y
IGNsaXBwaW5nIHRvIGEgcGF0aAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyBpc1Bv
aW50SW5QYXRoIHNvIGl0IGNhbiB0YWtlIHRoZSB3aW5kaW5nIHJ1bGUgaW50byBhY2NvdW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBBZGQgaW1wbGVt
ZW50YXRpb24gZm9yIGVvRmlsbCwgZW9DbGlwLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVvQ2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgpOiBBZGQgc3VwcG9y
dCBmb3Igb3B0aW9uYWwgd2luZGluZyBydWxlCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IEV4
dGVuZCB0aGUgY2FudmFzIEFQSSB3aXRoIGVvRmlsbCwgZW9DbGlwIGFuZCBpc1BvaW50SW5QYXRo
CisKIDIwMTMtMDEtMDYgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxh
Ym9yYS5jby51az4KIAogICAgICAgICBCdWfCoDEwNjE3NyAtIFtHU3RyZWFtZXJdIERvbid0IGNh
bGwgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCkgd2l0aCBub24tZml4ZWQgY2FwcwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUx
LDYgKzEwNTEsMTggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQogI2Vu
ZGlmCiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwoKQoreworICAg
IEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgaWYgKCFjKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IGMtPmZpbGxSdWxlKCk7Cisg
ICAgYy0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICBmaWxsKCk7CisgICAgYy0+c2V0
RmlsbFJ1bGUod2luZFJ1bGUpOworfQorCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c3Ryb2tlKCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpA
QCAtMTA4Niw3ICsxMDk4LDE5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlw
KCkKICNlbmRpZgogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludElu
UGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KQordm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmVvQ2xpcCgpCit7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKKyAgICBpZiAoIWMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBXaW5kUnVs
ZSB3aW5kUnVsZSA9IGMtPmZpbGxSdWxlKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVO
T0REKTsKKyAgICBjbGlwKCk7CisgICAgYy0+c2V0RmlsbFJ1bGUod2luZFJ1bGUpOworfQorCiti
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChjb25zdCBmbG9hdCB4
LCBjb25zdCBmbG9hdCB5LCBjb25zdCBib29sIGlzRXZlbk9kZCkKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTEwOTksNyArMTEy
Myw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW4KICAgICBGbG9h
dFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBjdG0uaW52ZXJzZSgpLm1hcFBvaW50KHBvaW50KTsK
ICAgICBpZiAoIWlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhaXNmaW5pdGUodHJh
bnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1f
cGF0aC5jb250YWlucyh0cmFuc2Zvcm1lZFBvaW50KTsKKyAgICByZXR1cm4gbV9wYXRoLmNvbnRh
aW5zKHRyYW5zZm9ybWVkUG9pbnQsIGlzRXZlbk9kZD8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05a
RVJPKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJ
KHJldmlzaW9uIDEzODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTAgKzE0NiwxMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpOwogCiAgICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBlb0ZpbGwoKTsKICAgICB2
b2lkIHN0cm9rZSgpOwogICAgIHZvaWQgY2xpcCgpOworICAgIHZvaWQgZW9DbGlwKCk7CiAKLSAg
ICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSk7CisgICAg
Ym9vbCBpc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IGJv
b2wgaXNFdmVuT2RkKTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJl
dmlzaW9uIDEzODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMCArMTI1LDEzIEBAIGlu
dGVyZmFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW4KICAgICAgICAgICAgICBpbiBb
T3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGFudGljbG9ja3dpc2UpCiAgICAg
ICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIGZpbGwoKTsKKyAgICB2b2lkIGVv
RmlsbCgpOwogICAgIHZvaWQgc3Ryb2tlKCk7CiAgICAgdm9pZCBjbGlwKCk7CisgICAgdm9pZCBl
b0NsaXAoKTsKICAgICBib29sZWFuIGlzUG9pbnRJblBhdGgoaW4gW09wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gZmxvYXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gZmxvYXQgeSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJvb2xlYW4g
aXNFdmVuT2RkKTsKIAogICAgIC8vIHRleHQKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvbnQ7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzg5MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMS0wNSAgUmlrIENhYmFuaWVyICA8
Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFByb3Bvc2FsOiBBZGQgc3VwcG9ydCBmb3Ig
ZXZlbi1vZGQgZmlsbCBhbmQgY2xpcCB0byBDYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCB0aGUgd2lu
ZGluZyBydWxlIHdvcmsgYXMgZXhwZWN0ZWQKKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZh
cy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtY2xpcC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZh
cy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtZmlsbC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZh
cy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgor
ICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanM6IEFkZGVkLgorICAgICAgICAocGl4ZWxEYXRh
QXRQb2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6CisgICAgICAgIChwcmVwYXJlVGVzdFNj
ZW5hcmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9p
bnRJblBhdGgtd2luZGluZy5qczogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFBdFBvaW50KToK
KyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2NlbmFyaW8pOgor
ICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9jYW52YXMyZC9jYW52YXMyZC1hcGktY2hhbmdl
cy5odG1sOiBBZGRlZCBuZXcgbWV0aG9kcworCiAyMDEzLTAxLTA2ICBBYmhpc2hlayBBcnlhICA8
aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSGVhcC11c2UtYWZ0ZXItZnJlZSBpbiBX
ZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNsaXAtcnVsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVu
c3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgTlpPIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2lu
dCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdp
dGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2Yg
MAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3Rp
bmcgRU8gZmlsbAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMjU1
CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVs
RGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQo
KVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1jbGlwLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3Vy
ZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1Rlc3RpbmcgTlpPIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgp
WzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhp
biA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAor
UEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3Rpbmcg
RU8gZmlsbAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMjU1CitQ
QVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsz
XSBpcyB3aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1m
aWxsLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtZmlsbC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtZmlsbC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
aXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhl
IHdpbmRpbmcgcnVsZSBpbiBpc1BvaW50SW5QYXRoLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0
aCg1MCwgNTApIGlzIHRydWUKKworVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aAorUEFTUyBjdHgu
aXNQb2ludEluUGF0aCg1MCwgNTAsIHRydWUpIGlzIGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJ
blBhdGgtd2luZGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1jbGlwLXJ1bGUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9u
KCJTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGlu
ZyBydWxlLiIpOworCisKK3ZhciB0bXBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKK3RtcGltZy53aWR0aCA9IDIwMDsKK3RtcGltZy5oZWlnaHQgPSAyMDA7CitjdHggPSB0
bXBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworLy8gQ3JlYXRlIHRoZSBpbWFnZSBmb3IgYmxlbmRp
bmcgdGVzdCB3aXRoIGltYWdlcy4KK3ZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdj
YW52YXMnKTsKK2ltZy53aWR0aCA9IDEwMDsKK2ltZy5oZWlnaHQgPSAxMDA7Cit2YXIgaW1nQ3R4
ID0gaW1nLmdldENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIHBpeGVsRGF0YUF0UG9pbnQoKQor
eworICByZXR1cm4gY3R4LmdldEltYWdlRGF0YSg1MCwgNTAsIDEsIDEpLmRhdGE7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrUmVzdWx0KGV4cGVjdGVkQ29sb3JzLCBzaWdtYSkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNDsgaSsrKQorCSAgICBzaG91bGRCZUNsb3NlVG8oInBpeGVsRGF0YUF0UG9p
bnQoKVsiICsgaSArICJdIiwgZXhwZWN0ZWRDb2xvcnNbaV0sIHNpZ21hKTsKK30KKworLy8gRXhl
Y3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFyZVRlc3RTY2VuYXJpbyhzaWdtYSkgeworICAgIGRl
YnVnKCdUZXN0aW5nIE5aTyBmaWxsJyk7CisJY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCkn
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9
ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAw
LCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlw
KCk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEw
MCk7CisJY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgc2lnbWEpOyAgICAgICAgICAgICAg
ICAgICAgICAgIAorCWRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVzdGluZyBFTyBmaWxsJyk7
CisJY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5maWxsUmVjdCgwLCAw
LCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0
eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJl
Y3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5lb0ZpbGwoKTsKKwljaGVja1Jlc3VsdChbMjU1
LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisJZGVidWcoJycp
OworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3By
ZXBhcmVUZXN0U2NlbmFyaW8oNSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1ydWxl
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9m
IHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4iKTsK
KworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBp
bWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENv
bnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0
aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citp
bWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRD
b250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAgcmV0dXJu
IGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlvbiBjaGVj
a1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClbIiArIGkg
KyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUgdGVzdC4K
K2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oc2lnbWEpIHsKKyAgICBkZWJ1ZygnVGVzdGlu
ZyBOWk8gZmlsbCcpOworCWN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHgu
YmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgu
ZmlsbFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0
eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7Cisg
ICAgY3R4LmZpbGwoKTsKKwljaGVja1Jlc3VsdChbMCwgMjU1LCAwLCAyNTVdLCBzaWdtYSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgCisJZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5n
IEVPIGZpbGwnKTsKKwljdHguZmlsbFN0eWxlID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJl
Z2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZp
bGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgu
cmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAg
IGN0eC5lb0ZpbGwoKTsKKwljaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCBzaWdtYSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgCisJZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFu
ZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJ
blBhdGgtd2luZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACitkZXNjcmlwdGlv
bigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRp
bmcgcnVsZSBpbiBpc1BvaW50SW5QYXRoLiIpOworCisKK3ZhciB0bXBpbWcgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK3RtcGltZy53aWR0aCA9IDIwMDsKK3RtcGltZy5oZWln
aHQgPSAyMDA7CitjdHggPSB0bXBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworLy8gQ3JlYXRlIHRo
ZSBpbWFnZSBmb3IgYmxlbmRpbmcgdGVzdCB3aXRoIGltYWdlcy4KK3ZhciBpbWcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK2ltZy53aWR0aCA9IDEwMDsKK2ltZy5oZWlnaHQg
PSAxMDA7Cit2YXIgaW1nQ3R4ID0gaW1nLmdldENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIHBp
eGVsRGF0YUF0UG9pbnQoKQoreworICByZXR1cm4gY3R4LmdldEltYWdlRGF0YSg1MCwgNTAsIDEs
IDEpLmRhdGE7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KGV4cGVjdGVkQ29sb3JzLCBzaWdt
YSkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKQorCSAgICBzaG91bGRCZUNsb3Nl
VG8oInBpeGVsRGF0YUF0UG9pbnQoKVsiICsgaSArICJdIiwgZXhwZWN0ZWRDb2xvcnNbaV0sIHNp
Z21hKTsKK30KKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFyZVRlc3RTY2VuYXJp
byhzaWdtYSkgeworICAgIGRlYnVnKCdUZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoJyk7CisgICAg
Y3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgu
cmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgc2hvdWxkQmVUcnVlKCJjdHguaXNQb2ludEluUGF0
aCg1MCwgNTApIik7ICAgICAgICAgICAgIAorCWRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVz
dGluZyBOWk8gaXNQb2ludEluUGF0aCcpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgu
cmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAg
IHNob3VsZEJlRmFsc2UoImN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCwgdHJ1ZSkiKTsgICAgICAg
ICAgICAgCisJZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRp
b24gb2YgcmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oNSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2FudmFzMmQtYXBpLWNoYW5nZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvY2FudmFzMmQvY2Fu
dmFzMmQtYXBpLWNoYW5nZXMuaHRtbAkocmV2aXNpb24gMTM4OTA4KQorKysgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2NhbnZhczJkL2NhbnZhczJkLWFwaS1jaGFuZ2VzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVz
b3VyY2UuSWdub3JlUAogICAgICJjcmVhdGVJbWFnZURhdGEiLAogICAgICJkcmF3SW1hZ2UiLAog
ICAgICJkcmF3SW1hZ2VGcm9tUmVjdCIsCisgICAgImVvQ2xpcCIsCisgICAgImVvRmlsbCIsCiAg
ICAgImZpbGwiLAogICAgICJmaWxsUmVjdCIsCiAgICAgImZpbGxUZXh0IiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>182181</attachid>
            <date>2013-01-10 11:50:56 -0800</date>
            <delta_ts>2013-01-10 11:55:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130110114759.patch</filename>
            <type>text/plain</type>
            <size>18466</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAxLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGVvZmlsbCBhbmQgZW9jbGlwLiBUaGVzZSBjb25zdHJ1Y3RzIGFsbG93IHlvdQorICAgICAg
ICB0byBzZXQgdGhlIHdpbmRpbmcgcnVsZSB0aGF0IGlzIGFwcGxpZWQgd2hlbiBmaWxsaW5nIG9y
IGNsaXBwaW5nIHRvIGEgcGF0aAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyBpc1Bv
aW50SW5QYXRoIHNvIGl0IGNhbiB0YWtlIHRoZSB3aW5kaW5nIHJ1bGUgaW50byBhY2NvdW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBBZGQgaW1wbGVt
ZW50YXRpb24gZm9yIGVvRmlsbCwgZW9DbGlwLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVvQ2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgpOiBBZGQgc3VwcG9y
dCBmb3Igb3B0aW9uYWwgd2luZGluZyBydWxlCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IEV4
dGVuZCB0aGUgY2FudmFzIEFQSSB3aXRoIGVvRmlsbCwgZW9DbGlwIGFuZCBpc1BvaW50SW5QYXRo
CisKIDIwMTMtMDEtMDYgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxh
Ym9yYS5jby51az4KIAogICAgICAgICBCdWfCoDEwNjE3NyAtIFtHU3RyZWFtZXJdIERvbid0IGNh
bGwgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCkgd2l0aCBub24tZml4ZWQgY2FwcwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0
LDcgKzEwMjQsNyBAQCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAg
ICAgcmV0dXJuIG9wID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJj
ZU91dCB8fCBvcCA9PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURl
c3RpbmF0aW9uQXRvcDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwo
KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoY29uc3QgU3RyaW5nJiB3aW5k
aW5nKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAg
aWYgKCFjKQpAQCAtMTAzMyw2ICsxMDMzLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgp
KSB7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUoKTsKKyAgICAgICAg
V2luZFJ1bGUgbmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIGlmICghcGFyc2VX
aW5kaW5nKHdpbmRpbmcsIG5ld1dpbmRSdWxlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgYy0+c2V0RmlsbFJ1bGUobmV3V2luZFJ1bGUpOworICAgICAgICAKICAgICAgICAgaWYgKGlz
RnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKICAg
ICAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChtX3BhdGgpOwogICAgICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwpAQCAtMTA0NCw2ICsxMDUwLDggQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQogICAgICAgICAgICAgYy0+ZmlsbFBhdGgobV9wYXRo
KTsKICAgICAgICAgICAgIGRpZERyYXcobV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKSk7CiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGMtPnNldEZpbGxSdWxlKHdpbmRSdWxlKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0xMDcyLDIxICsxMDgwLDMxIEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2UoKQogI2VuZGlmCiB9CiAKLXZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGlwKGNvbnN0IFN0cmluZyYgd2luZGluZykKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IGMtPmZpbGxSdWxlKCk7CisgICAgV2luZFJ1bGUg
bmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJzZVdpbmRpbmcod2luZGlu
ZywgbmV3V2luZFJ1bGUpKQorICAgICAgICByZXR1cm47CisgICAgYy0+c2V0RmlsbFJ1bGUobmV3
V2luZFJ1bGUpOworCiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAgICAgYy0+Y2FudmFzQ2xpcChtX3Bh
dGgpOworICAgIAorICAgIGMtPnNldEZpbGxSdWxlKHdpbmRSdWxlKTsKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCiAgICAgY2xlYXJQYXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSgpOwogI2VuZGlmCiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHkpCisKK2Jvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0
IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTEwOTksNyArMTExNywxMiBA
QCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluCiAgICAgRmxvYXRQb2lu
dCB0cmFuc2Zvcm1lZFBvaW50ID0gY3RtLmludmVyc2UoKS5tYXBQb2ludChwb2ludCk7CiAgICAg
aWYgKCFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIWlzZmluaXRlKHRyYW5zZm9y
bWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3BhdGgu
Y29udGFpbnModHJhbnNmb3JtZWRQb2ludCk7CisgICAgCisgICAgV2luZFJ1bGUgd2luZFJ1bGUg
PSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJzZVdpbmRpbmcod2luZGluZywgV2luZFJ1bGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcGF0aC5jb250YWlu
cyh0cmFuc2Zvcm1lZFBvaW50LCB3aW5kUnVsZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkKQEAgLTEyODQsNiArMTMwNywxOCBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2hvdWxkRHJhCiAgICAgcmV0dXJuIGFscGhhQ2hhbm5lbChzdGF0ZSgpLm1fc2hhZG93
Q29sb3IpICYmIChzdGF0ZSgpLm1fc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5tX3NoYWRvd09mZnNl
dC5pc1plcm8oKSk7CiB9CiAKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwYXJzZVdp
bmRpbmcoY29uc3QgU3RyaW5nJiB3aW5kaW5nLCBXaW5kUnVsZSYgd2luZFJ1bGUpCit7CisgICAg
aWYgKHdpbmRpbmcgPT0gIm5vbnplcm8iKQorICAgICAgICB3aW5kUnVsZSA9IFJVTEVfTk9OWkVS
TzsKKyAgICBlbHNlIGlmICh3aW5kaW5nID09ICJldmVub2RkIikKKyAgICAgICAgd2luZFJ1bGUg
PSBSVUxFX0VWRU5PREQ7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBMYXlvdXRTaXplIHNpemUoSFRNTEltYWdlRWxl
bWVudCogaW1hZ2UpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
LT5jYWNoZWRJbWFnZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDEzODkwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcmMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29sIGNsb2Nrd2lz
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKIAotICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgZmls
bChjb25zdCBTdHJpbmcmIHdpbmRpbmcgPSAibm9uemVybyIpOwogICAgIHZvaWQgc3Ryb2tlKCk7
Ci0gICAgdm9pZCBjbGlwKCk7CisgICAgdm9pZCBjbGlwKGNvbnN0IFN0cmluZyYgd2luZGluZyA9
ICJub256ZXJvIik7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSk7CisgICAgYm9vbCBpc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0
IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJub256ZXJvIik7CiAKICAgICB2b2lk
IGNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsK
ICAgICB2b2lkIGZpbGxSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpOwpAQCAtMjg0LDYgKzI4NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIFJHQkEzMiBjb2xvcik7CiAgICAg
dm9pZCBhcHBseVNoYWRvdygpOwogICAgIGJvb2wgc2hvdWxkRHJhd1NoYWRvd3MoKSBjb25zdDsK
KyAgICAKKyAgICBib29sIHBhcnNlV2luZGluZyhjb25zdCBTdHJpbmcmIHdpbmRpbmcsIFdpbmRS
dWxlJik7CiAKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0
aW9ucyA9IENhbnZhc0RpZERyYXdBcHBseUFsbCk7CiAgICAgdm9pZCBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDEzODkwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBDYW52
YXNXaW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZW5vZGQiIH07CisKIGludGVyZmFjZSBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIAogICAgIHZv
aWQgc2F2ZSgpOwpAQCAtMTI0LDExICsxMjYsMTIgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCA6IENhbgogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWRdIGZsb2F0IGVuZEFuZ2xlLAogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSkKICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOwotICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgZmlsbChpbiBbT3B0aW9uYWxd
IERPTVN0cmluZyB3aW5kaW5nKTsKICAgICB2b2lkIHN0cm9rZSgpOwotICAgIHZvaWQgY2xpcCgp
OworICAgIHZvaWQgY2xpcChpbiBbT3B0aW9uYWxdIERPTVN0cmluZyB3aW5kaW5nKTsKICAgICBi
b29sZWFuIGlzUG9pbnRJblBhdGgoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gZmxv
YXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gZmxvYXQgeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHdpbmRpbmcpOwogCiAgICAgLy8gdGV4dAogICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgZm9udDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9u
IDEzODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0OCw3ICsxMzQ4LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBlbHNlIHsKICAgICAgICAg
Q0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRl
eHQpOworICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisgICAgICAgICAg
ICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIENH
Q29udGV4dENsaXAoY29udGV4dCk7CiAgICAgfQogICAgIG1fZGF0YS0+Y2xpcChwYXRoKTsKIH0K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzODkyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTA1ICBSaWsgQ2FiYW5pZXIgIDxj
YWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBwb3J0IGZvciBl
dmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSB3aW5k
aW5nIHJ1bGUgd29yayBhcyBleHBlY3RlZAorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWNsaXAtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWZpbGwtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1maWxsLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanM6IEFkZGVk
LgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6Cisg
ICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qczogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFB
dFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2Nl
bmFyaW8pOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2lu
dEluUGF0aC13aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgor
ICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisK
IDIwMTMtMDEtMDYgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBIZWFwLXVzZS1hZnRlci1mcmVlIGluIFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENs
b3NlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xp
cC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUg
d2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBu
b256ZXJvIGNsaXAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhl
bERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBjbGlwCitQQVNTIHBp
eGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQ
b2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlz
IHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9m
IDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtY2xpcC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxIEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBv
ZiB0aGUgd2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVz
dGluZyBub256ZXJvIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1
IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFT
UyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBmaWxsCitQ
QVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgp
WzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhp
biA1IG9mIDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1m
aWxsLXJ1bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQ
b2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5Q
YXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitT
ZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBy
dWxlIGluIGlzUG9pbnRJblBhdGguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitU
ZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCkg
aXMgdHJ1ZQorCitUZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5Q
YXRoKDUwLCA1MCwgJ2V2ZW5vZGQnKSBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRo
LXdpbmRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xp
cC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACitkZXNjcmlwdGlvbigiU2Vy
aWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVs
ZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1n
LmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRl
c3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGlt
Zy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAg
cmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlv
biBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClb
IiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUg
dGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rlc3Rp
bmcgbm9uemVybyBjbGlwJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOwor
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdy
Z2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCk7
CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7
CisgICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgY2xp
cCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsK
KyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAg
IGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgnZXZlbm9kZCcpOworICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAg
IGNoZWNrUmVzdWx0KFsyNTUsIDAsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgIGRlYnVnKCcnKTsKKworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxsb3cgdmFyaWF0aW9u
IG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtZmlsbC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlw
dGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdp
bmRpbmcgcnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Y2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4
ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJs
ZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGlt
Z0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50
KCkKK3sKKyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQor
CitmdW5jdGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFB
dFBvaW50KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8v
IEV4ZWN1dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVi
dWcoJ1Rlc3Rpbmcgbm9uemVybyBmaWxsJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1
LDAsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAw
LCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVn
aW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1
LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguZmlsbCgpOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUs
IDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKwkK
KyAgICBkZWJ1ZygnVGVzdGluZyBldmVub2RkIGZpbGwnKTsKKyAgICBjdHguZmlsbFN0eWxlID0g
J3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgw
LCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4
LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5maWxsKCdldmVub2RkJyk7CisgICAgY2hl
Y2tSZXN1bHQoWzI1NSwgMCwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2Yg
cmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQ
b2ludEluUGF0aC13aW5kaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKK2Rlc2NyaXB0aW9uKCJTZXJpZXMgb2YgdGVzdHMgdG8g
ZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlIGluIGlzUG9pbnRJblBh
dGguIik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
OwordG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGlt
Zy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0
ZXN0IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBp
bWcuZ2V0Q29udGV4dCgnMmQnKTsKKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFy
ZVRlc3RTY2VuYXJpbygpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aCcp
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1ZSgiY3R4LmlzUG9p
bnRJblBhdGgoNTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisJCisgICAg
ZGVidWcoJ1Rlc3RpbmcgTlpPIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7
CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAs
IDUwKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVu
b2RkJykiKTsgICAgICAgICAgICAgCisgICAgZGVidWcoJycpOworfQorCisvLyBSdW4gdGVzdCBh
bmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182185</attachid>
            <date>2013-01-10 11:59:13 -0800</date>
            <delta_ts>2013-01-17 23:29:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130110115616.patch</filename>
            <type>text/plain</type>
            <size>18466</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAxLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGVvZmlsbCBhbmQgZW9jbGlwLiBUaGVzZSBjb25zdHJ1Y3RzIGFsbG93IHlvdQorICAgICAg
ICB0byBzZXQgdGhlIHdpbmRpbmcgcnVsZSB0aGF0IGlzIGFwcGxpZWQgd2hlbiBmaWxsaW5nIG9y
IGNsaXBwaW5nIHRvIGEgcGF0aAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyBpc1Bv
aW50SW5QYXRoIHNvIGl0IGNhbiB0YWtlIHRoZSB3aW5kaW5nIHJ1bGUgaW50byBhY2NvdW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBBZGQgaW1wbGVt
ZW50YXRpb24gZm9yIGVvRmlsbCwgZW9DbGlwLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjplb0ZpbGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVvQ2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgpOiBBZGQgc3VwcG9y
dCBmb3Igb3B0aW9uYWwgd2luZGluZyBydWxlCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IEV4
dGVuZCB0aGUgY2FudmFzIEFQSSB3aXRoIGVvRmlsbCwgZW9DbGlwIGFuZCBpc1BvaW50SW5QYXRo
CisKIDIwMTMtMDEtMDYgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxh
Ym9yYS5jby51az4KIAogICAgICAgICBCdWfCoDEwNjE3NyAtIFtHU3RyZWFtZXJdIERvbid0IGNh
bGwgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCkgd2l0aCBub24tZml4ZWQgY2FwcwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiAxMzg5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0
LDcgKzEwMjQsNyBAQCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAg
ICAgcmV0dXJuIG9wID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJj
ZU91dCB8fCBvcCA9PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURl
c3RpbmF0aW9uQXRvcDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwo
KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoY29uc3QgU3RyaW5nJiB3aW5k
aW5nKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAg
aWYgKCFjKQpAQCAtMTAzMyw2ICsxMDMzLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgp
KSB7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUoKTsKKyAgICAgICAg
V2luZFJ1bGUgbmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIGlmICghcGFyc2VX
aW5kaW5nKHdpbmRpbmcsIG5ld1dpbmRSdWxlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgYy0+c2V0RmlsbFJ1bGUobmV3V2luZFJ1bGUpOworICAgICAgICAKICAgICAgICAgaWYgKGlz
RnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSkpIHsKICAg
ICAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChtX3BhdGgpOwogICAgICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwpAQCAtMTA0NCw2ICsxMDUwLDggQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQogICAgICAgICAgICAgYy0+ZmlsbFBhdGgobV9wYXRo
KTsKICAgICAgICAgICAgIGRpZERyYXcobV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKSk7CiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGMtPnNldEZpbGxSdWxlKHdpbmRSdWxlKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0xMDcyLDIxICsxMDgwLDMxIEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2UoKQogI2VuZGlmCiB9CiAKLXZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGlwKGNvbnN0IFN0cmluZyYgd2luZGluZykKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IGMtPmZpbGxSdWxlKCk7CisgICAgV2luZFJ1bGUg
bmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJzZVdpbmRpbmcod2luZGlu
ZywgbmV3V2luZFJ1bGUpKQorICAgICAgICByZXR1cm47CisgICAgYy0+c2V0RmlsbFJ1bGUobmV3
V2luZFJ1bGUpOworCiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAgICAgYy0+Y2FudmFzQ2xpcChtX3Bh
dGgpOworICAgIAorICAgIGMtPnNldEZpbGxSdWxlKHdpbmRSdWxlKTsKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCiAgICAgY2xlYXJQYXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRp
YmlsaXR5TW9kZSgpOwogI2VuZGlmCiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHkpCisKK2Jvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0
IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTEwOTksNyArMTExNywxMiBA
QCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluCiAgICAgRmxvYXRQb2lu
dCB0cmFuc2Zvcm1lZFBvaW50ID0gY3RtLmludmVyc2UoKS5tYXBQb2ludChwb2ludCk7CiAgICAg
aWYgKCFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIWlzZmluaXRlKHRyYW5zZm9y
bWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3BhdGgu
Y29udGFpbnModHJhbnNmb3JtZWRQb2ludCk7CisgICAgCisgICAgV2luZFJ1bGUgd2luZFJ1bGUg
PSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJzZVdpbmRpbmcod2luZGluZywgd2luZFJ1bGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fcGF0aC5jb250YWlu
cyh0cmFuc2Zvcm1lZFBvaW50LCB3aW5kUnVsZSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkKQEAgLTEyODQsNiArMTMwNywxOCBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2hvdWxkRHJhCiAgICAgcmV0dXJuIGFscGhhQ2hhbm5lbChzdGF0ZSgpLm1fc2hhZG93
Q29sb3IpICYmIChzdGF0ZSgpLm1fc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5tX3NoYWRvd09mZnNl
dC5pc1plcm8oKSk7CiB9CiAKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwYXJzZVdp
bmRpbmcoY29uc3QgU3RyaW5nJiB3aW5kaW5nLCBXaW5kUnVsZSYgd2luZFJ1bGUpCit7CisgICAg
aWYgKHdpbmRpbmcgPT0gIm5vbnplcm8iKQorICAgICAgICB3aW5kUnVsZSA9IFJVTEVfTk9OWkVS
TzsKKyAgICBlbHNlIGlmICh3aW5kaW5nID09ICJldmVub2RkIikKKyAgICAgICAgd2luZFJ1bGUg
PSBSVUxFX0VWRU5PREQ7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBMYXlvdXRTaXplIHNpemUoSFRNTEltYWdlRWxl
bWVudCogaW1hZ2UpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdl
LT5jYWNoZWRJbWFnZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDEzODkwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcmMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29sIGNsb2Nrd2lz
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKIAotICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgZmls
bChjb25zdCBTdHJpbmcmIHdpbmRpbmcgPSAibm9uemVybyIpOwogICAgIHZvaWQgc3Ryb2tlKCk7
Ci0gICAgdm9pZCBjbGlwKCk7CisgICAgdm9pZCBjbGlwKGNvbnN0IFN0cmluZyYgd2luZGluZyA9
ICJub256ZXJvIik7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSk7CisgICAgYm9vbCBpc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0
IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJub256ZXJvIik7CiAKICAgICB2b2lk
IGNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsK
ICAgICB2b2lkIGZpbGxSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpOwpAQCAtMjg0LDYgKzI4NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIFJHQkEzMiBjb2xvcik7CiAgICAg
dm9pZCBhcHBseVNoYWRvdygpOwogICAgIGJvb2wgc2hvdWxkRHJhd1NoYWRvd3MoKSBjb25zdDsK
KyAgICAKKyAgICBib29sIHBhcnNlV2luZGluZyhjb25zdCBTdHJpbmcmIHdpbmRpbmcsIFdpbmRS
dWxlJik7CiAKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiwgdW5zaWduZWQgb3B0
aW9ucyA9IENhbnZhc0RpZERyYXdBcHBseUFsbCk7CiAgICAgdm9pZCBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDEzODkwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBDYW52
YXNXaW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZW5vZGQiIH07CisKIGludGVyZmFjZSBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIAogICAgIHZv
aWQgc2F2ZSgpOwpAQCAtMTI0LDExICsxMjYsMTIgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCA6IENhbgogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRl
ZmluZWRdIGZsb2F0IGVuZEFuZ2xlLAogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSkKICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOwotICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgZmlsbChpbiBbT3B0aW9uYWxd
IERPTVN0cmluZyB3aW5kaW5nKTsKICAgICB2b2lkIHN0cm9rZSgpOwotICAgIHZvaWQgY2xpcCgp
OworICAgIHZvaWQgY2xpcChpbiBbT3B0aW9uYWxdIERPTVN0cmluZyB3aW5kaW5nKTsKICAgICBi
b29sZWFuIGlzUG9pbnRJblBhdGgoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gZmxv
YXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gZmxvYXQgeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHdpbmRpbmcpOwogCiAgICAgLy8gdGV4dAogICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgZm9udDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9u
IDEzODkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0OCw3ICsxMzQ4LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBlbHNlIHsKICAgICAgICAg
Q0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRl
eHQpOworICAgICAgICBpZiAoZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisgICAgICAgICAg
ICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIENH
Q29udGV4dENsaXAoY29udGV4dCk7CiAgICAgfQogICAgIG1fZGF0YS0+Y2xpcChwYXRoKTsKIH0K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzODkyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTA1ICBSaWsgQ2FiYW5pZXIgIDxj
YWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBwb3J0IGZvciBl
dmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSB3aW5k
aW5nIHJ1bGUgd29yayBhcyBleHBlY3RlZAorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWNsaXAtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWZpbGwtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1maWxsLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanM6IEFkZGVk
LgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6Cisg
ICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qczogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFB
dFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2Nl
bmFyaW8pOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2lu
dEluUGF0aC13aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgor
ICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisK
IDIwMTMtMDEtMDYgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBIZWFwLXVzZS1hZnRlci1mcmVlIGluIFdlYkNvcmU6OkRvY3VtZW50OjppbXBsaWNpdENs
b3NlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xp
cC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUg
d2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBu
b256ZXJvIGNsaXAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhl
bERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBjbGlwCitQQVNTIHBp
eGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQ
b2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlz
IHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9m
IDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtY2xpcC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxIEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBv
ZiB0aGUgd2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVz
dGluZyBub256ZXJvIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1
IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFT
UyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBmaWxsCitQ
QVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgp
WzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhp
biA1IG9mIDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1
bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1m
aWxsLXJ1bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQ
b2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5Q
YXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitT
ZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBy
dWxlIGluIGlzUG9pbnRJblBhdGguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitU
ZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCkg
aXMgdHJ1ZQorCitUZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5Q
YXRoKDUwLCA1MCwgJ2V2ZW5vZGQnKSBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRo
LXdpbmRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xp
cC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACitkZXNjcmlwdGlvbigiU2Vy
aWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVs
ZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1n
LmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRl
c3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGlt
Zy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAg
cmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlv
biBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClb
IiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUg
dGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rlc3Rp
bmcgbm9uemVybyBjbGlwJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOwor
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdy
Z2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCk7
CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7
CisgICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgY2xp
cCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsK
KyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAg
IGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgnZXZlbm9kZCcpOworICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAg
IGNoZWNrUmVzdWx0KFsyNTUsIDAsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgIGRlYnVnKCcnKTsKKworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxsb3cgdmFyaWF0aW9u
IG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtZmlsbC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlw
dGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdp
bmRpbmcgcnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Y2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4
ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJs
ZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGlt
Z0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50
KCkKK3sKKyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQor
CitmdW5jdGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFB
dFBvaW50KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8v
IEV4ZWN1dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVi
dWcoJ1Rlc3Rpbmcgbm9uemVybyBmaWxsJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1
LDAsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAw
LCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVn
aW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1
LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguZmlsbCgpOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUs
IDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKwkK
KyAgICBkZWJ1ZygnVGVzdGluZyBldmVub2RkIGZpbGwnKTsKKyAgICBjdHguZmlsbFN0eWxlID0g
J3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgw
LCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4
LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5maWxsKCdldmVub2RkJyk7CisgICAgY2hl
Y2tSZXN1bHQoWzI1NSwgMCwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgZGVidWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2Yg
cmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQ
b2ludEluUGF0aC13aW5kaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKK2Rlc2NyaXB0aW9uKCJTZXJpZXMgb2YgdGVzdHMgdG8g
ZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlIGluIGlzUG9pbnRJblBh
dGguIik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
OwordG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGlt
Zy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0
ZXN0IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBp
bWcuZ2V0Q29udGV4dCgnMmQnKTsKKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFy
ZVRlc3RTY2VuYXJpbygpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aCcp
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1ZSgiY3R4LmlzUG9p
bnRJblBhdGgoNTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisJCisgICAg
ZGVidWcoJ1Rlc3RpbmcgTlpPIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7
CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAs
IDUwKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVu
b2RkJykiKTsgICAgICAgICAgICAgCisgICAgZGVidWcoJycpOworfQorCisvLyBSdW4gdGVzdCBh
bmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183387</attachid>
            <date>2013-01-17 23:29:55 -0800</date>
            <delta_ts>2013-01-18 10:13:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130117232654.patch</filename>
            <type>text/plain</type>
            <size>18517</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDEwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE3ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGFuIG9wdGlvbmFsIHdpbmRpbmcgcnVsZSB0byBmaWxsLCBjbGlwIAorICAgICAgICBhbmQg
aXNQb2ludEluUGF0aCBpbiBjYW52YXMgMmQuIEJ5IGRlZmF1bHQsIHRoZSBmaWxsIGlzIG5vbi16
ZXJvIGJ1dAorICAgICAgICB5b3UgY2FuIG5vdyBwYXNzIGluIGFuIG9wdGlvbmFsIHdpbmRpbmcg
cnVsZSBzdHJpbmcgKCJub256ZXJvIiBvciAiZXZlbm9kZCIpCisgICAgICAgIHRvIG1ha2UgYW4g
ZXhwbGljaXQgY2hvaWNlLgorICAgICAgICAKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWZp
bGwtcnVsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBzbyBpdCBzZXRzIHRoZSB3aW5k
aWcgcnVsZSBpbiB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNsaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojppc1BvaW50SW5QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6cGFyc2VXaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsOiBDaGFuZ2UgdGhlIGlkbCBzbyB0aGUgbmV3IEFQSSBpcyBleHBvc2VkIHRvIEph
dmFTY3JpcHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOiBGaXhlcyBhIGJ1ZyB3aGVyZSB0aGUgd3Jvbmcgd2luZGluZyBydWxlIHdhcyBzZXQg
Zm9yIGNsaXBwaW5nIGluIENvcmUgR3JhcGhpY3MuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNsaXApOgorCiAyMDEzLTAxLTE3ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBIZWFwLXVzZS1hZnRlci1mcmVlIGluIFdlYkNvcmU6Okxp
dmVOb2RlTGlzdEJhc2U6OmludmFsaWRhdGVDYWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiAxNDAxMDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBzdGF0
aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAgICAgcmV0dXJuIG9wID09IENv
bXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9PSBDb21w
b3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcDsKIH0K
IAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQordm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmZpbGwoY29uc3QgU3RyaW5nJiB3aW5kaW5nKQogewogICAgIEdyYXBo
aWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTAzMyw2
ICsxMDMzLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIFdpbmRS
dWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUoKTsKKyAgICAgICAgV2luZFJ1bGUgbmV3V2luZFJ1
bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmcsIG5l
d1dpbmRSdWxlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYy0+c2V0RmlsbFJ1bGUo
bmV3V2luZFJ1bGUpOworCiAgICAgICAgIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0
YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgICAgICBmdWxsQ2FudmFzQ29tcG9z
aXRlZEZpbGwobV9wYXRoKTsKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKQEAg
LTEwNDQsNiArMTA1MCw4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkK
ICAgICAgICAgICAgIGMtPmZpbGxQYXRoKG1fcGF0aCk7CiAgICAgICAgICAgICBkaWREcmF3KG1f
cGF0aC5mYXN0Qm91bmRpbmdSZWN0KCkpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
LT5zZXRGaWxsUnVsZSh3aW5kUnVsZSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQpAQCAtMTA3MiwyMSArMTA4MCwyNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c3Ryb2tlKCkKICNlbmRpZgogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6Y2xpcCgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChjb25zdCBTdHJp
bmcmIHdpbmRpbmcpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXN0YXRlKCkubV9pbnZl
cnRpYmxlQ1RNKQogICAgICAgICByZXR1cm47CisKKyAgICBXaW5kUnVsZSBuZXdXaW5kUnVsZSA9
IFJVTEVfTk9OWkVSTzsKKyAgICBpZiAoIXBhcnNlV2luZGluZyh3aW5kaW5nLCBuZXdXaW5kUnVs
ZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZlcygpOwotICAgIGMtPmNhbnZh
c0NsaXAobV9wYXRoKTsKKyAgICBjLT5jYW52YXNDbGlwKG1fcGF0aCwgbmV3V2luZFJ1bGUpOwor
ICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjbGVhclBhdGhGb3JEYXNo
Ym9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKIH0KIAotYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3Qg
ZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNv
bnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZykKIHsKICAg
ICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAg
LTEwOTksNyArMTExMywxMiBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2lu
dEluCiAgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gY3RtLmludmVyc2UoKS5tYXBQ
b2ludChwb2ludCk7CiAgICAgaWYgKCFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwg
IWlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBtX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2ludCk7CisKKyAgICBXaW5k
UnVsZSB3aW5kUnVsZSA9IFJVTEVfTk9OWkVSTzsKKyAgICBpZiAoIXBhcnNlV2luZGluZyh3aW5k
aW5nLCB3aW5kUnVsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4g
bV9wYXRoLmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9pbnQsIHdpbmRSdWxlKTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpAQCAtMTEzOSw2ICsxMTU4LDE4IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhclJlY3QKICAgICBkaWREcmF3KHJlY3QpOwogfQogCiti
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFyc2VXaW5kaW5nKGNvbnN0IFN0cmluZyYg
d2luZGluZywgV2luZFJ1bGUmIHdpbmRSdWxlKQoreworICAgIGlmICh3aW5kaW5nID09ICJub256
ZXJvIikKKyAgICAgICAgd2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgZWxzZSBpZiAod2lu
ZGluZyA9PSAiZXZlbm9kZCIpCisgICAgICAgIHdpbmRSdWxlID0gUlVMRV9FVkVOT0REOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKICAgICBpZiAoIXZhbGlkYXRlUmVjdEZv
ckNhbnZhcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAx
NDAxMDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDExICsxNDUsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgYXJjKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIsIGZsb2F0IHNhLCBmbG9hdCBlYSwg
Ym9vbCBjbG9ja3dpc2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAKLSAgICB2b2lkIGZpbGwoKTsK
KyAgICB2b2lkIGZpbGwoY29uc3QgU3RyaW5nJiB3aW5kaW5nID0gIm5vbnplcm8iKTsKICAgICB2
b2lkIHN0cm9rZSgpOwotICAgIHZvaWQgY2xpcCgpOworICAgIHZvaWQgY2xpcChjb25zdCBTdHJp
bmcmIHdpbmRpbmcgPSAibm9uemVybyIpOwogCi0gICAgYm9vbCBpc1BvaW50SW5QYXRoKGNvbnN0
IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHkpOworICAgIGJvb2wgaXNQb2ludEluUGF0aChjb25zdCBm
bG9hdCB4LCBjb25zdCBmbG9hdCB5LCBjb25zdCBTdHJpbmcmIHdpbmRpbmcgPSAibm9uemVybyIp
OwogCiAgICAgdm9pZCBjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCk7CiAgICAgdm9pZCBmaWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0KTsKQEAgLTI4NCw2ICsyODQsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBSR0JBMzIg
Y29sb3IpOwogICAgIHZvaWQgYXBwbHlTaGFkb3coKTsKICAgICBib29sIHNob3VsZERyYXdTaGFk
b3dzKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBwYXJzZVdpbmRpbmcoY29uc3QgU3RyaW5nJiB3
aW5kaW5nLCBXaW5kUnVsZSYpOwogCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYs
IHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNEaWREcmF3QXBwbHlBbGwpOwogICAgIHZvaWQgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCShyZXZpc2lvbiAxNDAxMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKK2VudW0gQ2FudmFzV2luZGluZ1J1bGUgeyAibm9uemVybyIsICJldmVub2RkIiB9OworCiBp
bnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCB7CiAKICAgICB2b2lkIHNhdmUoKTsKQEAgLTEyNCwxMSArMTI2LDEyIEBAIGludGVyZmFjZSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW4KICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCBlbmRBbmdsZSwKICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGFudGljbG9ja3dpc2UpCiAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIGZpbGwoKTsKKyAgICB2b2lkIGZpbGwo
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2luZGluZyk7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAg
ICB2b2lkIGNsaXAoKTsKKyAgICB2b2lkIGNsaXAoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2lu
ZGluZyk7CiAgICAgYm9vbGVhbiBpc1BvaW50SW5QYXRoKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIGZsb2F0IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyB3aW5kaW5nKTsKIAogICAgIC8v
IHRleHQKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCShyZXZpc2lvbiAxNDAxMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzEsNyArMTMz
MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBlbHNl
IHsKICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRl
eHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICBpZiAoZmls
bFJ1bGUgPT0gUlVMRV9FVkVOT0REKQorICAgICAgICBpZiAoZmlsbFJ1bGUgPT0gUlVMRV9OT05a
RVJPKQogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQwMTAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMTMtMDEtMTcgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4K
KworICAgICAgICBQcm9wb3NhbDogQWRkIHN1cHBvcnQgZm9yIGV2ZW4tb2RkIGZpbGwgYW5kIGNs
aXAgdG8gQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDYxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIHdpbmRpbmcgcnVsZSB3b3JrIGFzIGV4
cGVjdGVkIHdpdGggY2xpcCwgZmlsbCBhbmQgaXNQb2ludEluUGF0aAorCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlw
LXJ1bGUuanM6IEFkZGVkLgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAgICAgIChj
aGVja1Jlc3VsdCk6CisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qczogQWRkZWQuCisgICAg
ICAgIChwaXhlbERhdGFBdFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAgICAgICAg
KHByZXBhcmVUZXN0U2NlbmFyaW8pOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHByZXBh
cmVUZXN0U2NlbmFyaW8pOgorCiAyMDEzLTAxLTE3ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVs
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRW5zdXJlIHRoZSBwYXJzZXIgYWRvcHRzIGZvc3Rl
ci1wYXJlbnRlZCBjaGlsZHJlbiBpbnRvIHRoZSBkb2N1bWVudCBvZiB0aGVpciBwYXJlbnQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBA
CitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGlu
ZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBub256ZXJv
IGNsaXAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1Mg
cGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10g
aXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBjbGlwCitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgp
WzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhp
biA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMt
Y2xpcC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmls
bC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUg
d2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBu
b256ZXJvIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhl
bERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBmaWxsCitQQVNTIHBp
eGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQ
b2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlz
IHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9m
IDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1
bGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtZmlsbC1ydWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdp
bmRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitTZXJpZXMg
b2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlIGlu
IGlzUG9pbnRJblBhdGguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5n
IE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCkgaXMgdHJ1
ZQorCitUZXN0aW5nIE5aTyBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUw
LCA1MCwgJ2V2ZW5vZGQnKSBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRp
bmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxl
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9m
IHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4iKTsK
KworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBp
bWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENv
bnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0
aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citp
bWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRD
b250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAgcmV0dXJu
IGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlvbiBjaGVj
a1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClbIiArIGkg
KyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUgdGVzdC4K
K2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rlc3Rpbmcgbm9u
emVybyBjbGlwJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0
eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwy
NTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEw
MCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCk7CisgICAg
Y3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAg
Y2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgY2xpcCcpOwor
ICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3QoMCwg
MCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBj
dHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5y
ZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgnZXZlbm9kZCcpOworICAgIGN0eC5i
ZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNr
UmVzdWx0KFsyNTUsIDAsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
IGRlYnVnKCcnKTsKKworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJl
c3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
ZmlsbC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigi
U2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcg
cnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1w
aW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5n
IHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2Fu
dmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9
IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sK
KyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5j
dGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50
KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1
dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rl
c3Rpbmcgbm9uemVybyBmaWxsJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCkn
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDAp
OworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRo
KCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwg
NTAsIDUwKTsKKyAgICBjdHguZmlsbCgpOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1
NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKwkKKyAgICBk
ZWJ1ZygnVGVzdGluZyBldmVub2RkIGZpbGwnKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigy
NTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5i
ZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3Qo
MjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5maWxsKCdldmVub2RkJyk7CisgICAgY2hlY2tSZXN1
bHQoWzI1NSwgMCwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZGVi
dWcoJycpOworCit9CisKKy8vIFJ1biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0
cy4KK3ByZXBhcmVUZXN0U2NlbmFyaW8oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzMgQEAKK2Rlc2NyaXB0aW9uKCJTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJl
IGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlIGluIGlzUG9pbnRJblBhdGguIik7
CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwordG1w
aW1nLndpZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5nZXRD
b250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0IHdp
dGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwor
aW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcuZ2V0
Q29udGV4dCgnMmQnKTsKKworLy8gRXhlY3V0ZSB0ZXN0LgorZnVuY3Rpb24gcHJlcGFyZVRlc3RT
Y2VuYXJpbygpIHsKKyAgICBkZWJ1ZygnVGVzdGluZyBOWk8gaXNQb2ludEluUGF0aCcpOworICAg
IGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4
LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1ZSgiY3R4LmlzUG9pbnRJblBh
dGgoNTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisJCisgICAgZGVidWco
J1Rlc3RpbmcgTlpPIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
Y3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVub2RkJyki
KTsgICAgICAgICAgICAgCisgICAgZGVidWcoJycpOworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxs
b3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>183494</attachid>
            <date>2013-01-18 10:13:54 -0800</date>
            <delta_ts>2013-01-18 10:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130118101054.patch</filename>
            <type>text/plain</type>
            <size>20662</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE4ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGFuIG9wdGlvbmFsIHdpbmRpbmcgcnVsZSB0byBmaWxsLCBjbGlwCisgICAgICAgIGFuZCBp
c1BvaW50SW5QYXRoIGluIGNhbnZhcyAyZC4gQnkgZGVmYXVsdCwgdGhlIGZpbGwgaXMgbm9uLXpl
cm8gYnV0CisgICAgICAgIHlvdSBjYW4gbm93IHBhc3MgaW4gYW4gb3B0aW9uYWwgd2luZGluZyBy
dWxlIHN0cmluZyAoIm5vbnplcm8iIG9yICJldmVub2RkIikKKyAgICAgICAgdG8gbWFrZSBhbiBl
eHBsaWNpdCBjaG9pY2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1jbGlw
LXJ1bGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5k
aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBzbyBpdCBzZXRzIHRoZSB3aW5kaWcgcnVsZSBp
biB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlV2luZGluZyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5Q
YXRoKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDog
CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IENoYW5nZSB0aGUgaWRsIHNvIHRoZSBu
ZXcgQVBJIGlzIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB3cm9u
ZyB3aW5kaW5nIHJ1bGUgd2FzIHNldCBmb3IgY2xpcHBpbmcgaW4gQ29yZSBHcmFwaGljcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisKIDIwMTMtMDEtMTggIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xs
YWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCwxOSBA
QCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAgICAgcmV0dXJuIG9w
ID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9
PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQorc3RhdGljIGJv
b2wgcGFyc2VXaW5kaW5nKGNvbnN0IFN0cmluZyYgd2luZGluZywgV2luZFJ1bGUmIHdpbmRSdWxl
KQoreworICAgIGlmICh3aW5kaW5nID09ICJub256ZXJvIikKKyAgICAgICAgd2luZFJ1bGUgPSBS
VUxFX05PTlpFUk87CisgICAgZWxzZSBpZiAod2luZGluZyA9PSAiZXZlbm9kZCIpCisgICAgICAg
IHdpbmRSdWxlID0gUlVMRV9FVkVOT0REOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZmlsbChjb25zdCBTdHJpbmcmIHdpbmRpbmdSdWxlU3RyaW5nKQogewogICAgIEdyYXBo
aWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTAzMyw2
ICsxMDQ1LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIFdpbmRS
dWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUoKTsKKyAgICAgICAgV2luZFJ1bGUgbmV3V2luZFJ1
bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAgIGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxl
U3RyaW5nLCBuZXdXaW5kUnVsZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGMtPnNl
dEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKKwogICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29tcG9zaXRlKSkgewogICAgICAgICAgICAgZnVsbENh
bnZhc0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7CiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CkBAIC0xMDQ0LDYgKzEwNjIsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZmlsbCgpCiAgICAgICAgICAgICBjLT5maWxsUGF0aChtX3BhdGgpOwogICAgICAgICAgICAg
ZGlkRHJhdyhtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpKTsKICAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgYy0+c2V0RmlsbFJ1bGUod2luZFJ1bGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKQEAgLTEwNzIsMjEgKzEwOTIsMjcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNsaXAoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAo
Y29uc3QgU3RyaW5nJiB3aW5kaW5nUnVsZVN0cmluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKKworICAgIFdp
bmRSdWxlIG5ld1dpbmRSdWxlID0gUlVMRV9OT05aRVJPOworICAgIGlmICghcGFyc2VXaW5kaW5n
KHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5kUnVsZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IHJlYWxpemVTYXZlcygpOwotICAgIGMtPmNhbnZhc0NsaXAobV9wYXRoKTsKKyAgICBjLT5jYW52
YXNDbGlwKG1fcGF0aCwgbmV3V2luZFJ1bGUpOworICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKICAgICBjbGVhclBhdGhGb3JEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlN
b2RlKCk7CiAjZW5kaWYKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9p
bnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHks
IGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVTdHJpbmcpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0
KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0xMDk5LDcgKzExMjUsMTIg
QEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJbgogICAgIEZsb2F0UG9p
bnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0bS5pbnZlcnNlKCkubWFwUG9pbnQocG9pbnQpOwogICAg
IGlmICghaXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54KCkpIHx8ICFpc2Zpbml0ZSh0cmFuc2Zv
cm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9wYXRo
LmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9pbnQpOworCisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBS
VUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJzZVdpbmRpbmcod2luZGluZ1J1bGVTdHJpbmcsIHdp
bmRSdWxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3BhdGgu
Y29udGFpbnModHJhbnNmb3JtZWRQb2ludCwgd2luZFJ1bGUpOwogfQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gMTQwMTAwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFyYyhmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9hdCBzYSwgZmxvYXQgZWEsIGJvb2wgY2xvY2t3aXNl
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0gICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBmaWxs
KGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJub256ZXJvIik7CiAgICAgdm9pZCBzdHJva2UoKTsK
LSAgICB2b2lkIGNsaXAoKTsKKyAgICB2b2lkIGNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nID0g
Im5vbnplcm8iKTsKIAotICAgIGJvb2wgaXNQb2ludEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25z
dCBmbG9hdCB5KTsKKyAgICBib29sIGlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3Qg
ZmxvYXQgeSwgY29uc3QgU3RyaW5nJiB3aW5kaW5nID0gIm5vbnplcm8iKTsKIAogICAgIHZvaWQg
Y2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwog
ICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCk7CkBAIC0yODQsNyArMjg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNoYWRvdyhj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKTsKICAgICB2
b2lkIGFwcGx5U2hhZG93KCk7CiAgICAgYm9vbCBzaG91bGREcmF3U2hhZG93cygpIGNvbnN0Owot
CisgICAgCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9wdGlv
bnMgPSBDYW52YXNEaWREcmF3QXBwbHlBbGwpOwogICAgIHZvaWQgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLy8gRklYTUU6
IHVzZSBDYW52YXNXaW5kaW5nUnVsZSBvbmNlIHN1cHBvcnQgZm9yIFdlYklETCBpcyBjb21wbGV0
ZWQKK2VudW0gQ2FudmFzV2luZGluZ1J1bGUgeyAibm9uemVybyIsICJldmVub2RkIiB9OworCiBp
bnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCB7CiAKICAgICB2b2lkIHNhdmUoKTsKQEAgLTEyNCwxMSArMTI3LDEyIEBAIGludGVyZmFjZSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW4KICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCBlbmRBbmdsZSwKICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBib29sZWFuIGFudGljbG9ja3dpc2UpCiAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIGZpbGwoKTsKKyAgICB2b2lkIGZpbGwo
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2luZGluZyk7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAg
ICB2b2lkIGNsaXAoKTsKKyAgICB2b2lkIGNsaXAoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2lu
ZGluZyk7CiAgICAgYm9vbGVhbiBpc1BvaW50SW5QYXRoKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIGZsb2F0IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyB3aW5kaW5nKTsKIAogICAgIC8v
IHRleHQKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZvbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCShyZXZpc2lvbiAxNDAxMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzEsNyArMTMz
MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBlbHNl
IHsKICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRl
eHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICBpZiAoZmls
bFJ1bGUgPT0gUlVMRV9FVkVOT0REKQorICAgICAgICBpZiAoZmlsbFJ1bGUgPT0gUlVMRV9OT05a
RVJPKQogICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlwKGNvbnRleHQpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQwMTcxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTMgQEAKKzIwMTMtMDEtMTggIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4K
KworICAgICAgICBQcm9wb3NhbDogQWRkIHN1cHBvcnQgZm9yIGV2ZW4tb2RkIGZpbGwgYW5kIGNs
aXAgdG8gQ2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDYxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13
aW5kaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY2xpcC1ydWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgor
ICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanM6IEFk
ZGVkLgorICAgICAgICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6
CisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qczogQWRkZWQuCisgICAg
ICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToKKworMjAxMy0wMS0xNyAgUmlrIENhYmFuaWVyICA8
Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFByb3Bvc2FsOiBBZGQgc3VwcG9ydCBmb3Ig
ZXZlbi1vZGQgZmlsbCBhbmQgY2xpcCB0byBDYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCB0aGUgd2lu
ZGluZyBydWxlIHdvcmsgYXMgZXhwZWN0ZWQgd2l0aCBjbGlwLCBmaWxsIGFuZCBpc1BvaW50SW5Q
YXRoCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWlzUG9p
bnRJblBhdGgtd2luZGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qczogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFB
dFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2Nl
bmFyaW8pOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1y
dWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hl
Y2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanM6IEFk
ZGVkLgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisKIDIwMTMtMDEtMTggIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xsYWJs
ZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitTZXJpZXMgb2YgdGVzdHMgdG8g
ZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGluZyBydWxlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBkZWZhdWx0IGNsaXAKK1BBU1MgcGl4ZWxEYXRh
QXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFd
IGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGlu
IDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisK
K1Rlc3Rpbmcgbm9uemVybyBjbGlwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRo
aW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQorCitUZXN0aW5nIGV2ZW5vZGQgY2xp
cAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMjU1CitQQVNTIHBp
eGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9p
bnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3
aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xp
cC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LWZpbGwtcnVsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNyBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0
IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1Rlc3RpbmcgZGVmYXVsdCBmaWxsCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBp
cyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBv
ZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1Mg
cGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQorCitUZXN0aW5nIG5vbnpl
cm8gZmlsbAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0aGluIDUgb2YgMAorUEFT
UyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMgd2l0aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsz
XSBpcyB3aXRoaW4gNSBvZiAyNTUKKworVGVzdGluZyBldmVub2RkIGZpbGwKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbMV0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0
aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZh
cy1maWxsLXJ1bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRo
LXdpbmRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGlu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK1NlcmllcyBvZiB0
ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUgaW4gaXNQ
b2ludEluUGF0aC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgZGVm
YXVsdCBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCkgaXMgdHJ1
ZQorCitUZXN0aW5nIG5vbnplcm8gaXNQb2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0
aCg1MCwgNTAsICdub256ZXJvJykgaXMgdHJ1ZQorCitUZXN0aW5nIGV2ZW5vZGQgaXNQb2ludElu
UGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVub2RkJykgaXMgZmFsc2UK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2lu
dEluUGF0aC13aW5kaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGlu
Zy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1jbGlwLXJ1bGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2OSBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBy
ZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUuIik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwordG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhl
aWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUg
dGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdo
dCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24g
cGl4ZWxEYXRhQXRQb2ludCgpCit7CisgIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKDUwLCA1MCwg
MSwgMSkuZGF0YTsKK30KKworZnVuY3Rpb24gY2hlY2tSZXN1bHQoZXhwZWN0ZWRDb2xvcnMsIHNp
Z21hKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisJICAgIHNob3VsZEJlQ2xv
c2VUbygicGl4ZWxEYXRhQXRQb2ludCgpWyIgKyBpICsgIl0iLCBleHBlY3RlZENvbG9yc1tpXSwg
c2lnbWEpOworfQorCisvLyBFeGVjdXRlIHRlc3QuCitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5h
cmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQgY2xpcCcpOworICAgIGN0eC5maWxs
U3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDAp
OworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRo
KCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwg
NTAsIDUwKTsKKyAgICBjdHguY2xpcCgpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgu
ZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1
NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKworICAgIGRl
YnVnKCdUZXN0aW5nIG5vbnplcm8gY2xpcCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1
NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxs
U3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJl
Y3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBj
dHguY2xpcCgnbm9uemVybycpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1NV0sIDUp
OworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVzdGluZyBldmVub2RkIGNsaXAnKTsK
KyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmZpbGxSZWN0KDAs
IDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAg
Y3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgu
cmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmNsaXAoJ2V2ZW5vZGQnKTsKKyAgICBjdHgu
YmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjaGVj
a1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCA1KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICBkZWJ1ZygnJyk7CisKK30KKworLy8gUnVuIHRlc3QgYW5kIGFsbG93IHZhcmlhdGlvbiBvZiBy
ZXN1bHRzLgorcHJlcGFyZVRlc3RTY2VuYXJpbygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorZGVzY3JpcHRpb24o
IlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5n
IHJ1bGUuIik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOwordG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRt
cGltZy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGlu
ZyB0ZXN0IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpOworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHgg
PSBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24gcGl4ZWxEYXRhQXRQb2ludCgpCit7
CisgIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKDUwLCA1MCwgMSwgMSkuZGF0YTsKK30KKworZnVu
Y3Rpb24gY2hlY2tSZXN1bHQoZXhwZWN0ZWRDb2xvcnMsIHNpZ21hKSB7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA0OyBpKyspCisJICAgIHNob3VsZEJlQ2xvc2VUbygicGl4ZWxEYXRhQXRQb2lu
dCgpWyIgKyBpICsgIl0iLCBleHBlY3RlZENvbG9yc1tpXSwgc2lnbWEpOworfQorCisvLyBFeGVj
dXRlIHRlc3QuCitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdU
ZXN0aW5nIGRlZmF1bHQgZmlsbCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDAp
JzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAw
KTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0
aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUs
IDUwLCA1MCk7CisgICAgY3R4LmZpbGwoKTsKKyAgICBjaGVja1Jlc3VsdChbMCwgMjU1LCAwLCAy
NTVdLCA1KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBk
ZWJ1ZygnVGVzdGluZyBub256ZXJvIGZpbGwnKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigy
NTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5i
ZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3Qo
MjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5maWxsKCdub256ZXJvJyk7CisgICAgY2hlY2tSZXN1
bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7CisgICAgZGVidWcoJycpOworCQorICAgIGRlYnVnKCdU
ZXN0aW5nIGV2ZW5vZGQgZmlsbCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDAp
JzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAw
KTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0
aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUs
IDUwLCA1MCk7CisgICAgY3R4LmZpbGwoJ2V2ZW5vZGQnKTsKKyAgICBjaGVja1Jlc3VsdChbMjU1
LCAwLCAwLCAyNTVdLCA1KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7
CisKK30KKworLy8gUnVuIHRlc3QgYW5kIGFsbG93IHZhcmlhdGlvbiBvZiByZXN1bHRzLgorcHJl
cGFyZVRlc3RTY2VuYXJpbygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdp
bmRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVj
dCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUgaW4gaXNQb2ludEluUGF0aC4iKTsKKworCit2
YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBpbWcud2lk
dGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENvbnRleHQo
JzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0aCBpbWFn
ZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CitpbWcud2lk
dGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRDb250ZXh0
KCcyZCcpOworCisvLyBFeGVjdXRlIHRlc3QuCitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5hcmlv
KCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQgaXNQb2ludEluUGF0aCcpOworICAgIGN0
eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJl
Y3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1ZSgiY3R4LmlzUG9pbnRJblBhdGgo
NTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBkZWJ1ZygnVGVz
dGluZyBub256ZXJvIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
Y3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsK
KyAgICBzaG91bGRCZVRydWUoImN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCwgJ25vbnplcm8nKSIp
OworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVzdGluZyBldmVub2RkIGlzUG9pbnRJ
blBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAx
MDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBzaG91bGRCZUZhbHNlKCJj
dHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVub2RkJykiKTsgICAgICAgICAgICAgCisgICAg
ZGVidWcoJycpOworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3Vs
dHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183496</attachid>
            <date>2013-01-18 10:20:51 -0800</date>
            <delta_ts>2013-01-19 19:26:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130118101750.patch</filename>
            <type>text/plain</type>
            <size>20692</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE4ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGFuIG9wdGlvbmFsIHdpbmRpbmcgcnVsZSB0byBmaWxsLCBjbGlwCisgICAgICAgIGFuZCBp
c1BvaW50SW5QYXRoIGluIGNhbnZhcyAyZC4gQnkgZGVmYXVsdCwgdGhlIGZpbGwgaXMgbm9uLXpl
cm8gYnV0CisgICAgICAgIHlvdSBjYW4gbm93IHBhc3MgaW4gYW4gb3B0aW9uYWwgd2luZGluZyBy
dWxlIHN0cmluZyAoIm5vbnplcm8iIG9yICJldmVub2RkIikKKyAgICAgICAgdG8gbWFrZSBhbiBl
eHBsaWNpdCBjaG9pY2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1jbGlw
LXJ1bGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5k
aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBzbyBpdCBzZXRzIHRoZSB3aW5kaWcgcnVsZSBp
biB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlV2luZGluZyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5Q
YXRoKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDog
CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IENoYW5nZSB0aGUgaWRsIHNvIHRoZSBu
ZXcgQVBJIGlzIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB3cm9u
ZyB3aW5kaW5nIHJ1bGUgd2FzIHNldCBmb3IgY2xpcHBpbmcgaW4gQ29yZSBHcmFwaGljcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisKIDIwMTMtMDEtMTggIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xs
YWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCwxOSBA
QCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAgICAgcmV0dXJuIG9w
ID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9
PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQorc3RhdGljIGJv
b2wgcGFyc2VXaW5kaW5nKGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVTdHJpbmcsIFdpbmRSdWxl
JiB3aW5kUnVsZSkKK3sKKyAgICBpZiAod2luZGluZ1J1bGVTdHJpbmcgPT0gIm5vbnplcm8iKQor
ICAgICAgICB3aW5kUnVsZSA9IFJVTEVfTk9OWkVSTzsKKyAgICBlbHNlIGlmICh3aW5kaW5nUnVs
ZVN0cmluZyA9PSAiZXZlbm9kZCIpCisgICAgICAgIHdpbmRSdWxlID0gUlVMRV9FVkVOT0REOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChjb25zdCBTdHJpbmcmIHdp
bmRpbmdSdWxlU3RyaW5nKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250
ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTAzMyw2ICsxMDQ1LDEyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3Bh
dGguaXNFbXB0eSgpKSB7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUo
KTsKKyAgICAgICAgV2luZFJ1bGUgbmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAg
IGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5kUnVsZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGMtPnNldEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKKwog
ICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlKSkgewogICAgICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7
CiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CkBAIC0xMDQ0LDYgKzEwNjIsOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAgICAgICAgICAgICBjLT5m
aWxsUGF0aChtX3BhdGgpOwogICAgICAgICAgICAgZGlkRHJhdyhtX3BhdGguZmFzdEJvdW5kaW5n
UmVjdCgpKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYy0+c2V0RmlsbFJ1bGUod2lu
ZFJ1bGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTEwNzIs
MjEgKzEwOTIsMjcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAj
ZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nUnVsZVN0
cmluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVD
VE0pCiAgICAgICAgIHJldHVybjsKKworICAgIFdpbmRSdWxlIG5ld1dpbmRSdWxlID0gUlVMRV9O
T05aRVJPOworICAgIGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5k
UnVsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZlcygpOwotICAgIGMtPmNh
bnZhc0NsaXAobV9wYXRoKTsKKyAgICBjLT5jYW52YXNDbGlwKG1fcGF0aCwgbmV3V2luZFJ1bGUp
OworICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjbGVhclBhdGhGb3JE
YXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKIH0KIAotYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRo
KGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVT
dHJpbmcpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAg
ICBpZiAoIWMpCkBAIC0xMDk5LDcgKzExMjUsMTIgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmlzUG9pbnRJbgogICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0bS5p
bnZlcnNlKCkubWFwUG9pbnQocG9pbnQpOwogICAgIGlmICghaXNmaW5pdGUodHJhbnNmb3JtZWRQ
b2ludC54KCkpIHx8ICFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9pbnQp
OworCisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJz
ZVdpbmRpbmcod2luZGluZ1J1bGVTdHJpbmcsIHdpbmRSdWxlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIHJldHVybiBtX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2ludCwg
d2luZFJ1bGUpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJSZWN0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAkocmV2aXNpb24gMTQwMTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFyYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9h
dCBzYSwgZmxvYXQgZWEsIGJvb2wgY2xvY2t3aXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0g
ICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBmaWxsKGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJu
b256ZXJvIik7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoKTsKKyAgICB2b2lk
IGNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nID0gIm5vbnplcm8iKTsKIAotICAgIGJvb2wgaXNQ
b2ludEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KTsKKyAgICBib29sIGlzUG9p
bnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSwgY29uc3QgU3RyaW5nJiB3aW5k
aW5nID0gIm5vbnplcm8iKTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CkBAIC0yODQsNyArMjg0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxv
YXQgYmx1ciwgUkdCQTMyIGNvbG9yKTsKICAgICB2b2lkIGFwcGx5U2hhZG93KCk7CiAgICAgYm9v
bCBzaG91bGREcmF3U2hhZG93cygpIGNvbnN0OwotCisgICAgCiAgICAgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNEaWREcmF3QXBwbHlBbGwp
OwogICAgIHZvaWQgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorLy8gRklYTUU6IHVzZSBDYW52YXNXaW5kaW5nUnVsZSBvbmNl
IHN1cHBvcnQgZm9yIFdlYklETCBpcyBjb21wbGV0ZWQKK2VudW0gQ2FudmFzV2luZGluZ1J1bGUg
eyAibm9uemVybyIsICJldmVub2RkIiB9OworCiBpbnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiAKICAgICB2b2lkIHNhdmUoKTsKQEAg
LTEyNCwxMSArMTI3LDEyIEBAIGludGVyZmFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBD
YW4KICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCBl
bmRBbmdsZSwKICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBi
b29sZWFuIGFudGljbG9ja3dpc2UpCiAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAg
ICB2b2lkIGZpbGwoKTsKKyAgICB2b2lkIGZpbGwoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2lu
ZGluZyk7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoKTsKKyAgICB2b2lkIGNs
aXAoaW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2luZGluZyk7CiAgICAgYm9vbGVhbiBpc1BvaW50
SW5QYXRoKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0
IHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBmbG9hdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IERPTVN0cmluZyB3aW5kaW5nKTsKIAogICAgIC8vIHRleHQKICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGZvbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxNDAxMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMzEsNyArMTMzMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBlbHNlIHsKICAgICAgICAgQ0dDb250ZXh0QmVnaW5Q
YXRoKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIHBhdGgucGxh
dGZvcm1QYXRoKCkpOwotICAgICAgICBpZiAoZmlsbFJ1bGUgPT0gUlVMRV9FVkVOT0REKQorICAg
ICAgICBpZiAoZmlsbFJ1bGUgPT0gUlVMRV9OT05aRVJPKQogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcChjb250ZXh0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0RU9DbGlw
KGNvbnRleHQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMTcxKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTMtMDEtMTggIFJpayBD
YWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBQcm9wb3NhbDogQWRkIHN1
cHBvcnQgZm9yIGV2ZW4tb2RkIGZpbGwgYW5kIGNsaXAgdG8gQ2FudmFzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxODgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1j
bGlwLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtY2xpcC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1m
aWxsLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtZmlsbC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1p
c1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1ydWxlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAg
ICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanM6IEFkZGVkLgorICAgICAgICAocGl4ZWxEYXRhQXRQ
b2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6CisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5h
cmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJ
blBhdGgtd2luZGluZy5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJlVGVzdFNjZW5hcmlvKToK
KworMjAxMy0wMS0xNyAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAg
ICAgIFByb3Bvc2FsOiBBZGQgc3VwcG9ydCBmb3IgZXZlbi1vZGQgZmlsbCBhbmQgY2xpcCB0byBD
YW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0cyB0byB2ZXJpZnkgdGhhdCB0aGUgd2luZGluZyBydWxlIHdvcmsgYXMgZXhwZWN0ZWQg
d2l0aCBjbGlwLCBmaWxsIGFuZCBpc1BvaW50SW5QYXRoCisKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5q
czogQWRkZWQuCisgICAgICAgIChwaXhlbERhdGFBdFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVz
dWx0KToKKyAgICAgICAgKHByZXBhcmVUZXN0U2NlbmFyaW8pOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBp
eGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFy
ZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZVRlc3RT
Y2VuYXJpbyk6CisKIDIwMTMtMDEtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xsYWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQg
bGF5b3V0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
Y2xpcC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI3IEBACitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0
aGUgd2luZGluZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGlu
ZyBkZWZhdWx0IGNsaXAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9m
IDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBw
aXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBv
aW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3Rpbmcgbm9uemVybyBjbGlwCitQQVNT
IHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0
UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJd
IGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1
IG9mIDI1NQorCitUZXN0aW5nIGV2ZW5vZGQgY2xpcAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClb
MF0gaXMgd2l0aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRo
aW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQ
QVNTIHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
ZmlsbC1ydWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorU2Vy
aWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVs
ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgZGVmYXVsdCBmaWxs
CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVs
RGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2lu
dCgpWzJdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdp
dGhpbiA1IG9mIDI1NQorCitUZXN0aW5nIG5vbnplcm8gZmlsbAorUEFTUyBwaXhlbERhdGFBdFBv
aW50KClbMF0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMg
d2l0aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBv
ZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworVGVz
dGluZyBldmVub2RkIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1
IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMgd2l0aGluIDUgb2YgMAorUEFT
UyBwaXhlbERhdGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbM10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtZmlsbC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdp
bmRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTggQEAKK1NlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1
bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUgaW4gaXNQb2ludEluUGF0aC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgZGVmYXVsdCBpc1BvaW50SW5QYXRoCitQQVNTIGN0
eC5pc1BvaW50SW5QYXRoKDUwLCA1MCkgaXMgdHJ1ZQorCitUZXN0aW5nIG5vbnplcm8gaXNQb2lu
dEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdub256ZXJvJykgaXMgdHJ1
ZQorCitUZXN0aW5nIGV2ZW5vZGQgaXNQb2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0
aCg1MCwgNTAsICdldmVub2RkJykgaXMgZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13
aW5kaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAt
cnVsZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorZGVzY3JpcHRpb24oIlNlcmll
cyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUu
Iik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwor
dG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5n
ZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0
IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
OworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcu
Z2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24gcGl4ZWxEYXRhQXRQb2ludCgpCit7CisgIHJl
dHVybiBjdHguZ2V0SW1hZ2VEYXRhKDUwLCA1MCwgMSwgMSkuZGF0YTsKK30KKworZnVuY3Rpb24g
Y2hlY2tSZXN1bHQoZXhwZWN0ZWRDb2xvcnMsIHNpZ21hKSB7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA0OyBpKyspCisJICAgIHNob3VsZEJlQ2xvc2VUbygicGl4ZWxEYXRhQXRQb2ludCgpWyIg
KyBpICsgIl0iLCBleHBlY3RlZENvbG9yc1tpXSwgc2lnbWEpOworfQorCisvLyBFeGVjdXRlIHRl
c3QuCitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5n
IGRlZmF1bHQgY2xpcCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdi
KDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAw
LCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgpOwor
ICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOwor
ICAgIGNoZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgIGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdUZXN0aW5nIG5vbnplcm8gY2xpcCcp
OworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3Qo
MCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAg
ICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0
eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgnbm9uemVybycpOworICAgIGN0
eC5iZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNo
ZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1NV0sIDUpOworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBk
ZWJ1ZygnVGVzdGluZyBldmVub2RkIGNsaXAnKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigy
NTUsMCwwKSc7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmls
bFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5y
ZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAg
Y3R4LmNsaXAoJ2V2ZW5vZGQnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCA1
KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisKK30KKworLy8gUnVu
IHRlc3QgYW5kIGFsbG93IHZhcmlhdGlvbiBvZiByZXN1bHRzLgorcHJlcGFyZVRlc3RTY2VuYXJp
bygpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1m
aWxsLXJ1bGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NiBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUg
Y29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUuIik7CisKKwordmFyIHRtcGltZyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwordG1waW1nLndpZHRoID0gMjAwOwor
dG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5nZXRDb250ZXh0KCcyZCcpOworCisv
LyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0IHdpdGggaW1hZ2VzLgordmFyIGlt
ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworaW1nLndpZHRoID0gMTAwOwor
aW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKwor
ZnVuY3Rpb24gcGl4ZWxEYXRhQXRQb2ludCgpCit7CisgIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRh
KDUwLCA1MCwgMSwgMSkuZGF0YTsKK30KKworZnVuY3Rpb24gY2hlY2tSZXN1bHQoZXhwZWN0ZWRD
b2xvcnMsIHNpZ21hKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisJICAgIHNo
b3VsZEJlQ2xvc2VUbygicGl4ZWxEYXRhQXRQb2ludCgpWyIgKyBpICsgIl0iLCBleHBlY3RlZENv
bG9yc1tpXSwgc2lnbWEpOworfQorCisvLyBFeGVjdXRlIHRlc3QuCitmdW5jdGlvbiBwcmVwYXJl
VGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQgZmlsbCcpOworICAg
IGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7Cisg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3Jn
YigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEw
MCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoKTsK
KyAgICBjaGVja1Jlc3VsdChbMCwgMjU1LCAwLCAyNTVdLCA1KTsgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICBkZWJ1ZygnJyk7CisKKyAgICBkZWJ1ZygnVGVzdGluZyBub256ZXJvIGZpbGwn
KTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0
aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHls
ZSA9ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgw
LCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5m
aWxsKCdub256ZXJvJyk7CisgICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7Cisg
ICAgZGVidWcoJycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgZmlsbCcpOworICAg
IGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7Cisg
ICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3Jn
YigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEw
MCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoJ2V2
ZW5vZGQnKTsKKyAgICBjaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCA1KTsgICAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisKK30KKworLy8gUnVuIHRlc3QgYW5kIGFs
bG93IHZhcmlhdGlvbiBvZiByZXN1bHRzLgorcHJlcGFyZVRlc3RTY2VuYXJpbygpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRo
LXdpbmRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgt
d2luZGluZy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlNl
cmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1
bGUgaW4gaXNQb2ludEluUGF0aC4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnY2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0g
MjAwOworY3R4ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1h
Z2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAw
OwordmFyIGltZ0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBFeGVjdXRlIHRlc3Qu
CitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRl
ZmF1bHQgaXNQb2ludEluUGF0aCcpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVj
dCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNo
b3VsZEJlVHJ1ZSgiY3R4LmlzUG9pbnRJblBhdGgoNTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAg
ICBkZWJ1ZygnJyk7CisKKyAgICBkZWJ1ZygnVGVzdGluZyBub256ZXJvIGlzUG9pbnRJblBhdGgn
KTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOwor
ICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBzaG91bGRCZVRydWUoImN0eC5pc1Bv
aW50SW5QYXRoKDUwLCA1MCwgJ25vbnplcm8nKSIpOworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBk
ZWJ1ZygnVGVzdGluZyBldmVub2RkIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRo
KCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwg
NTAsIDUwKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdl
dmVub2RkJykiKTsgICAgICAgICAgICAgCisgICAgZGVidWcoJycpOworfQorCisvLyBSdW4gdGVz
dCBhbmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183652</attachid>
            <date>2013-01-19 19:27:00 -0800</date>
            <delta_ts>2013-01-19 19:54:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130119192357.patch</filename>
            <type>text/plain</type>
            <size>19429</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE4ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGFuIG9wdGlvbmFsIHdpbmRpbmcgcnVsZSB0byBmaWxsLCBjbGlwCisgICAgICAgIGFuZCBp
c1BvaW50SW5QYXRoIGluIGNhbnZhcyAyZC4gQnkgZGVmYXVsdCwgdGhlIGZpbGwgaXMgbm9uLXpl
cm8gYnV0CisgICAgICAgIHlvdSBjYW4gbm93IHBhc3MgaW4gYW4gb3B0aW9uYWwgd2luZGluZyBy
dWxlIHN0cmluZyAoIm5vbnplcm8iIG9yICJldmVub2RkIikKKyAgICAgICAgdG8gbWFrZSBhbiBl
eHBsaWNpdCBjaG9pY2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1jbGlw
LXJ1bGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5k
aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBzbyBpdCBzZXRzIHRoZSB3aW5kaWcgcnVsZSBp
biB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlV2luZGluZyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5Q
YXRoKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDog
CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IENoYW5nZSB0aGUgaWRsIHNvIHRoZSBu
ZXcgQVBJIGlzIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB3cm9u
ZyB3aW5kaW5nIHJ1bGUgd2FzIHNldCBmb3IgY2xpcHBpbmcgaW4gQ29yZSBHcmFwaGljcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisKIDIwMTMtMDEtMTggIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xs
YWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCwxOSBA
QCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAgICAgcmV0dXJuIG9w
ID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9
PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQorc3RhdGljIGJv
b2wgcGFyc2VXaW5kaW5nKGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVTdHJpbmcsIFdpbmRSdWxl
JiB3aW5kUnVsZSkKK3sKKyAgICBpZiAod2luZGluZ1J1bGVTdHJpbmcgPT0gIm5vbnplcm8iKQor
ICAgICAgICB3aW5kUnVsZSA9IFJVTEVfTk9OWkVSTzsKKyAgICBlbHNlIGlmICh3aW5kaW5nUnVs
ZVN0cmluZyA9PSAiZXZlbm9kZCIpCisgICAgICAgIHdpbmRSdWxlID0gUlVMRV9FVkVOT0REOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChjb25zdCBTdHJpbmcmIHdp
bmRpbmdSdWxlU3RyaW5nKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250
ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTAzMyw2ICsxMDQ1LDEyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3Bh
dGguaXNFbXB0eSgpKSB7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUo
KTsKKyAgICAgICAgV2luZFJ1bGUgbmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAg
IGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5kUnVsZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGMtPnNldEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKKwog
ICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlKSkgewogICAgICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7
CiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CkBAIC0xMDQ0LDYgKzEwNjIsOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAgICAgICAgICAgICBjLT5m
aWxsUGF0aChtX3BhdGgpOwogICAgICAgICAgICAgZGlkRHJhdyhtX3BhdGguZmFzdEJvdW5kaW5n
UmVjdCgpKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYy0+c2V0RmlsbFJ1bGUod2lu
ZFJ1bGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTEwNzIs
MjEgKzEwOTIsMjcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAj
ZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nUnVsZVN0
cmluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVD
VE0pCiAgICAgICAgIHJldHVybjsKKworICAgIFdpbmRSdWxlIG5ld1dpbmRSdWxlID0gUlVMRV9O
T05aRVJPOworICAgIGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5k
UnVsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZlcygpOwotICAgIGMtPmNh
bnZhc0NsaXAobV9wYXRoKTsKKyAgICBjLT5jYW52YXNDbGlwKG1fcGF0aCwgbmV3V2luZFJ1bGUp
OworICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjbGVhclBhdGhGb3JE
YXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKIH0KIAotYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRo
KGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVT
dHJpbmcpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAg
ICBpZiAoIWMpCkBAIC0xMDk5LDcgKzExMjUsMTIgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmlzUG9pbnRJbgogICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0bS5p
bnZlcnNlKCkubWFwUG9pbnQocG9pbnQpOwogICAgIGlmICghaXNmaW5pdGUodHJhbnNmb3JtZWRQ
b2ludC54KCkpIHx8ICFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9pbnQp
OworCisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJz
ZVdpbmRpbmcod2luZGluZ1J1bGVTdHJpbmcsIHdpbmRSdWxlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIHJldHVybiBtX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2ludCwg
d2luZFJ1bGUpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJSZWN0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAkocmV2aXNpb24gMTQwMTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFyYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9h
dCBzYSwgZmxvYXQgZWEsIGJvb2wgY2xvY2t3aXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0g
ICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBmaWxsKGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJu
b256ZXJvIik7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoKTsKKyAgICB2b2lk
IGNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nID0gIm5vbnplcm8iKTsKIAotICAgIGJvb2wgaXNQ
b2ludEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KTsKKyAgICBib29sIGlzUG9p
bnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSwgY29uc3QgU3RyaW5nJiB3aW5k
aW5nID0gIm5vbnplcm8iKTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorLy8gRklYTUU6IHdlIHNob3VsZCB1c2UgQ2FudmFzV2luZGlu
Z1J1bGUgb25jZSBzdXBwb3J0IGZvciBXZWJJREwgaXMgY29tcGxldGVkLgorZW51bSBDYW52YXNX
aW5kaW5nUnVsZSB7ICJub256ZXJvIiwgImV2ZW5vZGQiIH07CisKIGludGVyZmFjZSBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIAogICAgIHZvaWQg
c2F2ZSgpOwpAQCAtMTI0LDExICsxMjcsMTIgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCA6IENhbgogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIGZsb2F0IGVuZEFuZ2xlLAogICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSkKICAgICAgICAgcmFpc2VzIChET01FeGNl
cHRpb24pOwotICAgIHZvaWQgZmlsbCgpOworICAgIHZvaWQgZmlsbChpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyB3aW5kaW5nKTsKICAgICB2b2lkIHN0cm9rZSgpOwotICAgIHZvaWQgY2xpcCgpOwor
ICAgIHZvaWQgY2xpcChpbiBbT3B0aW9uYWxdIERPTVN0cmluZyB3aW5kaW5nKTsKICAgICBib29s
ZWFuIGlzUG9pbnRJblBhdGgoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gZmxvYXQg
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gZmxvYXQgeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gRE9NU3RyaW5nIHdpbmRpbmcpOwogCiAgICAgLy8gdGV4dAogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgZm9udDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0
MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXAoY29uc3QgUGF0aCYgcAogICAgIGVsc2UgewogICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4
dCwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgIGlmIChmaWxsUnVsZSA9PSBSVUxFX0VW
RU5PREQpCisgICAgICAgIGlmIChmaWxsUnVsZSA9PSBSVUxFX05PTlpFUk8pCiAgICAgICAgICAg
ICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBDR0Nv
bnRleHRFT0NsaXAoY29udGV4dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDAxNzEpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0w
MS0xNyAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIFByb3Bv
c2FsOiBBZGQgc3VwcG9ydCBmb3IgZXZlbi1vZGQgZmlsbCBhbmQgY2xpcCB0byBDYW52YXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE4OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0
byB2ZXJpZnkgdGhhdCB0aGUgd2luZGluZyBydWxlIHdvcmsgYXMgZXhwZWN0ZWQgd2l0aCBjbGlw
LCBmaWxsIGFuZCBpc1BvaW50SW5QYXRoCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
Y2xpcC1ydWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLWNsaXAtcnVsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
ZmlsbC1ydWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLWZpbGwtcnVsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMt
aXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qczogQWRkZWQu
CisgICAgICAgIChwaXhlbERhdGFBdFBvaW50KToKKyAgICAgICAgKGNoZWNrUmVzdWx0KToKKyAg
ICAgICAgKHByZXBhcmVUZXN0U2NlbmFyaW8pOgorICAgICAgICAqIGZhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0
UG9pbnQpOgorICAgICAgICAoY2hlY2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2Vu
YXJpbyk6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50
SW5QYXRoLXdpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6
CisKIDIwMTMtMDEtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmNvcnJlY3Qgc2Nyb2xsYWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBA
CitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGlu
ZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBkZWZhdWx0
IGNsaXAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1Mg
cGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10g
aXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3Rpbmcgbm9uemVybyBjbGlwCitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsx
XSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhp
biA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQor
CitUZXN0aW5nIGV2ZW5vZGQgY2xpcAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0
aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAw
CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVs
RGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorU2VyaWVzIG9mIHRl
c3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgZGVmYXVsdCBmaWxsCitQQVNTIHBp
eGVsRGF0YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9p
bnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlz
IHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9m
IDI1NQorCitUZXN0aW5nIG5vbnplcm8gZmlsbAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0g
aXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMgd2l0aGluIDUg
b2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNT
IHBpeGVsRGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworVGVzdGluZyBldmVu
b2RkIGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDI1NQor
UEFTUyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERh
dGFBdFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClb
M10gaXMgd2l0aGluIDUgb2YgMjU1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
ZmlsbC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWZpbGwtcnVsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWZpbGwtcnVsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFz
LWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTggQEAKK1NlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRo
ZSB3aW5kaW5nIHJ1bGUgaW4gaXNQb2ludEluUGF0aC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1Rlc3RpbmcgZGVmYXVsdCBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50
SW5QYXRoKDUwLCA1MCkgaXMgdHJ1ZQorCitUZXN0aW5nIG5vbnplcm8gaXNQb2ludEluUGF0aAor
UEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdub256ZXJvJykgaXMgdHJ1ZQorCitUZXN0
aW5nIGV2ZW5vZGQgaXNQb2ludEluUGF0aAorUEFTUyBjdHguaXNQb2ludEluUGF0aCg1MCwgNTAs
ICdldmVub2RkJykgaXMgZmFsc2UKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1p
c1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFz
LWlzUG9pbnRJblBhdGgtd2luZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jbGlwLXJ1bGUuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0
cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUuIik7CisKKwor
dmFyIHRtcGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwordG1waW1nLndp
ZHRoID0gMjAwOwordG1waW1nLmhlaWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5nZXRDb250ZXh0
KCcyZCcpOworCisvLyBDcmVhdGUgdGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0IHdpdGggaW1h
Z2VzLgordmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworaW1nLndp
ZHRoID0gMTAwOworaW1nLmhlaWdodCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcuZ2V0Q29udGV4
dCgnMmQnKTsKKworZnVuY3Rpb24gcGl4ZWxEYXRhQXRQb2ludCgpCit7CisgIHJldHVybiBjdHgu
Z2V0SW1hZ2VEYXRhKDUwLCA1MCwgMSwgMSkuZGF0YTsKK30KKworZnVuY3Rpb24gY2hlY2tSZXN1
bHQoZXhwZWN0ZWRDb2xvcnMsIHNpZ21hKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBp
KyspCisJICAgIHNob3VsZEJlQ2xvc2VUbygicGl4ZWxEYXRhQXRQb2ludCgpWyIgKyBpICsgIl0i
LCBleHBlY3RlZENvbG9yc1tpXSwgc2lnbWEpOworfQorCisvLyBFeGVjdXRlIHRlc3QuCitmdW5j
dGlvbiBwcmVwYXJlVGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQg
Y2xpcCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmls
bFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDAp
JzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOwor
ICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgpOworICAgIGN0eC5i
ZWdpblBhdGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNr
UmVzdWx0KFswLCAyNTUsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
IGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdUZXN0aW5nIG5vbnplcm8gY2xpcCcpOworICAgIGN0
eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAw
LCAxMDApOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVn
aW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1
LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguY2xpcCgnbm9uemVybycpOworICAgIGN0eC5iZWdpblBh
dGgoKTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNrUmVzdWx0
KFswLCAyNTUsIDAsIDI1NV0sIDUpOworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVz
dGluZyBldmVub2RkIGNsaXAnKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigyNTUsMCwwKSc7
CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0g
J3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAs
IDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmNsaXAo
J2V2ZW5vZGQnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAs
IDEwMCwgMTAwKTsKKyAgICBjaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCA1KTsgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7CisKK30KKworLy8gUnVuIHRlc3QgYW5k
IGFsbG93IHZhcmlhdGlvbiBvZiByZXN1bHRzLgorcHJlcGFyZVRlc3RTY2VuYXJpbygpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1maWxsLXJ1bGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NiBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCBy
ZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUuIik7CisKKwordmFyIHRtcGltZyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwordG1waW1nLndpZHRoID0gMjAwOwordG1waW1nLmhl
aWdodCA9IDIwMDsKK2N0eCA9IHRtcGltZy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBDcmVhdGUg
dGhlIGltYWdlIGZvciBibGVuZGluZyB0ZXN0IHdpdGggaW1hZ2VzLgordmFyIGltZyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworaW1nLndpZHRoID0gMTAwOworaW1nLmhlaWdo
dCA9IDEwMDsKK3ZhciBpbWdDdHggPSBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24g
cGl4ZWxEYXRhQXRQb2ludCgpCit7CisgIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKDUwLCA1MCwg
MSwgMSkuZGF0YTsKK30KKworZnVuY3Rpb24gY2hlY2tSZXN1bHQoZXhwZWN0ZWRDb2xvcnMsIHNp
Z21hKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspCisJICAgIHNob3VsZEJlQ2xv
c2VUbygicGl4ZWxEYXRhQXRQb2ludCgpWyIgKyBpICsgIl0iLCBleHBlY3RlZENvbG9yc1tpXSwg
c2lnbWEpOworfQorCisvLyBFeGVjdXRlIHRlc3QuCitmdW5jdGlvbiBwcmVwYXJlVGVzdFNjZW5h
cmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQgZmlsbCcpOworICAgIGN0eC5maWxs
U3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZp
bGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSww
KSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsK
KyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoKTsKKyAgICBjaGVj
a1Jlc3VsdChbMCwgMjU1LCAwLCAyNTVdLCA1KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICBkZWJ1ZygnJyk7CisKKyAgICBkZWJ1ZygnVGVzdGluZyBub256ZXJvIGZpbGwnKTsKKyAgICBj
dHguZmlsbFN0eWxlID0gJ3JnYigyNTUsMCwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAg
IGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2Io
MCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAs
IDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5maWxsKCdub256
ZXJvJyk7CisgICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7CisgICAgZGVidWco
JycpOworCQorICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgZmlsbCcpOworICAgIGN0eC5maWxs
U3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LmZp
bGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3JnYigwLDI1NSww
KSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsK
KyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAgY3R4LmZpbGwoJ2V2ZW5vZGQnKTsK
KyAgICBjaGVja1Jlc3VsdChbMjU1LCAwLCAwLCAyNTVdLCA1KTsgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICBkZWJ1ZygnJyk7CisKK30KKworLy8gUnVuIHRlc3QgYW5kIGFsbG93IHZhcmlh
dGlvbiBvZiByZXN1bHRzLgorcHJlcGFyZVRlc3RTY2VuYXJpbygpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlNlcmllcyBvZiB0
ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRzIG9mIHRoZSB3aW5kaW5nIHJ1bGUgaW4gaXNQ
b2ludEluUGF0aC4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Y2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4
ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJs
ZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGlt
Z0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcpOworCisvLyBFeGVjdXRlIHRlc3QuCitmdW5jdGlv
biBwcmVwYXJlVGVzdFNjZW5hcmlvKCkgeworICAgIGRlYnVnKCdUZXN0aW5nIGRlZmF1bHQgaXNQ
b2ludEluUGF0aCcpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAx
MDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1
ZSgiY3R4LmlzUG9pbnRJblBhdGgoNTAsIDUwKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1Zygn
Jyk7CisKKyAgICBkZWJ1ZygnVGVzdGluZyBub256ZXJvIGlzUG9pbnRJblBhdGgnKTsKKyAgICBj
dHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5y
ZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBzaG91bGRCZVRydWUoImN0eC5pc1BvaW50SW5QYXRo
KDUwLCA1MCwgJ25vbnplcm8nKSIpOworICAgIGRlYnVnKCcnKTsKKwkKKyAgICBkZWJ1ZygnVGVz
dGluZyBldmVub2RkIGlzUG9pbnRJblBhdGgnKTsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
Y3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTAsICdldmVub2RkJyki
KTsgICAgICAgICAgICAgCisgICAgZGVidWcoJycpOworfQorCisvLyBSdW4gdGVzdCBhbmQgYWxs
b3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183654</attachid>
            <date>2013-01-19 19:54:09 -0800</date>
            <delta_ts>2013-01-21 13:06:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106188-20130119195106.patch</filename>
            <type>text/plain</type>
            <size>19443</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTE4ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBw
b3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlwIHRvIENhbnZhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg
Zm9yIGFuIG9wdGlvbmFsIHdpbmRpbmcgcnVsZSB0byBmaWxsLCBjbGlwCisgICAgICAgIGFuZCBp
c1BvaW50SW5QYXRoIGluIGNhbnZhcyAyZC4gQnkgZGVmYXVsdCwgdGhlIGZpbGwgaXMgbm9uLXpl
cm8gYnV0CisgICAgICAgIHlvdSBjYW4gbm93IHBhc3MgaW4gYW4gb3B0aW9uYWwgd2luZGluZyBy
dWxlIHN0cmluZyAoIm5vbnplcm8iIG9yICJldmVub2RkIikKKyAgICAgICAgdG8gbWFrZSBhbiBl
eHBsaWNpdCBjaG9pY2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL2NhbnZhcy1jbGlw
LXJ1bGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52YXMvY2FudmFzLWZpbGwtcnVsZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5k
aW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiBzbyBpdCBzZXRzIHRoZSB3aW5kaWcgcnVsZSBp
biB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlV2luZGluZyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5Q
YXRoKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDog
CisgICAgICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6IENoYW5nZSB0aGUgaWRsIHNvIHRoZSBu
ZXcgQVBJIGlzIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6IEZpeGVzIGEgYnVnIHdoZXJlIHRoZSB3cm9u
ZyB3aW5kaW5nIHJ1bGUgd2FzIHNldCBmb3IgY2xpcHBpbmcgaW4gQ29yZSBHcmFwaGljcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisKIDIwMTMtMDEtMTggIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xs
YWJsZSBoZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAyNCwxOSBA
QCBzdGF0aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvCiAgICAgcmV0dXJuIG9w
ID09IENvbXBvc2l0ZVNvdXJjZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9
PSBDb21wb3NpdGVEZXN0aW5hdGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQorc3RhdGljIGJv
b2wgcGFyc2VXaW5kaW5nKGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVTdHJpbmcsIFdpbmRSdWxl
JiB3aW5kUnVsZSkKK3sKKyAgICBpZiAod2luZGluZ1J1bGVTdHJpbmcgPT0gIm5vbnplcm8iKQor
ICAgICAgICB3aW5kUnVsZSA9IFJVTEVfTk9OWkVSTzsKKyAgICBlbHNlIGlmICh3aW5kaW5nUnVs
ZVN0cmluZyA9PSAiZXZlbm9kZCIpCisgICAgICAgIHdpbmRSdWxlID0gUlVMRV9FVkVOT0REOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChjb25zdCBTdHJpbmcmIHdp
bmRpbmdSdWxlU3RyaW5nKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250
ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTAzMyw2ICsxMDQ1LDEyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3Bh
dGguaXNFbXB0eSgpKSB7CisgICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlID0gYy0+ZmlsbFJ1bGUo
KTsKKyAgICAgICAgV2luZFJ1bGUgbmV3V2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgICAg
IGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5kUnVsZSkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGMtPnNldEZpbGxSdWxlKG5ld1dpbmRSdWxlKTsKKwog
ICAgICAgICBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLm1fZ2xvYmFsQ29t
cG9zaXRlKSkgewogICAgICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKG1fcGF0aCk7
CiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CkBAIC0xMDQ0LDYgKzEwNjIsOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAgICAgICAgICAgICBjLT5m
aWxsUGF0aChtX3BhdGgpOwogICAgICAgICAgICAgZGlkRHJhdyhtX3BhdGguZmFzdEJvdW5kaW5n
UmVjdCgpKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYy0+c2V0RmlsbFJ1bGUod2lu
ZFJ1bGUpOwogICAgIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTEwNzIs
MjEgKzEwOTIsMjcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAj
ZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nUnVsZVN0
cmluZykKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVD
VE0pCiAgICAgICAgIHJldHVybjsKKworICAgIFdpbmRSdWxlIG5ld1dpbmRSdWxlID0gUlVMRV9O
T05aRVJPOworICAgIGlmICghcGFyc2VXaW5kaW5nKHdpbmRpbmdSdWxlU3RyaW5nLCBuZXdXaW5k
UnVsZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZlcygpOwotICAgIGMtPmNh
bnZhc0NsaXAobV9wYXRoKTsKKyAgICBjLT5jYW52YXNDbGlwKG1fcGF0aCwgbmV3V2luZFJ1bGUp
OworICAgIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjbGVhclBhdGhGb3JE
YXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKIH0KIAotYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29u
c3QgZmxvYXQgeSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRo
KGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHksIGNvbnN0IFN0cmluZyYgd2luZGluZ1J1bGVT
dHJpbmcpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAg
ICBpZiAoIWMpCkBAIC0xMDk5LDcgKzExMjUsMTIgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmlzUG9pbnRJbgogICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0bS5p
bnZlcnNlKCkubWFwUG9pbnQocG9pbnQpOwogICAgIGlmICghaXNmaW5pdGUodHJhbnNmb3JtZWRQ
b2ludC54KCkpIHx8ICFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9pbnQp
OworCisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBSVUxFX05PTlpFUk87CisgICAgaWYgKCFwYXJz
ZVdpbmRpbmcod2luZGluZ1J1bGVTdHJpbmcsIHdpbmRSdWxlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIHJldHVybiBtX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2ludCwg
d2luZFJ1bGUpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJSZWN0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAkocmV2aXNpb24gMTQwMTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFyYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9h
dCBzYSwgZmxvYXQgZWEsIGJvb2wgY2xvY2t3aXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0g
ICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBmaWxsKGNvbnN0IFN0cmluZyYgd2luZGluZyA9ICJu
b256ZXJvIik7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoKTsKKyAgICB2b2lk
IGNsaXAoY29uc3QgU3RyaW5nJiB3aW5kaW5nID0gIm5vbnplcm8iKTsKIAotICAgIGJvb2wgaXNQ
b2ludEluUGF0aChjb25zdCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KTsKKyAgICBib29sIGlzUG9p
bnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSwgY29uc3QgU3RyaW5nJiB3aW5k
aW5nID0gIm5vbnplcm8iKTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwJ
KHJldmlzaW9uIDE0MDEwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorLy8gRklYTUU6IHdlIHNob3VsZCB1c2UgQ2FudmFzV2luZGlu
Z1J1bGUgb25jZSBzdXBwb3J0IGZvciBXZWJJREwgaXMgY29tcGxldGVkLiAoYnVnICMxMDY1NTMp
CitlbnVtIENhbnZhc1dpbmRpbmdSdWxlIHsgIm5vbnplcm8iLCAiZXZlbm9kZCIgfTsKKwogaW50
ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQg
ewogCiAgICAgdm9pZCBzYXZlKCk7CkBAIC0xMjQsMTEgKzEyNywxMiBAQCBpbnRlcmZhY2UgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEIDogQ2FuCiAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gZmxvYXQgZW5kQW5nbGUsCiAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gYm9vbGVhbiBhbnRpY2xvY2t3aXNlKQogICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgdm9pZCBmaWxsKCk7CisgICAgdm9pZCBmaWxsKGlu
IFtPcHRpb25hbF0gRE9NU3RyaW5nIHdpbmRpbmcpOwogICAgIHZvaWQgc3Ryb2tlKCk7Ci0gICAg
dm9pZCBjbGlwKCk7CisgICAgdm9pZCBjbGlwKGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHdpbmRp
bmcpOwogICAgIGJvb2xlYW4gaXNQb2ludEluUGF0aChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBmbG9hdCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBmbG9hdCB5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gZmxvYXQgeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgd2luZGluZyk7CiAKICAgICAvLyB0
ZXh0CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmb250OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAkocmV2aXNpb24gMTQwMTAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMxLDcgKzEzMzEs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwCiAgICAgZWxzZSB7
CiAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0
QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgaWYgKGZpbGxS
dWxlID09IFJVTEVfRVZFTk9ERCkKKyAgICAgICAgaWYgKGZpbGxSdWxlID09IFJVTEVfTk9OWkVS
TykKICAgICAgICAgICAgIENHQ29udGV4dENsaXAoY29udGV4dCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0
MDE3MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDEzLTAxLTE3ICBSaWsgQ2FiYW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisK
KyAgICAgICAgUHJvcG9zYWw6IEFkZCBzdXBwb3J0IGZvciBldmVuLW9kZCBmaWxsIGFuZCBjbGlw
IHRvIENhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSB3aW5kaW5nIHJ1bGUgd29yayBhcyBleHBl
Y3RlZCB3aXRoIGNsaXAsIGZpbGwgYW5kIGlzUG9pbnRJblBhdGgKKworICAgICAgICAqIGZhc3Qv
Y2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtY2xpcC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL2NhbnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1y
dWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsRGF0YUF0UG9pbnQpOgorICAgICAgICAoY2hl
Y2tSZXN1bHQpOgorICAgICAgICAocHJlcGFyZVRlc3RTY2VuYXJpbyk6CisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsLXJ1bGUuanM6IEFkZGVkLgorICAgICAg
ICAocGl4ZWxEYXRhQXRQb2ludCk6CisgICAgICAgIChjaGVja1Jlc3VsdCk6CisgICAgICAgIChw
cmVwYXJlVGVzdFNjZW5hcmlvKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJl
VGVzdFNjZW5hcmlvKToKKwogMjAxMy0wMS0xOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIEluY29ycmVjdCBzY3JvbGxhYmxlIGhlaWdodCBkdXJpbmcgc2ltcGxp
ZmllZCBsYXlvdXQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1
bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jbGlwLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjcgQEAKK1NlcmllcyBvZiB0ZXN0cyB0byBlbnN1cmUgY29ycmVjdCByZXN1bHRz
IG9mIHRoZSB3aW5kaW5nIHJ1bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitU
ZXN0aW5nIGRlZmF1bHQgY2xpcAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0aGlu
IDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMV0gaXMgd2l0aGluIDUgb2YgMjU1CitQ
QVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworVGVzdGluZyBub256ZXJvIGNsaXAK
K1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxE
YXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFBdFBvaW50
KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10gaXMgd2l0
aGluIDUgb2YgMjU1CisKK1Rlc3RpbmcgZXZlbm9kZCBjbGlwCitQQVNTIHBpeGVsRGF0YUF0UG9p
bnQoKVswXSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlz
IHdpdGhpbiA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhpbiA1IG9m
IDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNsaXAtcnVsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jbGlwLXJ1bGUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtY2xpcC1y
dWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1maWxsLXJ1bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBA
CitTZXJpZXMgb2YgdGVzdHMgdG8gZW5zdXJlIGNvcnJlY3QgcmVzdWx0cyBvZiB0aGUgd2luZGlu
ZyBydWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBkZWZhdWx0
IGZpbGwKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzBdIGlzIHdpdGhpbiA1IG9mIDAKK1BBU1Mg
cGl4ZWxEYXRhQXRQb2ludCgpWzFdIGlzIHdpdGhpbiA1IG9mIDI1NQorUEFTUyBwaXhlbERhdGFB
dFBvaW50KClbMl0gaXMgd2l0aGluIDUgb2YgMAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbM10g
aXMgd2l0aGluIDUgb2YgMjU1CisKK1Rlc3Rpbmcgbm9uemVybyBmaWxsCitQQVNTIHBpeGVsRGF0
YUF0UG9pbnQoKVswXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsx
XSBpcyB3aXRoaW4gNSBvZiAyNTUKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzJdIGlzIHdpdGhp
biA1IG9mIDAKK1BBU1MgcGl4ZWxEYXRhQXRQb2ludCgpWzNdIGlzIHdpdGhpbiA1IG9mIDI1NQor
CitUZXN0aW5nIGV2ZW5vZGQgZmlsbAorUEFTUyBwaXhlbERhdGFBdFBvaW50KClbMF0gaXMgd2l0
aGluIDUgb2YgMjU1CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsxXSBpcyB3aXRoaW4gNSBvZiAw
CitQQVNTIHBpeGVsRGF0YUF0UG9pbnQoKVsyXSBpcyB3aXRoaW4gNSBvZiAwCitQQVNTIHBpeGVs
RGF0YUF0UG9pbnQoKVszXSBpcyB3aXRoaW4gNSBvZiAyNTUKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1maWxsLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtZmlsbC1ydWxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlzUG9pbnRJblBh
dGgtd2luZGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxOCBAQAorU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0
IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZSBpbiBpc1BvaW50SW5QYXRoLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGluZyBkZWZhdWx0IGlzUG9pbnRJblBhdGgKK1BB
U1MgY3R4LmlzUG9pbnRJblBhdGgoNTAsIDUwKSBpcyB0cnVlCisKK1Rlc3Rpbmcgbm9uemVybyBp
c1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50SW5QYXRoKDUwLCA1MCwgJ25vbnplcm8nKSBp
cyB0cnVlCisKK1Rlc3RpbmcgZXZlbm9kZCBpc1BvaW50SW5QYXRoCitQQVNTIGN0eC5pc1BvaW50
SW5QYXRoKDUwLCA1MCwgJ2V2ZW5vZGQnKSBpcyBmYWxzZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5QYXRoLXdpbmRpbmcuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pc1BvaW50SW5Q
YXRoLXdpbmRpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9jYW52YXMtaXNQb2ludEluUGF0aC13aW5kaW5nLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNsaXAtcnVsZS5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
Y2xpcC1ydWxlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACitkZXNjcmlwdGlvbigi
U2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcg
cnVsZS4iKTsKKworCit2YXIgdG1waW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7Cit0bXBpbWcud2lkdGggPSAyMDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1w
aW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5n
IHRlc3Qgd2l0aCBpbWFnZXMuCit2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2Fu
dmFzJyk7CitpbWcud2lkdGggPSAxMDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9
IGltZy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sK
KyAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5j
dGlvbiBjaGVja1Jlc3VsdChleHBlY3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDQ7IGkrKykKKwkgICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50
KClbIiArIGkgKyAiXSIsIGV4cGVjdGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1
dGUgdGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rl
c3RpbmcgZGVmYXVsdCBjbGlwJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCkn
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9
ICdyZ2IoMCwyNTUsMCknOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAw
LCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlw
KCk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEw
MCk7CisgICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgCisgICAgZGVidWcoJycpOworCisgICAgZGVidWcoJ1Rlc3Rpbmcgbm9uemVybyBj
bGlwJyk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5maWxs
UmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMCwyNTUsMCkn
OworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIGN0eC5jbGlwKCdub256ZXJvJyk7Cisg
ICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgY2hlY2tSZXN1bHQoWzAsIDI1NSwgMCwgMjU1XSwgNSk7CisgICAgZGVidWcoJycpOworCQor
ICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgY2xpcCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAn
cmdiKDI1NSwwLDApJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0
eC5maWxsU3R5bGUgPSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
Y3R4LnJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsK
KyAgICBjdHguY2xpcCgnZXZlbm9kZCcpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgu
ZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGNoZWNrUmVzdWx0KFsyNTUsIDAsIDAsIDI1
NV0sIDUpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKworfQorCisv
LyBSdW4gdGVzdCBhbmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNj
ZW5hcmlvKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLWZpbGwtcnVsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLWZpbGwtcnVsZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbC1ydWxlLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACitkZXNjcmlwdGlvbigiU2VyaWVzIG9mIHRlc3RzIHRvIGVu
c3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRpbmcgcnVsZS4iKTsKKworCit2YXIgdG1w
aW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Cit0bXBpbWcud2lkdGggPSAy
MDA7Cit0bXBpbWcuaGVpZ2h0ID0gMjAwOworY3R4ID0gdG1waW1nLmdldENvbnRleHQoJzJkJyk7
CisKKy8vIENyZWF0ZSB0aGUgaW1hZ2UgZm9yIGJsZW5kaW5nIHRlc3Qgd2l0aCBpbWFnZXMuCit2
YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CitpbWcud2lkdGggPSAx
MDA7CitpbWcuaGVpZ2h0ID0gMTAwOwordmFyIGltZ0N0eCA9IGltZy5nZXRDb250ZXh0KCcyZCcp
OworCitmdW5jdGlvbiBwaXhlbERhdGFBdFBvaW50KCkKK3sKKyAgcmV0dXJuIGN0eC5nZXRJbWFn
ZURhdGEoNTAsIDUwLCAxLCAxKS5kYXRhOworfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdChleHBl
Y3RlZENvbG9ycywgc2lnbWEpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykKKwkg
ICAgc2hvdWxkQmVDbG9zZVRvKCJwaXhlbERhdGFBdFBvaW50KClbIiArIGkgKyAiXSIsIGV4cGVj
dGVkQ29sb3JzW2ldLCBzaWdtYSk7Cit9CisKKy8vIEV4ZWN1dGUgdGVzdC4KK2Z1bmN0aW9uIHBy
ZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rlc3RpbmcgZGVmYXVsdCBmaWxsJyk7
CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5iZWdpblBhdGgo
KTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUg
PSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwg
MCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguZmls
bCgpOworICAgIGNoZWNrUmVzdWx0KFswLCAyNTUsIDAsIDI1NV0sIDUpOyAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdUZXN0aW5nIG5vbnplcm8g
ZmlsbCcpOworICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKDI1NSwwLDApJzsKKyAgICBjdHguYmVn
aW5QYXRoKCk7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHguZmls
bFN0eWxlID0gJ3JnYigwLDI1NSwwKSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5y
ZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7CisgICAg
Y3R4LmZpbGwoJ25vbnplcm8nKTsKKyAgICBjaGVja1Jlc3VsdChbMCwgMjU1LCAwLCAyNTVdLCA1
KTsKKyAgICBkZWJ1ZygnJyk7CisJCisgICAgZGVidWcoJ1Rlc3RpbmcgZXZlbm9kZCBmaWxsJyk7
CisgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoMjU1LDAsMCknOworICAgIGN0eC5iZWdpblBhdGgo
KTsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIGN0eC5maWxsU3R5bGUg
PSAncmdiKDAsMjU1LDApJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgY3R4LnJlY3QoMCwg
MCwgMTAwLCAxMDApOworICAgIGN0eC5yZWN0KDI1LCAyNSwgNTAsIDUwKTsKKyAgICBjdHguZmls
bCgnZXZlbm9kZCcpOworICAgIGNoZWNrUmVzdWx0KFsyNTUsIDAsIDAsIDI1NV0sIDUpOyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgIGRlYnVnKCcnKTsKKworfQorCisvLyBSdW4gdGVzdCBh
bmQgYWxsb3cgdmFyaWF0aW9uIG9mIHJlc3VsdHMuCitwcmVwYXJlVGVzdFNjZW5hcmlvKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJ
blBhdGgtd2luZGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLWlzUG9pbnRJblBhdGgtd2luZGluZy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaXNQb2ludElu
UGF0aC13aW5kaW5nLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACitkZXNjcmlwdGlv
bigiU2VyaWVzIG9mIHRlc3RzIHRvIGVuc3VyZSBjb3JyZWN0IHJlc3VsdHMgb2YgdGhlIHdpbmRp
bmcgcnVsZSBpbiBpc1BvaW50SW5QYXRoLiIpOworCisKK3ZhciB0bXBpbWcgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK3RtcGltZy53aWR0aCA9IDIwMDsKK3RtcGltZy5oZWln
aHQgPSAyMDA7CitjdHggPSB0bXBpbWcuZ2V0Q29udGV4dCgnMmQnKTsKKworLy8gQ3JlYXRlIHRo
ZSBpbWFnZSBmb3IgYmxlbmRpbmcgdGVzdCB3aXRoIGltYWdlcy4KK3ZhciBpbWcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK2ltZy53aWR0aCA9IDEwMDsKK2ltZy5oZWlnaHQg
PSAxMDA7Cit2YXIgaW1nQ3R4ID0gaW1nLmdldENvbnRleHQoJzJkJyk7CisKKy8vIEV4ZWN1dGUg
dGVzdC4KK2Z1bmN0aW9uIHByZXBhcmVUZXN0U2NlbmFyaW8oKSB7CisgICAgZGVidWcoJ1Rlc3Rp
bmcgZGVmYXVsdCBpc1BvaW50SW5QYXRoJyk7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0
eC5yZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICBjdHgucmVjdCgyNSwgMjUsIDUwLCA1MCk7Cisg
ICAgc2hvdWxkQmVUcnVlKCJjdHguaXNQb2ludEluUGF0aCg1MCwgNTApIik7ICAgICAgICAgICAg
IAorICAgIGRlYnVnKCcnKTsKKworICAgIGRlYnVnKCdUZXN0aW5nIG5vbnplcm8gaXNQb2ludElu
UGF0aCcpOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEw
MCk7CisgICAgY3R4LnJlY3QoMjUsIDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlVHJ1ZSgiY3R4
LmlzUG9pbnRJblBhdGgoNTAsIDUwLCAnbm9uemVybycpIik7CisgICAgZGVidWcoJycpOworCQor
ICAgIGRlYnVnKCdUZXN0aW5nIGV2ZW5vZGQgaXNQb2ludEluUGF0aCcpOworICAgIGN0eC5iZWdp
blBhdGgoKTsKKyAgICBjdHgucmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgY3R4LnJlY3QoMjUs
IDI1LCA1MCwgNTApOworICAgIHNob3VsZEJlRmFsc2UoImN0eC5pc1BvaW50SW5QYXRoKDUwLCA1
MCwgJ2V2ZW5vZGQnKSIpOyAgICAgICAgICAgICAKKyAgICBkZWJ1ZygnJyk7Cit9CisKKy8vIFJ1
biB0ZXN0IGFuZCBhbGxvdyB2YXJpYXRpb24gb2YgcmVzdWx0cy4KK3ByZXBhcmVUZXN0U2NlbmFy
aW8oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>