<?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>36259</bug_id>
          
          <creation_ts>2010-03-17 18:08:29 -0700</creation_ts>
          <short_desc>&lt;input type=range&gt; does not validate correctly without a renderer and the tests are incorrect</short_desc>
          <delta_ts>2010-03-19 10:48:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16990</blocked>
    
    <blocked>36376</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201094</commentid>
    <comment_count>0</comment_count>
      <attachid>50984</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-17 18:08:29 -0700</bug_when>
    <thetext>Created attachment 50984
[TEST] - Shows Unexpected &lt;input type=range&gt; Behavior

The HTML5 Specification currently states:
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html

For underflow (and likewise for overflow) part of the value sanitization algorithm:

&gt; [[ When the element is suffering from an underflow, the user agent must set the
&gt;   element&apos;s value to a valid floating point number that represents the minimum. ]]

I got clarification from Hixie that the range input, when stable, should never be
in the underflow / overflow state. IRC Log:

&gt; Hixie: it can momentarily suffer from an underflow if you use script to set it
&gt; to a value below the minimum. But that sentence means the steady state can&apos;t
&gt; suffer from an underflow. if that makes sense

The spec says to run the &quot;value sanitization algorithm&quot; when (paraphrased):
  - an input element&apos;s type attribute changes state
  - when the element is first created
  - when the value content attribute is added, set, or removed

Some of the current tests in the tree do not exhibit correct behavior, and also
are providing incorrect values as expected values. To name a few:

  LayoutTests/fast/forms/ValidityState-rangeOverflow-range.html
  LayoutTests/fast/forms/ValidityState-rangeUnderflow-range.html

I believe just a little refactoring of code is needed. Informal test attached,
view the source to see expected values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201099</commentid>
    <comment_count>1</comment_count>
      <attachid>50986</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-17 18:18:12 -0700</bug_when>
    <thetext>Created attachment 50986
[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange

This doesn&apos;t yet fix anything, but I don&apos;t want to do too many things at once (move code and make changes) so I making the move separate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201101</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-17 18:21:57 -0700</bug_when>
    <thetext>Attachment 50986 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/html/StepRange.h:32:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201125</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-17 19:04:08 -0700</bug_when>
    <thetext>Attachment 50986 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/979001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201126</commentid>
    <comment_count>4</comment_count>
      <attachid>50986</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-17 19:06:04 -0700</bug_when>
    <thetext>Comment on attachment 50986
[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 0c4cd0f..19491b2 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog

&gt; +        Part 1: Refactoring the SliderRange struct out of rendering/RenderSlider
&gt; +        into a more appropriate place. Changed the named to StepRange.

Would you explain what will be done in further patches please?

&gt; +        * WebCore.xcodeproj/project.pbxproj: Added new files.

Please change other build files.

The code change looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201127</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-17 19:16:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; +        Part 1: Refactoring the SliderRange struct out of rendering/RenderSlider
&gt; &gt; +        into a more appropriate place. Changed the named to StepRange.
&gt; 
&gt; Would you explain what will be done in further patches please?

(In reply to comment #4)
&gt; &gt; +        Part 1: Refactoring the SliderRange struct out of rendering/RenderSlider
&gt; &gt; +        into a more appropriate place. Changed the named to StepRange.

Yes, I am going to start using StepRange inside HTMLInputElement to validate &lt;input type=range&gt; values instead of with the renderer. I guess this could have gone directly into HTMLInputElement, but I figured it would be generic and more manageable as a separate file. I may make small changes to the  StepRange struct which are much easier to notice in a separate patch instead of at the same time as a move.

&gt; &gt; +        * WebCore.xcodeproj/project.pbxproj: Added new files.
&gt; 
&gt; Please change other build files.

Whoops! Thanks for the reminder.


Kent TAMURA, I see you have done a lot with validation in the past. Would you agree that with the current spec rangeOverflow, rangeUnderflow, and stepMismatch should never be true with an &lt;input type=range&gt;? That seems to be where I am heading (removing the range specific tests completely). The spec has a lot of &quot;must&quot;s which are &quot;may&quot; in the date / time inputs you worked on.

&gt; When the element is suffering from an underflow, the user agent must set the element&apos;s value to a valid floating point number that represents the minimum.

&gt; When the element is suffering from an overflow, if the maximum is not less than the minimum, the user agent must set the element&apos;s value to a valid floating point number that represents the maximum.

&gt; When the element is suffering from a step mismatch, the user agent must round the element&apos;s value to the nearest number for which the element would not suffer from a step mismatch, and which is greater than or equal to the minimum, and, if the maximum is not less than the minimum, which is less than or equal to the maximum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201137</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-17 19:28:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Yes, I am going to start using StepRange inside HTMLInputElement to validate
&gt; &lt;input type=range&gt; values instead of with the renderer. I guess this could have
&gt; gone directly into HTMLInputElement, but I figured it would be generic and more
&gt; manageable as a separate file. I may make small changes to the  StepRange
&gt; struct which are much easier to notice in a separate patch instead of at the
&gt; same time as a move.

Ok.  So we&apos;ll have just one more patch?

&gt; Kent TAMURA, I see you have done a lot with validation in the past. Would you
&gt; agree that with the current spec rangeOverflow, rangeUnderflow, and
&gt; stepMismatch should never be true with an &lt;input type=range&gt;? That seems to be
&gt; where I am heading (removing the range specific tests completely). The spec has
&gt; a lot of &quot;must&quot;s which are &quot;may&quot; in the date / time inputs you worked on.

Yes, I agree with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201178</commentid>
    <comment_count>7</comment_count>
      <attachid>50986</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-17 21:39:00 -0700</bug_when>
    <thetext>Comment on attachment 50986
[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange

r- based on Comment #4 and Comment #5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201510</commentid>
    <comment_count>8</comment_count>
      <attachid>51082</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 13:30:37 -0700</bug_when>
    <thetext>Created attachment 51082
[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange

Handles other build files. Do I need to handle DerivedSources at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201513</commentid>
    <comment_count>9</comment_count>
      <attachid>51083</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 13:33:22 -0700</bug_when>
    <thetext>Created attachment 51083
[PATCH] Part 2 - Move Sanitization to HTMLInputElement - Fix Incorrect Tests

The bulk of the work. The code in the new `clampValue` is copied from `valueFromElement` but it cannot easily be shared as intermediate values are used in the `valueFromElement` code. I could create a method with in/out parameters if desired. These changes end up fixing Bug 16990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201519</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-18 13:35:18 -0700</bug_when>
    <thetext>Attachment 51082 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/html/StepRange.h:32:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201520</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 13:36:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Ok.  So we&apos;ll have just one more patch?

Yes. Just two patches total.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201532</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 13:44:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebCore/html/StepRange.h:32:  One space before end of line comments 
&gt; [whitespace/comments] [5]

Ahhh. I thought this was whitespace at the end of a line. I see the problem now, it was in the copied code. I have a fix for this, but it is not necessary for uploading an extra patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201667</commentid>
    <comment_count>13</comment_count>
      <attachid>51118</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 18:28:42 -0700</bug_when>
    <thetext>Created attachment 51118
[PATCH] Part 2 - Added ASSERTs, Fixed Style Issue in Part 1

Although I updated the tests to say that Range doesn&apos;t overflow / underflow, I still left the code in the path where it checks for an overflow / underflow. I moved RANGE out to the automatically false case, but I also put in an ASSERT just in case. This also updates some comments and fixes some style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201672</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-18 18:48:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=51082) [details]
&gt; [PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange
&gt; 
&gt; Handles other build files. Do I need to handle DerivedSources at all?

You don&apos;t need to update the DerivedSources stuff.
I don&apos;t have additional comments except the style error.  I&apos;d give r+ if I was a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201673</commentid>
    <comment_count>15</comment_count>
      <attachid>51082</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-18 18:50:33 -0700</bug_when>
    <thetext>Comment on attachment 51082
[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange

&gt; diff --git a/WebCore/html/StepRange.cpp b/WebCore/html/StepRange.cpp
&gt; new file mode 100644
&gt; index 0000000..78f0365
&gt; --- /dev/null
&gt; +++ b/WebCore/html/StepRange.cpp
&gt; @@ -0,0 +1,80 @@
&gt; +/*
&gt; + * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.

Nit:  Update copyright to include 2010.

&gt; +double sliderPosition(HTMLInputElement* element)
&gt; +{
&gt; +    StepRange range(element);
&gt; +    return range.proportionFromValue(range.valueFromElement(element));
&gt; +}

I think this method should remain in RenderSlider.cpp.  It&apos;s of no use outside that class.

&gt; diff --git a/WebCore/html/StepRange.h b/WebCore/html/StepRange.h
&gt; new file mode 100644
&gt; index 0000000..7b2388e
&gt; --- /dev/null
&gt; +++ b/WebCore/html/StepRange.h
&gt; @@ -0,0 +1,60 @@
&gt; +/*
&gt; + * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.

Nit:  Update copyright to include 2010.

&gt; +struct StepRange {

Just make it a class.  I don&apos;t see an advantage to leaving it a struct.

I would also inherit from non-copyable to make it explicit that we don&apos;t support copying these objects.

&gt; +    double valueFromElement(HTMLInputElement*, bool* wasClamped = 0);

Again, I think this method should stay in RenderSlider.cpp as a static method.

+++ b/WebCore/rendering/RenderSlider.cpp

Update the copyright here, too.  :)

r=me with the above changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201674</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 18:51:14 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; You don&apos;t need to update the DerivedSources stuff.

Awesome. Can you give me a quick lesson on what the files are for and when I need to update them? I&apos;d appreciate it!

&gt; I don&apos;t have additional comments except the style error.

Part 2 actually fixes the style issue.

&gt; I&apos;d give r+ if I was a reviewer.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201676</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-18 18:53:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=51118) [details]
&gt; [PATCH] Part 2 - Added ASSERTs, Fixed Style Issue in Part 1
&gt; 
&gt; Although I updated the tests to say that Range doesn&apos;t overflow / underflow, I
&gt; still left the code in the path where it checks for an overflow / underflow. I
&gt; moved RANGE out to the automatically false case, but I also put in an ASSERT
&gt; just in case. This also updates some comments and fixes some style issues.

I recommend you post one patch per one bug.  Our commit-queue doesn&apos;t work well
with multiple patches in one bug, and having review comments for multiple
patches in one bug is confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201677</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-18 19:00:13 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I recommend you post one patch per one bug.  Our commit-queue doesn&apos;t work well
&gt; with multiple patches in one bug, and having review comments for multiple
&gt; patches in one bug is confusing.

Fixing the other bug is a side-affect of this patch. They aren&apos;t technically the same bug, but they are both both solved at the same time. Moving the code from RenderSlider to HTMLInputElement meant no-longer calling HTMLInputElement::setValueFromRenderer, which was what the other bug was about. This bug was about the fact that no validation happened unless the range input had a renderer.

Does this make sense? Is there a way I could rewrite the ChangeLog to better handle this?

Also, I have committer rights, so I can land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201678</commentid>
    <comment_count>19</comment_count>
      <attachid>51118</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-18 19:00:46 -0700</bug_when>
    <thetext>Comment on attachment 51118
[PATCH] Part 2 - Added ASSERTs, Fixed Style Issue in Part 1

&gt; diff --git a/WebCore/html/HTMLInputElement.cpp b/WebCore/html/HTMLInputElement.cpp

Nit:  Update copyright.

&gt; +    case RANGE: // Guarenteed by sanitization.
&gt; +        ASSERT(parseToDouble(value(), nan) &lt;= maximum());

Typo:  Guaranteed

&gt; +    case RANGE: // Guarenteed by sanitization.
&gt; +        ASSERT(parseToDouble(value(), nan) &lt;= maximum());

Typo:  Guaranteed

&gt; diff --git a/WebCore/html/StepRange.cpp b/WebCore/html/StepRange.cpp
&gt; +double StepRange::clampValue(const String&amp; stringValue)
&gt; +{
&gt; +    double oldValue;

I would call this value since &quot;oldValue&quot; implies a &quot;newValue&quot;, and we don&apos;t have one of those here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201679</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-18 19:03:46 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; I recommend you post one patch per one bug.  Our commit-queue doesn&apos;t work well
&gt; &gt; with multiple patches in one bug, and having review comments for multiple
&gt; &gt; patches in one bug is confusing.
&gt; 
&gt; Fixing the other bug is a side-affect of this patch. They aren&apos;t technically
&gt; the same bug, but they are both both solved at the same time. Moving the code
&gt; from RenderSlider to HTMLInputElement meant no-longer calling
&gt; HTMLInputElement::setValueFromRenderer, which was what the other bug was about.
&gt; This bug was about the fact that no validation happened unless the range input
&gt; had a renderer.
&gt; 
&gt; Does this make sense? Is there a way I could rewrite the ChangeLog to better
&gt; handle this?

Prefix one ChangeLog with &quot;Part 1 of 2:&quot; and the other with &quot;Part 2 of 2:&quot;.

I don&apos;t see why you need another bug for a series of two patches in this particular case.  It&apos;s easier to review the patches separately anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201680</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-18 19:08:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; I recommend you post one patch per one bug.  Our commit-queue doesn&apos;t work well
&gt; &gt; &gt; with multiple patches in one bug, and having review comments for multiple
&gt; &gt; &gt; patches in one bug is confusing.
&gt; &gt; 
&gt; &gt; Fixing the other bug is a side-affect of this patch. They aren&apos;t technically
&gt; &gt; the same bug, but they are both both solved at the same time. Moving the code
&gt; &gt; from RenderSlider to HTMLInputElement meant no-longer calling
&gt; &gt; HTMLInputElement::setValueFromRenderer, which was what the other bug was about.
&gt; &gt; This bug was about the fact that no validation happened unless the range input
&gt; &gt; had a renderer.
&gt; &gt; 
&gt; &gt; Does this make sense? Is there a way I could rewrite the ChangeLog to better
&gt; &gt; handle this?
&gt; 
&gt; Prefix one ChangeLog with &quot;Part 1 of 2:&quot; and the other with &quot;Part 2 of 2:&quot;.
&gt; 
&gt; I don&apos;t see why you need another bug for a series of two patches in this
&gt; particular case.  It&apos;s easier to review the patches separately anyway.

To be more specific, if the second patch required more discussion, it would be nice to have a second bug to do that in.  If it doesn&apos;t require additional discussion, I think it&apos;s fine to leave it on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201899</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-03-19 09:45:22 -0700</bug_when>
    <thetext>Part 1:
Committed r56241
	M	WebCore/WebCore.pro
	M	WebCore/ChangeLog
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.gypi
	A	WebCore/html/StepRange.h
	A	WebCore/html/StepRange.cpp
	M	WebCore/rendering/RenderSlider.cpp
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r56241 = bc6f7e657c47f2c7efb04a3a4e08d90fdc7fd1ae (trunk)
http://trac.webkit.org/changeset/56241

Part 2:
Committed r56242
	M	WebCore/ChangeLog
	M	WebCore/html/StepRange.h
	M	WebCore/html/HTMLInputElement.cpp
	M	WebCore/html/StepRange.cpp
	M	WebCore/rendering/RenderSlider.cpp
	M	LayoutTests/fast/forms/ValidityState-rangeOverflow-expected.txt
	M	LayoutTests/fast/forms/script-tests/ValidityState-rangeOverflow.js
	M	LayoutTests/fast/forms/script-tests/validationMessage.js
	M	LayoutTests/fast/forms/script-tests/ValidityState-rangeUnderflow.js
	M	LayoutTests/fast/forms/script-tests/input-stepup-stepdown.js
	M	LayoutTests/fast/forms/range-reset.html
	A	LayoutTests/fast/forms/range-input-dynamic-oninput-expected.txt
	A	LayoutTests/fast/forms/range-input-dynamic-oninput.html
	M	LayoutTests/fast/forms/ValidityState-rangeUnderflow-expected.txt
	M	LayoutTests/fast/forms/validationMessage-expected.txt
	M	LayoutTests/fast/forms/input-stepup-stepdown-expected.txt
	M	LayoutTests/fast/forms/range-reset-expected.txt
	M	LayoutTests/ChangeLog
r56242 = 1569c5e33346f0e1681d92a925be02480504e8d5 (trunk)
http://trac.webkit.org/changeset/56242

Bots look good, no-one failed to build or failed the test changes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201929</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-19 10:48:39 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Bots look good, no-one failed to build or failed the test changes!

Leopard Debug Test Bot is crashing on an assertion failure.  See Bug 36376.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>50984</attachid>
            <date>2010-03-17 18:08:29 -0700</date>
            <delta_ts>2010-03-17 18:08:29 -0700</delta_ts>
            <desc>[TEST] - Shows Unexpected &lt;input type=range&gt; Behavior</desc>
            <filename>range-unexpected-values.html</filename>
            <type>text/html</type>
            <size>1202</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD48dGl0bGU+dGl0bGU8L3RpdGxlPjwvaGVhZD4K
PGJvZHk+CiAgICA8aW5wdXQgaWQ9IngiIHR5cGU9InJhbmdlIiBtaW49IjUwIiBtYXg9IjEwMCIg
c3RlcD0iMTAiPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij4KICAgIAogICAgICAgIGZ1bmN0aW9uIGxvZyhzKSB7CiAgICAgICAgICAgIGNvbnNvbGUu
bG9nKHMpOwogICAgICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsK
ICAgICAgICAgICAgcC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnWycrcysn
XScpKTsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwKTsKICAgICAgICB9
CiAgICAKICAgICAgICAvLyBSZW5kZXJlciA9IENvcnJlY3QgVmFsdWVzCiAgICAgICAgdmFyIHgg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneCcpOwogICAgICAgIGxvZyh4LnZhbHVlKTsgLy8g
c2hvdWxkIGJlIHJvdW5kIGJhc2Ugb24gc3RlcCBvZiAxMCBvZiAoIDUwICsgKDEwMC01MCkvMiAp
ICA9PiA4MAogICAgICAgIHgudmFsdWUgPSAyMDA7ICAgICAgICAvLyBzaG91bGQgY2F1c2Ugb3Zl
cmZsb3csIGZvcmNlIHRvIG1heCA9PiAxMDAKICAgICAgICBsb2coeC52YWx1ZSk7IC8vIHNob3Vs
ZCBiZSB3aGF0IGl0IGlzICAgICAgICAgICAgICAgID0+IDEwMAogICAgICAgIAogICAgICAgIC8v
IE5vIFJlbmRlcmVyID0gSW5jb3JyZWN0IFZhbHVlcyA9KAogICAgICAgIHggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpbnB1dCcpOwogICAgICAgIHgubWluID0gNTA7ICAgICAgICAgICAgLy8g
Y2hhbmdpbmcgYW4gaW5wdXQncyB0eXBlIHRyaWdnZXJzIHNhbml0YXRpb24gY2F1c2VzIHRoZSAK
ICAgICAgICB4Lm1heCA9IDEwMDsgICAgICAgICAgIC8vIHJvdW5kaW5nIGJhc2VkIG9uIHRoZSBz
dGVwIG9mIHRoZSBtYXggYW5kIG1peAogICAgICAgIHguc3RlcCA9IDEwOwogICAgICAgIHgudHlw
ZSA9ICdyYW5nZSc7ICAgICAKICAgICAgICBsb2coeC52YWx1ZSk7ICAvLyBzaG91bGQgYmUgODAs
IGlzIHRoZSBlbXB0eSBzdHJpbmcKICAgICAgICB4LnZhbHVlID0gMjAwOwogICAgICAgIGxvZyh4
LnZhbHVlKTsgIC8vIHNob3VsZCBiZSAxMDAsIGlzIDIwMAoKICAgIDwvc2NyaXB0Pgo8L2JvZHk+
CiAgICA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50986</attachid>
            <date>2010-03-17 18:18:12 -0700</date>
            <delta_ts>2010-03-18 13:30:37 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange</desc>
            <filename>refactor.patch</filename>
            <type>text/plain</type>
            <size>13843</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM0Y2QwZi4uMTk0OTFiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xNyAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxpbnB1dCB0eXBlPXJhbmdlPiBkb2VzIG5vdCB2YWxpZGF0ZSBj
b3JyZWN0bHkgd2l0aG91dCBhIHJlbmRlcmVyIGFuZCB0aGUgdGVzdHMgYXJlIGluY29ycmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNTkKKwor
ICAgICAgICBQYXJ0IDE6IFJlZmFjdG9yaW5nIHRoZSBTbGlkZXJSYW5nZSBzdHJ1Y3Qgb3V0IG9m
IHJlbmRlcmluZy9SZW5kZXJTbGlkZXIKKyAgICAgICAgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUg
cGxhY2UuIENoYW5nZWQgdGhlIG5hbWVkIHRvIFN0ZXBSYW5nZS4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGZpbGVzLgorICAgICAgICAq
IGh0bWwvU3RlcFJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6
OlN0ZXBSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmNsYW1wVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjp2YWx1ZUZyb21FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNsaWRlclBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL1N0ZXBSYW5nZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6cHJvcG9ydGlvbkZyb21WYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnZhbHVlRnJvbVByb3BvcnRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6IHVwZGF0ZWQgdG8gdXNlIFN0ZXBSYW5nZQor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjpzZXRWYWx1ZUZvclBvc2l0aW9uKTogdXBk
YXRlZCB0byB1c2UgU3RlcFJhbmdlCisKIDIwMTAtMDMtMTcgIEFudG9uaW8gR29tZXMgIDx0b25p
a2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWMgQnVpbGRmaXg6IFVzaW5nIEFTU0VSVF9V
TlVTRUQgaW5zdGVhZCBvZiBBU1NFUlQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE3NzljMzcuLjQ4Y2UzMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDkzLDYgKzI0OTMsOCBAQAogCQlBNDNCRjU5OTEx
NDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQzQkY1OTcxMTQ5MjkwQTAwQzY0M0NBIC8q
IEhUTUxQcm9ncmVzc0VsZW1lbnQuaCAqLzsgfTsKIAkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NB
IC8qIFJlbmRlclByb2dyZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE0M0JGNTlBMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5j
cHAgKi87IH07CiAJCUE0M0JGNTlEMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQzQkY1OUIx
MTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmggKi87IH07CisJCUE1QUZCMzRGMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5n
ZS5jcHAgKi87IH07CisJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAw
QTE2RUNFIC8qIERyYWdBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzE4Nzg5
MDBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0Ug
LyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZE
MCAvKiBSZW5kZXJTVkdCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2su
Y3BwICovOyB9OwpAQCAtNzg5NSw2ICs3ODk3LDggQEAKIAkJQTQzQkY1OTcxMTQ5MjkwQTAwQzY0
M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFByb2dyZXNzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNDNCRjU5QTExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyUHJvZ3Jlc3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNDNCRjU5QjExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVy
UHJvZ3Jlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUHJvZ3Jl
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0
NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGVwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUFGQjM0RTEx
NTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYw
RDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBS
ZW5kZXJTVkdCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVuZGVyU1ZHQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNzYs
NiArMTMxODAsOCBAQAogCQkJCUU0NDYxMzlDMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9y
LmlkbCAqLywKIAkJCQlFNEQ0QUJFMDBENzU0MkYwMDBGOTY4NjkgLyogUHJlbG9hZFNjYW5uZXIu
Y3BwICovLAogCQkJCUU0RDRBQkUxMEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5o
ICovLAorCQkJCUE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovLAor
CQkJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLywKIAkJCQlCQ0VG
NDVFODBFNjg3NzY3MDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaCAqLywKIAkJCQlCQ0VGNDUzRjBF
Njc2QUMxMDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaWRsICovLAogCQkJCUU0NDYxMzlEMENENjMz
MTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKQEAgLTE4Njk3LDYgKzE4NzAzLDcgQEAK
IAkJCQlBNDNCRjU5OTExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTQzQkY1OUQxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dy
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5z
cGVjdG9yV29ya2VyUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QUZCMzUwMTE1MTUx
QTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjA5MDQsNiArMjA5
MTEsNyBAQAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE0M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0M0JGNTlDMTE0OTI5MjgwMEM2NDND
QSAvKiBSZW5kZXJQcm9ncmVzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUFGQjM0RjExNTE1
MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjY5Yzc3Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RlcFJhbmdl
LmgiCisKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KworU3RlcFJhbmdlOjpTdGVwUmFuZ2UoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlKHByZWNpc2lvbkF0dHIpKSB7CisgICAgICAgIHN0
ZXAgPSAxLjA7CisgICAgICAgIGhhc1N0ZXAgPSAhZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudC0+
Z2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpLCAiZmxvYXQiKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgaGFzU3RlcCA9IGVsZW1lbnQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApOworCisgICAg
bWF4aW11bSA9IGVsZW1lbnQtPm1heGltdW0oKTsKKyAgICBtaW5pbXVtID0gZWxlbWVudC0+bWlu
aW11bSgpOworfQorCitkb3VibGUgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICBkb3VibGUgY2xhbXBlZFZhbHVlID0gbWF4KG1pbmltdW0sIG1pbih2YWx1ZSwgbWF4
aW11bSkpOworICAgIGlmICghaGFzU3RlcCkKKyAgICAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsK
KyAgICAvLyBSb3VuZHMgY2xhbXBlZFZhbHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KKyAgICBj
bGFtcGVkVmFsdWUgPSBtaW5pbXVtICsgcm91bmQoKGNsYW1wZWRWYWx1ZSAtIG1pbmltdW0pIC8g
c3RlcCkgKiBzdGVwOworICAgIGlmIChjbGFtcGVkVmFsdWUgPiBtYXhpbXVtKQorICAgICAgIGNs
YW1wZWRWYWx1ZSAtPSBzdGVwOworICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPj0gbWluaW11bSk7
CisgICAgQVNTRVJUKGNsYW1wZWRWYWx1ZSA8PSBtYXhpbXVtKTsKKyAgICByZXR1cm4gY2xhbXBl
ZFZhbHVlOworfQorCitkb3VibGUgU3RlcFJhbmdlOjp2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1
dEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wqIHdhc0NsYW1wZWQpCit7CisgICAgZG91YmxlIG9sZFZh
bHVlOworICAgIGJvb2wgcGFyc2VTdWNjZXNzID0gSFRNTElucHV0RWxlbWVudDo6cGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZWxlbWVudC0+dmFsdWUoKSwgJm9sZFZhbHVlKTsKKyAgICBpZiAo
IXBhcnNlU3VjY2VzcykKKyAgICAgICAgb2xkVmFsdWUgPSAobWluaW11bSArIG1heGltdW0pIC8g
MjsKKyAgICBkb3VibGUgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9sZFZhbHVlKTsKKworICAgIGlm
ICh3YXNDbGFtcGVkKQorICAgICAgICAqd2FzQ2xhbXBlZCA9ICFwYXJzZVN1Y2Nlc3MgfHwgbmV3
VmFsdWUgIT0gb2xkVmFsdWU7CisKKyAgICByZXR1cm4gbmV3VmFsdWU7Cit9CisgICAgCitkb3Vi
bGUgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBTdGVw
UmFuZ2UgcmFuZ2UoZWxlbWVudCk7CisgICAgcmV0dXJuIHJhbmdlLnByb3BvcnRpb25Gcm9tVmFs
dWUocmFuZ2UudmFsdWVGcm9tRWxlbWVudChlbGVtZW50KSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaCBiL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTRmYTY1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKyAKKyNpZm5kZWYgU3RlcFJhbmdlX2gKKyNkZWZpbmUgU3RlcFJhbmdlX2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworCitzdHJ1Y3Qg
U3RlcFJhbmdlIHsKKyAgICBib29sIGhhc1N0ZXA7CisgICAgZG91YmxlIHN0ZXA7CisgICAgZG91
YmxlIG1pbmltdW07CisgICAgZG91YmxlIG1heGltdW07ICAvLyBtYXhpbXVtIG11c3QgYmUgPj0g
bWluaW11bS4KKworICAgIGV4cGxpY2l0IFN0ZXBSYW5nZShIVE1MSW5wdXRFbGVtZW50Kik7Cisg
ICAgZG91YmxlIGNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKTsKKworICAgIC8vIE1hcCB2YWx1ZSBp
bnRvIDAtMSByYW5nZQorICAgIGRvdWJsZSBwcm9wb3J0aW9uRnJvbVZhbHVlKGRvdWJsZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIGlmIChtaW5pbXVtID09IG1heGltdW0pCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKworICAgICAgICByZXR1cm4gKHZhbHVlIC0gbWluaW11bSkgLyAobWF4aW11bSAt
IG1pbmltdW0pOworICAgIH0KKyAgICAKKyAgICAvLyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFs
dWUKKyAgICBkb3VibGUgdmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikKKyAg
ICB7CisgICAgICAgIHJldHVybiBtaW5pbXVtICsgcHJvcG9ydGlvbiAqIChtYXhpbXVtIC0gbWlu
aW11bSk7CisgICAgfQorICAgIAorICAgIGRvdWJsZSB2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1
dEVsZW1lbnQqLCBib29sKiB3YXNDbGFtcGVkID0gMCk7Cit9OworICAgIAorLy8gUmV0dXJucyBh
IHZhbHVlIGJldHdlZW4gMCBhbmQgMS4KK2RvdWJsZSBzbGlkZXJQb3NpdGlvbihIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KTsKKworfQorCisjZW5kaWYgLy8gU3RlcFJhbmdlX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDViYmU5YWYuLmZjN2Y0MmQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisj
aW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNp
bmcgc3RkOjptaW47CkBAIC00NSw4MyArNDYsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotLy8gRklY
TUU6IFRoZSBTbGlkZXJSYW5nZSBjbGFzcyBhbmQgZnVuY3Rpb25zIGFyZSBlbnRpcmVseSBiYXNl
ZCBvbiB0aGUgRE9NLAotLy8gYW5kIGNvdWxkIGJlIHB1dCB3aXRoIEhUTUxJbnB1dEVsZW1lbnQg
KHBvc3NpYmx5IHdpdGggYSBuZXcgbmFtZSkgaW5zdGVhZCBvZiBoZXJlLgotc3RydWN0IFNsaWRl
clJhbmdlIHsKLSAgICBib29sIGhhc1N0ZXA7Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgZG91Ymxl
IG1pbmltdW07Ci0gICAgZG91YmxlIG1heGltdW07ICAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWlu
aW11bS4KLQotICAgIGV4cGxpY2l0IFNsaWRlclJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAg
ICBkb3VibGUgY2xhbXBWYWx1ZShkb3VibGUgdmFsdWUpOwotCi0gICAgLy8gTWFwIHZhbHVlIGlu
dG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHByb3BvcnRpb25Gcm9tVmFsdWUoZG91YmxlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgaWYgKG1pbmltdW0gPT0gbWF4aW11bSkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotCi0gICAgICAgIHJldHVybiAodmFsdWUgLSBtaW5pbXVtKSAvIChtYXhpbXVtIC0g
bWluaW11bSk7Ci0gICAgfQotICAgIAotICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1
ZQotICAgIGRvdWJsZSB2YWx1ZUZyb21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1pbmltdW0gKyBwcm9wb3J0aW9uICogKG1heGltdW0gLSBtaW5p
bXVtKTsKLSAgICB9Ci0gICAgCi0gICAgZG91YmxlIHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0
RWxlbWVudCosIGJvb2wqIHdhc0NsYW1wZWQgPSAwKTsKLX07Ci0KLVNsaWRlclJhbmdlOjpTbGlk
ZXJSYW5nZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQotewotICAgIGlmIChlbGVtZW50LT5o
YXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikpIHsKLSAgICAgICAgc3RlcCA9IDEuMDsKLSAgICAg
ICAgaGFzU3RlcCA9ICFlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1dGUocHJl
Y2lzaW9uQXR0ciksICJmbG9hdCIpOwotICAgIH0gZWxzZQotICAgICAgICBoYXNTdGVwID0gZWxl
bWVudC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCk7Ci0KLSAgICBtYXhpbXVtID0gZWxlbWVu
dC0+bWF4aW11bSgpOwotICAgIG1pbmltdW0gPSBlbGVtZW50LT5taW5pbXVtKCk7Ci19Ci0KLWRv
dWJsZSBTbGlkZXJSYW5nZTo6Y2xhbXBWYWx1ZShkb3VibGUgdmFsdWUpCi17Ci0gICAgZG91Ymxl
IGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVtLCBtaW4odmFsdWUsIG1heGltdW0pKTsKLSAgICBp
ZiAoIWhhc1N0ZXApCi0gICAgICAgIHJldHVybiBjbGFtcGVkVmFsdWU7Ci0gICAgLy8gUm91bmRz
IGNsYW1wZWRWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAuCi0gICAgY2xhbXBlZFZhbHVlID0g
bWluaW11bSArIHJvdW5kKChjbGFtcGVkVmFsdWUgLSBtaW5pbXVtKSAvIHN0ZXApICogc3RlcDsK
LSAgICBpZiAoY2xhbXBlZFZhbHVlID4gbWF4aW11bSkKLSAgICAgICBjbGFtcGVkVmFsdWUgLT0g
c3RlcDsKLSAgICBBU1NFUlQoY2xhbXBlZFZhbHVlID49IG1pbmltdW0pOwotICAgIEFTU0VSVChj
bGFtcGVkVmFsdWUgPD0gbWF4aW11bSk7Ci0gICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKLX0KLQot
ZG91YmxlIFNsaWRlclJhbmdlOjp2YWx1ZUZyb21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQsIGJvb2wqIHdhc0NsYW1wZWQpCi17Ci0gICAgZG91YmxlIG9sZFZhbHVlOwotICAgIGJv
b2wgcGFyc2VTdWNjZXNzID0gSFRNTElucHV0RWxlbWVudDo6cGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGUoZWxlbWVudC0+dmFsdWUoKSwgJm9sZFZhbHVlKTsKLSAgICBpZiAoIXBhcnNlU3VjY2Vz
cykKLSAgICAgICAgb2xkVmFsdWUgPSAobWluaW11bSArIG1heGltdW0pIC8gMjsKLSAgICBkb3Vi
bGUgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9sZFZhbHVlKTsKLQotICAgIGlmICh3YXNDbGFtcGVk
KQotICAgICAgICAqd2FzQ2xhbXBlZCA9ICFwYXJzZVN1Y2Nlc3MgfHwgbmV3VmFsdWUgIT0gb2xk
VmFsdWU7Ci0KLSAgICByZXR1cm4gbmV3VmFsdWU7Ci19Ci0KLS8vIFJldHVybnMgYSB2YWx1ZSBi
ZXR3ZWVuIDAgYW5kIDEuCi0vLyBBcyB3aXRoIFNsaWRlclJhbmdlLCB0aGlzIGNvdWxkIGJlIG9u
IEhUTUxJbnB1dEVsZW1lbnQgaW5zdGVhZCBvZiBoZXJlLgotc3RhdGljIGRvdWJsZSBzbGlkZXJQ
b3NpdGlvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQotewotICAgIFNsaWRlclJhbmdlIHJh
bmdlKGVsZW1lbnQpOwotICAgIHJldHVybiByYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKHJhbmdl
LnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCkpOwotfQotCiBjbGFzcyBTbGlkZXJUaHVtYkVsZW1l
bnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgogICAgIFNsaWRlclRodW1iRWxl
bWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRvd1BhcmVudCk7CkBAIC0zNzUsNyArMjk5LDcgQEAg
dm9pZCBSZW5kZXJTbGlkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAK
ICAgICAvLyBTZW5kIHRoZSB2YWx1ZSBiYWNrIHRvIHRoZSBlbGVtZW50IGlmIHRoZSByYW5nZSBj
aGFuZ2VzIGl0LgotICAgIFNsaWRlclJhbmdlIHJhbmdlKGVsZW1lbnQpOworICAgIFN0ZXBSYW5n
ZSByYW5nZShlbGVtZW50KTsKICAgICBib29sIGNsYW1wZWQ7CiAgICAgZG91YmxlIHZhbHVlID0g
cmFuZ2UudmFsdWVGcm9tRWxlbWVudChlbGVtZW50LCAmY2xhbXBlZCk7CiAgICAgaWYgKGNsYW1w
ZWQpCkBAIC00MzAsNyArMzU0LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OnNldFZhbHVlRm9yUG9z
aXRpb24oaW50IHBvc2l0aW9uKQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0
aGUgbmV3IHZhbHVlIGJhc2VkIG9uIHRoZSBwb3NpdGlvbiwgYW5kIHNlbmQgaXQgdG8gdGhlIGVs
ZW1lbnQuCi0gICAgU2xpZGVyUmFuZ2UgcmFuZ2UoZWxlbWVudCk7CisgICAgU3RlcFJhbmdlIHJh
bmdlKGVsZW1lbnQpOwogICAgIGRvdWJsZSBmcmFjdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
cG9zaXRpb24pIC8gdHJhY2tTaXplKCk7CiAgICAgaWYgKHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9
PSBTbGlkZXJWZXJ0aWNhbFBhcnQgfHwgc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IE1lZGlhVm9s
dW1lU2xpZGVyUGFydCkKICAgICAgICAgZnJhY3Rpb24gPSAxIC0gZnJhY3Rpb247Cg==
</data>
<flag name="review"
          id="34172"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51082</attachid>
            <date>2010-03-18 13:30:37 -0700</date>
            <delta_ts>2010-03-18 18:50:33 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Refactor: Move SliderRange out and rename to StepRange</desc>
            <filename>patch1.patch</filename>
            <type>text/plain</type>
            <size>16039</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGM0Y2QwZi4uNTM2Y2I3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0wMy0xOCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxpbnB1dCB0eXBlPXJhbmdlPiBkb2VzIG5vdCB2YWxpZGF0ZSBj
b3JyZWN0bHkgd2l0aG91dCBhIHJlbmRlcmVyIGFuZCB0aGUgdGVzdHMgYXJlIGluY29ycmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNTkKKwor
ICAgICAgICBQYXJ0IDE6IFJlZmFjdG9yaW5nIHRoZSBTbGlkZXJSYW5nZSBzdHJ1Y3Qgb3V0IG9m
IHJlbmRlcmluZy9SZW5kZXJTbGlkZXIKKyAgICAgICAgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUg
cGxhY2UuIENoYW5nZWQgdGhlIG5hbWVkIHRvIFN0ZXBSYW5nZS4KKworICAgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyB0byB0aGUgYnVpbGQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgUmVuYW1lZCBhbmQgbW92ZWQgY2xhc3Mg
U2xpZGVyUmFuZ2UgdG8gU3RlcFJhbmdlLgorCisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6U3RlcFJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dGVwUmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyUG9z
aXRpb24pOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3RlcFJhbmdlOjpwcm9wb3J0aW9uRnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0ZXBSYW5nZTo6dmFsdWVGcm9tUHJvcG9ydGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KTogdXBkYXRlZCB0byB1c2UgU3RlcFJhbmdlCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTbGlkZXI6OnNldFZhbHVlRm9yUG9zaXRpb24pOiB1cGRhdGVkIHRvIHVzZSBTdGVwUmFu
Z2UKKwogMjAxMC0wMy0xNyAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgog
CiAgICAgICAgIE1hYyBCdWlsZGZpeDogVXNpbmcgQVNTRVJUX1VOVVNFRCBpbnN0ZWFkIG9mIEFT
U0VSVC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGIyMGQxNWYuLjkzMjcxNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTE4OSw2ICsxMTg5
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwK
IAlXZWJDb3JlL2h0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwvUHJlbG9h
ZFNjYW5uZXIuaCBcCisJV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgXAorCVdlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuaCBcCiAJV2ViQ29yZS9odG1sL1RleHRNZXRyaWNzLmggXAogCVdlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCiAJV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDk5ZmExYjUuLmNiZjQxOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjA0LDYgKzE2MDQsOCBAQAogICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKICAgICAgICAgICAgICdodG1sL1ByZWxvYWRTY2Fu
bmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9QcmVsb2FkU2Nhbm5lci5oJywKKyAgICAgICAg
ICAgICdodG1sL1N0ZXBSYW5nZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvU3RlcFJhbmdlLmgn
LAogICAgICAgICAgICAgJ2h0bWwvVGV4dE1ldHJpY3MuaCcsCiAgICAgICAgICAgICAnaHRtbC9U
aW1lUmFuZ2VzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9UaW1lUmFuZ2VzLmgnLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOTll
MDI1OS4uYzhiZDdlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC02ODcsNiArNjg3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwIFwK
ICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCisgICAgaHRtbC9TdGVwUmFuZ2UuY3BwIFwK
ICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuY3BwIFwKICAgICBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKQEAgLTEzOTQsNiAr
MTM5NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5o
IFwKICAgICBodG1sL0ltYWdlRGF0YS5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmggXAor
ICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAgIGh0bWwvVGltZVJhbmdlcy5oIFwKICAgICBodG1s
L1ZhbGlkaXR5U3RhdGUuaCBcCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmFjNTRmYy4uNjdjMDc2ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNDMyOSw2ICszNDMyOSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXFN0ZXBSYW5nZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXFN0ZXBSYW5nZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxUaW1lUmFuZ2VzLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDE3NzljMzcuLjQ4Y2UzMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNDkzLDYgKzI0OTMsOCBAQAogCQlBNDNCRjU5OTExNDkyOTBB
MDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQzQkY1OTcxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQ
cm9ncmVzc0VsZW1lbnQuaCAqLzsgfTsKIAkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJl
bmRlclByb2dyZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE0M0JGNTlBMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5jcHAgKi87
IH07CiAJCUE0M0JGNTlEMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQzQkY1OUIxMTQ5Mjky
ODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmggKi87IH07CisJCUE1QUZCMzRGMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAg
Ki87IH07CisJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAwQTE2RUNF
IC8qIERyYWdBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzE4Nzg5MDBCMkQw
NEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJh
Z0NvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCUE3MzUyQzE5MEIxQkI4OUQwMEE5ODZEMCAvKiBS
ZW5kZXJTVkdCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwICov
OyB9OwpAQCAtNzg5NSw2ICs3ODk3LDggQEAKIAkJQTQzQkY1OTcxMTQ5MjkwQTAwQzY0M0NBIC8q
IEhUTUxQcm9ncmVzc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRNTFByb2dyZXNzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDNC
RjU5QTExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyUHJvZ3Jlc3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNDNCRjU5QjExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jl
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUHJvZ3Jlc3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8q
IFN0ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVw
UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUFGQjM0RTExNTE1MUE3
MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkEx
MjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4
OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzUyQzE3MEIxQkI4OUQwMEE5ODZEMCAvKiBSZW5kZXJT
VkdCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
U1ZHQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNzYsNiArMTMx
ODAsOCBAQAogCQkJCUU0NDYxMzlDMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmlkbCAq
LywKIAkJCQlFNEQ0QUJFMDBENzU0MkYwMDBGOTY4NjkgLyogUHJlbG9hZFNjYW5uZXIuY3BwICov
LAogCQkJCUU0RDRBQkUxMEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5oICovLAor
CQkJCUE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovLAorCQkJCUE1
QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLywKIAkJCQlCQ0VGNDVFODBF
Njg3NzY3MDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaCAqLywKIAkJCQlCQ0VGNDUzRjBFNjc2QUMx
MDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaWRsICovLAogCQkJCUU0NDYxMzlEMENENjMzMTAwMEZB
REE3NSAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKQEAgLTE4Njk3LDYgKzE4NzAzLDcgQEAKIAkJCQlB
NDNCRjU5OTExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTQzQkY1OUQxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGMzc1Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QUZCMzUwMTE1MTUxQTcwMEIw
NDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjA5MDQsNiArMjA5MTEsNyBA
QAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE0M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0M0JGNTlDMTE0OTI5MjgwMEM2NDNDQSAvKiBS
ZW5kZXJQcm9ncmVzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUFGQjM0RjExNTE1MUE3MDBC
MDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGYwMzY1Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCisK
KyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitTdGVwUmFu
Z2U6OlN0ZXBSYW5nZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmIChlbGVt
ZW50LT5oYXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikpIHsKKyAgICAgICAgc3RlcCA9IDEuMDsK
KyAgICAgICAgaGFzU3RlcCA9ICFlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1
dGUocHJlY2lzaW9uQXR0ciksICJmbG9hdCIpOworICAgIH0gZWxzZQorICAgICAgICBoYXNTdGVw
ID0gZWxlbWVudC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCk7CisKKyAgICBtYXhpbXVtID0g
ZWxlbWVudC0+bWF4aW11bSgpOworICAgIG1pbmltdW0gPSBlbGVtZW50LT5taW5pbXVtKCk7Cit9
CisKK2RvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoZG91YmxlIHZhbHVlKQoreworICAgIGRv
dWJsZSBjbGFtcGVkVmFsdWUgPSBtYXgobWluaW11bSwgbWluKHZhbHVlLCBtYXhpbXVtKSk7Cisg
ICAgaWYgKCFoYXNTdGVwKQorICAgICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOworICAgIC8vIFJv
dW5kcyBjbGFtcGVkVmFsdWUgdG8gbWluaW11bSArIE4gKiBzdGVwLgorICAgIGNsYW1wZWRWYWx1
ZSA9IG1pbmltdW0gKyByb3VuZCgoY2xhbXBlZFZhbHVlIC0gbWluaW11bSkgLyBzdGVwKSAqIHN0
ZXA7CisgICAgaWYgKGNsYW1wZWRWYWx1ZSA+IG1heGltdW0pCisgICAgICAgY2xhbXBlZFZhbHVl
IC09IHN0ZXA7CisgICAgQVNTRVJUKGNsYW1wZWRWYWx1ZSA+PSBtaW5pbXVtKTsKKyAgICBBU1NF
UlQoY2xhbXBlZFZhbHVlIDw9IG1heGltdW0pOworICAgIHJldHVybiBjbGFtcGVkVmFsdWU7Cit9
CisKK2RvdWJsZSBTdGVwUmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCwgYm9vbCogd2FzQ2xhbXBlZCkKK3sKKyAgICBkb3VibGUgb2xkVmFsdWU7CisgICAg
Ym9vbCBwYXJzZVN1Y2Nlc3MgPSBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCAmb2xkVmFsdWUpOworICAgIGlmICghcGFyc2VTdWNj
ZXNzKQorICAgICAgICBvbGRWYWx1ZSA9IChtaW5pbXVtICsgbWF4aW11bSkgLyAyOworICAgIGRv
dWJsZSBuZXdWYWx1ZSA9IGNsYW1wVmFsdWUob2xkVmFsdWUpOworCisgICAgaWYgKHdhc0NsYW1w
ZWQpCisgICAgICAgICp3YXNDbGFtcGVkID0gIXBhcnNlU3VjY2VzcyB8fCBuZXdWYWx1ZSAhPSBv
bGRWYWx1ZTsKKworICAgIHJldHVybiBuZXdWYWx1ZTsKK30KKworZG91YmxlIHNsaWRlclBvc2l0
aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgU3RlcFJhbmdlIHJhbmdlKGVs
ZW1lbnQpOworICAgIHJldHVybiByYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKHJhbmdlLnZhbHVl
RnJvbUVsZW1lbnQoZWxlbWVudCkpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
U3RlcFJhbmdlLmggYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uN2IyMzg4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRt
bC9TdGVwUmFuZ2UuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgU3RlcFJhbmdlX2gKKyNkZWZpbmUgU3RlcFJhbmdlX2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworCitzdHJ1Y3QgU3RlcFJhbmdlIHsKKyAg
ICBib29sIGhhc1N0ZXA7CisgICAgZG91YmxlIHN0ZXA7CisgICAgZG91YmxlIG1pbmltdW07Cisg
ICAgZG91YmxlIG1heGltdW07ICAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11bS4KKworICAg
IGV4cGxpY2l0IFN0ZXBSYW5nZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgZG91YmxlIGNsYW1w
VmFsdWUoZG91YmxlIHZhbHVlKTsKKworICAgIC8vIE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQor
ICAgIGRvdWJsZSBwcm9wb3J0aW9uRnJvbVZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmIChtaW5pbXVtID09IG1heGltdW0pCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAg
ICAgICByZXR1cm4gKHZhbHVlIC0gbWluaW11bSkgLyAobWF4aW11bSAtIG1pbmltdW0pOworICAg
IH0KKworICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQorICAgIGRvdWJsZSB2YWx1
ZUZyb21Qcm9wb3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1pbmltdW0gKyBwcm9wb3J0aW9uICogKG1heGltdW0gLSBtaW5pbXVtKTsKKyAgICB9CisKKyAg
ICBkb3VibGUgdmFsdWVGcm9tRWxlbWVudChIVE1MSW5wdXRFbGVtZW50KiwgYm9vbCogd2FzQ2xh
bXBlZCA9IDApOworfTsKKworLy8gUmV0dXJucyBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4KK2Rv
dWJsZSBzbGlkZXJQb3NpdGlvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KTsKKworfQorCisj
ZW5kaWYgLy8gU3RlcFJhbmdlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDVi
YmU5YWYuLmZjN2Y0MmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgc3RkOjptaW47CkBAIC00NSw4MyArNDYs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1
bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotLy8gRklYTUU6IFRoZSBTbGlkZXJSYW5nZSBjbGFzcyBh
bmQgZnVuY3Rpb25zIGFyZSBlbnRpcmVseSBiYXNlZCBvbiB0aGUgRE9NLAotLy8gYW5kIGNvdWxk
IGJlIHB1dCB3aXRoIEhUTUxJbnB1dEVsZW1lbnQgKHBvc3NpYmx5IHdpdGggYSBuZXcgbmFtZSkg
aW5zdGVhZCBvZiBoZXJlLgotc3RydWN0IFNsaWRlclJhbmdlIHsKLSAgICBib29sIGhhc1N0ZXA7
Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgZG91YmxlIG1pbmltdW07Ci0gICAgZG91YmxlIG1heGlt
dW07ICAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11bS4KLQotICAgIGV4cGxpY2l0IFNsaWRl
clJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqKTsKLSAgICBkb3VibGUgY2xhbXBWYWx1ZShkb3VibGUg
dmFsdWUpOwotCi0gICAgLy8gTWFwIHZhbHVlIGludG8gMC0xIHJhbmdlCi0gICAgZG91YmxlIHBy
b3BvcnRpb25Gcm9tVmFsdWUoZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKG1pbmlt
dW0gPT0gbWF4aW11bSkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIHJldHVybiAo
dmFsdWUgLSBtaW5pbXVtKSAvIChtYXhpbXVtIC0gbWluaW11bSk7Ci0gICAgfQotICAgIAotICAg
IC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIGRvdWJsZSB2YWx1ZUZyb21Qcm9w
b3J0aW9uKGRvdWJsZSBwcm9wb3J0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1pbmltdW0g
KyBwcm9wb3J0aW9uICogKG1heGltdW0gLSBtaW5pbXVtKTsKLSAgICB9Ci0gICAgCi0gICAgZG91
YmxlIHZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCosIGJvb2wqIHdhc0NsYW1wZWQg
PSAwKTsKLX07Ci0KLVNsaWRlclJhbmdlOjpTbGlkZXJSYW5nZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KQotewotICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikp
IHsKLSAgICAgICAgc3RlcCA9IDEuMDsKLSAgICAgICAgaGFzU3RlcCA9ICFlcXVhbElnbm9yaW5n
Q2FzZShlbGVtZW50LT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciksICJmbG9hdCIpOwotICAg
IH0gZWxzZQotICAgICAgICBoYXNTdGVwID0gZWxlbWVudC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgm
c3RlcCk7Ci0KLSAgICBtYXhpbXVtID0gZWxlbWVudC0+bWF4aW11bSgpOwotICAgIG1pbmltdW0g
PSBlbGVtZW50LT5taW5pbXVtKCk7Ci19Ci0KLWRvdWJsZSBTbGlkZXJSYW5nZTo6Y2xhbXBWYWx1
ZShkb3VibGUgdmFsdWUpCi17Ci0gICAgZG91YmxlIGNsYW1wZWRWYWx1ZSA9IG1heChtaW5pbXVt
LCBtaW4odmFsdWUsIG1heGltdW0pKTsKLSAgICBpZiAoIWhhc1N0ZXApCi0gICAgICAgIHJldHVy
biBjbGFtcGVkVmFsdWU7Ci0gICAgLy8gUm91bmRzIGNsYW1wZWRWYWx1ZSB0byBtaW5pbXVtICsg
TiAqIHN0ZXAuCi0gICAgY2xhbXBlZFZhbHVlID0gbWluaW11bSArIHJvdW5kKChjbGFtcGVkVmFs
dWUgLSBtaW5pbXVtKSAvIHN0ZXApICogc3RlcDsKLSAgICBpZiAoY2xhbXBlZFZhbHVlID4gbWF4
aW11bSkKLSAgICAgICBjbGFtcGVkVmFsdWUgLT0gc3RlcDsKLSAgICBBU1NFUlQoY2xhbXBlZFZh
bHVlID49IG1pbmltdW0pOwotICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPD0gbWF4aW11bSk7Ci0g
ICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKLX0KLQotZG91YmxlIFNsaWRlclJhbmdlOjp2YWx1ZUZy
b21FbGVtZW50KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wqIHdhc0NsYW1wZWQpCi17
Ci0gICAgZG91YmxlIG9sZFZhbHVlOwotICAgIGJvb2wgcGFyc2VTdWNjZXNzID0gSFRNTElucHV0
RWxlbWVudDo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudC0+dmFsdWUoKSwgJm9s
ZFZhbHVlKTsKLSAgICBpZiAoIXBhcnNlU3VjY2VzcykKLSAgICAgICAgb2xkVmFsdWUgPSAobWlu
aW11bSArIG1heGltdW0pIC8gMjsKLSAgICBkb3VibGUgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9s
ZFZhbHVlKTsKLQotICAgIGlmICh3YXNDbGFtcGVkKQotICAgICAgICAqd2FzQ2xhbXBlZCA9ICFw
YXJzZVN1Y2Nlc3MgfHwgbmV3VmFsdWUgIT0gb2xkVmFsdWU7Ci0KLSAgICByZXR1cm4gbmV3VmFs
dWU7Ci19Ci0KLS8vIFJldHVybnMgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuCi0vLyBBcyB3aXRo
IFNsaWRlclJhbmdlLCB0aGlzIGNvdWxkIGJlIG9uIEhUTUxJbnB1dEVsZW1lbnQgaW5zdGVhZCBv
ZiBoZXJlLgotc3RhdGljIGRvdWJsZSBzbGlkZXJQb3NpdGlvbihIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KQotewotICAgIFNsaWRlclJhbmdlIHJhbmdlKGVsZW1lbnQpOwotICAgIHJldHVybiBy
YW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKHJhbmdlLnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCkp
OwotfQotCiBjbGFzcyBTbGlkZXJUaHVtYkVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
ewogcHVibGljOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCosIE5vZGUqIHNoYWRv
d1BhcmVudCk7CkBAIC0zNzUsNyArMjk5LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7CiAKICAgICAvLyBTZW5kIHRoZSB2YWx1ZSBiYWNr
IHRvIHRoZSBlbGVtZW50IGlmIHRoZSByYW5nZSBjaGFuZ2VzIGl0LgotICAgIFNsaWRlclJhbmdl
IHJhbmdlKGVsZW1lbnQpOworICAgIFN0ZXBSYW5nZSByYW5nZShlbGVtZW50KTsKICAgICBib29s
IGNsYW1wZWQ7CiAgICAgZG91YmxlIHZhbHVlID0gcmFuZ2UudmFsdWVGcm9tRWxlbWVudChlbGVt
ZW50LCAmY2xhbXBlZCk7CiAgICAgaWYgKGNsYW1wZWQpCkBAIC00MzAsNyArMzU0LDcgQEAgdm9p
ZCBSZW5kZXJTbGlkZXI6OnNldFZhbHVlRm9yUG9zaXRpb24oaW50IHBvc2l0aW9uKQogICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
bm9kZSgpKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHZhbHVlIGJhc2VkIG9uIHRoZSBw
b3NpdGlvbiwgYW5kIHNlbmQgaXQgdG8gdGhlIGVsZW1lbnQuCi0gICAgU2xpZGVyUmFuZ2UgcmFu
Z2UoZWxlbWVudCk7CisgICAgU3RlcFJhbmdlIHJhbmdlKGVsZW1lbnQpOwogICAgIGRvdWJsZSBm
cmFjdGlvbiA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocG9zaXRpb24pIC8gdHJhY2tTaXplKCk7CiAg
ICAgaWYgKHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQgfHwgc3R5
bGUoKS0+YXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCkKICAgICAgICAgZnJh
Y3Rpb24gPSAxIC0gZnJhY3Rpb247Cg==
</data>
<flag name="review"
          id="34287"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51083</attachid>
            <date>2010-03-18 13:33:22 -0700</date>
            <delta_ts>2010-03-18 18:28:42 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Move Sanitization to HTMLInputElement - Fix Incorrect Tests</desc>
            <filename>patch2.patch</filename>
            <type>text/plain</type>
            <size>36873</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5Y2UzNDUzLi5kZjQxNGY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDMt
MTggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aW5wdXQgdHlwZT1yYW5nZT4gZG9l
cyBub3QgdmFsaWRhdGUgY29ycmVjdGx5IHdpdGhvdXQgYSByZW5kZXJlciBhbmQgdGhlIHRlc3Rz
IGFyZSBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2MjU5CisKKyAgICAgICAgU2V0dGluZyB2YWx1ZSBhdHRyaWJ1dGUgb24gYW4gPGlu
cHV0IHR5cGU9cmFuZ2U+IHRvIGFuIG91dC1vZi1yYW5nZSB2YWx1ZSBmaXJlcyBvbmlucHV0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MAorCisg
ICAgICAgIFdoZW4gc2V0dGluZyB0aGUgcmFuZ2UgZWxlbWVudCdzIHZhbHVlLCBvdmVyZmxvd3Mg
YW5kIHVuZGVyZmxvd3MgYXJlCisgICAgICAgIGF1dG9tYXRpY2FsbHkgc2FuaXRpemVkIHRvIHZh
bGlkIHZhbHVlcy4gRml4ZWQgdGhlIGJlaGF2aW9yIGFuZCByZW1vdmVkCisgICAgICAgIHRlc3Rz
IHRoYXQgd2VyZSB0ZXN0aW5nIGZvciBpbXByb3BlciBiZWhhdmlvci4KKworICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3ctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdl
T3ZlcmZsb3cuanM6CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlT
dGF0ZS1yYW5nZVVuZGVyZmxvdy5qczoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQt
dGVzdHMvdmFsaWRhdGlvbk1lc3NhZ2UuanM6CisgICAgICAgICogZmFzdC9mb3Jtcy92YWxpZGF0
aW9uTWVzc2FnZS1leHBlY3RlZC50eHQ6CisKKyAgICAgICAgICBBZGRlZCB0ZXN0IHZlcmlmeWlu
ZyB0aGF0IGJ1ZyAxNjk5MCB3YXMgZml4ZWQgYXMgd2VsbC4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvcmFuZ2UtaW5wdXQtZHluYW1pYy1vbmlucHV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9yYW5nZS1pbnB1dC1keW5hbWljLW9uaW5wdXQuaHRtbCBBZGRlZC4K
KworICAgICAgICAgIEltcHJvdmVkIHRlc3QgYmVjYXVzZSBoYW5kbGluZyBvZiB0aGlzIGNhc2Ug
Y2hhbmdlZC4KKworICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2UtcmVzZXQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2UtcmVzZXQuaHRtbDoKKwogMjAxMC0wMy0xNyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOiBBbHNvLCByZXNpemUtZnJvbS1wbHVnaW4uaHRtbCBnb3Qgc2tpcHBlZCB0
d2ljZSB0b25pZ2h0LCByZW1vdmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGRhZGQwZGUuLmVlNDViZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VPdmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTcz
LDIxICs3Myw2IEBAIFBBU1MgVGhlIHZhbHVlICItOTkiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2
YWx1ZSAiLTEwMCIuCiBQQVNTIFRoZSB2YWx1ZSAiMTAxIiBvdmVyZmxvd3MgdGhlIG1heGltdW0g
dmFsdWUgIjFFKzIiLgogUEFTUyBUaGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVt
IHZhbHVlICIxMDAiLgogCi1UeXBlPXJhbmdlCi1QQVNTIFRoZSB2YWx1ZSAiOTkiIGRvZXNuJ3Qg
b3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjEwMCIuCi1QQVNTIFRoZSB2YWx1ZSAiLTEwMSIg
ZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiLTEwMCIuCi1QQVNTIFRoZSB2YWx1
ZSAiOTkiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjFFKzIiLgotUEFTUyBU
aGUgdmFsdWUgIjAuOTkiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjEuMDAi
LgotUEFTUyBUaGUgdmFsdWUgImFiYyIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1
ZSAiMTAwIi4KLVBBU1MgVGhlIHZhbHVlICIiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0g
dmFsdWUgIi0xIi4KLVBBU1MgVGhlIHZhbHVlICIwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OSIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiMC45
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTgiLgotUEFTUyBUaGUgdmFs
dWUgIjEwMSIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiMTAwIi4KLVBBU1Mg
VGhlIHZhbHVlICIxMDEiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2YWx1ZSAiMTAwIi4KLVBBU1Mg
VGhlIHZhbHVlICItOTkiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2YWx1ZSAiLTEwMCIuCi1QQVNT
IFRoZSB2YWx1ZSAiMTAxIiBvdmVyZmxvd3MgdGhlIG1heGltdW0gdmFsdWUgIjFFKzIiLgotUEFT
UyBUaGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVtIHZhbHVlICIiLgotUEFTUyBU
aGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVtIHZhbHVlICJ4eHgiLgotCiBUeXBl
PXRpbWUKIFBBU1MgVGhlIHZhbHVlICIxMzoxNiIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11
bSB2YWx1ZSAiIi4KIFBBU1MgVGhlIHZhbHVlICIxMzoxNiIgZG9lc24ndCBvdmVyZmxvdyB0aGUg
bWF4aW11bSB2YWx1ZSAiIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1yYW5nZVVuZGVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3ctZXhwZWN0ZWQudHh0CmluZGV4IDFk
Nzg0MGMuLjk4MzI3NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS1yYW5nZVVuZGVyZmxvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXJhbmdlVW5kZXJmbG93LWV4cGVjdGVkLnR4dApAQCAtNzMs
MjEgKzczLDYgQEAgUEFTUyBUaGUgdmFsdWUgIi0xMDEiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2
YWx1ZSAiLTEwMCIuCiBQQVNTIFRoZSB2YWx1ZSAiOTkiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2
YWx1ZSAiMUUrMiIuCiBQQVNTIFRoZSB2YWx1ZSAiMTAxIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0g
dmFsdWUgIjIwMCIuCiAKLVR5cGU9cmFuZ2UKLVBBU1MgVGhlIHZhbHVlICIxMDEiIGRvZXNuJ3Qg
dW5kZXJmbG93IHRoZSBtaW5pbXVtIHZhbHVlICIxMDAiLgotUEFTUyBUaGUgdmFsdWUgIi05OSIg
ZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIi0xMDAiLgotUEFTUyBUaGUgdmFs
dWUgIjEwMSIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIjFFKzIiLgotUEFT
UyBUaGUgdmFsdWUgIjEuMDEiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBtaW5pbXVtIHZhbHVlICIx
LjAwIi4KLVBBU1MgVGhlIHZhbHVlICJhYmMiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBtaW5pbXVt
IHZhbHVlICIxMDAiLgotUEFTUyBUaGUgdmFsdWUgIiIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1p
bmltdW0gdmFsdWUgIjEiLgotUEFTUyBUaGUgdmFsdWUgIjAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk4IiBkb2Vzbid0IHVuZGVyZmxvdyB0aGUgbWluaW11bSB2YWx1
ZSAiMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiLgotUEFTUyBU
aGUgdmFsdWUgIjEwMSIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIjEwMCIu
Ci1QQVNTIFRoZSB2YWx1ZSAiOTkiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2YWx1ZSAiMTAwIi4K
LVBBU1MgVGhlIHZhbHVlICItMTAxIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIi0xMDAi
LgotUEFTUyBUaGUgdmFsdWUgIjk5IiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIjFFKzIi
LgotUEFTUyBUaGUgdmFsdWUgIi0xIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIiIuCi1Q
QVNTIFRoZSB2YWx1ZSAiLTEiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2YWx1ZSAieHh4Ii4KLQog
VHlwZT10aW1lCiBQQVNTIFRoZSB2YWx1ZSAiMTM6MTYiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBt
aW5pbXVtIHZhbHVlICIiLgogUEFTUyBUaGUgdmFsdWUgIjEzOjE2IiBkb2Vzbid0IHVuZGVyZmxv
dyB0aGUgbWluaW11bSB2YWx1ZSAiIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAppbmRleCBlMDVlZDhhLi5j
MTgxYjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1z
dGVwZG93bi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1z
dGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CkBAIC0xNjcsNTkgKzE2Nyw3NCBAQCBQQVNTIGlu
cHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjEiLCAy
NTUpIGlzICIxIgogUEFTUyBmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0LnN0
ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlIGlzICIwIgogCiBSYW5nZSB0eXBlCi1JbnZhbGlkIHZh
bHVlCi1QQVNTIHN0ZXBVcCgiIiwgbnVsbCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
TlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mgc3RlcERvd24oIiIsIG51
bGwsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBF
eGNlcHRpb24gMTEuCi1Ob24tbnVtYmVyIGFyZ3VtZW50cwotUEFTUyBzdGVwVXAoIjAiLCBudWxs
LCBudWxsLCAiMCIpIGlzICIwIgotUEFTUyBzdGVwRG93bigiMCIsIG51bGwsIG51bGwsICIwIikg
aXMgIjAiCi1QQVNTIHN0ZXBVcCgiMCIsIG51bGwsIG51bGwsICJmb28iKSBpcyAiMCIKLVBBU1Mg
c3RlcERvd24oIjAiLCBudWxsLCBudWxsLCAiZm9vIikgaXMgIjAiCi1QQVNTIHN0ZXBVcCgiMCIs
IG51bGwsIG51bGwsIG51bGwpIGlzICIwIgotUEFTUyBzdGVwRG93bigiMCIsIG51bGwsIG51bGws
IG51bGwpIGlzICIwIgorZnVuY3Rpb24gYXJndW1lbnRzIGFyZSAobWluLCBtYXgsIHN0ZXAsIHZh
bHVlLCBbc3RlcENvdW50XSkKK1VzaW5nIHRoZSBkZWZhdWx0IHZhbHVlcworUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiIikgaXMgIjUxIgorUEFTUyBzdGVwRG93
bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIiKSBpcyAiNDkiCitOb24tbnVtYmVy
IGFyZ3VtZW50cyAoc3RlcENvdW50KQorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBu
dWxsLCBudWxsLCAiMCIsICIwIikgaXMgIjAiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMo
bnVsbCwgbnVsbCwgbnVsbCwgIjAiLCAiMCIpIGlzICIwIgorUEFTUyBzdGVwVXBFeHBsaWNpdEJv
dW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsICJmb28iKSBpcyAiMCIKK1BBU1Mgc3RlcERvd25F
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsICJmb28iKSBpcyAiMCIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAiLCBudWxsKSBpcyAiMCIK
K1BBU1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsIG51bGwp
IGlzICIwIgogTm9ybWFsIGNhc2VzCi1QQVNTIHN0ZXBVcCgiMCIsIG51bGwsIG51bGwpIGlzICIx
IgotUEFTUyBzdGVwVXAoIjEiLCBudWxsLCBudWxsLCAyKSBpcyAiMyIKLVBBU1Mgc3RlcFVwKCIz
IiwgbnVsbCwgbnVsbCwgLTEpIGlzICIyIgotUEFTUyBzdGVwRG93bigiMiIsIG51bGwsICItMTAw
IikgaXMgIjEiCi1QQVNTIHN0ZXBEb3duKCIxIiwgbnVsbCwgIi0xMDAiLCAyKSBpcyAiLTEiCi1Q
QVNTIHN0ZXBEb3duKCItMSIsIG51bGwsICItMTAwIiwgLTEpIGlzICIwIgorUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIpIGlzICIxIgorUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMSIsIDIpIGlzICIzIgorUEFTUyBzdGVw
VXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMyIsIC0xKSBpcyAiMiIKK1BBU1Mg
c3RlcERvd25FeHBsaWNpdEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICIyIikgaXMgIjEiCitQ
QVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMoIi0xMDAiLCBudWxsLCBudWxsLCAiMSIsIDIpIGlz
ICItMSIKK1BBU1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICIt
MSIsIC0xKSBpcyAiMCIKIEV4dHJhIGFyZ3VtZW50cwotUEFTUyBpbnB1dC52YWx1ZSA9ICIwIjsg
aW5wdXQubWluID0gbnVsbDsgaW5wdXQuc3RlcCA9IG51bGw7IGlucHV0LnN0ZXBVcCgxLCAyKTsg
aW5wdXQudmFsdWUgaXMgIjEiCi1QQVNTIGlucHV0LnZhbHVlID0gIjEiOyBpbnB1dC5zdGVwRG93
bigxLCAzKTsgaW5wdXQudmFsdWUgaXMgIjAiCitQQVNTIHNldElucHV0QXR0cmlidXRlcyhudWxs
LCBudWxsLCBudWxsLCAiMCIpOyBpbnB1dC5zdGVwVXAoMSwyKTsgaW5wdXQudmFsdWUgaXMgIjEi
CitQQVNTIHNldElucHV0QXR0cmlidXRlcyhudWxsLCBudWxsLCBudWxsLCAiMSIpOyBpbnB1dC5z
dGVwRG93bigxLDMpOyBpbnB1dC52YWx1ZSBpcyAiMCIKIEludmFsaWQgc3RlcCB2YWx1ZQotUEFT
UyBzdGVwVXAoIjAiLCAiZm9vIiwgbnVsbCkgaXMgIjEiCi1QQVNTIHN0ZXBVcCgiMSIsICIwIiwg
bnVsbCkgaXMgIjIiCi1QQVNTIHN0ZXBVcCgiMiIsICItMSIsIG51bGwpIGlzICIzIgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiZm9vIiwgIjAiKSBpcyAiMSIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgIjAiLCAiMSIpIGlzICIyIgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiLTEiLCAiMiIpIGlzICIzIgorUEFTUyBz
dGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICJmb28iLCAiMSIpIGlzICIwIgorUEFT
UyBzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICIwIiwgIjIiKSBpcyAiMSIKK1BB
U1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiLTEiLCAiMyIpIGlzICIyIgog
U3RlcD1hbnkKLVBBU1Mgc3RlcFVwKCIwIiwgImFueSIsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIHN0ZXBEb3du
KCIwIiwgImFueSIsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9F
UlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51
bGwsICJhbnkiLCAiMSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6
IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVs
bCwgImFueSIsICIxIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KIE92ZXJmbG93L3VuZGVyZmxvdwotUEFTUyBzdGVwRG93bigiMSIs
ICIxIiwgIjAiKSBpcyAiMCIKLVBBU1Mgc3RlcERvd24oIjAiLCAiMSIsICIwIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
c3RlcERvd24oIjEiLCAiMSIsICIwIiwgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMo
bnVsbCwgIjEwMCIsICIxIiwgIjk5IikgaXMgIjEwMCIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgIjEwMCIsICIxIiwgIjEwMCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGlucHV0LnZhbHVlIGlzICIxMDAi
CitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsICIxMDAiLCAiMSIsICI5OSIsICIyIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MS4KK1BBU1MgaW5wdXQudmFsdWUgaXMgIjk5IgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRz
KCIwIiwgbnVsbCwgIjEiLCAiMSIpIGlzICIwIgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRz
KCIwIiwgbnVsbCwgIjEiLCAiMCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGlucHV0LnZhbHVlIGlzICIwIgorUEFTUyBz
dGVwRG93bkV4cGxpY2l0Qm91bmRzKCIwIiwgbnVsbCwgIjEiLCAiMSIsICIyIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mg
aW5wdXQudmFsdWUgaXMgIjEiCi1QQVNTIHN0ZXBEb3duKCIxIiwgIjEuNzk3NjkzMTM0ODYyMzE1
NmUrMzA4IiwgIiIsIDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6
IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGlucHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIs
ICIxIiwgIjAiKSBpcyAiMCIKLVBBU1Mgc3RlcFVwKCIwIiwgIjEiLCAiMCIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGlu
cHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIsICIxIiwgIjAiLCAyKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBzdGVw
RG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICIxLjc5NzY5MzEzNDg2MjMxNTZlKzMwOCIs
ICIxIiwgIjIiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00g
RXhjZXB0aW9uIDExLgorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcygtMTAwLCAwLCAxLCAtMSkg
aXMgIjAiCitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIDAsIDEsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IHN0ZXBVcEV4cGxpY2l0Qm91bmRzKC0xMDAsIDAsIDEsIC0xLCAyKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBpbnB1dC52
YWx1ZSBpcyAiLTEiCi1QQVNTIHN0ZXBVcCgiMSIsICIxLjc5NzY5MzEzNDg2MjMxNTZlKzMwOCIs
ICIiLCAyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhj
ZXB0aW9uIDExLgorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMS43OTc2
OTMxMzQ4NjIzMTU2ZSszMDgiLCAiMSIsICIyIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIHN0ZXBEb3duKCkvc3RlcFVwKCkgZm9y
IHN0ZXBNaXNtYXRjaCB2YWx1ZXMKLVBBU1Mgc3RlcFVwKCIxIiwgIjIiLCAiIikgaXMgIjQiCitQ
QVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDIsIDEpIGlzICI0IgogUEFTUyBp
bnB1dC5zdGVwRG93bigpOyBpbnB1dC52YWx1ZSBpcyAiMiIKLVBBU1MgaW5wdXQubWluID0gIjAi
OyBzdGVwVXAoIjkiLCAiMTAiLCAiIiwgOSkgaXMgIjEwMCIKLVBBU1Mgc3RlcERvd24oIjE5Iiwg
IjEwIiwgIjAiKSBpcyAiMTAiCi1QQVNTIHN0ZXBVcCgiODkiLCAiMTAiLCAiOTkiKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFT
UyBzdGVwVXBFeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgOSwgOSkgaXMgIjEwMCIKK1BBU1Mg
c3RlcERvd25FeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgMTkpIGlzICIxMCIKK3ZhbHVlICsg
c3RlcCBpcyA8PSBtYXgsIGJ1dCByb3VuZGVkIHJlc3VsdCB3b3VsZCBiZSA+IG1heC4KK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgOTksIDEwLCA4OSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIEh1Z2UgdmFsdWUgYW5k
IHNtYWxsIHN0ZXAKLVBBU1MgaW5wdXQubWluID0gIjAiOyBzdGVwVXAoIjFlKzMwOCIsICIxIiwg
IjFlKzMwOCIsIDk5OTk5OSkgaXMgIjFlKzMwOCIKLVBBU1MgaW5wdXQubWF4ID0gIjFlKzMwOCI7
IGlucHV0Lm1pbiA9ICIwIjsgaW5wdXQuc3RlcCA9ICIxIjsgaW5wdXQudmFsdWUgPSAiMWUrMzA4
IjsgaW5wdXQuc3RlcERvd24oOTk5OTk5KTsgaW5wdXQudmFsdWUgaXMgIjFlKzMwOCIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5OTk5OTkpIGlzICIxZSsz
MDgiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5OTk5
OTkpIGlzICIxZSszMDgiCiBGcmFjdGlvbmFsIG51bWJlcnMKLVBBU1MgaW5wdXQubWluID0gIiI7
IHN0ZXBVcCgiMCIsICIwLjMzMzMzMzMzMzMzMzMzMzMzIiwgIiIsIDMpIGlzICIxIgotUEFTUyBz
dGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgbnVsbCwgMC4zMzMzMzMzMzMzMzMzMzMzMywgMCwgMykgaXMgIjEiCitQQVNTIHN0
ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSkgaXMgIjEuMSIKK1BBU1Mgc3Rl
cFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxLCA4KSBpcyAiMS44IgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAwLjEsIDEsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgotUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwg
MSwgMC4wMDM5MjE1Njg2Mjc0NTA5ODAsIDAsIDI1NSkgaXMgIjEiCiBQQVNTIGZvciAodmFyIGkg
PSAwOyBpIDwgMjU1OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFsdWUgaXMg
IjAiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxLCA4KSBp
cyAiMC4yIgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSkg
aXMgIjAuOSIKIAogVGltZSB0eXBlCiBJbnZhbGlkIHZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkYjg4ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtaW5wdXQtZHluYW1p
Yy1vbmlucHV0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgcGFnZSB0ZXN0cyB0
aGF0IHNldHRpbmcgdGhlIHZhbHVlIG9mIGFuIDxpbnB1dCB0eXBlPXJhbmdlPiBlbGVtZW50IHRv
IGFuIG91dC1vZi1yYW5nZSB2YWx1ZSBkb2VzIG5vdCBmaXJlIHRoZSBvbmlucHV0IGV2ZW50Lgor
CisKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1pbnB1
dC1keW5hbWljLW9uaW5wdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtaW5w
dXQtZHluYW1pYy1vbmlucHV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTQ3NTNlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFu
Z2UtaW5wdXQtZHluYW1pYy1vbmlucHV0Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+Cit2YXIgd2FzTG9nID0gZmFsc2U7CitmdW5jdGlvbiBsb2cobXNnKSB7
CisgICAgd2FzTG9nID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgJ1xuJykpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBpbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdCisgICAgaW5wdXQu
dmFsdWUgPSAyMDA7CisgICAgaWYgKCF3YXNMb2cgJiYgaW5wdXQudmFsdWUgPT09ICIxMDAiKQor
ICAgICAgICBsb2coJ1BBU1MnKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+CisgIFRoaXMgcGFnZSB0ZXN0cyB0aGF0IHNldHRpbmcgdGhlIHZhbHVl
IG9mIGFuIDx0dD4mbHQ7aW5wdXQgdHlwZT1yYW5nZSZndDs8L3R0PgorICBlbGVtZW50IHRvIGFu
IG91dC1vZi1yYW5nZSB2YWx1ZSBkb2VzIG5vdCBmaXJlIHRoZSA8dHQ+b25pbnB1dDwvdHQ+IGV2
ZW50LgorPC9wPgorPGlucHV0IHR5cGU9cmFuZ2Ugb25pbnB1dD0ibG9nKCdGQUlMJykiIG1pbj0w
IG1heD0xMDAgdmFsdWU9NTA+Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLXJlc2V0LWV4cGVjdGVkLnR4dApp
bmRleCBjNTk1NDk1Li5lMDE3ZTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3JhbmdlLXJlc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jh
bmdlLXJlc2V0LWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywyNSBAQCBCdWcgMTUyNTE6IFJFR1JF
U1NJT046IDxpbnB1dCB0eXBlPXJhbmdlPiBkb2Vzbid0IHJlc3BvbmQgdG8gZm9ybS5yZXNldCgp
IG9yIHNldAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLQorICAKK1NsaWRlciB3aXRo
IGV4cGxpY2l0IGxpbWl0cwogQ3VycmVudCB2YWx1ZSBpczogIjMwIgogUEFTUyBzbGlkZXIudmFs
dWUgaXMgIjgwIgogUmVzZXR0aW5nIGZvcm0KIFBBU1Mgc2xpZGVyLnZhbHVlIGlzICIzMCIKKwor
U2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBubyBleHBsaWNpdCB2YWx1ZQorQ3VycmVu
dCB2YWx1ZSBpczogIjUwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjgwIgorUmVzZXR0aW5nIGZv
cm0KK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICI1MCIKKworU2xpZGVyIHdpdGggZGVmYXVsdCBsaW1p
dHMsIGFuZCBhIHN0ZXAgdmFsdWUKK0N1cnJlbnQgdmFsdWUgaXM6ICI2MCIKK1BBU1Mgc2xpZGVy
LnZhbHVlIGlzICI4MCIKK1Jlc2V0dGluZyBmb3JtCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNjAi
CisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC5odG1sCmluZGV4IGNjOWVmYjIuLjk2MDM1YjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtcmVzZXQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLXJlc2V0Lmh0bWwKQEAgLTYsNiArNiw4IEBA
CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxmb3JtPgogPGlucHV0IGlkPSJzbGlkZXIiIHR5
cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMzAiPgorPGlucHV0IGlkPSJkZWZh
dWx0cyIgdHlwZT0icmFuZ2UiPgorPGlucHV0IGlkPSJzdGVwIiB0eXBlPSJyYW5nZSIgc3RlcD0i
MjAiPgogPC9mb3JtPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgpAQCAtMTYs
MTcgKzE4LDMxIEBAIGZ1bmN0aW9uIHF1b3RlTnVtYmVyKG4pCiAgICAgcmV0dXJuICJcIiIgKyBu
ICsgIlwiIjsKIH0KIAotdmFyIHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlk
ZXIiKTsKK3ZhciBzbGlkZXI7IC8vIEdsb2JhbCBuZWVkZWQgZm9yIGV2YWwgaW4gc2hvdWxkQmUg
Y2FsbHMuCitmdW5jdGlvbiB0ZXN0U2xpZGVyUmVzZXQoaWQpCit7CisgICAgc2xpZGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciBvcmlnaW5hbFZhbHVlID0gcXVvdGVO
dW1iZXIoc2xpZGVyLnZhbHVlKTsKKyAgICBkZWJ1ZygiQ3VycmVudCB2YWx1ZSBpczogIiArIG9y
aWdpbmFsVmFsdWUpOworCisgICAgc2xpZGVyLnZhbHVlID0gODA7CisgICAgc2hvdWxkQmUoInNs
aWRlci52YWx1ZSIsIHF1b3RlTnVtYmVyKDgwKSk7CisKKyAgICBkZWJ1ZygiUmVzZXR0aW5nIGZv
cm0iKTsKKyAgICBkb2N1bWVudC5mb3Jtc1swXS5yZXNldCgpOworICAgIHNob3VsZEJlKCJzbGlk
ZXIudmFsdWUiLCBvcmlnaW5hbFZhbHVlKTsKKworICAgIGRlYnVnKCIiKTsKK30KIAotdmFyIG9y
aWdpbmFsVmFsdWUgPSBxdW90ZU51bWJlcihzbGlkZXIudmFsdWUpOwotZGVidWcoIkN1cnJlbnQg
dmFsdWUgaXM6ICIgKyBvcmlnaW5hbFZhbHVlKTsKK2RlYnVnKCJTbGlkZXIgd2l0aCBleHBsaWNp
dCBsaW1pdHMiKTsKK3Rlc3RTbGlkZXJSZXNldCgic2xpZGVyIik7CiAKLXNsaWRlci52YWx1ZSA9
IDgwOwotc2hvdWxkQmUoInNsaWRlci52YWx1ZSIsIHF1b3RlTnVtYmVyKDgwKSk7CitkZWJ1Zygi
U2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBubyBleHBsaWNpdCB2YWx1ZSIpOwordGVz
dFNsaWRlclJlc2V0KCJkZWZhdWx0cyIpOwogCi1kZWJ1ZygiUmVzZXR0aW5nIGZvcm0iKTsKLWRv
Y3VtZW50LmZvcm1zWzBdLnJlc2V0KCk7Ci1zaG91bGRCZSgic2xpZGVyLnZhbHVlIiwgb3JpZ2lu
YWxWYWx1ZSk7CitkZWJ1ZygiU2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBhIHN0ZXAg
dmFsdWUiKTsKK3Rlc3RTbGlkZXJSZXNldCgic3RlcCIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93Lmpz
CmluZGV4IGVlYTI4MWUuLjZiY2FhNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VPdmVyZmxvdy5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZs
b3cuanMKQEAgLTE0NCwzMiArMTQ0LDYgQEAgY2hlY2tPdmVyZmxvdygnMTAxJywgJzEwMCcpOwog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBkZWJ1ZygnJyk7Ci1kZWJ1ZygnVHlwZT1yYW5nZScpOwotaW5wdXQudHlw
ZSA9ICdyYW5nZSc7Ci1pbnB1dC5taW4gPSAnJzsKLWNoZWNrTm90T3ZlcmZsb3coJzk5JywgJzEw
MCcpOyAgLy8gVmVyeSBub3JtYWwgY2FzZS4KLWNoZWNrTm90T3ZlcmZsb3coJy0xMDEnLCAnLTEw
MCcpOwotY2hlY2tOb3RPdmVyZmxvdygnOTknLCAnMUUrMicpOwotY2hlY2tOb3RPdmVyZmxvdygn
MC45OScsICcxLjAwJyk7Ci1jaGVja05vdE92ZXJmbG93KCdhYmMnLCAnMTAwJyk7ICAvLyBJbnZh
bGlkIHZhbHVlLgotY2hlY2tOb3RPdmVyZmxvdygnJywgJy0xJyk7ICAvLyBObyB2YWx1ZS4KLS8v
IFRoZSBmb2xsb3dpbmcgY2FzZSBzaG91bGQgYmUgcmFuZ2VPdmVyZmxvdz09dHJ1ZSBpZGVhbGx5
LiAgQnV0IHRoZSAiZG91YmxlIiB0eXBlIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJlY2lzaW9uLgot
Y2hlY2tOb3RPdmVyZmxvdygnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTknLCAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTgnKTsK
LWlucHV0Lm1pbiA9ICcyMDAnOyAgLy8gSWYgbWluID4gbWF4LCBtYXggaXMgcmVzZXQgdG8gbWlu
LgotY2hlY2tOb3RPdmVyZmxvdygnMTAxJywgJzEwMCcpOwotaW5wdXQubWluID0gJyc7Ci0KLS8v
IE92ZXJmbG93IGNhc2VzCi1jaGVja092ZXJmbG93KCcxMDEnLCAnMTAwJyk7Ci1pbnB1dC5taW4g
PSAnLTIwMCc7Ci1jaGVja092ZXJmbG93KCctOTknLCAnLTEwMCcpOwotaW5wdXQubWluID0gJyc7
Ci1jaGVja092ZXJmbG93KCcxMDEnLCAnMUUrMicpOwotY2hlY2tPdmVyZmxvdygnMTAxJywgJycp
OyAgLy8gTm8gbWF4LgotY2hlY2tPdmVyZmxvdygnMTAxJywgJ3h4eCcpOyAgLy8gSW52YWxpZCBt
YXguCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLWRlYnVnKCcnKTsKIGRlYnVnKCdUeXBlPXRpbWUnKTsKIGlucHV0
LnR5cGUgPSAndGltZSc7CiBpbnB1dC5taW4gPSAnJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3cuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdl
VW5kZXJmbG93LmpzCmluZGV4IDdmZmFkNDMuLjllMWQ0YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0
ZS1yYW5nZVVuZGVyZmxvdy5qcwpAQCAtMTU0LDMxICsxNTQsNiBAQCBjaGVja1VuZGVyZmxvdygn
MTAxJywgJzIwMCcpOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkZWJ1ZygnJyk7Ci1kZWJ1ZygnVHlwZT1yYW5n
ZScpOwotaW5wdXQudHlwZSA9ICdyYW5nZSc7Ci1pbnB1dC5tYXggPSAnJzsKLS8vIE5vIHVuZGVy
ZmxvdyBjYXNlcwotY2hlY2tOb3RVbmRlcmZsb3coJzEwMScsICcxMDAnKTsgIC8vIFZlcnkgbm9y
bWFsIGNhc2UuCi1jaGVja05vdFVuZGVyZmxvdygnLTk5JywgJy0xMDAnKTsKLWNoZWNrTm90VW5k
ZXJmbG93KCcxMDEnLCAnMUUrMicpOwotY2hlY2tOb3RVbmRlcmZsb3coJzEuMDEnLCAnMS4wMCcp
OwotY2hlY2tOb3RVbmRlcmZsb3coJ2FiYycsICcxMDAnKTsgIC8vIEludmFsaWQgdmFsdWUuCi1j
aGVja05vdFVuZGVyZmxvdygnJywgJzEnKTsgIC8vIE5vIHZhbHVlLgotLy8gVGhlIGZvbGxvd2lu
ZyBjYXNlIHNob3VsZCBiZSByYW5nZVVuZGVyZmxvdz09dHJ1ZSBpZGVhbGx5LiAgQnV0IHRoZSAi
ZG91YmxlIiB0eXBlIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJlY2lzaW9uLgotY2hlY2tOb3RVbmRl
cmZsb3coJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4JywgJzAu
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Jyk7Ci1pbnB1dC5tYXgg
PSAnMCc7ICAvLyBJZiBtaW4gPiBtYXgsIG1heCBpcyByZXNldCB0byBtaW4gYW5kIG1pbiBpcyBu
b3QgY2hhbmdlZC4KLWNoZWNrTm90VW5kZXJmbG93KCcxMDEnLCAnMTAwJyk7Ci1pbnB1dC5tYXgg
PSAnJzsKLQotLy8gVW5kZXJmbG93IGNhc2VzCi1jaGVja1VuZGVyZmxvdygnOTknLCAnMTAwJyk7
Ci1jaGVja1VuZGVyZmxvdygnLTEwMScsICctMTAwJyk7Ci1jaGVja1VuZGVyZmxvdygnOTknLCAn
MUUrMicpOwotY2hlY2tVbmRlcmZsb3coJy0xJywgJycpOyAgLy8gTm8gbWluLgotY2hlY2tVbmRl
cmZsb3coJy0xJywgJ3h4eCcpOyAgLy8gSW52YWxpZCBtaW4uCi0KLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRlYnVn
KCcnKTsKIGRlYnVnKCdUeXBlPXRpbWUnKTsKIGlucHV0LnR5cGUgPSAndGltZSc7CiBpbnB1dC5t
YXggPSAnJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3Rz
L2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0
LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwppbmRleCAyYTZlYWY4Li43MzIwNzdjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVw
dXAtc3RlcGRvd24uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
aW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpzCkBAIC0zLDExICszLDE1IEBAIGRlc2NyaXB0aW9uKCdD
aGVjayBzdGVwVXAoKSBhbmQgc3RlcERvd24oKSBiYWhldmlvciBmb3IgdHlwZT1kYXRlLCBkYXRl
dGltZSwgZGF0CiB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwog
dmFyIGludmFsaWRTdGF0ZUVyciA9ICciRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhj
ZXB0aW9uIDExIic7CiAKLWZ1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25h
bFN0ZXBDb3VudCkgewotICAgIGlucHV0LnZhbHVlID0gdmFsdWU7Ci0gICAgaW5wdXQuc3RlcCA9
IHN0ZXA7Ci0gICAgaW5wdXQubWluID0gbnVsbDsKK2Z1bmN0aW9uIHNldElucHV0QXR0cmlidXRl
cyhtaW4sIG1heCwgc3RlcCwgdmFsdWUpIHsKKyAgICBpbnB1dC5taW4gPSBtaW47CiAgICAgaW5w
dXQubWF4ID0gbWF4OworICAgIGlucHV0LnN0ZXAgPSBzdGVwOworICAgIGlucHV0LnZhbHVlID0g
dmFsdWU7Cit9CisKK2Z1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25hbFN0
ZXBDb3VudCkgeworICAgIHNldElucHV0QXR0cmlidXRlcyhudWxsLCBtYXgsIHN0ZXAsIHZhbHVl
KTsKICAgICBpZiAodHlwZW9mIG9wdGlvbmFsU3RlcENvdW50ICE9ICJ1bmRlZmluZWQiKQogICAg
ICAgICBpbnB1dC5zdGVwVXAob3B0aW9uYWxTdGVwQ291bnQpOwogICAgIGVsc2UKQEAgLTE2LDEw
ICsyMCw3IEBAIGZ1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25hbFN0ZXBD
b3VudCkgewogfQogCiBmdW5jdGlvbiBzdGVwRG93bih2YWx1ZSwgc3RlcCwgbWluLCBvcHRpb25h
bFN0ZXBDb3VudCkgewotICAgIGlucHV0LnZhbHVlID0gdmFsdWU7Ci0gICAgaW5wdXQuc3RlcCA9
IHN0ZXA7Ci0gICAgaW5wdXQubWluID0gbWluOwotICAgIGlucHV0Lm1heCA9IG51bGw7CisgICAg
c2V0SW5wdXRBdHRyaWJ1dGVzKG1pbiwgbnVsbCwgc3RlcCwgdmFsdWUpOwogICAgIGlmICh0eXBl
b2Ygb3B0aW9uYWxTdGVwQ291bnQgIT0gInVuZGVmaW5lZCIpCiAgICAgICAgIGlucHV0LnN0ZXBE
b3duKG9wdGlvbmFsU3RlcENvdW50KTsKICAgICBlbHNlCkBAIC0yNyw2ICsyOCwyNyBAQCBmdW5j
dGlvbiBzdGVwRG93bih2YWx1ZSwgc3RlcCwgbWluLCBvcHRpb25hbFN0ZXBDb3VudCkgewogICAg
IHJldHVybiBpbnB1dC52YWx1ZTsKIH0KIAorLy8gUmFuZ2UgdmFsdWUgZ2V0cyBhdXRvbWF0aWNh
bGx5IHNoaWZ0ZWQgYmFzZWQgb24gYm91bmRzLAorLy8gU28gYWx3YXlzIHNldCB0aGUgbWluIGFu
ZCBtYXggZmlyc3QgdG8gZ2V0IGV4cGVjdGVkIGJlaGF2aW9yCisKK2Z1bmN0aW9uIHN0ZXBVcEV4
cGxpY2l0Qm91bmRzKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgc3RlcENvdW50KSB7CisgICAgc2V0
SW5wdXRBdHRyaWJ1dGVzKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSk7CisgICAgaWYgKHR5cGVvZiBz
dGVwQ291bnQgIT09ICd1bmRlZmluZWQnKQorICAgICAgICBpbnB1dC5zdGVwVXAoc3RlcENvdW50
KTsKKyAgICBlbHNlCisgICAgICAgIGlucHV0LnN0ZXBVcCgpOworICAgIHJldHVybiBpbnB1dC52
YWx1ZTsKK30KKworZnVuY3Rpb24gc3RlcERvd25FeHBsaWNpdEJvdW5kcyhtaW4sIG1heCwgc3Rl
cCwgdmFsdWUsIHN0ZXBDb3VudCkgeworICAgIHNldElucHV0QXR0cmlidXRlcyhtaW4sIG1heCwg
c3RlcCwgdmFsdWUpOworICAgIGlmICh0eXBlb2Ygc3RlcENvdW50ICE9PSAndW5kZWZpbmVkJykK
KyAgICAgICAgaW5wdXQuc3RlcERvd24oc3RlcENvdW50KTsKKyAgICBlbHNlCisgICAgICAgIGlu
cHV0LnN0ZXBEb3duKCk7CisgICAgcmV0dXJuIGlucHV0LnZhbHVlOworfQorCiBkZWJ1ZygnRGF0
ZSB0eXBlJyk7CiBpbnB1dC50eXBlID0gJ2RhdGUnOwogZGVidWcoJ0ludmFsaWQgdmFsdWUnKTsK
QEAgLTIwMyw2MCArMjI1LDc0IEBAIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsg
aSsrKSB7IGlucHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwCiBkZWJ1ZygnJyk7
CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwogaW5wdXQudHlwZSA9ICdyYW5nZSc7Ci1kZWJ1ZygnSW52
YWxpZCB2YWx1ZScpOwotc2hvdWxkVGhyb3coJ3N0ZXBVcCgiIiwgbnVsbCwgbnVsbCknLCBpbnZh
bGlkU3RhdGVFcnIpOwotc2hvdWxkVGhyb3coJ3N0ZXBEb3duKCIiLCBudWxsLCBudWxsKScsIGlu
dmFsaWRTdGF0ZUVycik7Ci1kZWJ1ZygnTm9uLW51bWJlciBhcmd1bWVudHMnKTsKLXNob3VsZEJl
KCdzdGVwVXAoIjAiLCBudWxsLCBudWxsLCAiMCIpJywgJyIwIicpOwotc2hvdWxkQmUoJ3N0ZXBE
b3duKCIwIiwgbnVsbCwgbnVsbCwgIjAiKScsICciMCInKTsKLXNob3VsZEJlKCdzdGVwVXAoIjAi
LCBudWxsLCBudWxsLCAiZm9vIiknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcERvd24oIjAiLCBu
dWxsLCBudWxsLCAiZm9vIiknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIwIiwgbnVsbCwg
bnVsbCwgbnVsbCknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcERvd24oIjAiLCBudWxsLCBudWxs
LCBudWxsKScsICciMCInKTsKK2RlYnVnKCdmdW5jdGlvbiBhcmd1bWVudHMgYXJlIChtaW4sIG1h
eCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKScpOworZGVidWcoJ1VzaW5nIHRoZSBkZWZhdWx0
IHZhbHVlcycpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51
bGwsICIiKScsICciNTEiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxs
LCBudWxsLCBudWxsLCAiIiknLCAnIjQ5IicpOworZGVidWcoJ05vbi1udW1iZXIgYXJndW1lbnRz
IChzdGVwQ291bnQpJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVs
bCwgbnVsbCwgIjAiLCAiMCIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRC
b3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAiLCAiMCIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0
ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiwgImZvbyIpJywgJyIwIicp
Oworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAi
LCAiZm9vIiknLCAnIjAiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwg
bnVsbCwgbnVsbCwgIjAiLCBudWxsKScsICciMCInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxp
Y2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiwgbnVsbCknLCAnIjAiJyk7CiBkZWJ1Zygn
Tm9ybWFsIGNhc2VzJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIwIiwgbnVsbCwgbnVsbCknLCAnIjEi
Jyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIxIiwgbnVsbCwgbnVsbCwgMiknLCAnIjMiJyk7Ci1zaG91
bGRCZSgnc3RlcFVwKCIzIiwgbnVsbCwgbnVsbCwgLTEpJywgJyIyIicpOwotc2hvdWxkQmUoJ3N0
ZXBEb3duKCIyIiwgbnVsbCwgIi0xMDAiKScsICciMSInKTsKLXNob3VsZEJlKCdzdGVwRG93bigi
MSIsIG51bGwsICItMTAwIiwgMiknLCAnIi0xIicpOwotc2hvdWxkQmUoJ3N0ZXBEb3duKCItMSIs
IG51bGwsICItMTAwIiwgLTEpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91
bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiknLCAnIjEiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhw
bGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjEiLCAyKScsICciMyInKTsKK3Nob3VsZEJl
KCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMyIsIC0xKScsICciMiIn
KTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKCItMTAwIiwgbnVsbCwgbnVsbCwg
IjIiKScsICciMSInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKCItMTAwIiwg
bnVsbCwgbnVsbCwgIjEiLCAyKScsICciLTEiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNp
dEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICItMSIsIC0xKScsICciMCInKTsKIGRlYnVnKCdF
eHRyYSBhcmd1bWVudHMnKTsKLXNob3VsZEJlKCdpbnB1dC52YWx1ZSA9ICIwIjsgaW5wdXQubWlu
ID0gbnVsbDsgaW5wdXQuc3RlcCA9IG51bGw7IGlucHV0LnN0ZXBVcCgxLCAyKTsgaW5wdXQudmFs
dWUnLCAnIjEiJyk7Ci1zaG91bGRCZSgnaW5wdXQudmFsdWUgPSAiMSI7IGlucHV0LnN0ZXBEb3du
KDEsIDMpOyBpbnB1dC52YWx1ZScsICciMCInKTsKK3Nob3VsZEJlKCdzZXRJbnB1dEF0dHJpYnV0
ZXMobnVsbCwgbnVsbCwgbnVsbCwgIjAiKTsgaW5wdXQuc3RlcFVwKDEsMik7IGlucHV0LnZhbHVl
JywgJyIxIicpOworc2hvdWxkQmUoJ3NldElucHV0QXR0cmlidXRlcyhudWxsLCBudWxsLCBudWxs
LCAiMSIpOyBpbnB1dC5zdGVwRG93bigxLDMpOyBpbnB1dC52YWx1ZScsICciMCInKTsKIGRlYnVn
KCdJbnZhbGlkIHN0ZXAgdmFsdWUnKTsKLXNob3VsZEJlKCdzdGVwVXAoIjAiLCAiZm9vIiwgbnVs
bCknLCAnIjEiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIxIiwgIjAiLCBudWxsKScsICciMiInKTsK
LXNob3VsZEJlKCdzdGVwVXAoIjIiLCAiLTEiLCBudWxsKScsICciMyInKTsKK3Nob3VsZEJlKCdz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiZm9vIiwgIjAiKScsICciMSInKTsKK3No
b3VsZEJlKCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMCIsICIxIiknLCAnIjIi
Jyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgIi0xIiwgIjIi
KScsICciMyInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGws
ICJmb28iLCAiMSIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMo
bnVsbCwgbnVsbCwgIjAiLCAiMiIpJywgJyIxIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGlj
aXRCb3VuZHMobnVsbCwgbnVsbCwgIi0xIiwgIjMiKScsICciMiInKTsKIGRlYnVnKCdTdGVwPWFu
eScpOwotc2hvdWxkVGhyb3coJ3N0ZXBVcCgiMCIsICJhbnkiLCBudWxsKScsIGludmFsaWRTdGF0
ZUVycik7Ci1zaG91bGRUaHJvdygnc3RlcERvd24oIjAiLCAiYW55IiwgbnVsbCknLCBpbnZhbGlk
U3RhdGVFcnIpOworc2hvdWxkVGhyb3coJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGws
ICJhbnkiLCAiMSIpJywgaW52YWxpZFN0YXRlRXJyKTsKK3Nob3VsZFRocm93KCdzdGVwRG93bkV4
cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICJhbnkiLCAiMSIpJywgaW52YWxpZFN0YXRlRXJyKTsK
IGRlYnVnKCdPdmVyZmxvdy91bmRlcmZsb3cnKTsKLXNob3VsZEJlKCdzdGVwRG93bigiMSIsICIx
IiwgIjAiKScsICciMCInKTsKLXNob3VsZFRocm93KCdzdGVwRG93bigiMCIsICIxIiwgIjAiKScs
IGludmFsaWRTdGF0ZUVycik7Ci1zaG91bGRUaHJvdygnc3RlcERvd24oIjEiLCAiMSIsICIwIiwg
MiknLCBpbnZhbGlkU3RhdGVFcnIpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51
bGwsICIxMDAiLCAiMSIsICI5OSIpJywgJyIxMDAiJyk7CitzaG91bGRUaHJvdygnc3RlcFVwRXhw
bGljaXRCb3VuZHMobnVsbCwgIjEwMCIsICIxIiwgIjEwMCIpJywgaW52YWxpZFN0YXRlRXJyKTsK
K3Nob3VsZEJlKCdpbnB1dC52YWx1ZScsICciMTAwIicpOworc2hvdWxkVGhyb3coJ3N0ZXBVcEV4
cGxpY2l0Qm91bmRzKG51bGwsICIxMDAiLCAiMSIsICI5OSIsICIyIiknLCBpbnZhbGlkU3RhdGVF
cnIpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyI5OSInKTsKK3Nob3VsZEJlKCdzdGVwRG93
bkV4cGxpY2l0Qm91bmRzKCIwIiwgbnVsbCwgIjEiLCAiMSIpJywgJyIwIicpOworc2hvdWxkVGhy
b3coJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMoIjAiLCBudWxsLCAiMSIsICIwIiknLCBpbnZhbGlk
U3RhdGVFcnIpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyIwIicpOworc2hvdWxkVGhyb3co
J3N0ZXBEb3duRXhwbGljaXRCb3VuZHMoIjAiLCBudWxsLCAiMSIsICIxIiwgIjIiKScsIGludmFs
aWRTdGF0ZUVycik7CiBzaG91bGRCZSgnaW5wdXQudmFsdWUnLCAnIjEiJyk7Ci1zaG91bGRUaHJv
dygnc3RlcERvd24oIjEiLCAiMS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgiLCAiIiwgMiknLCBpbnZh
bGlkU3RhdGVFcnIpOwotc2hvdWxkQmUoJ2lucHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIs
ICIxIiwgIjAiKScsICciMCInKTsKLXNob3VsZFRocm93KCdzdGVwVXAoIjAiLCAiMSIsICIwIikn
LCBpbnZhbGlkU3RhdGVFcnIpOwotc2hvdWxkVGhyb3coJ2lucHV0Lm1pbiA9ICItMTAwIjsgc3Rl
cFVwKCItMSIsICIxIiwgIjAiLCAyKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRUaHJvdygn
c3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMS43OTc2OTMxMzQ4NjIzMTU2ZSsz
MDgiLCAiMSIsICIyIiknLCBpbnZhbGlkU3RhdGVFcnIpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxp
Y2l0Qm91bmRzKC0xMDAsIDAsIDEsIC0xKScsICciMCInKTsKK3Nob3VsZFRocm93KCdzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCAwLCAxLCAwKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRU
aHJvdygnc3RlcFVwRXhwbGljaXRCb3VuZHMoLTEwMCwgMCwgMSwgLTEsIDIpJywgaW52YWxpZFN0
YXRlRXJyKTsKIHNob3VsZEJlKCdpbnB1dC52YWx1ZScsICciLTEiJyk7Ci1zaG91bGRUaHJvdygn
c3RlcFVwKCIxIiwgIjEuNzk3NjkzMTM0ODYyMzE1NmUrMzA4IiwgIiIsIDIpJywgaW52YWxpZFN0
YXRlRXJyKTsKK3Nob3VsZFRocm93KCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAi
MS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgiLCAiMSIsICIyIiknLCBpbnZhbGlkU3RhdGVFcnIpOwog
ZGVidWcoJ3N0ZXBEb3duKCkvc3RlcFVwKCkgZm9yIHN0ZXBNaXNtYXRjaCB2YWx1ZXMnKTsKLXNo
b3VsZEJlKCdzdGVwVXAoIjEiLCAiMiIsICIiKScsICciNCInKTsKK3Nob3VsZEJlKCdzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAyLCAxKScsICciNCInKTsKIHNob3VsZEJlKCdpbnB1
dC5zdGVwRG93bigpOyBpbnB1dC52YWx1ZScsICciMiInKTsKLXNob3VsZEJlKCdpbnB1dC5taW4g
PSAiMCI7IHN0ZXBVcCgiOSIsICIxMCIsICIiLCA5KScsICciMTAwIicpOwotc2hvdWxkQmUoJ3N0
ZXBEb3duKCIxOSIsICIxMCIsICIwIiknLCAnIjEwIicpOwotLy8gdmFsdWUgKyBzdGVwIGlzIDw9
IG1heCwgYnV0IHJvdW5kZWQgcmVzdWx0IHdvdWxkIGJlID4gbWF4Lgotc2hvdWxkVGhyb3coJ3N0
ZXBVcCgiODkiLCAiMTAiLCAiOTkiKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRCZSgnc3Rl
cFVwRXhwbGljaXRCb3VuZHMoMCwgbnVsbCwgMTAsIDksIDkpJywgJyIxMDAiJyk7CitzaG91bGRC
ZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgMTkpJywgJyIxMCInKTsKK2Rl
YnVnKCd2YWx1ZSArIHN0ZXAgaXMgPD0gbWF4LCBidXQgcm91bmRlZCByZXN1bHQgd291bGQgYmUg
PiBtYXguJyk7CitzaG91bGRUaHJvdygnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgOTksIDEw
LCA4OSknLCBpbnZhbGlkU3RhdGVFcnIpOwogZGVidWcoJ0h1Z2UgdmFsdWUgYW5kIHNtYWxsIHN0
ZXAnKTsKLXNob3VsZEJlKCdpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMWUrMzA4IiwgIjEiLCAi
MWUrMzA4IiwgOTk5OTk5KScsICciMWUrMzA4IicpOwotc2hvdWxkQmUoJ2lucHV0Lm1heCA9ICIx
ZSszMDgiOyBpbnB1dC5taW4gPSAiMCI7IGlucHV0LnN0ZXAgPSAiMSI7IGlucHV0LnZhbHVlID0g
IjFlKzMwOCI7IGlucHV0LnN0ZXBEb3duKDk5OTk5OSk7IGlucHV0LnZhbHVlJywgJyIxZSszMDgi
Jyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5
OTk5OTkpJywgJyIxZSszMDgiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcygw
LCAxZTMwOCwgMSwgMWUzMDgsIDk5OTk5OSknLCAnIjFlKzMwOCInKTsKIGRlYnVnKCdGcmFjdGlv
bmFsIG51bWJlcnMnKTsKLXNob3VsZEJlKCdpbnB1dC5taW4gPSAiIjsgc3RlcFVwKCIwIiwgIjAu
MzMzMzMzMzMzMzMzMzMzMzMiLCAiIiwgMyknLCAnIjEiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIx
IiwgIjAuMSIsICIiLCAxMCknLCAnIjIiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgbnVsbCwgMC4zMzMzMzMzMzMzMzMzMzMzMywgMCwgMyknLCAnIjEiJyk7CitzaG91
bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxKScsICciMS4xIicp
Oworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSwgOCkn
LCAnIjEuOCInKTsKK3Nob3VsZEJlKCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAw
LjEsIDEsIDEwKScsICciMiInKTsKIHNob3VsZEJlKCdpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBV
cCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQudmFsdWUnLCAnIjMiJyk7Ci1zaG91bGRCZSgnaW5w
dXQubWluID0gIjAiOyBzdGVwVXAoIjAiLCAiMC4wMDM5MjE1Njg2Mjc0NTA5ODAiLCAiMSIsIDI1
NSknLCAnIjEiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMSwgMC4wMDM5
MjE1Njg2Mjc0NTA5ODAsIDAsIDI1NSknLCAnIjEiJyk7CiBzaG91bGRCZSgnZm9yICh2YXIgaSA9
IDA7IGkgPCAyNTU7IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZScsICci
MCInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwg
MSwgOCknLCAnIjAuMiInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGws
IG51bGwsIDAuMSwgMSknLCAnIjAuOSInKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1RpbWUgdHlw
ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmFs
aWRhdGlvbk1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92
YWxpZGF0aW9uTWVzc2FnZS5qcwppbmRleCAwNmM3YTc0Li5kNjgyNmRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92YWxpZGF0aW9uTWVzc2FnZS5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92YWxpZGF0aW9uTWVzc2Fn
ZS5qcwpAQCAtMzIsMjQgKzMyLDYgQEAgZW1haWxJbnB1dC52YWx1ZSA9ICJpbmNvcnJlY3RWYWx1
ZSI7CiBmb3JtLmFwcGVuZENoaWxkKGVtYWlsSW5wdXQpOwogc2hvdWxkQmUoImVtYWlsSW5wdXQu
dmFsaWRhdGlvbk1lc3NhZ2UiLCAiJ3R5cGUgbWlzbWF0Y2gnIik7CiAKLS8vIEEgInJhbmdlZCIg
aW5wdXQgZm9yICJyYW5nZSB1bmRlcmZsb3ciIGZsYWcKLXZhciB1bmRlcklucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLXVuZGVySW5wdXQubmFtZSA9ICJ1bmRlcklucHV0
IjsKLXVuZGVySW5wdXQudHlwZSA9ICJyYW5nZSI7Ci11bmRlcklucHV0Lm1pbiA9ICIyIjsKLXVu
ZGVySW5wdXQudmFsdWUgPSAiMSI7Ci1mb3JtLmFwcGVuZENoaWxkKHVuZGVySW5wdXQpOwotc2hv
dWxkQmUoInVuZGVySW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UiLCAiJ3JhbmdlIHVuZGVyZmxvdyci
KTsKLQotLy8gQSAicmFuZ2VkIiBpbnB1dCBmb3IgInJhbmdlIG92ZXJmbG93IiBmbGFnCi12YXIg
b3ZlcklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLW92ZXJJbnB1dC5u
YW1lID0gIm92ZXJJbnB1dCI7Ci1vdmVySW5wdXQudHlwZSA9ICJyYW5nZSI7Ci1vdmVySW5wdXQu
bWF4ID0gIjIiOwotb3ZlcklucHV0LnZhbHVlID0gIjMiOwotZm9ybS5hcHBlbmRDaGlsZChvdmVy
SW5wdXQpOwotc2hvdWxkQmUoIm92ZXJJbnB1dC52YWxpZGF0aW9uTWVzc2FnZSIsICIncmFuZ2Ug
b3ZlcmZsb3cnIik7Ci0KIC8vIEEgYnV0dG9uIGNhbid0IGJlIHZhbGl0ZWQgYW5kLCB0aHVzLCBo
YXMgYSBibGFuayB2YWxpZGF0aW9uTWVzc2FnZQogdmFyIGJ1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJ1dHRvbiIpOwogYnV0Lm5hbWUgPSAiYnV0dG9uIjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbk1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKaW5kZXggMTcy
ZmRiOS4uMGUxMmQ4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0
aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxp
ZGF0aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTcsOCArNyw2IEBAIFBBU1MgcGF0dGVybklu
cHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICdwYXR0ZXJuIG1pc21hdGNoJwogUEFTUyByZXF1aXJl
ZElucHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICd2YWx1ZSBtaXNzaW5nJwogUEFTUyByZXF1aXJl
ZFRleHRBcmVhLnZhbGlkYXRpb25NZXNzYWdlIGlzICd2YWx1ZSBtaXNzaW5nJwogUEFTUyBlbWFp
bElucHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICd0eXBlIG1pc21hdGNoJwotUEFTUyB1bmRlcklu
cHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICdyYW5nZSB1bmRlcmZsb3cnCi1QQVNTIG92ZXJJbnB1
dC52YWxpZGF0aW9uTWVzc2FnZSBpcyAncmFuZ2Ugb3ZlcmZsb3cnCiBQQVNTIGJ1dC52YWxpZGF0
aW9uTWVzc2FnZSBpcyAnJwogUEFTUyBhbm9uaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgaXMgJycK
IFBBU1MgaGFwcHlGaWVsZHNldC52YWxpZGF0aW9uTWVzc2FnZSBpcyAnJwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MzZjYjczLi45MGZj
ZmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDMxIEBACiAgICAgICAgIDxpbnB1dCB0eXBlPXJhbmdlPiBkb2VzIG5vdCB2
YWxpZGF0ZSBjb3JyZWN0bHkgd2l0aG91dCBhIHJlbmRlcmVyIGFuZCB0aGUgdGVzdHMgYXJlIGlu
Y29ycmVjdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzYyNTkKIAorICAgICAgICBTZXR0aW5nIHZhbHVlIGF0dHJpYnV0ZSBvbiBhbiA8aW5wdXQgdHlw
ZT1yYW5nZT4gdG8gYW4gb3V0LW9mLXJhbmdlIHZhbHVlIGZpcmVzIG9uaW5wdXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTkwCisKKyAgICAgICAg
V2hlbiBzZXR0aW5nIHRoZSByYW5nZSBlbGVtZW50J3MgdmFsdWUsIG92ZXJmbG93cyBhbmQgdW5k
ZXJmbG93cyBhcmUKKyAgICAgICAgYXV0b21hdGljYWxseSBzYW5pdGl6ZWQgdG8gdmFsaWQgdmFs
dWVzLiBNb3ZlZCB0aGUgZ2VuZXJhbCBjYXNlCisgICAgICAgIHNhbml0aXphdGlvbiBjb2RlIG91
dCBvZiB0aGUgUmVuZGVyZXIgaW50byBIVE1MSW5wdXRFbGVtZW50OjpzYW5pdGl6ZVZhbHVlLgor
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlKTogd2hlbiBnZXR0aW5nIGEgZGVmYXVsdCB2YWx1ZSBv
biByZXNldCgpIGVuc3VyZSB0aGUgZGVmYXVsdFZhbHVlIGlzIHByb3ZpZGVkCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzYW5pdGl6ZVZhbHVlKTogY2xhbXAgdGhlIHZhbHVl
IHdpdGhpbiB0aGUgbWF4L21pbi9zdGVwIHJhbmdlIGNvbnN0cmFpbnRzCisgICAgICAgICogaHRt
bC9TdGVwUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVwUmFuZ2Up
OiBhbGxvdyBjb25zdCBlbGVtZW50IGluIHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICAoV2ViQ29y
ZTo6U3RlcFJhbmdlOjpjbGFtcFZhbHVlKTogY2xhbXAgZnJvbSBhIFN0cmluZyB2YWx1ZQorICAg
ICAgICAqIGh0bWwvU3RlcFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmRl
ZmF1bHRWYWx1ZSk6IGVhc3kgY2FsY3VsYXRpb24gb2YgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIG1h
eC9taW4vc3RlcCByYW5nZSBjb25zdHJhaW50cworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxl
bWVudCk6IG5vIGxvbmdlciBoYW5kbGUgdGhlIGdlbmVyYWwgY2FzZSBzYW5pdGl6YXRpb24gaW4g
dGhlIHJlbmRlcmVyCisKKzIwMTAtMDMtMTggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICA8aW5wdXQgdHlwZT1yYW5nZT4gZG9lcyBub3QgdmFsaWRhdGUgY29ycmVjdGx5IHdpdGhvdXQg
YSByZW5kZXJlciBhbmQgdGhlIHRlc3RzIGFyZSBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjU5CisKICAgICAgICAgUGFydCAxOiBS
ZWZhY3RvcmluZyB0aGUgU2xpZGVyUmFuZ2Ugc3RydWN0IG91dCBvZiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyCiAgICAgICAgIGludG8gYSBtb3JlIGFwcHJvcHJpYXRlIHBsYWNlLiBDaGFuZ2VkIHRo
ZSBuYW1lZCB0byBTdGVwUmFuZ2UuCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBi
ZGMyN2Q2Li45ZmRjNjQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02MCw2ICs2
MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU3Rl
cFJhbmdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNDgyLDEwICsxNDgzLDE2IEBAIFN0cmlu
ZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAgICAgU3RyaW5nIHZhbHVlID0gbV9k
YXRhLnZhbHVlKCk7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIHZhbHVlID0g
c2FuaXRpemVWYWx1ZShnZXRBdHRyaWJ1dGUodmFsdWVBdHRyKSk7Ci0KLSAgICAgICAgLy8gSWYg
bm8gYXR0cmlidXRlIGV4aXN0cywgdGhlbiBqdXN0IHVzZSAib24iIG9yICIiIGJhc2VkIG9mZiB0
aGUgY2hlY2tlZCgpIHN0YXRlIG9mIHRoZSBjb250cm9sLgotICAgICAgICBpZiAodmFsdWUuaXNO
dWxsKCkgJiYgKGlucHV0VHlwZSgpID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElP
KSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkKCkgPyAib24iIDogIiI7CisgICAgICAgIAor
ICAgICAgICAvLyBJZiBubyBhdHRyaWJ1dGUgZXhpc3RzLCBleHRyYSBoYW5kbGluZyBtYXkgYmUg
bmVjZXNzYXJ5LgorICAgICAgICAvLyBGb3IgQ2hlY2tib3ggVHlwZXMganVzdCB1c2UgIm9uIiBv
ciAiIiBiYXNlZCBvZmYgdGhlIGNoZWNrZWQoKSBzdGF0ZSBvZiB0aGUgY29udHJvbC4KKyAgICAg
ICAgLy8gRm9yIGEgUmFuZ2UgSW5wdXQgdXNlIHRoZSBjYWxjdWxhdGVkIGRlZmF1bHQgdmFsdWUu
CisgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkgeworICAgICAgICAgICAgaWYgKGlucHV0VHlw
ZSgpID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElPKQorICAgICAgICAgICAgICAg
IHJldHVybiBjaGVja2VkKCkgPyAib24iIDogIiI7CisgICAgICAgICAgICBlbHNlIGlmIChpbnB1
dFR5cGUoKSA9PSBSQU5HRSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVt
YmVyVHlwZShTdGVwUmFuZ2UodGhpcykuZGVmYXVsdFZhbHVlKCkpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMjQ5Miw2ICsyNDk5LDEzIEBAIFN0cmluZyBIVE1M
SW5wdXRFbGVtZW50OjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkg
Y29uc3QKIHsKICAgICBpZiAoaXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuIElucHV0RWxl
bWVudDo6c2FuaXRpemVWYWx1ZSh0aGlzLCBwcm9wb3NlZFZhbHVlKTsKKworICAgIC8vIElmIHRo
ZSBwcm9wb3NlZFZhbHVlIGlzIG51bGwgdGhhbiB0aGlzIGlzIGEgcmVzZXQgc2NlbmFyaW8gYW5k
IHdlCisgICAgLy8gd2FudCB0aGUgcmFuZ2UgaW5wdXQncyB2YWx1ZSBhdHRyaWJ1dGUgdG8gdGFr
ZSBwcmlvcml0eSBvdmVyIHRoZQorICAgIC8vIGNhbGN1bGF0ZWQgZGVmYXVsdCAobWlkZGxlKSB2
YWx1ZS4KKyAgICBpZiAoaW5wdXRUeXBlKCkgPT0gUkFOR0UgJiYgIXByb3Bvc2VkVmFsdWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKFN0ZXBSYW5nZSh0
aGlzKS5jbGFtcFZhbHVlKHByb3Bvc2VkVmFsdWUpKTsKKwogICAgIHJldHVybiBwcm9wb3NlZFZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4IDc4ZjAzNjUuLjZhYjk1MmYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2Uu
Y3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzEsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKLVN0ZXBSYW5nZTo6U3RlcFJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitTdGVw
UmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAg
IGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikpIHsKICAgICAgICAgc3Rl
cCA9IDEuMDsKQEAgLTU3LDYgKzU4LDE1IEBAIGRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUo
ZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKK2RvdWJsZSBTdGVw
UmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBkb3Vi
bGUgb2xkVmFsdWU7CisgICAgYm9vbCBwYXJzZVN1Y2Nlc3MgPSBIVE1MSW5wdXRFbGVtZW50Ojpw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmdWYWx1ZSwgJm9sZFZhbHVlKTsKKyAgICBp
ZiAoIXBhcnNlU3VjY2VzcykKKyAgICAgICAgb2xkVmFsdWUgPSAobWluaW11bSArIG1heGltdW0p
IC8gMjsKKyAgICByZXR1cm4gY2xhbXBWYWx1ZShvbGRWYWx1ZSk7Cit9CisKIGRvdWJsZSBTdGVw
UmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCog
d2FzQ2xhbXBlZCkKIHsKICAgICBkb3VibGUgb2xkVmFsdWU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvU3RlcFJhbmdlLmggYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggN2IyMzg4
ZS4uN2EyZWNjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1dl
YkNvcmUvaHRtbC9TdGVwUmFuZ2UuaApAQCAtMjQsNiArMjQsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgU3RyaW5nOwogCiBzdHJ1Y3Qg
U3RlcFJhbmdlIHsKICAgICBib29sIGhhc1N0ZXA7CkBAIC0zMSw4ICszMiwxNSBAQCBzdHJ1Y3Qg
U3RlcFJhbmdlIHsKICAgICBkb3VibGUgbWluaW11bTsKICAgICBkb3VibGUgbWF4aW11bTsgIC8v
IG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgogCi0gICAgZXhwbGljaXQgU3RlcFJhbmdlKEhU
TUxJbnB1dEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBTdGVwUmFuZ2UoY29uc3QgSFRNTElucHV0
RWxlbWVudCopOwogICAgIGRvdWJsZSBjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSk7CisgICAgZG91
YmxlIGNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisKKyAgICAvLyBDbGFt
cCB0aGUgbWlkZGxlIHZhbHVlIGFjY29yZGluZyB0byB0aGUgc3RlcAorICAgIGRvdWJsZSBkZWZh
dWx0VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWUoKG1pbmltdW0gKyBt
YXhpbXVtKSAvIDIpOworICAgIH0KIAogICAgIC8vIE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQog
ICAgIGRvdWJsZSBwcm9wb3J0aW9uRnJvbVZhbHVlKGRvdWJsZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuY3BwCmluZGV4IGZjN2Y0MmQuLmZmY2FjZjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2xpZGVyLmNwcApAQCAtMjk2LDE1ICsyOTYsNiBAQCB2b2lkIFJlbmRlclNsaWRlcjo6bGF5
b3V0KCkKIAogdm9pZCBSZW5kZXJTbGlkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKLSAgICBI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KG5vZGUoKSk7Ci0KLSAgICAvLyBTZW5kIHRoZSB2YWx1ZSBiYWNrIHRvIHRoZSBlbGVtZW50IGlm
IHRoZSByYW5nZSBjaGFuZ2VzIGl0LgotICAgIFN0ZXBSYW5nZSByYW5nZShlbGVtZW50KTsKLSAg
ICBib29sIGNsYW1wZWQ7Ci0gICAgZG91YmxlIHZhbHVlID0gcmFuZ2UudmFsdWVGcm9tRWxlbWVu
dChlbGVtZW50LCAmY2xhbXBlZCk7Ci0gICAgaWYgKGNsYW1wZWQpCi0gICAgICAgIGVsZW1lbnQt
PnNldFZhbHVlRnJvbVJlbmRlcmVyKEhUTUxJbnB1dEVsZW1lbnQ6OnNlcmlhbGl6ZUZvck51bWJl
clR5cGUodmFsdWUpKTsKLQogICAgIC8vIExheW91dCB3aWxsIHRha2UgY2FyZSBvZiB0aGUgdGh1
bWIncyBzaXplIGFuZCBwb3NpdGlvbi4KICAgICBpZiAoIW1fdGh1bWIpIHsKICAgICAgICAgbV90
aHVtYiA9IG5ldyBTbGlkZXJUaHVtYkVsZW1lbnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51118</attachid>
            <date>2010-03-18 18:28:42 -0700</date>
            <delta_ts>2010-03-18 19:00:46 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Added ASSERTs, Fixed Style Issue in Part 1</desc>
            <filename>part2.patch</filename>
            <type>text/plain</type>
            <size>38329</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5Y2UzNDUzLi5kZjQxNGY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDMt
MTggIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aW5wdXQgdHlwZT1yYW5nZT4gZG9l
cyBub3QgdmFsaWRhdGUgY29ycmVjdGx5IHdpdGhvdXQgYSByZW5kZXJlciBhbmQgdGhlIHRlc3Rz
IGFyZSBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2MjU5CisKKyAgICAgICAgU2V0dGluZyB2YWx1ZSBhdHRyaWJ1dGUgb24gYW4gPGlu
cHV0IHR5cGU9cmFuZ2U+IHRvIGFuIG91dC1vZi1yYW5nZSB2YWx1ZSBmaXJlcyBvbmlucHV0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MAorCisg
ICAgICAgIFdoZW4gc2V0dGluZyB0aGUgcmFuZ2UgZWxlbWVudCdzIHZhbHVlLCBvdmVyZmxvd3Mg
YW5kIHVuZGVyZmxvd3MgYXJlCisgICAgICAgIGF1dG9tYXRpY2FsbHkgc2FuaXRpemVkIHRvIHZh
bGlkIHZhbHVlcy4gRml4ZWQgdGhlIGJlaGF2aW9yIGFuZCByZW1vdmVkCisgICAgICAgIHRlc3Rz
IHRoYXQgd2VyZSB0ZXN0aW5nIGZvciBpbXByb3BlciBiZWhhdmlvci4KKworICAgICAgICAqIGZh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3ctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdl
T3ZlcmZsb3cuanM6CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlT
dGF0ZS1yYW5nZVVuZGVyZmxvdy5qczoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQt
dGVzdHMvdmFsaWRhdGlvbk1lc3NhZ2UuanM6CisgICAgICAgICogZmFzdC9mb3Jtcy92YWxpZGF0
aW9uTWVzc2FnZS1leHBlY3RlZC50eHQ6CisKKyAgICAgICAgICBBZGRlZCB0ZXN0IHZlcmlmeWlu
ZyB0aGF0IGJ1ZyAxNjk5MCB3YXMgZml4ZWQgYXMgd2VsbC4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvcmFuZ2UtaW5wdXQtZHluYW1pYy1vbmlucHV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy9yYW5nZS1pbnB1dC1keW5hbWljLW9uaW5wdXQuaHRtbCBBZGRlZC4K
KworICAgICAgICAgIEltcHJvdmVkIHRlc3QgYmVjYXVzZSBoYW5kbGluZyBvZiB0aGlzIGNhc2Ug
Y2hhbmdlZC4KKworICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2UtcmVzZXQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZm9ybXMvcmFuZ2UtcmVzZXQuaHRtbDoKKwogMjAxMC0wMy0xNyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOiBBbHNvLCByZXNpemUtZnJvbS1wbHVnaW4uaHRtbCBnb3Qgc2tpcHBlZCB0
d2ljZSB0b25pZ2h0LCByZW1vdmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGRhZGQwZGUuLmVlNDViZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VPdmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTcz
LDIxICs3Myw2IEBAIFBBU1MgVGhlIHZhbHVlICItOTkiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2
YWx1ZSAiLTEwMCIuCiBQQVNTIFRoZSB2YWx1ZSAiMTAxIiBvdmVyZmxvd3MgdGhlIG1heGltdW0g
dmFsdWUgIjFFKzIiLgogUEFTUyBUaGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVt
IHZhbHVlICIxMDAiLgogCi1UeXBlPXJhbmdlCi1QQVNTIFRoZSB2YWx1ZSAiOTkiIGRvZXNuJ3Qg
b3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjEwMCIuCi1QQVNTIFRoZSB2YWx1ZSAiLTEwMSIg
ZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiLTEwMCIuCi1QQVNTIFRoZSB2YWx1
ZSAiOTkiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjFFKzIiLgotUEFTUyBU
aGUgdmFsdWUgIjAuOTkiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgIjEuMDAi
LgotUEFTUyBUaGUgdmFsdWUgImFiYyIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1
ZSAiMTAwIi4KLVBBU1MgVGhlIHZhbHVlICIiIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIG1heGltdW0g
dmFsdWUgIi0xIi4KLVBBU1MgVGhlIHZhbHVlICIwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OSIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiMC45
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTgiLgotUEFTUyBUaGUgdmFs
dWUgIjEwMSIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11bSB2YWx1ZSAiMTAwIi4KLVBBU1Mg
VGhlIHZhbHVlICIxMDEiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2YWx1ZSAiMTAwIi4KLVBBU1Mg
VGhlIHZhbHVlICItOTkiIG92ZXJmbG93cyB0aGUgbWF4aW11bSB2YWx1ZSAiLTEwMCIuCi1QQVNT
IFRoZSB2YWx1ZSAiMTAxIiBvdmVyZmxvd3MgdGhlIG1heGltdW0gdmFsdWUgIjFFKzIiLgotUEFT
UyBUaGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVtIHZhbHVlICIiLgotUEFTUyBU
aGUgdmFsdWUgIjEwMSIgb3ZlcmZsb3dzIHRoZSBtYXhpbXVtIHZhbHVlICJ4eHgiLgotCiBUeXBl
PXRpbWUKIFBBU1MgVGhlIHZhbHVlICIxMzoxNiIgZG9lc24ndCBvdmVyZmxvdyB0aGUgbWF4aW11
bSB2YWx1ZSAiIi4KIFBBU1MgVGhlIHZhbHVlICIxMzoxNiIgZG9lc24ndCBvdmVyZmxvdyB0aGUg
bWF4aW11bSB2YWx1ZSAiIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS1yYW5nZVVuZGVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3ctZXhwZWN0ZWQudHh0CmluZGV4IDFk
Nzg0MGMuLjk4MzI3NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS1yYW5nZVVuZGVyZmxvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXJhbmdlVW5kZXJmbG93LWV4cGVjdGVkLnR4dApAQCAtNzMs
MjEgKzczLDYgQEAgUEFTUyBUaGUgdmFsdWUgIi0xMDEiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2
YWx1ZSAiLTEwMCIuCiBQQVNTIFRoZSB2YWx1ZSAiOTkiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2
YWx1ZSAiMUUrMiIuCiBQQVNTIFRoZSB2YWx1ZSAiMTAxIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0g
dmFsdWUgIjIwMCIuCiAKLVR5cGU9cmFuZ2UKLVBBU1MgVGhlIHZhbHVlICIxMDEiIGRvZXNuJ3Qg
dW5kZXJmbG93IHRoZSBtaW5pbXVtIHZhbHVlICIxMDAiLgotUEFTUyBUaGUgdmFsdWUgIi05OSIg
ZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIi0xMDAiLgotUEFTUyBUaGUgdmFs
dWUgIjEwMSIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIjFFKzIiLgotUEFT
UyBUaGUgdmFsdWUgIjEuMDEiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBtaW5pbXVtIHZhbHVlICIx
LjAwIi4KLVBBU1MgVGhlIHZhbHVlICJhYmMiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBtaW5pbXVt
IHZhbHVlICIxMDAiLgotUEFTUyBUaGUgdmFsdWUgIiIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1p
bmltdW0gdmFsdWUgIjEiLgotUEFTUyBUaGUgdmFsdWUgIjAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk4IiBkb2Vzbid0IHVuZGVyZmxvdyB0aGUgbWluaW11bSB2YWx1
ZSAiMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkiLgotUEFTUyBU
aGUgdmFsdWUgIjEwMSIgZG9lc24ndCB1bmRlcmZsb3cgdGhlIG1pbmltdW0gdmFsdWUgIjEwMCIu
Ci1QQVNTIFRoZSB2YWx1ZSAiOTkiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2YWx1ZSAiMTAwIi4K
LVBBU1MgVGhlIHZhbHVlICItMTAxIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIi0xMDAi
LgotUEFTUyBUaGUgdmFsdWUgIjk5IiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIjFFKzIi
LgotUEFTUyBUaGUgdmFsdWUgIi0xIiB1bmRlZmxvd3MgdGhlIG1pbmltdW0gdmFsdWUgIiIuCi1Q
QVNTIFRoZSB2YWx1ZSAiLTEiIHVuZGVmbG93cyB0aGUgbWluaW11bSB2YWx1ZSAieHh4Ii4KLQog
VHlwZT10aW1lCiBQQVNTIFRoZSB2YWx1ZSAiMTM6MTYiIGRvZXNuJ3QgdW5kZXJmbG93IHRoZSBt
aW5pbXVtIHZhbHVlICIiLgogUEFTUyBUaGUgdmFsdWUgIjEzOjE2IiBkb2Vzbid0IHVuZGVyZmxv
dyB0aGUgbWluaW11bSB2YWx1ZSAiIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAppbmRleCBlMDVlZDhhLi5j
MTgxYjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1z
dGVwZG93bi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1z
dGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CkBAIC0xNjcsNTkgKzE2Nyw3NCBAQCBQQVNTIGlu
cHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjEiLCAy
NTUpIGlzICIxIgogUEFTUyBmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0LnN0
ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlIGlzICIwIgogCiBSYW5nZSB0eXBlCi1JbnZhbGlkIHZh
bHVlCi1QQVNTIHN0ZXBVcCgiIiwgbnVsbCwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
TlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mgc3RlcERvd24oIiIsIG51
bGwsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBF
eGNlcHRpb24gMTEuCi1Ob24tbnVtYmVyIGFyZ3VtZW50cwotUEFTUyBzdGVwVXAoIjAiLCBudWxs
LCBudWxsLCAiMCIpIGlzICIwIgotUEFTUyBzdGVwRG93bigiMCIsIG51bGwsIG51bGwsICIwIikg
aXMgIjAiCi1QQVNTIHN0ZXBVcCgiMCIsIG51bGwsIG51bGwsICJmb28iKSBpcyAiMCIKLVBBU1Mg
c3RlcERvd24oIjAiLCBudWxsLCBudWxsLCAiZm9vIikgaXMgIjAiCi1QQVNTIHN0ZXBVcCgiMCIs
IG51bGwsIG51bGwsIG51bGwpIGlzICIwIgotUEFTUyBzdGVwRG93bigiMCIsIG51bGwsIG51bGws
IG51bGwpIGlzICIwIgorZnVuY3Rpb24gYXJndW1lbnRzIGFyZSAobWluLCBtYXgsIHN0ZXAsIHZh
bHVlLCBbc3RlcENvdW50XSkKK1VzaW5nIHRoZSBkZWZhdWx0IHZhbHVlcworUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiIikgaXMgIjUxIgorUEFTUyBzdGVwRG93
bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIiKSBpcyAiNDkiCitOb24tbnVtYmVy
IGFyZ3VtZW50cyAoc3RlcENvdW50KQorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBu
dWxsLCBudWxsLCAiMCIsICIwIikgaXMgIjAiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMo
bnVsbCwgbnVsbCwgbnVsbCwgIjAiLCAiMCIpIGlzICIwIgorUEFTUyBzdGVwVXBFeHBsaWNpdEJv
dW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsICJmb28iKSBpcyAiMCIKK1BBU1Mgc3RlcERvd25F
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsICJmb28iKSBpcyAiMCIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAiLCBudWxsKSBpcyAiMCIK
K1BBU1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIsIG51bGwp
IGlzICIwIgogTm9ybWFsIGNhc2VzCi1QQVNTIHN0ZXBVcCgiMCIsIG51bGwsIG51bGwpIGlzICIx
IgotUEFTUyBzdGVwVXAoIjEiLCBudWxsLCBudWxsLCAyKSBpcyAiMyIKLVBBU1Mgc3RlcFVwKCIz
IiwgbnVsbCwgbnVsbCwgLTEpIGlzICIyIgotUEFTUyBzdGVwRG93bigiMiIsIG51bGwsICItMTAw
IikgaXMgIjEiCi1QQVNTIHN0ZXBEb3duKCIxIiwgbnVsbCwgIi0xMDAiLCAyKSBpcyAiLTEiCi1Q
QVNTIHN0ZXBEb3duKCItMSIsIG51bGwsICItMTAwIiwgLTEpIGlzICIwIgorUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMCIpIGlzICIxIgorUEFTUyBzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMSIsIDIpIGlzICIzIgorUEFTUyBzdGVw
VXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMyIsIC0xKSBpcyAiMiIKK1BBU1Mg
c3RlcERvd25FeHBsaWNpdEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICIyIikgaXMgIjEiCitQ
QVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMoIi0xMDAiLCBudWxsLCBudWxsLCAiMSIsIDIpIGlz
ICItMSIKK1BBU1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICIt
MSIsIC0xKSBpcyAiMCIKIEV4dHJhIGFyZ3VtZW50cwotUEFTUyBpbnB1dC52YWx1ZSA9ICIwIjsg
aW5wdXQubWluID0gbnVsbDsgaW5wdXQuc3RlcCA9IG51bGw7IGlucHV0LnN0ZXBVcCgxLCAyKTsg
aW5wdXQudmFsdWUgaXMgIjEiCi1QQVNTIGlucHV0LnZhbHVlID0gIjEiOyBpbnB1dC5zdGVwRG93
bigxLCAzKTsgaW5wdXQudmFsdWUgaXMgIjAiCitQQVNTIHNldElucHV0QXR0cmlidXRlcyhudWxs
LCBudWxsLCBudWxsLCAiMCIpOyBpbnB1dC5zdGVwVXAoMSwyKTsgaW5wdXQudmFsdWUgaXMgIjEi
CitQQVNTIHNldElucHV0QXR0cmlidXRlcyhudWxsLCBudWxsLCBudWxsLCAiMSIpOyBpbnB1dC5z
dGVwRG93bigxLDMpOyBpbnB1dC52YWx1ZSBpcyAiMCIKIEludmFsaWQgc3RlcCB2YWx1ZQotUEFT
UyBzdGVwVXAoIjAiLCAiZm9vIiwgbnVsbCkgaXMgIjEiCi1QQVNTIHN0ZXBVcCgiMSIsICIwIiwg
bnVsbCkgaXMgIjIiCi1QQVNTIHN0ZXBVcCgiMiIsICItMSIsIG51bGwpIGlzICIzIgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiZm9vIiwgIjAiKSBpcyAiMSIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgIjAiLCAiMSIpIGlzICIyIgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiLTEiLCAiMiIpIGlzICIzIgorUEFTUyBz
dGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICJmb28iLCAiMSIpIGlzICIwIgorUEFT
UyBzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICIwIiwgIjIiKSBpcyAiMSIKK1BB
U1Mgc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiLTEiLCAiMyIpIGlzICIyIgog
U3RlcD1hbnkKLVBBU1Mgc3RlcFVwKCIwIiwgImFueSIsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIHN0ZXBEb3du
KCIwIiwgImFueSIsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9F
UlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51
bGwsICJhbnkiLCAiMSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6
IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVs
bCwgImFueSIsICIxIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMS4KIE92ZXJmbG93L3VuZGVyZmxvdwotUEFTUyBzdGVwRG93bigiMSIs
ICIxIiwgIjAiKSBpcyAiMCIKLVBBU1Mgc3RlcERvd24oIjAiLCAiMSIsICIwIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
c3RlcERvd24oIjEiLCAiMSIsICIwIiwgMikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElE
X1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMo
bnVsbCwgIjEwMCIsICIxIiwgIjk5IikgaXMgIjEwMCIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgIjEwMCIsICIxIiwgIjEwMCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJ
RF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGlucHV0LnZhbHVlIGlzICIxMDAi
CitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsICIxMDAiLCAiMSIsICI5OSIsICIyIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
MS4KK1BBU1MgaW5wdXQudmFsdWUgaXMgIjk5IgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRz
KCIwIiwgbnVsbCwgIjEiLCAiMSIpIGlzICIwIgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRz
KCIwIiwgbnVsbCwgIjEiLCAiMCIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFU
RV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIGlucHV0LnZhbHVlIGlzICIwIgorUEFTUyBz
dGVwRG93bkV4cGxpY2l0Qm91bmRzKCIwIiwgbnVsbCwgIjEiLCAiMSIsICIyIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mg
aW5wdXQudmFsdWUgaXMgIjEiCi1QQVNTIHN0ZXBEb3duKCIxIiwgIjEuNzk3NjkzMTM0ODYyMzE1
NmUrMzA4IiwgIiIsIDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6
IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGlucHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIs
ICIxIiwgIjAiKSBpcyAiMCIKLVBBU1Mgc3RlcFVwKCIwIiwgIjEiLCAiMCIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCi1QQVNTIGlu
cHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIsICIxIiwgIjAiLCAyKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBzdGVw
RG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICIxLjc5NzY5MzEzNDg2MjMxNTZlKzMwOCIs
ICIxIiwgIjIiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00g
RXhjZXB0aW9uIDExLgorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcygtMTAwLCAwLCAxLCAtMSkg
aXMgIjAiCitQQVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIDAsIDEsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IHN0ZXBVcEV4cGxpY2l0Qm91bmRzKC0xMDAsIDAsIDEsIC0xLCAyKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBpbnB1dC52
YWx1ZSBpcyAiLTEiCi1QQVNTIHN0ZXBVcCgiMSIsICIxLjc5NzY5MzEzNDg2MjMxNTZlKzMwOCIs
ICIiLCAyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhj
ZXB0aW9uIDExLgorUEFTUyBzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMS43OTc2
OTMxMzQ4NjIzMTU2ZSszMDgiLCAiMSIsICIyIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIHN0ZXBEb3duKCkvc3RlcFVwKCkgZm9y
IHN0ZXBNaXNtYXRjaCB2YWx1ZXMKLVBBU1Mgc3RlcFVwKCIxIiwgIjIiLCAiIikgaXMgIjQiCitQ
QVNTIHN0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDIsIDEpIGlzICI0IgogUEFTUyBp
bnB1dC5zdGVwRG93bigpOyBpbnB1dC52YWx1ZSBpcyAiMiIKLVBBU1MgaW5wdXQubWluID0gIjAi
OyBzdGVwVXAoIjkiLCAiMTAiLCAiIiwgOSkgaXMgIjEwMCIKLVBBU1Mgc3RlcERvd24oIjE5Iiwg
IjEwIiwgIjAiKSBpcyAiMTAiCi1QQVNTIHN0ZXBVcCgiODkiLCAiMTAiLCAiOTkiKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFT
UyBzdGVwVXBFeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgOSwgOSkgaXMgIjEwMCIKK1BBU1Mg
c3RlcERvd25FeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgMTkpIGlzICIxMCIKK3ZhbHVlICsg
c3RlcCBpcyA8PSBtYXgsIGJ1dCByb3VuZGVkIHJlc3VsdCB3b3VsZCBiZSA+IG1heC4KK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgOTksIDEwLCA4OSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIEh1Z2UgdmFsdWUgYW5k
IHNtYWxsIHN0ZXAKLVBBU1MgaW5wdXQubWluID0gIjAiOyBzdGVwVXAoIjFlKzMwOCIsICIxIiwg
IjFlKzMwOCIsIDk5OTk5OSkgaXMgIjFlKzMwOCIKLVBBU1MgaW5wdXQubWF4ID0gIjFlKzMwOCI7
IGlucHV0Lm1pbiA9ICIwIjsgaW5wdXQuc3RlcCA9ICIxIjsgaW5wdXQudmFsdWUgPSAiMWUrMzA4
IjsgaW5wdXQuc3RlcERvd24oOTk5OTk5KTsgaW5wdXQudmFsdWUgaXMgIjFlKzMwOCIKK1BBU1Mg
c3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5OTk5OTkpIGlzICIxZSsz
MDgiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5OTk5
OTkpIGlzICIxZSszMDgiCiBGcmFjdGlvbmFsIG51bWJlcnMKLVBBU1MgaW5wdXQubWluID0gIiI7
IHN0ZXBVcCgiMCIsICIwLjMzMzMzMzMzMzMzMzMzMzMzIiwgIiIsIDMpIGlzICIxIgotUEFTUyBz
dGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgbnVsbCwgMC4zMzMzMzMzMzMzMzMzMzMzMywgMCwgMykgaXMgIjEiCitQQVNTIHN0
ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSkgaXMgIjEuMSIKK1BBU1Mgc3Rl
cFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxLCA4KSBpcyAiMS44IgorUEFTUyBz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAwLjEsIDEsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgotUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwg
MSwgMC4wMDM5MjE1Njg2Mjc0NTA5ODAsIDAsIDI1NSkgaXMgIjEiCiBQQVNTIGZvciAodmFyIGkg
PSAwOyBpIDwgMjU1OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFsdWUgaXMg
IjAiCitQQVNTIHN0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxLCA4KSBp
cyAiMC4yIgorUEFTUyBzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSkg
aXMgIjAuOSIKIAogVGltZSB0eXBlCiBJbnZhbGlkIHZhbHVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkYjg4ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtaW5wdXQtZHluYW1p
Yy1vbmlucHV0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgcGFnZSB0ZXN0cyB0
aGF0IHNldHRpbmcgdGhlIHZhbHVlIG9mIGFuIDxpbnB1dCB0eXBlPXJhbmdlPiBlbGVtZW50IHRv
IGFuIG91dC1vZi1yYW5nZSB2YWx1ZSBkb2VzIG5vdCBmaXJlIHRoZSBvbmlucHV0IGV2ZW50Lgor
CisKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1pbnB1
dC1keW5hbWljLW9uaW5wdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtaW5w
dXQtZHluYW1pYy1vbmlucHV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTQ3NTNlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFu
Z2UtaW5wdXQtZHluYW1pYy1vbmlucHV0Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+Cit2YXIgd2FzTG9nID0gZmFsc2U7CitmdW5jdGlvbiBsb2cobXNnKSB7
CisgICAgd2FzTG9nID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgJ1xuJykpOworfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBpbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdCisgICAgaW5wdXQu
dmFsdWUgPSAyMDA7CisgICAgaWYgKCF3YXNMb2cgJiYgaW5wdXQudmFsdWUgPT09ICIxMDAiKQor
ICAgICAgICBsb2coJ1BBU1MnKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+CisgIFRoaXMgcGFnZSB0ZXN0cyB0aGF0IHNldHRpbmcgdGhlIHZhbHVl
IG9mIGFuIDx0dD4mbHQ7aW5wdXQgdHlwZT1yYW5nZSZndDs8L3R0PgorICBlbGVtZW50IHRvIGFu
IG91dC1vZi1yYW5nZSB2YWx1ZSBkb2VzIG5vdCBmaXJlIHRoZSA8dHQ+b25pbnB1dDwvdHQ+IGV2
ZW50LgorPC9wPgorPGlucHV0IHR5cGU9cmFuZ2Ugb25pbnB1dD0ibG9nKCdGQUlMJykiIG1pbj0w
IG1heD0xMDAgdmFsdWU9NTA+Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLXJlc2V0LWV4cGVjdGVkLnR4dApp
bmRleCBjNTk1NDk1Li5lMDE3ZTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3JhbmdlLXJlc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jh
bmdlLXJlc2V0LWV4cGVjdGVkLnR4dApAQCAtMywxMSArMywyNSBAQCBCdWcgMTUyNTE6IFJFR1JF
U1NJT046IDxpbnB1dCB0eXBlPXJhbmdlPiBkb2Vzbid0IHJlc3BvbmQgdG8gZm9ybS5yZXNldCgp
IG9yIHNldAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLQorICAKK1NsaWRlciB3aXRo
IGV4cGxpY2l0IGxpbWl0cwogQ3VycmVudCB2YWx1ZSBpczogIjMwIgogUEFTUyBzbGlkZXIudmFs
dWUgaXMgIjgwIgogUmVzZXR0aW5nIGZvcm0KIFBBU1Mgc2xpZGVyLnZhbHVlIGlzICIzMCIKKwor
U2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBubyBleHBsaWNpdCB2YWx1ZQorQ3VycmVu
dCB2YWx1ZSBpczogIjUwIgorUEFTUyBzbGlkZXIudmFsdWUgaXMgIjgwIgorUmVzZXR0aW5nIGZv
cm0KK1BBU1Mgc2xpZGVyLnZhbHVlIGlzICI1MCIKKworU2xpZGVyIHdpdGggZGVmYXVsdCBsaW1p
dHMsIGFuZCBhIHN0ZXAgdmFsdWUKK0N1cnJlbnQgdmFsdWUgaXM6ICI2MCIKK1BBU1Mgc2xpZGVy
LnZhbHVlIGlzICI4MCIKK1Jlc2V0dGluZyBmb3JtCitQQVNTIHNsaWRlci52YWx1ZSBpcyAiNjAi
CisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS1yZXNldC5odG1sCmluZGV4IGNjOWVmYjIuLjk2MDM1YjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UtcmVzZXQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlLXJlc2V0Lmh0bWwKQEAgLTYsNiArNiw4IEBA
CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxmb3JtPgogPGlucHV0IGlkPSJzbGlkZXIiIHR5
cGU9InJhbmdlIiBtaW49IjAiIG1heD0iMTAwIiB2YWx1ZT0iMzAiPgorPGlucHV0IGlkPSJkZWZh
dWx0cyIgdHlwZT0icmFuZ2UiPgorPGlucHV0IGlkPSJzdGVwIiB0eXBlPSJyYW5nZSIgc3RlcD0i
MjAiPgogPC9mb3JtPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgpAQCAtMTYs
MTcgKzE4LDMxIEBAIGZ1bmN0aW9uIHF1b3RlTnVtYmVyKG4pCiAgICAgcmV0dXJuICJcIiIgKyBu
ICsgIlwiIjsKIH0KIAotdmFyIHNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlk
ZXIiKTsKK3ZhciBzbGlkZXI7IC8vIEdsb2JhbCBuZWVkZWQgZm9yIGV2YWwgaW4gc2hvdWxkQmUg
Y2FsbHMuCitmdW5jdGlvbiB0ZXN0U2xpZGVyUmVzZXQoaWQpCit7CisgICAgc2xpZGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciBvcmlnaW5hbFZhbHVlID0gcXVvdGVO
dW1iZXIoc2xpZGVyLnZhbHVlKTsKKyAgICBkZWJ1ZygiQ3VycmVudCB2YWx1ZSBpczogIiArIG9y
aWdpbmFsVmFsdWUpOworCisgICAgc2xpZGVyLnZhbHVlID0gODA7CisgICAgc2hvdWxkQmUoInNs
aWRlci52YWx1ZSIsIHF1b3RlTnVtYmVyKDgwKSk7CisKKyAgICBkZWJ1ZygiUmVzZXR0aW5nIGZv
cm0iKTsKKyAgICBkb2N1bWVudC5mb3Jtc1swXS5yZXNldCgpOworICAgIHNob3VsZEJlKCJzbGlk
ZXIudmFsdWUiLCBvcmlnaW5hbFZhbHVlKTsKKworICAgIGRlYnVnKCIiKTsKK30KIAotdmFyIG9y
aWdpbmFsVmFsdWUgPSBxdW90ZU51bWJlcihzbGlkZXIudmFsdWUpOwotZGVidWcoIkN1cnJlbnQg
dmFsdWUgaXM6ICIgKyBvcmlnaW5hbFZhbHVlKTsKK2RlYnVnKCJTbGlkZXIgd2l0aCBleHBsaWNp
dCBsaW1pdHMiKTsKK3Rlc3RTbGlkZXJSZXNldCgic2xpZGVyIik7CiAKLXNsaWRlci52YWx1ZSA9
IDgwOwotc2hvdWxkQmUoInNsaWRlci52YWx1ZSIsIHF1b3RlTnVtYmVyKDgwKSk7CitkZWJ1Zygi
U2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBubyBleHBsaWNpdCB2YWx1ZSIpOwordGVz
dFNsaWRlclJlc2V0KCJkZWZhdWx0cyIpOwogCi1kZWJ1ZygiUmVzZXR0aW5nIGZvcm0iKTsKLWRv
Y3VtZW50LmZvcm1zWzBdLnJlc2V0KCk7Ci1zaG91bGRCZSgic2xpZGVyLnZhbHVlIiwgb3JpZ2lu
YWxWYWx1ZSk7CitkZWJ1ZygiU2xpZGVyIHdpdGggZGVmYXVsdCBsaW1pdHMsIGFuZCBhIHN0ZXAg
dmFsdWUiKTsKK3Rlc3RTbGlkZXJSZXNldCgic3RlcCIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0ZS1yYW5nZU92ZXJmbG93Lmpz
CmluZGV4IGVlYTI4MWUuLjZiY2FhNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VPdmVyZmxvdy5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdlT3ZlcmZs
b3cuanMKQEAgLTE0NCwzMiArMTQ0LDYgQEAgY2hlY2tPdmVyZmxvdygnMTAxJywgJzEwMCcpOwog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBkZWJ1ZygnJyk7Ci1kZWJ1ZygnVHlwZT1yYW5nZScpOwotaW5wdXQudHlw
ZSA9ICdyYW5nZSc7Ci1pbnB1dC5taW4gPSAnJzsKLWNoZWNrTm90T3ZlcmZsb3coJzk5JywgJzEw
MCcpOyAgLy8gVmVyeSBub3JtYWwgY2FzZS4KLWNoZWNrTm90T3ZlcmZsb3coJy0xMDEnLCAnLTEw
MCcpOwotY2hlY2tOb3RPdmVyZmxvdygnOTknLCAnMUUrMicpOwotY2hlY2tOb3RPdmVyZmxvdygn
MC45OScsICcxLjAwJyk7Ci1jaGVja05vdE92ZXJmbG93KCdhYmMnLCAnMTAwJyk7ICAvLyBJbnZh
bGlkIHZhbHVlLgotY2hlY2tOb3RPdmVyZmxvdygnJywgJy0xJyk7ICAvLyBObyB2YWx1ZS4KLS8v
IFRoZSBmb2xsb3dpbmcgY2FzZSBzaG91bGQgYmUgcmFuZ2VPdmVyZmxvdz09dHJ1ZSBpZGVhbGx5
LiAgQnV0IHRoZSAiZG91YmxlIiB0eXBlIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJlY2lzaW9uLgot
Y2hlY2tOb3RPdmVyZmxvdygnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTknLCAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTgnKTsK
LWlucHV0Lm1pbiA9ICcyMDAnOyAgLy8gSWYgbWluID4gbWF4LCBtYXggaXMgcmVzZXQgdG8gbWlu
LgotY2hlY2tOb3RPdmVyZmxvdygnMTAxJywgJzEwMCcpOwotaW5wdXQubWluID0gJyc7Ci0KLS8v
IE92ZXJmbG93IGNhc2VzCi1jaGVja092ZXJmbG93KCcxMDEnLCAnMTAwJyk7Ci1pbnB1dC5taW4g
PSAnLTIwMCc7Ci1jaGVja092ZXJmbG93KCctOTknLCAnLTEwMCcpOwotaW5wdXQubWluID0gJyc7
Ci1jaGVja092ZXJmbG93KCcxMDEnLCAnMUUrMicpOwotY2hlY2tPdmVyZmxvdygnMTAxJywgJycp
OyAgLy8gTm8gbWF4LgotY2hlY2tPdmVyZmxvdygnMTAxJywgJ3h4eCcpOyAgLy8gSW52YWxpZCBt
YXguCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLWRlYnVnKCcnKTsKIGRlYnVnKCdUeXBlPXRpbWUnKTsKIGlucHV0
LnR5cGUgPSAndGltZSc7CiBpbnB1dC5taW4gPSAnJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3cuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9WYWxpZGl0eVN0YXRlLXJhbmdl
VW5kZXJmbG93LmpzCmluZGV4IDdmZmFkNDMuLjllMWQ0YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL1ZhbGlkaXR5U3RhdGUtcmFuZ2VVbmRlcmZsb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvVmFsaWRpdHlTdGF0
ZS1yYW5nZVVuZGVyZmxvdy5qcwpAQCAtMTU0LDMxICsxNTQsNiBAQCBjaGVja1VuZGVyZmxvdygn
MTAxJywgJzIwMCcpOwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkZWJ1ZygnJyk7Ci1kZWJ1ZygnVHlwZT1yYW5n
ZScpOwotaW5wdXQudHlwZSA9ICdyYW5nZSc7Ci1pbnB1dC5tYXggPSAnJzsKLS8vIE5vIHVuZGVy
ZmxvdyBjYXNlcwotY2hlY2tOb3RVbmRlcmZsb3coJzEwMScsICcxMDAnKTsgIC8vIFZlcnkgbm9y
bWFsIGNhc2UuCi1jaGVja05vdFVuZGVyZmxvdygnLTk5JywgJy0xMDAnKTsKLWNoZWNrTm90VW5k
ZXJmbG93KCcxMDEnLCAnMUUrMicpOwotY2hlY2tOb3RVbmRlcmZsb3coJzEuMDEnLCAnMS4wMCcp
OwotY2hlY2tOb3RVbmRlcmZsb3coJ2FiYycsICcxMDAnKTsgIC8vIEludmFsaWQgdmFsdWUuCi1j
aGVja05vdFVuZGVyZmxvdygnJywgJzEnKTsgIC8vIE5vIHZhbHVlLgotLy8gVGhlIGZvbGxvd2lu
ZyBjYXNlIHNob3VsZCBiZSByYW5nZVVuZGVyZmxvdz09dHJ1ZSBpZGVhbGx5LiAgQnV0IHRoZSAi
ZG91YmxlIiB0eXBlIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJlY2lzaW9uLgotY2hlY2tOb3RVbmRl
cmZsb3coJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4JywgJzAu
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Jyk7Ci1pbnB1dC5tYXgg
PSAnMCc7ICAvLyBJZiBtaW4gPiBtYXgsIG1heCBpcyByZXNldCB0byBtaW4gYW5kIG1pbiBpcyBu
b3QgY2hhbmdlZC4KLWNoZWNrTm90VW5kZXJmbG93KCcxMDEnLCAnMTAwJyk7Ci1pbnB1dC5tYXgg
PSAnJzsKLQotLy8gVW5kZXJmbG93IGNhc2VzCi1jaGVja1VuZGVyZmxvdygnOTknLCAnMTAwJyk7
Ci1jaGVja1VuZGVyZmxvdygnLTEwMScsICctMTAwJyk7Ci1jaGVja1VuZGVyZmxvdygnOTknLCAn
MUUrMicpOwotY2hlY2tVbmRlcmZsb3coJy0xJywgJycpOyAgLy8gTm8gbWluLgotY2hlY2tVbmRl
cmZsb3coJy0xJywgJ3h4eCcpOyAgLy8gSW52YWxpZCBtaW4uCi0KLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRlYnVn
KCcnKTsKIGRlYnVnKCdUeXBlPXRpbWUnKTsKIGlucHV0LnR5cGUgPSAndGltZSc7CiBpbnB1dC5t
YXggPSAnJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3Rz
L2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0
LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwppbmRleCAyYTZlYWY4Li43MzIwNzdjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVw
dXAtc3RlcGRvd24uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
aW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpzCkBAIC0zLDExICszLDE1IEBAIGRlc2NyaXB0aW9uKCdD
aGVjayBzdGVwVXAoKSBhbmQgc3RlcERvd24oKSBiYWhldmlvciBmb3IgdHlwZT1kYXRlLCBkYXRl
dGltZSwgZGF0CiB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwog
dmFyIGludmFsaWRTdGF0ZUVyciA9ICciRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhj
ZXB0aW9uIDExIic7CiAKLWZ1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25h
bFN0ZXBDb3VudCkgewotICAgIGlucHV0LnZhbHVlID0gdmFsdWU7Ci0gICAgaW5wdXQuc3RlcCA9
IHN0ZXA7Ci0gICAgaW5wdXQubWluID0gbnVsbDsKK2Z1bmN0aW9uIHNldElucHV0QXR0cmlidXRl
cyhtaW4sIG1heCwgc3RlcCwgdmFsdWUpIHsKKyAgICBpbnB1dC5taW4gPSBtaW47CiAgICAgaW5w
dXQubWF4ID0gbWF4OworICAgIGlucHV0LnN0ZXAgPSBzdGVwOworICAgIGlucHV0LnZhbHVlID0g
dmFsdWU7Cit9CisKK2Z1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25hbFN0
ZXBDb3VudCkgeworICAgIHNldElucHV0QXR0cmlidXRlcyhudWxsLCBtYXgsIHN0ZXAsIHZhbHVl
KTsKICAgICBpZiAodHlwZW9mIG9wdGlvbmFsU3RlcENvdW50ICE9ICJ1bmRlZmluZWQiKQogICAg
ICAgICBpbnB1dC5zdGVwVXAob3B0aW9uYWxTdGVwQ291bnQpOwogICAgIGVsc2UKQEAgLTE2LDEw
ICsyMCw3IEBAIGZ1bmN0aW9uIHN0ZXBVcCh2YWx1ZSwgc3RlcCwgbWF4LCBvcHRpb25hbFN0ZXBD
b3VudCkgewogfQogCiBmdW5jdGlvbiBzdGVwRG93bih2YWx1ZSwgc3RlcCwgbWluLCBvcHRpb25h
bFN0ZXBDb3VudCkgewotICAgIGlucHV0LnZhbHVlID0gdmFsdWU7Ci0gICAgaW5wdXQuc3RlcCA9
IHN0ZXA7Ci0gICAgaW5wdXQubWluID0gbWluOwotICAgIGlucHV0Lm1heCA9IG51bGw7CisgICAg
c2V0SW5wdXRBdHRyaWJ1dGVzKG1pbiwgbnVsbCwgc3RlcCwgdmFsdWUpOwogICAgIGlmICh0eXBl
b2Ygb3B0aW9uYWxTdGVwQ291bnQgIT0gInVuZGVmaW5lZCIpCiAgICAgICAgIGlucHV0LnN0ZXBE
b3duKG9wdGlvbmFsU3RlcENvdW50KTsKICAgICBlbHNlCkBAIC0yNyw2ICsyOCwyNyBAQCBmdW5j
dGlvbiBzdGVwRG93bih2YWx1ZSwgc3RlcCwgbWluLCBvcHRpb25hbFN0ZXBDb3VudCkgewogICAg
IHJldHVybiBpbnB1dC52YWx1ZTsKIH0KIAorLy8gUmFuZ2UgdmFsdWUgZ2V0cyBhdXRvbWF0aWNh
bGx5IHNoaWZ0ZWQgYmFzZWQgb24gYm91bmRzLAorLy8gU28gYWx3YXlzIHNldCB0aGUgbWluIGFu
ZCBtYXggZmlyc3QgdG8gZ2V0IGV4cGVjdGVkIGJlaGF2aW9yCisKK2Z1bmN0aW9uIHN0ZXBVcEV4
cGxpY2l0Qm91bmRzKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgc3RlcENvdW50KSB7CisgICAgc2V0
SW5wdXRBdHRyaWJ1dGVzKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSk7CisgICAgaWYgKHR5cGVvZiBz
dGVwQ291bnQgIT09ICd1bmRlZmluZWQnKQorICAgICAgICBpbnB1dC5zdGVwVXAoc3RlcENvdW50
KTsKKyAgICBlbHNlCisgICAgICAgIGlucHV0LnN0ZXBVcCgpOworICAgIHJldHVybiBpbnB1dC52
YWx1ZTsKK30KKworZnVuY3Rpb24gc3RlcERvd25FeHBsaWNpdEJvdW5kcyhtaW4sIG1heCwgc3Rl
cCwgdmFsdWUsIHN0ZXBDb3VudCkgeworICAgIHNldElucHV0QXR0cmlidXRlcyhtaW4sIG1heCwg
c3RlcCwgdmFsdWUpOworICAgIGlmICh0eXBlb2Ygc3RlcENvdW50ICE9PSAndW5kZWZpbmVkJykK
KyAgICAgICAgaW5wdXQuc3RlcERvd24oc3RlcENvdW50KTsKKyAgICBlbHNlCisgICAgICAgIGlu
cHV0LnN0ZXBEb3duKCk7CisgICAgcmV0dXJuIGlucHV0LnZhbHVlOworfQorCiBkZWJ1ZygnRGF0
ZSB0eXBlJyk7CiBpbnB1dC50eXBlID0gJ2RhdGUnOwogZGVidWcoJ0ludmFsaWQgdmFsdWUnKTsK
QEAgLTIwMyw2MCArMjI1LDc0IEBAIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsg
aSsrKSB7IGlucHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwCiBkZWJ1ZygnJyk7
CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwogaW5wdXQudHlwZSA9ICdyYW5nZSc7Ci1kZWJ1ZygnSW52
YWxpZCB2YWx1ZScpOwotc2hvdWxkVGhyb3coJ3N0ZXBVcCgiIiwgbnVsbCwgbnVsbCknLCBpbnZh
bGlkU3RhdGVFcnIpOwotc2hvdWxkVGhyb3coJ3N0ZXBEb3duKCIiLCBudWxsLCBudWxsKScsIGlu
dmFsaWRTdGF0ZUVycik7Ci1kZWJ1ZygnTm9uLW51bWJlciBhcmd1bWVudHMnKTsKLXNob3VsZEJl
KCdzdGVwVXAoIjAiLCBudWxsLCBudWxsLCAiMCIpJywgJyIwIicpOwotc2hvdWxkQmUoJ3N0ZXBE
b3duKCIwIiwgbnVsbCwgbnVsbCwgIjAiKScsICciMCInKTsKLXNob3VsZEJlKCdzdGVwVXAoIjAi
LCBudWxsLCBudWxsLCAiZm9vIiknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcERvd24oIjAiLCBu
dWxsLCBudWxsLCAiZm9vIiknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIwIiwgbnVsbCwg
bnVsbCwgbnVsbCknLCAnIjAiJyk7Ci1zaG91bGRCZSgnc3RlcERvd24oIjAiLCBudWxsLCBudWxs
LCBudWxsKScsICciMCInKTsKK2RlYnVnKCdmdW5jdGlvbiBhcmd1bWVudHMgYXJlIChtaW4sIG1h
eCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKScpOworZGVidWcoJ1VzaW5nIHRoZSBkZWZhdWx0
IHZhbHVlcycpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51
bGwsICIiKScsICciNTEiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxs
LCBudWxsLCBudWxsLCAiIiknLCAnIjQ5IicpOworZGVidWcoJ05vbi1udW1iZXIgYXJndW1lbnRz
IChzdGVwQ291bnQpJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVs
bCwgbnVsbCwgIjAiLCAiMCIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRC
b3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAiLCAiMCIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0
ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiwgImZvbyIpJywgJyIwIicp
Oworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjAi
LCAiZm9vIiknLCAnIjAiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwg
bnVsbCwgbnVsbCwgIjAiLCBudWxsKScsICciMCInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxp
Y2l0Qm91bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiwgbnVsbCknLCAnIjAiJyk7CiBkZWJ1Zygn
Tm9ybWFsIGNhc2VzJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIwIiwgbnVsbCwgbnVsbCknLCAnIjEi
Jyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIxIiwgbnVsbCwgbnVsbCwgMiknLCAnIjMiJyk7Ci1zaG91
bGRCZSgnc3RlcFVwKCIzIiwgbnVsbCwgbnVsbCwgLTEpJywgJyIyIicpOwotc2hvdWxkQmUoJ3N0
ZXBEb3duKCIyIiwgbnVsbCwgIi0xMDAiKScsICciMSInKTsKLXNob3VsZEJlKCdzdGVwRG93bigi
MSIsIG51bGwsICItMTAwIiwgMiknLCAnIi0xIicpOwotc2hvdWxkQmUoJ3N0ZXBEb3duKCItMSIs
IG51bGwsICItMTAwIiwgLTEpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91
bmRzKG51bGwsIG51bGwsIG51bGwsICIwIiknLCAnIjEiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhw
bGljaXRCb3VuZHMobnVsbCwgbnVsbCwgbnVsbCwgIjEiLCAyKScsICciMyInKTsKK3Nob3VsZEJl
KCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCBudWxsLCAiMyIsIC0xKScsICciMiIn
KTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKCItMTAwIiwgbnVsbCwgbnVsbCwg
IjIiKScsICciMSInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKCItMTAwIiwg
bnVsbCwgbnVsbCwgIjEiLCAyKScsICciLTEiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNp
dEJvdW5kcygiLTEwMCIsIG51bGwsIG51bGwsICItMSIsIC0xKScsICciMCInKTsKIGRlYnVnKCdF
eHRyYSBhcmd1bWVudHMnKTsKLXNob3VsZEJlKCdpbnB1dC52YWx1ZSA9ICIwIjsgaW5wdXQubWlu
ID0gbnVsbDsgaW5wdXQuc3RlcCA9IG51bGw7IGlucHV0LnN0ZXBVcCgxLCAyKTsgaW5wdXQudmFs
dWUnLCAnIjEiJyk7Ci1zaG91bGRCZSgnaW5wdXQudmFsdWUgPSAiMSI7IGlucHV0LnN0ZXBEb3du
KDEsIDMpOyBpbnB1dC52YWx1ZScsICciMCInKTsKK3Nob3VsZEJlKCdzZXRJbnB1dEF0dHJpYnV0
ZXMobnVsbCwgbnVsbCwgbnVsbCwgIjAiKTsgaW5wdXQuc3RlcFVwKDEsMik7IGlucHV0LnZhbHVl
JywgJyIxIicpOworc2hvdWxkQmUoJ3NldElucHV0QXR0cmlidXRlcyhudWxsLCBudWxsLCBudWxs
LCAiMSIpOyBpbnB1dC5zdGVwRG93bigxLDMpOyBpbnB1dC52YWx1ZScsICciMCInKTsKIGRlYnVn
KCdJbnZhbGlkIHN0ZXAgdmFsdWUnKTsKLXNob3VsZEJlKCdzdGVwVXAoIjAiLCAiZm9vIiwgbnVs
bCknLCAnIjEiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIxIiwgIjAiLCBudWxsKScsICciMiInKTsK
LXNob3VsZEJlKCdzdGVwVXAoIjIiLCAiLTEiLCBudWxsKScsICciMyInKTsKK3Nob3VsZEJlKCdz
dGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiZm9vIiwgIjAiKScsICciMSInKTsKK3No
b3VsZEJlKCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMCIsICIxIiknLCAnIjIi
Jyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgIi0xIiwgIjIi
KScsICciMyInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGws
ICJmb28iLCAiMSIpJywgJyIwIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMo
bnVsbCwgbnVsbCwgIjAiLCAiMiIpJywgJyIxIicpOworc2hvdWxkQmUoJ3N0ZXBEb3duRXhwbGlj
aXRCb3VuZHMobnVsbCwgbnVsbCwgIi0xIiwgIjMiKScsICciMiInKTsKIGRlYnVnKCdTdGVwPWFu
eScpOwotc2hvdWxkVGhyb3coJ3N0ZXBVcCgiMCIsICJhbnkiLCBudWxsKScsIGludmFsaWRTdGF0
ZUVycik7Ci1zaG91bGRUaHJvdygnc3RlcERvd24oIjAiLCAiYW55IiwgbnVsbCknLCBpbnZhbGlk
U3RhdGVFcnIpOworc2hvdWxkVGhyb3coJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGws
ICJhbnkiLCAiMSIpJywgaW52YWxpZFN0YXRlRXJyKTsKK3Nob3VsZFRocm93KCdzdGVwRG93bkV4
cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsICJhbnkiLCAiMSIpJywgaW52YWxpZFN0YXRlRXJyKTsK
IGRlYnVnKCdPdmVyZmxvdy91bmRlcmZsb3cnKTsKLXNob3VsZEJlKCdzdGVwRG93bigiMSIsICIx
IiwgIjAiKScsICciMCInKTsKLXNob3VsZFRocm93KCdzdGVwRG93bigiMCIsICIxIiwgIjAiKScs
IGludmFsaWRTdGF0ZUVycik7Ci1zaG91bGRUaHJvdygnc3RlcERvd24oIjEiLCAiMSIsICIwIiwg
MiknLCBpbnZhbGlkU3RhdGVFcnIpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51
bGwsICIxMDAiLCAiMSIsICI5OSIpJywgJyIxMDAiJyk7CitzaG91bGRUaHJvdygnc3RlcFVwRXhw
bGljaXRCb3VuZHMobnVsbCwgIjEwMCIsICIxIiwgIjEwMCIpJywgaW52YWxpZFN0YXRlRXJyKTsK
K3Nob3VsZEJlKCdpbnB1dC52YWx1ZScsICciMTAwIicpOworc2hvdWxkVGhyb3coJ3N0ZXBVcEV4
cGxpY2l0Qm91bmRzKG51bGwsICIxMDAiLCAiMSIsICI5OSIsICIyIiknLCBpbnZhbGlkU3RhdGVF
cnIpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyI5OSInKTsKK3Nob3VsZEJlKCdzdGVwRG93
bkV4cGxpY2l0Qm91bmRzKCIwIiwgbnVsbCwgIjEiLCAiMSIpJywgJyIwIicpOworc2hvdWxkVGhy
b3coJ3N0ZXBEb3duRXhwbGljaXRCb3VuZHMoIjAiLCBudWxsLCAiMSIsICIwIiknLCBpbnZhbGlk
U3RhdGVFcnIpOworc2hvdWxkQmUoJ2lucHV0LnZhbHVlJywgJyIwIicpOworc2hvdWxkVGhyb3co
J3N0ZXBEb3duRXhwbGljaXRCb3VuZHMoIjAiLCBudWxsLCAiMSIsICIxIiwgIjIiKScsIGludmFs
aWRTdGF0ZUVycik7CiBzaG91bGRCZSgnaW5wdXQudmFsdWUnLCAnIjEiJyk7Ci1zaG91bGRUaHJv
dygnc3RlcERvd24oIjEiLCAiMS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgiLCAiIiwgMiknLCBpbnZh
bGlkU3RhdGVFcnIpOwotc2hvdWxkQmUoJ2lucHV0Lm1pbiA9ICItMTAwIjsgc3RlcFVwKCItMSIs
ICIxIiwgIjAiKScsICciMCInKTsKLXNob3VsZFRocm93KCdzdGVwVXAoIjAiLCAiMSIsICIwIikn
LCBpbnZhbGlkU3RhdGVFcnIpOwotc2hvdWxkVGhyb3coJ2lucHV0Lm1pbiA9ICItMTAwIjsgc3Rl
cFVwKCItMSIsICIxIiwgIjAiLCAyKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRUaHJvdygn
c3RlcERvd25FeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAiMS43OTc2OTMxMzQ4NjIzMTU2ZSsz
MDgiLCAiMSIsICIyIiknLCBpbnZhbGlkU3RhdGVFcnIpOworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxp
Y2l0Qm91bmRzKC0xMDAsIDAsIDEsIC0xKScsICciMCInKTsKK3Nob3VsZFRocm93KCdzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCAwLCAxLCAwKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRU
aHJvdygnc3RlcFVwRXhwbGljaXRCb3VuZHMoLTEwMCwgMCwgMSwgLTEsIDIpJywgaW52YWxpZFN0
YXRlRXJyKTsKIHNob3VsZEJlKCdpbnB1dC52YWx1ZScsICciLTEiJyk7Ci1zaG91bGRUaHJvdygn
c3RlcFVwKCIxIiwgIjEuNzk3NjkzMTM0ODYyMzE1NmUrMzA4IiwgIiIsIDIpJywgaW52YWxpZFN0
YXRlRXJyKTsKK3Nob3VsZFRocm93KCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAi
MS43OTc2OTMxMzQ4NjIzMTU2ZSszMDgiLCAiMSIsICIyIiknLCBpbnZhbGlkU3RhdGVFcnIpOwog
ZGVidWcoJ3N0ZXBEb3duKCkvc3RlcFVwKCkgZm9yIHN0ZXBNaXNtYXRjaCB2YWx1ZXMnKTsKLXNo
b3VsZEJlKCdzdGVwVXAoIjEiLCAiMiIsICIiKScsICciNCInKTsKK3Nob3VsZEJlKCdzdGVwVXBF
eHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAyLCAxKScsICciNCInKTsKIHNob3VsZEJlKCdpbnB1
dC5zdGVwRG93bigpOyBpbnB1dC52YWx1ZScsICciMiInKTsKLXNob3VsZEJlKCdpbnB1dC5taW4g
PSAiMCI7IHN0ZXBVcCgiOSIsICIxMCIsICIiLCA5KScsICciMTAwIicpOwotc2hvdWxkQmUoJ3N0
ZXBEb3duKCIxOSIsICIxMCIsICIwIiknLCAnIjEwIicpOwotLy8gdmFsdWUgKyBzdGVwIGlzIDw9
IG1heCwgYnV0IHJvdW5kZWQgcmVzdWx0IHdvdWxkIGJlID4gbWF4Lgotc2hvdWxkVGhyb3coJ3N0
ZXBVcCgiODkiLCAiMTAiLCAiOTkiKScsIGludmFsaWRTdGF0ZUVycik7CitzaG91bGRCZSgnc3Rl
cFVwRXhwbGljaXRCb3VuZHMoMCwgbnVsbCwgMTAsIDksIDkpJywgJyIxMDAiJyk7CitzaG91bGRC
ZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcygwLCBudWxsLCAxMCwgMTkpJywgJyIxMCInKTsKK2Rl
YnVnKCd2YWx1ZSArIHN0ZXAgaXMgPD0gbWF4LCBidXQgcm91bmRlZCByZXN1bHQgd291bGQgYmUg
PiBtYXguJyk7CitzaG91bGRUaHJvdygnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgOTksIDEw
LCA4OSknLCBpbnZhbGlkU3RhdGVFcnIpOwogZGVidWcoJ0h1Z2UgdmFsdWUgYW5kIHNtYWxsIHN0
ZXAnKTsKLXNob3VsZEJlKCdpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMWUrMzA4IiwgIjEiLCAi
MWUrMzA4IiwgOTk5OTk5KScsICciMWUrMzA4IicpOwotc2hvdWxkQmUoJ2lucHV0Lm1heCA9ICIx
ZSszMDgiOyBpbnB1dC5taW4gPSAiMCI7IGlucHV0LnN0ZXAgPSAiMSI7IGlucHV0LnZhbHVlID0g
IjFlKzMwOCI7IGlucHV0LnN0ZXBEb3duKDk5OTk5OSk7IGlucHV0LnZhbHVlJywgJyIxZSszMDgi
Jyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMWUzMDgsIDEsIDFlMzA4LCA5
OTk5OTkpJywgJyIxZSszMDgiJyk7CitzaG91bGRCZSgnc3RlcERvd25FeHBsaWNpdEJvdW5kcygw
LCAxZTMwOCwgMSwgMWUzMDgsIDk5OTk5OSknLCAnIjFlKzMwOCInKTsKIGRlYnVnKCdGcmFjdGlv
bmFsIG51bWJlcnMnKTsKLXNob3VsZEJlKCdpbnB1dC5taW4gPSAiIjsgc3RlcFVwKCIwIiwgIjAu
MzMzMzMzMzMzMzMzMzMzMzMiLCAiIiwgMyknLCAnIjEiJyk7Ci1zaG91bGRCZSgnc3RlcFVwKCIx
IiwgIjAuMSIsICIiLCAxMCknLCAnIjIiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3Vu
ZHMobnVsbCwgbnVsbCwgMC4zMzMzMzMzMzMzMzMzMzMzMywgMCwgMyknLCAnIjEiJyk7CitzaG91
bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMobnVsbCwgbnVsbCwgMC4xLCAxKScsICciMS4xIicp
Oworc2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwgMSwgOCkn
LCAnIjEuOCInKTsKK3Nob3VsZEJlKCdzdGVwVXBFeHBsaWNpdEJvdW5kcyhudWxsLCBudWxsLCAw
LjEsIDEsIDEwKScsICciMiInKTsKIHNob3VsZEJlKCdpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBV
cCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQudmFsdWUnLCAnIjMiJyk7Ci1zaG91bGRCZSgnaW5w
dXQubWluID0gIjAiOyBzdGVwVXAoIjAiLCAiMC4wMDM5MjE1Njg2Mjc0NTA5ODAiLCAiMSIsIDI1
NSknLCAnIjEiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoMCwgMSwgMC4wMDM5
MjE1Njg2Mjc0NTA5ODAsIDAsIDI1NSknLCAnIjEiJyk7CiBzaG91bGRCZSgnZm9yICh2YXIgaSA9
IDA7IGkgPCAyNTU7IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZScsICci
MCInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGwsIG51bGwsIDAuMSwg
MSwgOCknLCAnIjAuMiInKTsKK3Nob3VsZEJlKCdzdGVwRG93bkV4cGxpY2l0Qm91bmRzKG51bGws
IG51bGwsIDAuMSwgMSknLCAnIjAuOSInKTsKIAogZGVidWcoJycpOwogZGVidWcoJ1RpbWUgdHlw
ZScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmFs
aWRhdGlvbk1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92
YWxpZGF0aW9uTWVzc2FnZS5qcwppbmRleCAwNmM3YTc0Li5kNjgyNmRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92YWxpZGF0aW9uTWVzc2FnZS5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92YWxpZGF0aW9uTWVzc2Fn
ZS5qcwpAQCAtMzIsMjQgKzMyLDYgQEAgZW1haWxJbnB1dC52YWx1ZSA9ICJpbmNvcnJlY3RWYWx1
ZSI7CiBmb3JtLmFwcGVuZENoaWxkKGVtYWlsSW5wdXQpOwogc2hvdWxkQmUoImVtYWlsSW5wdXQu
dmFsaWRhdGlvbk1lc3NhZ2UiLCAiJ3R5cGUgbWlzbWF0Y2gnIik7CiAKLS8vIEEgInJhbmdlZCIg
aW5wdXQgZm9yICJyYW5nZSB1bmRlcmZsb3ciIGZsYWcKLXZhciB1bmRlcklucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLXVuZGVySW5wdXQubmFtZSA9ICJ1bmRlcklucHV0
IjsKLXVuZGVySW5wdXQudHlwZSA9ICJyYW5nZSI7Ci11bmRlcklucHV0Lm1pbiA9ICIyIjsKLXVu
ZGVySW5wdXQudmFsdWUgPSAiMSI7Ci1mb3JtLmFwcGVuZENoaWxkKHVuZGVySW5wdXQpOwotc2hv
dWxkQmUoInVuZGVySW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UiLCAiJ3JhbmdlIHVuZGVyZmxvdyci
KTsKLQotLy8gQSAicmFuZ2VkIiBpbnB1dCBmb3IgInJhbmdlIG92ZXJmbG93IiBmbGFnCi12YXIg
b3ZlcklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLW92ZXJJbnB1dC5u
YW1lID0gIm92ZXJJbnB1dCI7Ci1vdmVySW5wdXQudHlwZSA9ICJyYW5nZSI7Ci1vdmVySW5wdXQu
bWF4ID0gIjIiOwotb3ZlcklucHV0LnZhbHVlID0gIjMiOwotZm9ybS5hcHBlbmRDaGlsZChvdmVy
SW5wdXQpOwotc2hvdWxkQmUoIm92ZXJJbnB1dC52YWxpZGF0aW9uTWVzc2FnZSIsICIncmFuZ2Ug
b3ZlcmZsb3cnIik7Ci0KIC8vIEEgYnV0dG9uIGNhbid0IGJlIHZhbGl0ZWQgYW5kLCB0aHVzLCBo
YXMgYSBibGFuayB2YWxpZGF0aW9uTWVzc2FnZQogdmFyIGJ1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJ1dHRvbiIpOwogYnV0Lm5hbWUgPSAiYnV0dG9uIjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbk1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKaW5kZXggMTcy
ZmRiOS4uMGUxMmQ4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0
aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxp
ZGF0aW9uTWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTcsOCArNyw2IEBAIFBBU1MgcGF0dGVybklu
cHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICdwYXR0ZXJuIG1pc21hdGNoJwogUEFTUyByZXF1aXJl
ZElucHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICd2YWx1ZSBtaXNzaW5nJwogUEFTUyByZXF1aXJl
ZFRleHRBcmVhLnZhbGlkYXRpb25NZXNzYWdlIGlzICd2YWx1ZSBtaXNzaW5nJwogUEFTUyBlbWFp
bElucHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICd0eXBlIG1pc21hdGNoJwotUEFTUyB1bmRlcklu
cHV0LnZhbGlkYXRpb25NZXNzYWdlIGlzICdyYW5nZSB1bmRlcmZsb3cnCi1QQVNTIG92ZXJJbnB1
dC52YWxpZGF0aW9uTWVzc2FnZSBpcyAncmFuZ2Ugb3ZlcmZsb3cnCiBQQVNTIGJ1dC52YWxpZGF0
aW9uTWVzc2FnZSBpcyAnJwogUEFTUyBhbm9uaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgaXMgJycK
IFBBU1MgaGFwcHlGaWVsZHNldC52YWxpZGF0aW9uTWVzc2FnZSBpcyAnJwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MzZjYjczLi5kNmZl
MzNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtNSw2ICs1LDMxIEBACiAgICAgICAgIDxpbnB1dCB0eXBlPXJhbmdlPiBkb2VzIG5vdCB2
YWxpZGF0ZSBjb3JyZWN0bHkgd2l0aG91dCBhIHJlbmRlcmVyIGFuZCB0aGUgdGVzdHMgYXJlIGlu
Y29ycmVjdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzYyNTkKIAorICAgICAgICBTZXR0aW5nIHZhbHVlIGF0dHJpYnV0ZSBvbiBhbiA8aW5wdXQgdHlw
ZT1yYW5nZT4gdG8gYW4gb3V0LW9mLXJhbmdlIHZhbHVlIGZpcmVzIG9uaW5wdXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTkwCisKKyAgICAgICAg
UGFydCAyOiBXaGVuIHNldHRpbmcgdGhlIHJhbmdlIGVsZW1lbnQncyB2YWx1ZSwgb3ZlcmZsb3dz
IGFuZCB1bmRlcmZsb3dzCisgICAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IHNhbml0aXplZCB0byB2
YWxpZCB2YWx1ZXMuIE1vdmVkIHRoZSBnZW5lcmFsIGNhc2UKKyAgICAgICAgc2FuaXRpemF0aW9u
IGNvZGUgb3V0IG9mIHRoZSBSZW5kZXJlciBpbnRvIEhUTUxJbnB1dEVsZW1lbnQ6OnNhbml0aXpl
VmFsdWUuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dmFsdWUpOiB3aGVuIGdldHRpbmcgYSBkZWZhdWx0
IHZhbHVlIG9uIHJlc2V0KCkgZW5zdXJlIHRoZSBkZWZhdWx0VmFsdWUgaXMgcHJvdmlkZWQKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNhbml0aXplVmFsdWUpOiBjbGFtcCB0
aGUgdmFsdWUgd2l0aGluIHRoZSBtYXgvbWluL3N0ZXAgcmFuZ2UgY29uc3RyYWludHMKKyAgICAg
ICAgKiBodG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0
ZXBSYW5nZSk6IGFsbG93IGNvbnN0IGVsZW1lbnQgaW4gdGhlIGNvbnN0cnVjdG9yCisgICAgICAg
IChXZWJDb3JlOjpTdGVwUmFuZ2U6OmNsYW1wVmFsdWUpOiBjbGFtcCBmcm9tIGEgU3RyaW5nIHZh
bHVlCisgICAgICAgICogaHRtbC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBS
YW5nZTo6ZGVmYXVsdFZhbHVlKTogZWFzeSBjYWxjdWxhdGlvbiBvZiB0aGUgZGVmYXVsdCB2YWx1
ZSBmb3IgbWF4L21pbi9zdGVwIHJhbmdlIGNvbnN0cmFpbnRzCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KTogbm8gbG9uZ2VyIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlIHNhbml0aXph
dGlvbiBpbiB0aGUgcmVuZGVyZXIKKworMjAxMC0wMy0xOCAgSm9zZXBoIFBlY29yYXJvICA8am9l
cGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDxpbnB1dCB0eXBlPXJhbmdlPiBkb2VzIG5vdCB2YWxpZGF0ZSBjb3JyZWN0bHkg
d2l0aG91dCBhIHJlbmRlcmVyIGFuZCB0aGUgdGVzdHMgYXJlIGluY29ycmVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNTkKKwogICAgICAgICBQ
YXJ0IDE6IFJlZmFjdG9yaW5nIHRoZSBTbGlkZXJSYW5nZSBzdHJ1Y3Qgb3V0IG9mIHJlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIKICAgICAgICAgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2UuIENo
YW5nZWQgdGhlIG5hbWVkIHRvIFN0ZXBSYW5nZS4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGJkYzI3ZDYuLjVmOGEzYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNs
dWRlICJTdGVwUmFuZ2UuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiVGV4
dEV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTMwOSwxMiArMzEwLDEzIEBA
IGJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogICAgIGNhc2Ug
REFURVRJTUVMT0NBTDoKICAgICBjYXNlIE1PTlRIOgogICAgIGNhc2UgTlVNQkVSOgotICAgIGNh
c2UgUkFOR0U6CiAgICAgY2FzZSBUSU1FOgogICAgIGNhc2UgV0VFSzogewogICAgICAgICBkb3Vi
bGUgZG91YmxlVmFsdWUgPSBwYXJzZVRvRG91YmxlKHZhbHVlKCksIG5hbik7CiAgICAgICAgIHJl
dHVybiBpc2Zpbml0ZShkb3VibGVWYWx1ZSkgJiYgZG91YmxlVmFsdWUgPCBtaW5pbXVtKCk7CiAg
ICAgfQorICAgIGNhc2UgUkFOR0U6IC8vIEd1YXJlbnRlZWQgYnkgc2FuaXRpemF0aW9uLgorICAg
ICAgICBBU1NFUlQocGFyc2VUb0RvdWJsZSh2YWx1ZSgpLCBuYW4pIDw9IG1heGltdW0oKSk7CiAg
ICAgY2FzZSBCVVRUT046CiAgICAgY2FzZSBDSEVDS0JPWDoKICAgICBjYXNlIENPTE9SOgpAQCAt
MzQ1LDEyICszNDcsMTMgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkg
Y29uc3QKICAgICBjYXNlIERBVEVUSU1FTE9DQUw6CiAgICAgY2FzZSBNT05USDoKICAgICBjYXNl
IE5VTUJFUjoKLSAgICBjYXNlIFJBTkdFOgogICAgIGNhc2UgVElNRToKICAgICBjYXNlIFdFRUs6
IHsKICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VUb0RvdWJsZSh2YWx1ZSgpLCBu
YW4pOwotICAgICAgICByZXR1cm4gaXNmaW5pdGUoZG91YmxlVmFsdWUpICYmIGRvdWJsZVZhbHVl
ID4gIG1heGltdW0oKTsKKyAgICAgICAgcmV0dXJuIGlzZmluaXRlKGRvdWJsZVZhbHVlKSAmJiBk
b3VibGVWYWx1ZSA+IG1heGltdW0oKTsKICAgICB9CisgICAgY2FzZSBSQU5HRTogLy8gR3VhcmVu
dGVlZCBieSBzYW5pdGl6YXRpb24uCisgICAgICAgIEFTU0VSVChwYXJzZVRvRG91YmxlKHZhbHVl
KCksIG5hbikgPD0gbWF4aW11bSgpKTsKICAgICBjYXNlIEJVVFRPTjoKICAgICBjYXNlIENIRUNL
Qk9YOgogICAgIGNhc2UgQ09MT1I6CkBAIC01MDMsNyArNTA2LDggQEAgYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAogICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsK
ICAgICBjYXNlIFJBTkdFOgogICAgICAgICAvLyBzdGVwTWlzbWF0Y2ggZG9lc24ndCBvY2N1ciBm
b3IgUkFOR0UuIFJlbmRlclNsaWRlciBndWFyYW50ZWVzIHRoZQotICAgICAgICAvLyB2YWx1ZSBt
YXRjaGVzIHRvIHN0ZXAuCisgICAgICAgIC8vIHZhbHVlIG1hdGNoZXMgdG8gc3RlcCBvbiB1c2Vy
IGlucHV0LCBhbmQgc2FuaXRhdGlvbiB0YWtlcyBjYXJlCisgICAgICAgIC8vIG9mIHRoZSBnZW5l
cmFsIGNhc2UuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIE5VTUJFUjogewogICAg
ICAgICBkb3VibGUgZG91YmxlVmFsdWU7CkBAIC0xNDgyLDEwICsxNDg2LDE2IEBAIFN0cmluZyBI
VE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiAgICAgU3RyaW5nIHZhbHVlID0gbV9kYXRh
LnZhbHVlKCk7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAgIHZhbHVlID0gc2Fu
aXRpemVWYWx1ZShnZXRBdHRyaWJ1dGUodmFsdWVBdHRyKSk7Ci0KLSAgICAgICAgLy8gSWYgbm8g
YXR0cmlidXRlIGV4aXN0cywgdGhlbiBqdXN0IHVzZSAib24iIG9yICIiIGJhc2VkIG9mZiB0aGUg
Y2hlY2tlZCgpIHN0YXRlIG9mIHRoZSBjb250cm9sLgotICAgICAgICBpZiAodmFsdWUuaXNOdWxs
KCkgJiYgKGlucHV0VHlwZSgpID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElPKSkK
LSAgICAgICAgICAgIHJldHVybiBjaGVja2VkKCkgPyAib24iIDogIiI7CisgICAgICAgIAorICAg
ICAgICAvLyBJZiBubyBhdHRyaWJ1dGUgZXhpc3RzLCBleHRyYSBoYW5kbGluZyBtYXkgYmUgbmVj
ZXNzYXJ5LgorICAgICAgICAvLyBGb3IgQ2hlY2tib3ggVHlwZXMganVzdCB1c2UgIm9uIiBvciAi
IiBiYXNlZCBvZmYgdGhlIGNoZWNrZWQoKSBzdGF0ZSBvZiB0aGUgY29udHJvbC4KKyAgICAgICAg
Ly8gRm9yIGEgUmFuZ2UgSW5wdXQgdXNlIHRoZSBjYWxjdWxhdGVkIGRlZmF1bHQgdmFsdWUuCisg
ICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkgeworICAgICAgICAgICAgaWYgKGlucHV0VHlwZSgp
ID09IENIRUNLQk9YIHx8IGlucHV0VHlwZSgpID09IFJBRElPKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkKCkgPyAib24iIDogIiI7CisgICAgICAgICAgICBlbHNlIGlmIChpbnB1dFR5
cGUoKSA9PSBSQU5HRSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVy
VHlwZShTdGVwUmFuZ2UodGhpcykuZGVmYXVsdFZhbHVlKCkpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMjQ5Miw2ICsyNTAyLDEzIEBAIFN0cmluZyBIVE1MSW5w
dXRFbGVtZW50OjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29u
c3QKIHsKICAgICBpZiAoaXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuIElucHV0RWxlbWVu
dDo6c2FuaXRpemVWYWx1ZSh0aGlzLCBwcm9wb3NlZFZhbHVlKTsKKworICAgIC8vIElmIHRoZSBw
cm9wb3NlZFZhbHVlIGlzIG51bGwgdGhhbiB0aGlzIGlzIGEgcmVzZXQgc2NlbmFyaW8gYW5kIHdl
CisgICAgLy8gd2FudCB0aGUgcmFuZ2UgaW5wdXQncyB2YWx1ZSBhdHRyaWJ1dGUgdG8gdGFrZSBw
cmlvcml0eSBvdmVyIHRoZQorICAgIC8vIGNhbGN1bGF0ZWQgZGVmYXVsdCAobWlkZGxlKSB2YWx1
ZS4KKyAgICBpZiAoaW5wdXRUeXBlKCkgPT0gUkFOR0UgJiYgIXByb3Bvc2VkVmFsdWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKFN0ZXBSYW5nZSh0aGlz
KS5jbGFtcFZhbHVlKHByb3Bvc2VkVmFsdWUpKTsKKwogICAgIHJldHVybiBwcm9wb3NlZFZhbHVl
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1dlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4IDc4ZjAzNjUuLjZhYjk1MmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3Bw
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzEsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVN0ZXBSYW5nZTo6U3RlcFJhbmdlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitTdGVwUmFu
Z2U6OlN0ZXBSYW5nZShjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlm
IChlbGVtZW50LT5oYXNBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cikpIHsKICAgICAgICAgc3RlcCA9
IDEuMDsKQEAgLTU3LDYgKzU4LDE1IEBAIGRvdWJsZSBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoZG91
YmxlIHZhbHVlKQogICAgIHJldHVybiBjbGFtcGVkVmFsdWU7CiB9CiAKK2RvdWJsZSBTdGVwUmFu
Z2U6OmNsYW1wVmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSkKK3sKKyAgICBkb3VibGUg
b2xkVmFsdWU7CisgICAgYm9vbCBwYXJzZVN1Y2Nlc3MgPSBIVE1MSW5wdXRFbGVtZW50OjpwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmdWYWx1ZSwgJm9sZFZhbHVlKTsKKyAgICBpZiAo
IXBhcnNlU3VjY2VzcykKKyAgICAgICAgb2xkVmFsdWUgPSAobWluaW11bSArIG1heGltdW0pIC8g
MjsKKyAgICByZXR1cm4gY2xhbXBWYWx1ZShvbGRWYWx1ZSk7Cit9CisKIGRvdWJsZSBTdGVwUmFu
Z2U6OnZhbHVlRnJvbUVsZW1lbnQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCogd2Fz
Q2xhbXBlZCkKIHsKICAgICBkb3VibGUgb2xkVmFsdWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvU3RlcFJhbmdlLmggYi9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggN2IyMzg4ZS4u
NWJjNmE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCisrKyBiL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuaApAQCAtMjQsMTUgKzI0LDIzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBTdHJpbmc7CiAKIHN0cnVjdCBT
dGVwUmFuZ2UgewogICAgIGJvb2wgaGFzU3RlcDsKICAgICBkb3VibGUgc3RlcDsKICAgICBkb3Vi
bGUgbWluaW11bTsKLSAgICBkb3VibGUgbWF4aW11bTsgIC8vIG1heGltdW0gbXVzdCBiZSA+PSBt
aW5pbXVtLgorICAgIGRvdWJsZSBtYXhpbXVtOyAvLyBtYXhpbXVtIG11c3QgYmUgPj0gbWluaW11
bS4KIAotICAgIGV4cGxpY2l0IFN0ZXBSYW5nZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgZXhw
bGljaXQgU3RlcFJhbmdlKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqKTsKICAgICBkb3VibGUgY2xh
bXBWYWx1ZShkb3VibGUgdmFsdWUpOworICAgIGRvdWJsZSBjbGFtcFZhbHVlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nVmFsdWUpOworCisgICAgLy8gQ2xhbXAgdGhlIG1pZGRsZSB2YWx1ZSBhY2NvcmRp
bmcgdG8gdGhlIHN0ZXAKKyAgICBkb3VibGUgZGVmYXVsdFZhbHVlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBjbGFtcFZhbHVlKChtaW5pbXVtICsgbWF4aW11bSkgLyAyKTsKKyAgICB9CiAKICAg
ICAvLyBNYXAgdmFsdWUgaW50byAwLTEgcmFuZ2UKICAgICBkb3VibGUgcHJvcG9ydGlvbkZyb21W
YWx1ZShkb3VibGUgdmFsdWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCBmYzdm
NDJkLi5mZmNhY2YxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKQEAgLTI5NiwxNSAr
Mjk2LDYgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OmxheW91dCgpCiAKIHZvaWQgUmVuZGVyU2xpZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiB7Ci0gICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwotCi0gICAgLy8gU2VuZCB0
aGUgdmFsdWUgYmFjayB0byB0aGUgZWxlbWVudCBpZiB0aGUgcmFuZ2UgY2hhbmdlcyBpdC4KLSAg
ICBTdGVwUmFuZ2UgcmFuZ2UoZWxlbWVudCk7Ci0gICAgYm9vbCBjbGFtcGVkOwotICAgIGRvdWJs
ZSB2YWx1ZSA9IHJhbmdlLnZhbHVlRnJvbUVsZW1lbnQoZWxlbWVudCwgJmNsYW1wZWQpOwotICAg
IGlmIChjbGFtcGVkKQotICAgICAgICBlbGVtZW50LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihIVE1M
SW5wdXRFbGVtZW50OjpzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7Ci0KICAgICAvLyBM
YXlvdXQgd2lsbCB0YWtlIGNhcmUgb2YgdGhlIHRodW1iJ3Mgc2l6ZSBhbmQgcG9zaXRpb24uCiAg
ICAgaWYgKCFtX3RodW1iKSB7CiAgICAgICAgIG1fdGh1bWIgPSBuZXcgU2xpZGVyVGh1bWJFbGVt
ZW50KGRvY3VtZW50KCksIG5vZGUoKSk7Cg==
</data>
<flag name="review"
          id="34329"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>