<?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>67563</bug_id>
          
          <creation_ts>2011-09-03 09:22:44 -0700</creation_ts>
          <short_desc>SVGAnimatedType should support SVGAnimatedIntegerOptionalInteger animation</short_desc>
          <delta_ts>2012-03-27 01:31:26 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>12437</dependson>
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>longsonr</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461824</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-03 09:22:44 -0700</bug_when>
    <thetext>SVGAnimatedType should support SVGAnimatedIntegerOptionalInteger animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461827</commentid>
    <comment_count>1</comment_count>
      <attachid>106263</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-03 09:42:44 -0700</bug_when>
    <thetext>Created attachment 106263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461828</commentid>
    <comment_count>2</comment_count>
      <attachid>106264</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-03 10:16:37 -0700</bug_when>
    <thetext>Created attachment 106264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461829</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-03 10:19:05 -0700</bug_when>
    <thetext>Attachment 106264 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 15 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>461831</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-03 10:25:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 106264 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.h:43:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Total errors found: 14 in 15 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

They are false negatives. See discussion &apos;RefPtr/PassRefPtr Question&apos; on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461947</commentid>
    <comment_count>5</comment_count>
      <attachid>106263</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-09-04 05:36:17 -0700</bug_when>
    <thetext>Comment on attachment 106263
Patch

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

Looks good, still some caveats. Also EWS doesn&apos;t like the patch, outdated?

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests. Existing tests verify the correct behavior.
&gt; +

Would be great if you could name the tests here, makes my life easier.

&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:46
&gt; +    animatedIntegerPair.first = static_cast&lt;int&gt;(roundf(value1));
&gt; +    animatedIntegerPair.second = static_cast&lt;int&gt;(roundf(value2));

Is this rounding desired? Shouldn&apos;t we rather have a parseIntegerOptionalInteger function, that at least encapsulates this, if needed at all.

&gt; Source/WebCore/svg/SVGAnimatedType.cpp:398
&gt; +        ASSERT(m_data.integerOptionalInteger);
&gt; +        float value1 = m_data.numberOptionalNumber-&gt;first;
&gt; +        float value2 = m_data.numberOptionalNumber-&gt;second;
&gt; +        parseNumberOptionalNumber(value, value1, value2);
&gt; +        m_data.numberOptionalNumber-&gt;first = static_cast&lt;int&gt;(roundf(value1));
&gt; +        m_data.numberOptionalNumber-&gt;second = static_cast&lt;int&gt;(roundf(value2));

Hm, why are you storing this in numberOptionalNumber? I&apos;m slightly confused by this.
Also the parseNumberOptionalNumber usage is awkward, as I said above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462391</commentid>
    <comment_count>6</comment_count>
      <attachid>106263</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-06 00:12:28 -0700</bug_when>
    <thetext>Comment on attachment 106263
Patch

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

To the apply problem. Xcode seems to change a lot in the last day. The next patch might seem to have the same problem on mac build bot, since this bot is the slowest and takes sometimes hours to test the patch. But I&apos;m testing on Mac. I&apos;ll fix Xcode right before landing. Also, it seems you reviewed the wrong patch. The second patch build on all bots (just fix of Xcode project file).

Uploading a new patch shortly.

&gt;&gt; Source/WebCore/svg/SVGAnimatedIntegerOptionalInteger.cpp:46
&gt;&gt; +    animatedIntegerPair.second = static_cast&lt;int&gt;(roundf(value2));
&gt; 
&gt; Is this rounding desired? Shouldn&apos;t we rather have a parseIntegerOptionalInteger function, that at least encapsulates this, if needed at all.

I checked it on FF and Opera with filterRes during implementing filterRes, they rounded the values as well. Because we get the content of the from/to/by/values here directly we have to round. I can of course add a new function in SVGParseUttilities that is doing it instead.

&gt;&gt; Source/WebCore/svg/SVGAnimatedType.cpp:398
&gt;&gt; +        m_data.numberOptionalNumber-&gt;second = static_cast&lt;int&gt;(roundf(value2));
&gt; 
&gt; Hm, why are you storing this in numberOptionalNumber? I&apos;m slightly confused by this.
&gt; Also the parseNumberOptionalNumber usage is awkward, as I said above.

That&apos;s wrong. I&apos;ll fix it. I wonder why the DRT tests didn&apos;t fire. Checking it and may write a new test to cover this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462409</commentid>
    <comment_count>7</comment_count>
    <who name="Robert Longson">longsonr</who>
    <bug_when>2011-09-06 00:52:19 -0700</bug_when>
    <thetext>&gt; I checked it on FF and Opera with filterRes during implementing filterRes, they rounded the values as well. Because we get the content of the from/to/by/values here directly we have to round. I can of course add a new function in SVGParseUttilities that is doing it instead.

Firefox doesn&apos;t round the values, it doesn&apos;t accept non-integer values when parsing. This is wrong per spec, Opera does it the spec way but it seems rather inconsistent that integer types enforce integer parsing but integer-optional-integer don&apos;t. Should probably be raised with w3c really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462421</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-06 01:18:37 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; I checked it on FF and Opera with filterRes during implementing filterRes, they rounded the values as well. Because we get the content of the from/to/by/values here directly we have to round. I can of course add a new function in SVGParseUttilities that is doing it instead.
&gt; 
&gt; Firefox doesn&apos;t round the values, it doesn&apos;t accept non-integer values when parsing. This is wrong per spec, Opera does it the spec way but it seems rather inconsistent that integer types enforce integer parsing but integer-optional-integer don&apos;t. Should probably be raised with w3c really.

To be exact, just &apos;filterRes&apos; has an explanation what to do with numbers != integer:

&quot;Non-integer values are truncated, i.e rounded to the closest integer value towards zero.&quot;

The order attribute doesn&apos;t mention what to do with non integers. And the type specification just says:

&quot;&lt;number-optional-number&gt;
A pair of &lt;number&gt;s, where the second &lt;number&gt; is optional.

number-optional-number ::= number
                           | number comma-wsp number
In the SVG DOM, a &lt;number-optional-number&gt; is represented using a pair of SVGAnimatedInteger or SVGAnimatedNumber objects.&quot;

So we should take any number but transform them to integers. How to do so is unspecified for the &apos;order&apos; attribute. I don&apos;t think that we need integers for &apos;filterRes&apos;, since it just describes something like scaling (and we are using it that way in WebKit). &apos;order&apos; has of course to be an integer pair.

The specification would be much clearer if we have a type specification &lt;integer-optional-integer&gt;. Right now I would take any number and round them, since the filter specification is talking about &lt;number-optional-number&gt;. This would also avoid confusions for web developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462428</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Longson">longsonr</who>
    <bug_when>2011-09-06 02:01:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
towards zero.&quot;
&gt; 
&gt; The order attribute doesn&apos;t mention what to do with non integers. And the type specification just says:

It does mention what you should do in that particular case...

The values provided must be &lt;integer&gt;s greater than zero

So you shouldn&apos;t accept non-integer values in this case.

What you do with kernelUnitLength, stdDeviation, radius and baseFrequency is unspecified though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462431</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-06 02:13:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; towards zero.&quot;
&gt; &gt; 
&gt; &gt; The order attribute doesn&apos;t mention what to do with non integers. And the type specification just says:
&gt; 
&gt; It does mention what you should do in that particular case...
&gt; 
&gt; The values provided must be &lt;integer&gt;s greater than zero
&gt; 
&gt; So you shouldn&apos;t accept non-integer values in this case.
Well that&apos;s your interpretation of &quot;The values provided must be &lt;integer&gt;s greater than zero&quot;. In fact they are &lt;number-optional-numbers&gt; and all numbers should get accepted (as value in the attribute, not for SVG DOM).

&gt; 
&gt; What you do with kernelUnitLength, stdDeviation, radius and baseFrequency is unspecified though.
According to the spec, they are SVGAnimatedNumbers. I don&apos;t see problems for them.

I sent an email to www-svg. Let&apos;s discuss it at this place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463487</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-07 11:29:38 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; towards zero.&quot;
&gt; &gt; 
&gt; &gt; The order attribute doesn&apos;t mention what to do with non integers.

Robert, I don&apos;t think that it makes sense to deny non integer values for targetX on parsing

&lt;feConvolveMatrix order=&quot;3.5 3.5&quot; targetX=&quot;2.5&quot; targetY=&quot;1.5&quot; /&gt;

but accept it via SVGDOM:

feConvolveMatrix.targetX.baseVal = 2.5

In the first case, WebKit and FF don&apos;t accept the value; targetX is 0.
In the second case,  WebKit and FF accept the value: targetX is 2.

Opera seems to use floating points even for SVGAnimateIntegers. targetX and targetY are SVGAnimatedNumbers for Opera (another spec violation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463528</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Longson">longsonr</who>
    <bug_when>2011-09-07 11:47:59 -0700</bug_when>
    <thetext>&gt; Robert, I don&apos;t think that it makes sense to deny non integer values for targetX on parsing

Firefox denies non-integer values for simple integer types such as octaves on feTurbulence. Doesn&apos;t Webkit too? Surely it doesn&apos;t make sense to have simple integers work one way and pairs work another way.

&gt; 
&gt; &lt;feConvolveMatrix order=&quot;3.5 3.5&quot; targetX=&quot;2.5&quot; targetY=&quot;1.5&quot; /&gt;
&gt; 
&gt; but accept it via SVGDOM:
&gt; 
&gt; feConvolveMatrix.targetX.baseVal = 2.5

That&apos;s just type coercion changing the float to an int to store it in an int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463541</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-09-07 11:56:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Robert, I don&apos;t think that it makes sense to deny non integer values for targetX on parsing
&gt; 
&gt; Firefox denies non-integer values for simple integer types such as octaves on feTurbulence. Doesn&apos;t Webkit too? Surely it doesn&apos;t make sense to have simple integers work one way and pairs work another way.
&gt; 
&gt; &gt; 
&gt; &gt; &lt;feConvolveMatrix order=&quot;3.5 3.5&quot; targetX=&quot;2.5&quot; targetY=&quot;1.5&quot; /&gt;
&gt; &gt; 
&gt; &gt; but accept it via SVGDOM:
&gt; &gt; 
&gt; &gt; feConvolveMatrix.targetX.baseVal = 2.5
&gt; 
&gt; That&apos;s just type coercion changing the float to an int to store it in an int.

Yes we do the same for all SVGAnimatedIntegers without optional number, including numOctaves. I just think that it is confusing to deny these values on attribute parsing, but allow them in SVGDOM on baseVal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555235</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-13 06:43:22 -0800</bug_when>
    <thetext>Dirk, any news here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587319</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-25 12:07:04 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Dirk, any news here?

I&apos;m taking this over, as I need it to enable animVal support for SVGAnimatedInteger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587320</commentid>
    <comment_count>16</comment_count>
      <attachid>133686</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-25 12:16:51 -0700</bug_when>
    <thetext>Created attachment 133686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587322</commentid>
    <comment_count>17</comment_count>
      <attachid>133686</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-25 12:29:10 -0700</bug_when>
    <thetext>Comment on attachment 133686
Patch

Attachment 133686 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12131448</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587323</commentid>
    <comment_count>18</comment_count>
      <attachid>133686</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-25 12:32:46 -0700</bug_when>
    <thetext>Comment on attachment 133686
Patch

Attachment 133686 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12103028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587336</commentid>
    <comment_count>19</comment_count>
      <attachid>133689</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-25 13:34:54 -0700</bug_when>
    <thetext>Created attachment 133689
Patch v2

Fix Qt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587338</commentid>
    <comment_count>20</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-25 13:35:26 -0700</bug_when>
    <thetext>I&apos;ve kept the current WebKit behavior in this patch, we accept floats and truncate them to integers for &lt;integer-optional-integer&gt; animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587888</commentid>
    <comment_count>21</comment_count>
      <attachid>133689</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-26 10:47:57 -0700</bug_when>
    <thetext>Comment on attachment 133689
Patch v2

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

LGTM. r=me.

&gt; Source/WebCore/svg/SVGAnimatedNumberOptionalNumber.cpp:120
&gt; +
&gt; +
&gt; +    

Not that many new lines please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588645</commentid>
    <comment_count>22</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-27 01:31:26 -0700</bug_when>
    <thetext>Committed r112224: &lt;http://trac.webkit.org/changeset/112224&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106263</attachid>
            <date>2011-09-03 09:42:44 -0700</date>
            <delta_ts>2011-09-06 00:12:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67563-20110903184241.patch</filename>
            <type>text/plain</type>
            <size>25655</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NDg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDktMDMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxk
IHN1cHBvcnQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyIGFuaW1hdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1NjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3cgdXAgb2Yg
IlNWR0FuaW1hdGlvbiBzaG91bGQgdXNlIGRpcmVjdCB1bml0IGFuaW1hdGlvbiBmb3IgU1ZHTGVu
Z3RoIjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzY4CisgICAg
ICAgIFRoaXMgcGF0Y2ggY29udGludWVzIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBuZXcgY29uY2Vw
dCBvZiBTVkdBbmltYXRvckZhY3Rvcnkgd2l0aCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuCisgICAgICAgIAorICAgICAgICBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXIgaXMgdXNlZCBmb3IgdGhlIFNWRyBhdHRyaWJ1dGVzICdmaWx0ZXJSZXMnIGFuZCAnb3JkZXIn
LiBSaWdodCBub3cgd2UgYW5pbWF0ZSB0aGVtIGFzCisgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIuIEJ1dCB0byBpbXBsZW1lbnQgdGhlIGFuaW1WYWwgYW5kIGJhc2VWYWwg
Y29uY2VwdCB3ZSBuZWVkIHRvIGZpeCBpdCBmaXJzdC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IEV4aXN0aW5nIHRlc3RzIHZlcmlmeSB0aGUgY29ycmVjdCBiZWhhdmlvci4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHQWxsSW5PbmUuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yOjp+U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbEludGVnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaDoKKwogMjAxMS0wOS0wMyAgQW5kcmV3IFdhc29uICA8
cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KIAogICAgICAgICBbUXRdIEVuYWJsZSBzdXBwb3J0
IGZvciBXZWJHTCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZm9yIFF0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gOTQwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY0NCw2ICsxNjQ0LDcgQEAgSUYgKEVOQUJMRV9TVkcp
CiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZENvbG9yLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcAorICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAogICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTQwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNDg1LDYgKzM0ODUsOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5NDA4NikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw2ICsxMDYz
LDcgQEAKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRDb2xvci5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRJbnRlZ2VyLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuaCcKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCcsCkBAIC01OTQxLDYgKzU5NDIsNyBAQAogICAgICAgICAg
ICAgJ3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3Bw
JywKKyAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdB
bmltYXRlZE51bWJlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDk0MDg2KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzNTUsNiAr
MjM1NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9TVkdBbmltYXRlZENvbG9yLmggXAogICAg
IHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZEludGVn
ZXIuaCBcCisgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIFwKICAg
ICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlz
dC5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBcCkBAIC0zMzg3LDYgKzMzODgsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAgICAgc3ZnL1NW
R0FuaW1hdGVkQm9vbGVhbi5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBcCisgICAg
ICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIFwKICAg
ICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBcCiAgICAgICAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTQwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjYyMjYsNiArNjYyMjYs
MTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDA4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTA1NCw2ICsxMDU0LDggQEAKIAkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0Fu
aW1hdGVkU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAg
Ki87IH07CiAJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMz
NjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi87IH07CiAJCTQz
QjkzMzZBMTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I5MzM2ODEzQjI2MUIx
MDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovOyB9OworCQk0M0JENkI4NjE0
MTBFMkQzMDA5ODkxREMgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQkQ2Qjg1MTQx
MEUyRDIwMDk4OTFEQyAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwICov
OyB9OworCQk0M0JENkI4ODE0MTBFMzEyMDA5ODkxREMgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0M0JENkI4NzE0MTBFMzEyMDA5ODkxREMgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyLmggKi87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0M0MwOTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oICovOyB9OwogCQk0M0QyNTk3NzEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNEMjU5NzYx
M0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLzsgfTsKIAkJNDNGNkZEOTYxM0JD
RDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIgLyog
U1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCAqLzsgfTsKQEAgLTc2NDgsNiArNzY1MCw4IEBACiAJCTQz
QTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFN0cmluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQjkzMzY3MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdB
bmltYXRlZFBvaW50TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZFBvaW50TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0I5MzM2
ODEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0M0JENkI4NTE0MTBFMkQyMDA5ODkxREMgLyogU1ZH
QW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzQkQ2Qjg3MTQxMEUzMTIwMDk4OTFEQyAvKiBT
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQzA5MkI5MTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0M0MwOTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAv
KiBJbWFnZUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bWFnZUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzY2MSw2ICsx
NzY2NSw4IEBACiAJCQkJQjIyMjc3RTgwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24uaWRsICovLAogCQkJCTQzRjZGRDk1MTNCQ0QwQjEwMDIyNDA1MiAvKiBTVkdBbmlt
YXRlZEludGVnZXIuY3BwICovLAogCQkJCTA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdB
bmltYXRlZEludGVnZXIuaCAqLywKKwkJCQk0M0JENkI4NTE0MTBFMkQyMDA5ODkxREMgLyogU1ZH
QW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCAqLywKKwkJCQk0M0JENkI4NzE0MTBF
MzEyMDA5ODkxREMgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggKi8sCiAJ
CQkJQjIyMjc3RTkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5pZGwgKi8s
CiAJCQkJNDM4MTc2M0ExM0E2OTdENDAwN0QxMTg3IC8qIFNWR0FuaW1hdGVkTGVuZ3RoLmNwcCAq
LywKIAkJCQkwODkwMjFBODEyNkVGNURFMDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGguaCAq
LywKQEAgLTIzNDUwLDYgKzIzNDU2LDcgQEAKIAkJCQlCQ0U0Mzg5NzE0MEIwMDUxMDA1RTQzN0Ug
LyogRXZlbnRDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgwMTQwQzE3
NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEwQjY5ODIx
NDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDNCRDZCODgxNDEwRTMxMjAwOTg5MURDIC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjI2MCw2ICsyNjI2Nyw3IEBACiAJCQkJREY5QUZE
NzMxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0Mzg5QTE0MEIwMDczMDA1RTQzN0UgLyogSlNFdmVu
dENvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTBCNjk4MTE0MEMxNzQwMDBC
QzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQzQkQ2Qjg2
MTQxMEUyRDMwMDk4OTFEQyAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlz
aW9uIDk0MDg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5j
cHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmNwcCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXIuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aExpc3QuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmNwcCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHJldmlzaW9uIDk0
MDg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw5ICszNiw4IEBAIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5p
bWF0ZWRJbnQKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklNQVRF
RF9QUk9QRVJUWShBbmltYXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01B
dHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLS8v
IEZJWE1FOiBUaGlzIGN1cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVtYmVy
LCBpbnN0ZWFkIG9mIGludGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2luZy4K
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmli
dXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIsIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmlt
YXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIgorCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgorI2lu
Y2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFu
aW1hdG9yOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCkKKyAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlciwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCit7Cit9CisKK1Bhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJB
bmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihuZXcgcGFpcjxpbnQsIGludD4pOworICAgIHBh
aXI8aW50LCBpbnQ+JiBhbmltYXRlZEludGVnZXJQYWlyID0gYW5pbXRlZFR5cGUtPmludGVnZXJP
cHRpb25hbEludGVnZXIoKTsKKyAgICBmbG9hdCB2YWx1ZTEgPSAwOworICAgIGZsb2F0IHZhbHVl
MiA9IDA7CisgICAgcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihzdHJpbmcsIHZhbHVlMSwgdmFs
dWUxKTsKKyAgICBhbmltYXRlZEludGVnZXJQYWlyLmZpcnN0ID0gc3RhdGljX2Nhc3Q8aW50Pihy
b3VuZGYodmFsdWUxKSk7CisgICAgYW5pbWF0ZWRJbnRlZ2VyUGFpci5zZWNvbmQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHJvdW5kZih2YWx1ZTIpKTsKKyAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFz
ZSgpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9y
OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20s
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsK
KyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmlt
YXRpb25FbGVtZW50KTsKKyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZh
bHVlVHlwZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgIAorICAgIGZyb20gPSBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0
b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5p
bWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
ZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCit7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1l
bnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPiht
X2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3Bl
cnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7CisgICAgCisgICAgZnJvbSA9IGNv
bnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGJ5U3RyaW5nKTsKKyAgICAKKyAgICBwYWlyPGludCwgaW50PiYgZnJvbUludGVnZXJQYWly
ID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOworICAgIHBhaXI8aW50LCBpbnQ+JiB0
b0ludGVnZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICAKKyAgICB0
b0ludGVnZXJQYWlyLmZpcnN0ICs9IGZyb21JbnRlZ2VyUGFpci5maXJzdDsKKyAgICB0b0ludGVn
ZXJQYWlyLnNlY29uZCArPSBmcm9tSW50ZWdlclBhaXIuc2Vjb25kOworfQorCit2b2lkIFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIAor
ICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
QW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKyAgICAK
KyAgICAvLyBUbyBhbmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHBy
aW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCisgICAgcGFpcjxpbnQsIGludD4m
IGZyb21JbnRlZ2VyUGFpciA9IGZyb20tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBw
YWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyUGFpciA9IGFuaW1hdGVkLT5pbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyKCk7CisgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRpb24pCisg
ICAgICAgIGZyb21JbnRlZ2VyUGFpciA9IGFuaW1hdGVkSW50ZWdlclBhaXI7CisgICAgCisgICAg
cGFpcjxpbnQsIGludD4mIHRvSW50ZWdlclBhaXIgPSB0by0+aW50ZWdlck9wdGlvbmFsSW50ZWdl
cigpOworICAgIGZsb2F0IHZhbHVlMSA9IGFuaW1hdGVkSW50ZWdlclBhaXIuZmlyc3Q7CisgICAg
ZmxvYXQgdmFsdWUyID0gYW5pbWF0ZWRJbnRlZ2VyUGFpci5zZWNvbmQ7CisgICAgU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVu
dCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIHZhbHVlMSwgZnJvbUludGVnZXJQYWlyLmZpcnN0
LCB0b0ludGVnZXJQYWlyLmZpcnN0KTsKKyAgICBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZE51bWJlcihhbmltYXRpb25FbGVtZW50LCBwZXJjZW50YWdlLCByZXBl
YXRDb3VudCwgdmFsdWUyLCBmcm9tSW50ZWdlclBhaXIuc2Vjb25kLCB0b0ludGVnZXJQYWlyLnNl
Y29uZCk7CisgICAgYW5pbWF0ZWRJbnRlZ2VyUGFpci5maXJzdCA9IHN0YXRpY19jYXN0PGludD4o
cm91bmRmKHZhbHVlMSkpOworICAgIGFuaW1hdGVkSW50ZWdlclBhaXIuc2Vjb25kID0gc3RhdGlj
X2Nhc3Q8aW50Pihyb3VuZGYodmFsdWUyKSk7Cit9CisKK2Zsb2F0IFNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBp
cyBub3QgcG9zc2libGUgZm9yIFNWR0ludGVnZXJPcHRpb25hbEludGVnZXIgcmlnaHQgbm93LiBX
ZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgorICAgIHJldHVybiAt
MTsKK30KKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5J
TUFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXJfaAorI2RlZmluZSBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXJfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OworCitjbGFzcyBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7
CisgICAgCitwdWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5p
bWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5T
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcigpIHsgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcihTVkdB
bmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQs
IGZsb2F0JiBhbmltYXRlZEludGVnZXIsIGZsb2F0IGZyb21JbnRlZ2VyLCBmbG9hdCB0b0ludGVn
ZXIpOworICAgIAorICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBm
cm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
OworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTQwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOSBAQCBTVkdB
bmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2Vy
OgogICAgICAgICBkZWxldGUgbV9kYXRhLmludGVnZXI7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgorICAgICAgICBkZWxldGUgbV9kYXRh
LmludGVnZXJPcHRpb25hbEludGVnZXI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGg6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEubGVuZ3RoOwogICAgICAgICBicmVhazsK
QEAgLTEyNSw2ICsxMjgsMTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkVAogICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyKHBhaXI8aW50LCBpbnQ+KiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKQoreworICAgIEFT
U0VSVChpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlcikpOworICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXJP
cHRpb25hbEludGVnZXIgPSBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOworICAgIHJldHVybiBhbmlt
YXRlZFR5cGUucmVsZWFzZSgpOworfQorCiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5ndGgpCiB7CiAgICAgQVNT
RVJUKGxlbmd0aCk7CkBAIC0yMjksNiArMjQwLDEyIEBAIGludCYgU1ZHQW5pbWF0ZWRUeXBlOjpp
bnRlZ2VyKCkKICAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyOwogfQogCitwYWlyPGludCwgaW50
PiYgU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCkKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CisgICAgcmV0dXJu
ICptX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsgICAgICAgIAorfQorCiBTVkdMZW5ndGgm
IFNWR0FuaW1hdGVkVHlwZTo6bGVuZ3RoKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1h
dGVkTGVuZ3RoKTsKQEAgLTMwNCw2ICszMjEsOSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2
YWx1ZUFzU3RyaW5nKCkKICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoKICAgICAgICAgQVNTRVJU
KG1fZGF0YS5pbnRlZ2VyKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKCptX2RhdGEu
aW50ZWdlcik7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXI6CisgICAg
ICAgIEFTU0VSVChtX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CisgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihtX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlci0+Zmlyc3QpICsg
JyAnICsgU3RyaW5nOjpudW1iZXIobV9kYXRhLmludGVnZXJPcHRpb25hbEludGVnZXItPnNlY29u
ZCk7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5n
dGgpOwogICAgICAgICByZXR1cm4gbV9kYXRhLmxlbmd0aC0+dmFsdWVBc1N0cmluZygpOwpAQCAt
MzY5LDYgKzM4OSwxNSBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyhj
CiAgICAgICAgICAgICBlYyA9IDE7IC8vIEFyYml0YXJ5IHZhbHVlID4gMCwgaXQgZG9lc24ndCBt
YXR0ZXIgYXMgd2UgZG9uJ3QgcmVwb3J0IHRoZSBleGNlcHRpb24gY29kZS4KICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOiB7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcik7CisgICAgICAgIGZs
b2F0IHZhbHVlMSA9IG1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlci0+Zmlyc3Q7CisgICAgICAg
IGZsb2F0IHZhbHVlMiA9IG1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlci0+c2Vjb25kOworICAg
ICAgICBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVlLCB2YWx1ZTEsIHZhbHVlMik7Cisg
ICAgICAgIG1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlci0+Zmlyc3QgPSBzdGF0aWNfY2FzdDxp
bnQ+KHJvdW5kZih2YWx1ZTEpKTsKKyAgICAgICAgbV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVy
LT5zZWNvbmQgPSBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZih2YWx1ZTIpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgIEFTU0VSVChtX2Rh
dGEubGVuZ3RoKTsKICAgICAgICAgbV9kYXRhLmxlbmd0aC0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSwgU1ZHTGVuZ3RoOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5h
bWUpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lv
biA5NDA4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVCb29sZWFuKGJvb2wqKTsKICAgICBzdGF0aWMgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUNvbG9yKENvbG9yKik7CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVJbnRlZ2VyKGludCopOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdl
cihzdGQ6OnBhaXI8aW50LCBpbnQ+Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGhMaXN0KFNWR0xlbmd0aExpc3QqKTsKICAgICBz
dGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlcihmbG9hdCopOwpA
QCAtNjEsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCYgYm9vbGVhbigpOwogICAgIENvbG9y
JiBjb2xvcigpOwogICAgIGludCYgaW50ZWdlcigpOworICAgIHN0ZDo6cGFpcjxpbnQsIGludD4m
IGludGVnZXJPcHRpb25hbEludGVnZXIoKTsKICAgICBTVkdMZW5ndGgmIGxlbmd0aCgpOwogICAg
IFNWR0xlbmd0aExpc3QmIGxlbmd0aExpc3QoKTsKICAgICBmbG9hdCYgbnVtYmVyKCk7CkBAIC05
Myw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wqIGJvb2xlYW47CiAgICAgICAgIENv
bG9yKiBjb2xvcjsKICAgICAgICAgaW50KiBpbnRlZ2VyOworICAgICAgICBzdGQ6OnBhaXI8aW50
LCBpbnQ+KiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOwogICAgICAgICBTVkdMZW5ndGgqIGxlbmd0
aDsKICAgICAgICAgU1ZHTGVuZ3RoTGlzdCogbGVuZ3RoTGlzdDsKICAgICAgICAgZmxvYXQqIG51
bWJlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlz
aW9uIDk0MDg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkSW50ZWdlci5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKQEAgLTU2LDYg
KzU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZENvbG9yQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAg
ICAgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRF
bGVtZW50KSk7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXJBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAg
ICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVt
ZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9uIDk0
MDg2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBBbmltYXRlZFByb3BlcnR5VHlw
ZSB7CiAgICAgQW5pbWF0ZWRDb2xvciwKICAgICBBbmltYXRlZEVudW1lcmF0aW9uLAogICAgIEFu
aW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIsCiAgICAg
QW5pbWF0ZWRMZW5ndGgsCiAgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAogICAgIEFuaW1hdGVkTnVt
YmVyLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106264</attachid>
            <date>2011-09-03 10:16:37 -0700</date>
            <delta_ts>2012-03-25 12:16:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67563-20110903191635.patch</filename>
            <type>text/plain</type>
            <size>25618</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NDg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDktMDMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxk
IHN1cHBvcnQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyIGFuaW1hdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1NjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3cgdXAgb2Yg
IlNWR0FuaW1hdGlvbiBzaG91bGQgdXNlIGRpcmVjdCB1bml0IGFuaW1hdGlvbiBmb3IgU1ZHTGVu
Z3RoIjogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzY4CisgICAg
ICAgIFRoaXMgcGF0Y2ggY29udGludWVzIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBuZXcgY29uY2Vw
dCBvZiBTVkdBbmltYXRvckZhY3Rvcnkgd2l0aCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuCisgICAgICAgIAorICAgICAgICBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXIgaXMgdXNlZCBmb3IgdGhlIFNWRyBhdHRyaWJ1dGVzICdmaWx0ZXJSZXMnIGFuZCAnb3JkZXIn
LiBSaWdodCBub3cgd2UgYW5pbWF0ZSB0aGVtIGFzCisgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIuIEJ1dCB0byBpbXBsZW1lbnQgdGhlIGFuaW1WYWwgYW5kIGJhc2VWYWwg
Y29uY2VwdCB3ZSBuZWVkIHRvIGZpeCBpdCBmaXJzdC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IEV4aXN0aW5nIHRlc3RzIHZlcmlmeSB0aGUgY29ycmVjdCBiZWhhdmlvci4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHQWxsSW5PbmUuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yOjp+U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbEludGVnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaDoKKwogMjAxMS0wOS0wMyAgQW5kcmV3IFdhc29uICA8
cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KIAogICAgICAgICBbUXRdIEVuYWJsZSBzdXBwb3J0
IGZvciBXZWJHTCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZm9yIFF0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY0Nyw2ICsxNjQ3LDcgQEAgSUYgKEVOQUJMRV9TVkcp
CiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZENvbG9yLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcAorICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAogICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNDg5LDYgKzM0ODksOCBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5NDQ4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTA2NSw2ICsxMDY1
LDcgQEAKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRDb2xvci5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRJbnRlZ2VyLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuaCcKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCcsCiAg
ICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCcsCkBAIC01OTUxLDYgKzU5NTIsNyBAQAogICAgICAgICAg
ICAgJ3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3Bw
JywKKyAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdB
bmltYXRlZE51bWJlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDk0NDg5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIzNjIsNiAr
MjM2Miw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9TVkdBbmltYXRlZENvbG9yLmggXAogICAg
IHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZEludGVn
ZXIuaCBcCisgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIFwKICAg
ICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlz
dC5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBcCkBAIC0zMzk0LDYgKzMzOTUsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAgICAgc3ZnL1NW
R0FuaW1hdGVkQm9vbGVhbi5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBcCisgICAg
ICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIFwKICAg
ICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBcCiAgICAgICAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjYxODYsNiArNjYxODYs
MTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRMZW5ndGgu
aCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDQ4OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTkxLDYgKzk5MSw4IEBACiAJCTQzNThFODgxMTM2MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BT
aGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
NThFODdGMTM2MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuaCAqLzsgfTsKIAkJNDM1OEU4
ODUxMzYwQTMzQjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4ODIxMzYwQTMzQjAw
RTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwICovOyB9OwogCQk0MzU4RTg4NjEz
NjBBMzNCMDBFNDc0OEMgLyogU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4ODMxMzYwQTMzQjAwRTQ3NDhD
IC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKKwkJNDM1QURBMkUxNDEyOTdBQTAw
MEY2RjFBIC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzVBREEyQzE0MTI5N0FBMDAw
RjZGMUEgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCAqLzsgfTsKKwkJ
NDM1QURBMkYxNDEyOTdBQTAwMEY2RjFBIC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1
QURBMkQxNDEyOTdBQTAwMEY2RjFBIC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ci5oICovOyB9OwogCQk0MzYyQzdCOTEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmds
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzYy
QzdCODEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5jcHAgKi87IH07CiAJCTQz
NjcwOEMxMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdCbG9jay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4ODIxMkQ5Q0E0QTAwMDQ0MjM0
IC8qIFJlbmRlclNWR0Jsb2NrLmggKi87IH07CiAJCTQzNjcwOEMzMTJEOUNBNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNjcwODg0MTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250YWlu
ZXIuaCAqLzsgfTsKQEAgLTc1NjEsNiArNzU2Myw4IEBACiAJCTQzNThFODgyMTM2MEEzM0IwMEU0
NzQ4QyAvKiBTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MzU4RTg4MzEzNjBBMzNCMDBFNDc0OEMgLyogU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGRURyb3BT
aGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNThFODg0MTM2
MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BTaGFkb3dFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTVkdGRURyb3BTaGFkb3dFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDM1QURBMkMxNDEyOTdBQTAwMEY2RjFBIC8qIFNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MzVBREEyRDE0MTI5N0FBMDAwRjZGMUEgLyogU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzYyQzdCODEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODExMkQ5Q0E0QTAwMDQ0MjM0
IC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2
NzA4ODIxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzY3NSw2ICsxNzY3OSw4IEBACiAJCQkJNDNGNkZEOTUxM0JDRDBCMTAwMjI0
MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgKi8sCiAJCQkJMDgyM0QxNTgxMjdBRDZBQzAw
MEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdlci5oICovLAogCQkJCUIyMjI3N0U5MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdBbmltYXRlZEludGVnZXIuaWRsICovLAorCQkJCTQzNUFEQTJDMTQxMjk3
QUEwMDBGNkYxQSAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwICovLAor
CQkJCTQzNUFEQTJEMTQxMjk3QUEwMDBGNkYxQSAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIuaCAqLywKIAkJCQk0MzgxNzYzQTEzQTY5N0Q0MDA3RDExODcgLyogU1ZHQW5pbWF0
ZWRMZW5ndGguY3BwICovLAogCQkJCTA4OTAyMUE4MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdBbmlt
YXRlZExlbmd0aC5oICovLAogCQkJCUIyMjI3N0VBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlZExlbmd0aC5pZGwgKi8sCkBAIC0yMzQ2OSw2ICsyMzQ3NSw3IEBACiAJCQkJOUIwRkIxOTIx
NDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM1QURBMkYxNDEyOTdBQTAwMEY2RjFBIC8q
IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
NjI4Miw2ICsyNjI4OSw3IEBACiAJCQkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBW
YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMkNCRjdCMTQwRjFENTgwMDM4NzlC
RSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjc0QjMx
MTQwRUJFRDgwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDM1QURBMkUxNDEyOTdBQTAwMEY2RjFBIC8qIFNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FsbEluT25lLmNwcAkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmNwcCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZEludGVnZXIuY3BwIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVk
SW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGgu
Y3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWROdW1iZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
SW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXIuaAkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDggQEAgREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEludAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5U
RUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAogREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkSW50ZWdlciwgT3duZXJUeXBl
LCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKIAotLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGFuaW1hdGVzIGFzIG51
bWJlci1vcHRpb25hbC1udW1iZXIsIGluc3RlYWQgb2YgaW50ZWdlci1vcHRpb25hbC1pbnRlZ2Vy
LCB3aGljaCBpcyBtaXNzaW5nLgogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxU
SVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9NQXR0
cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlciwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZp
ZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1B
VElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRl
Z2VyLmgiCisKKyNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTnVtYmVyLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxl
bWVudCkKK3sKK30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW10ZWRUeXBl
ID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKG5ldyBwYWly
PGludCwgaW50Pik7CisgICAgcGFpcjxpbnQsIGludD4mIGFuaW1hdGVkSW50ZWdlclBhaXIgPSBh
bmltdGVkVHlwZS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOworICAgIGZsb2F0IHZhbHVlMSA9
IDA7CisgICAgZmxvYXQgdmFsdWUyID0gMDsKKyAgICBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVy
KHN0cmluZywgdmFsdWUxLCB2YWx1ZTEpOworICAgIGFuaW1hdGVkSW50ZWdlclBhaXIuZmlyc3Qg
PSBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZih2YWx1ZTEpKTsKKyAgICBhbmltYXRlZEludGVnZXJQ
YWlyLnNlY29uZCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKHZhbHVlMikpOworICAgIHJldHVy
biBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAg
IFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5p
bWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQt
PmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CisgICAg
CisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBj
b25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBB
U1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7
CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxl
bWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsK
KyAgICAKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0
byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIAorICAgIHBhaXI8aW50LCBp
bnQ+JiBmcm9tSW50ZWdlclBhaXIgPSBmcm9tLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7Cisg
ICAgcGFpcjxpbnQsIGludD4mIHRvSW50ZWdlclBhaXIgPSB0by0+aW50ZWdlck9wdGlvbmFsSW50
ZWdlcigpOworICAgIAorICAgIHRvSW50ZWdlclBhaXIuZmlyc3QgKz0gZnJvbUludGVnZXJQYWly
LmZpcnN0OworICAgIHRvSW50ZWdlclBhaXIuc2Vjb25kICs9IGZyb21JbnRlZ2VyUGFpci5zZWNv
bmQ7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRl
ZCkKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250
ZXh0RWxlbWVudCk7CisgICAgCisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7
CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0aW9uTW9kZSgpOworICAgIAorICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlv
bnMgZnJvbSB0aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4K
KyAgICBwYWlyPGludCwgaW50PiYgZnJvbUludGVnZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlv
bmFsSW50ZWdlcigpOworICAgIHBhaXI8aW50LCBpbnQ+JiBhbmltYXRlZEludGVnZXJQYWlyID0g
YW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBpZiAoYW5pbWF0aW9uTW9k
ZSA9PSBUb0FuaW1hdGlvbikKKyAgICAgICAgZnJvbUludGVnZXJQYWlyID0gYW5pbWF0ZWRJbnRl
Z2VyUGFpcjsKKyAgICAKKyAgICBwYWlyPGludCwgaW50PiYgdG9JbnRlZ2VyUGFpciA9IHRvLT5p
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgZmxvYXQgdmFsdWUxID0gYW5pbWF0ZWRJbnRl
Z2VyUGFpci5maXJzdDsKKyAgICBmbG9hdCB2YWx1ZTIgPSBhbmltYXRlZEludGVnZXJQYWlyLnNl
Y29uZDsKKyAgICBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51
bWJlcihhbmltYXRpb25FbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgdmFsdWUxLCBm
cm9tSW50ZWdlclBhaXIuZmlyc3QsIHRvSW50ZWdlclBhaXIuZmlyc3QpOworICAgIFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkTnVtYmVyKGFuaW1hdGlvbkVsZW1l
bnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCB2YWx1ZTIsIGZyb21JbnRlZ2VyUGFpci5zZWNv
bmQsIHRvSW50ZWdlclBhaXIuc2Vjb25kKTsKKyAgICBhbmltYXRlZEludGVnZXJQYWlyLmZpcnN0
ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYodmFsdWUxKSk7CisgICAgYW5pbWF0ZWRJbnRlZ2Vy
UGFpci5zZWNvbmQgPSBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZih2YWx1ZTIpKTsKK30KKworZmxv
YXQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IERp
c3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHSW50ZWdlck9wdGlvbmFs
SW50ZWdlciByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBldmVyeSBzaW5nbGUg
dmFsdWUuCisgICAgcmV0dXJuIC0xOworfQorICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcl9oCisjZGVmaW5lIFNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcl9oCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0FOSU1BVElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKK2NsYXNz
IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yIDogcHVibGljIFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVu
dCopOworICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1h
dG9yKCkgeyB9CisgICAgCisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgZmxvYXQmIGFuaW1hdGVkSW50ZWdlciwgZmxvYXQgZnJvbUlu
dGVnZXIsIGZsb2F0IHRvSW50ZWdlcik7CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0
dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiB0b1N0cmluZyk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZpc2lvbiA5NDQ4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw2ICs1Nyw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAg
Y2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEuaW50ZWdlcjsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXI6Cisg
ICAgICAgIGRlbGV0ZSBtX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5sZW5n
dGg7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI1LDYgKzEyOCwxNCBAQCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNl
KCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIocGFpcjxpbnQsIGludD4qIGludGVnZXJPcHRpb25h
bEludGVnZXIpCit7CisgICAgQVNTRVJUKGludGVnZXJPcHRpb25hbEludGVnZXIpOworICAgIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKSk7CisgICAgYW5pbWF0ZWRU
eXBlLT5tX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlciA9IGludGVnZXJPcHRpb25hbEludGVn
ZXI7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aChTVkdMZW5ndGgq
IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoKTsKQEAgLTIyOSw2ICsyNDAsMTIgQEAgaW50
JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXIoKQogICAgIHJldHVybiAqbV9kYXRhLmludGVnZXI7
CiB9CiAKK3BhaXI8aW50LCBpbnQ+JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbElu
dGVnZXIoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOyAgICAg
ICAgCit9CisKIFNWR0xlbmd0aCYgU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgoKQogewogICAgIEFT
U0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGgpOwpAQCAtMzA0LDYgKzMyMSw5IEBAIFN0cmlu
ZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQogICAgIGNhc2UgQW5pbWF0ZWRJbnRl
Z2VyOgogICAgICAgICBBU1NFUlQobV9kYXRhLmludGVnZXIpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nOjpudW1iZXIoKm1fZGF0YS5pbnRlZ2VyKTsKKyAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlcjoKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRl
Z2VyKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fZGF0YS5pbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyLT5maXJzdCkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX2RhdGEuaW50ZWdlck9w
dGlvbmFsSW50ZWdlci0+c2Vjb25kKTsKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAg
ICBBU1NFUlQobV9kYXRhLmxlbmd0aCk7CiAgICAgICAgIHJldHVybiBtX2RhdGEubGVuZ3RoLT52
YWx1ZUFzU3RyaW5nKCk7CkBAIC0zNjksNiArMzg5LDE1IEBAIGJvb2wgU1ZHQW5pbWF0ZWRUeXBl
OjpzZXRWYWx1ZUFzU3RyaW5nKGMKICAgICAgICAgICAgIGVjID0gMTsgLy8gQXJiaXRhcnkgdmFs
dWUgPiAwLCBpdCBkb2Vzbid0IG1hdHRlciBhcyB3ZSBkb24ndCByZXBvcnQgdGhlIGV4Y2VwdGlv
biBjb2RlLgogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXI6IHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyKTsKKyAgICAgICAgZmxvYXQgdmFsdWUxID0gbV9kYXRhLm51bWJlck9wdGlvbmFsTnVt
YmVyLT5maXJzdDsKKyAgICAgICAgZmxvYXQgdmFsdWUyID0gbV9kYXRhLm51bWJlck9wdGlvbmFs
TnVtYmVyLT5zZWNvbmQ7CisgICAgICAgIHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUs
IHZhbHVlMSwgdmFsdWUyKTsKKyAgICAgICAgbV9kYXRhLm51bWJlck9wdGlvbmFsTnVtYmVyLT5m
aXJzdCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKHZhbHVlMSkpOworICAgICAgICBtX2RhdGEu
bnVtYmVyT3B0aW9uYWxOdW1iZXItPnNlY29uZCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKHZh
bHVlMikpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoK
ICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwogICAgICAgICBtX2RhdGEubGVuZ3RoLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBTVkdMZW5ndGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZShhdHRyTmFtZSksIGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmgJKHJldmlzaW9uIDk0NDg5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oYm9vbCop
OwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3IoQ29s
b3IqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUludGVn
ZXIoaW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKHN0ZDo6cGFpcjxpbnQsIGludD4qKTsKICAgICBzdGF0aWMg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aChTVkdMZW5ndGgqKTsKICAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aExpc3QoU1ZH
TGVuZ3RoTGlzdCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlTnVtYmVyKGZsb2F0Kik7CkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sJiBi
b29sZWFuKCk7CiAgICAgQ29sb3ImIGNvbG9yKCk7CiAgICAgaW50JiBpbnRlZ2VyKCk7CisgICAg
c3RkOjpwYWlyPGludCwgaW50PiYgaW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwogICAgIFNWR0xl
bmd0aCYgbGVuZ3RoKCk7CiAgICAgU1ZHTGVuZ3RoTGlzdCYgbGVuZ3RoTGlzdCgpOwogICAgIGZs
b2F0JiBudW1iZXIoKTsKQEAgLTkzLDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCog
Ym9vbGVhbjsKICAgICAgICAgQ29sb3IqIGNvbG9yOwogICAgICAgICBpbnQqIGludGVnZXI7Cisg
ICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4qIGludGVnZXJPcHRpb25hbEludGVnZXI7CiAgICAg
ICAgIFNWR0xlbmd0aCogbGVuZ3RoOwogICAgICAgICBTVkdMZW5ndGhMaXN0KiBsZW5ndGhMaXN0
OwogICAgICAgICBmbG9hdCogbnVtYmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRvckZhY3RvcnkuaAkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZE51bWJlci5oIgpAQCAtNTYsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoKICAgICAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IoYW5pbWF0
aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXI6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoYW5pbWF0aW9u
RWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aExp
c3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUluZm8uaAkocmV2aXNpb24gOTQ0ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBlbnVt
IEFuaW1hdGVkUHJvcGVydHlUeXBlIHsKICAgICBBbmltYXRlZENvbG9yLAogICAgIEFuaW1hdGVk
RW51bWVyYXRpb24sCiAgICAgQW5pbWF0ZWRJbnRlZ2VyLAorICAgIEFuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlciwKICAgICBBbmltYXRlZExlbmd0aCwKICAgICBBbmltYXRlZExlbmd0aExp
c3QsCiAgICAgQW5pbWF0ZWROdW1iZXIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133686</attachid>
            <date>2012-03-25 12:16:51 -0700</date>
            <delta_ts>2012-03-25 13:34:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67563-20120325211649.patch</filename>
            <type>text/plain</type>
            <size>56747</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyYmVmMmQ5NDFkYTY1
OTMzZjg2MjA1ZDM4ZGFlMDZlMzdlZGVjZS4uNGRiMGZlNTZlODdlZTRhMGY0YjRjMTg5OWEyNDQz
MWZlYWJjZmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTI1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFNWR0FuaW1h
dGVkVHlwZSBzaG91bGQgc3VwcG9ydCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIg
YW5pbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NzU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIgdHlwZSBoYW5kbGluZyBhbmlt
YXRpb24gb2YgcGFpcjxpbnQsIGludD4gb2JqZWN0cworICAgICAgICBhcyB1c2VkIGZvciB0aGUg
U1ZHIHByb3BlcnRpZXMgJ2ZpbHRlclJlcycgYW5kICdvcmRlcicuIFRoZXkncmUgY3VycmVudGx5
IGFuaW1hdGVkIGFzCisgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIgLSBi
dXQgdGhhdCB3b24ndCB3b3JrIGZvciBhbmltVmFsIHN1cHBvcnQuIEZpeCB0aGF0CisgICAgICAg
IGFuZCBlbmFibGUgYW5pbVZhbCBzdXBwb3J0IGZvciBTVkdBbmltYXRlZEludGVnZXIoT3B0aW9u
YWxJbnRlZ2VyKS4KKworICAgICAgICBVc2UgJ2ludCcgYXMgZGF0YXR5cGUgZm9yIFNWR0FuaW1h
dGVkSW50ZWdlciBpbnN0ZWFkIG9mICdsb25nJyBmb3IgY29uc2lzdGVuY3ksIGFuZAorICAgICAg
ICBtb3ZlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZnJvbSAnaW50JyB0byAndW5zaWduZWQgc2hv
cnQnLCB0byBtYWtlIHRoZW0gZGlzdGluZ3Vpc2hhYmxlLgorCisgICAgICAgIFRlc3Q6IHN2Zy9h
bmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuaHRtbAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OnN0b3BBbmlt
VmFsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1h
dG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZElu
dGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0
b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlckFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpzdGFy
dEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpyZXNl
dEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjphbmltVmFs
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6flNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlckFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp+
U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6aW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgIChTVkdBbmltYXRlZFR5cGUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9y
RmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzZXRGaWx0ZXJSZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgIChTVkdGaWx0ZXJFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhF
bGVtZW50Lmg6CisgICAgICAgIChTVkdQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhQYXJzZXJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0pOgorICAgICAg
ICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oOgorICAgICAgICAoU1ZHUGF0aFBhcnNlckZh
Y3RvcnkpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnBhdGhTZWdt
ZW50SW5kZXgpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmg6
CisgICAgICAgIChTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmOjpzZXRC
YXNlVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0
eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmOjpjdXJyZW50QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZEVu
dW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUluZm8uaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0
cy5oOgorCiAyMDEyLTAzLTI1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgQXZvaWQgcmFjZSBjb25kaXRpb24gd2hlbiBpdGVyYXRpbmcgb3ZlciBwZW5kaW5nIHJl
c291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkODFhZGE4YzQyNDg5NWI1ODlkN2RjNzZj
OTJjZDdkM2YyMDY4MDY0Li43NjJlMzk3N2VkZDA3YmI2NDk2MWVjNTEzMTgyNjg2NzAzM2I2MDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc2Nyw2ICsxNzY3LDcgQEAgSUYgKEVOQUJMRV9T
VkcpCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCiAgICAgICAgIHN2Zy9TVkdB
bmltYXRlZENvbG9yLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcAorICAg
ICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDk2OGIwY2IwNTZkNDZhNDdiMGFjNmU5Y2E4NmNmZWZiMDY1YmFk
YzIuLjY5NTk0OGZhMDAwNTQ2MGNlOTdlMGJhMDkyYmFlZGQ0YmQzMjcyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDEyMCw2ICs0MTIwLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGguaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggZDkzMGI5NjBmYThlNmIwYmU5NTc3NzBmOTc4OGY1ZjJmNDE1MGM2
Mi4uYWU3Y2IyOWU1YjhmOWQ1Njc2YTIxZTAxMjA1NTE3ZDgxYmE5NTAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0yNjAyLDYgKzI2MDIsNyBAQCBIRUFERVJTICs9IFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRD
b2xvci5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIFwKICAgICBzdmcvU1ZH
QW5pbWF0ZWRJbnRlZ2VyLmggXAorICAgIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmggXAogICAgIHN2Zy9TVkdBbmlt
YXRlZExlbmd0aExpc3QuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDY4ODRmMjFiY2EwZDEyODYwMzZiZTZiYmM4NzEwN2NhNmJiNGU1MTkuLmM0
YTQzNzkwMTYwZDg3N2RhODM1OWRkNGYwZTQzODgzZDE4Y2YxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTY3OCw2ICs2NzgsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZENvbG9yLmgn
LAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaCcsCisgICAgICAgICAgICAnc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oJywK
ICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCcsCkBAIC01ODM5LDYgKzU4NDAs
NyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwJywKICAgICAgICAg
ICAgICdzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmlt
YXRlZEludGVnZXIuY3BwJywKKyAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyMWE1MDE1MDM2OTU0OTRjYzBlOGI0NjMx
NmE0M2YwODg2MzM4ODY2Li42YmM1ZDdjYjFkOTM4M2ExODU3Zjg4YTk5M2NhMjg0ZmViZDJiODQw
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NzAxODYsNiArNzAxODYsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
QW5pbWF0ZWRMZW5ndGguaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODg3MjFkYTdiY2ExN2Q0
OTQ0ZmVjMDYxMDYwZDAzYTdiNTcwMDgyZC4uM2ZjMWU5MTUyZGE1M2NlY2E2YTZjZDI3ZWFhOGIz
NjMyYmI1NDU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTc4OCw2ICsxNzg4LDggQEAKIAkJNzEzNDQ5NkUxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhD
b250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTUzNzlGRjE0NkJEOUQ2MDA4QkQ2
MTUgLyogU1ZHUGF0aERhdGEuaCAqLzsgfTsKIAkJNzE1N0YwNjIxNTBCNjU2NDAwNkVBQUJEIC8q
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLzsgfTsKKwkJNzFFNjIzRDAxNTFGNzJBNjAwMzZFMkY0IC8q
IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUU2MjNDRTE1MUY3MkE2MDAzNkUyRjQgLyog
U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCAqLzsgfTsKKwkJNzFFNjIzRDEx
NTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFFNjIzQ0YxNTFG
NzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oICovOyB9
OwogCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Q
cm9wZXJ0eVRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjYyNkUwMjBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjI2RTAxMEVG
MDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovOyB9OwogCQk3NTBEMDI5MzExRDBF
N0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUwRDAyOTExMUQwRTdGMzAwQkQxQjI3IC8qIFJl
bmRlcklucHV0U3BlZWNoLmNwcCAqLzsgfTsKQEAgLTg3NTcsNiArODc1OSw4IEBACiAJCTcxNTM3
OUZFMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcxRTYyM0NFMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzFFNjIzQ0YxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFG
Qjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRl
YXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvblByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNw
ZWVjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbnB1
dFNwZWVjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODYwNyw2ICsxODYx
MSw4IEBACiAJCQkJNDNGNkZEOTUxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdl
ci5jcHAgKi8sCiAJCQkJMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50
ZWdlci5oICovLAogCQkJCUIyMjI3N0U5MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZElu
dGVnZXIuaWRsICovLAorCQkJCTcxRTYyM0NFMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwICovLAorCQkJCTcxRTYyM0NGMTUxRjcyQTYwMDM2
RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCAqLywKIAkJCQk0Mzgx
NzYzQTEzQTY5N0Q0MDA3RDExODcgLyogU1ZHQW5pbWF0ZWRMZW5ndGguY3BwICovLAogCQkJCTA4
OTAyMUE4MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aC5oICovLAogCQkJCUIy
MjI3N0VBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZExlbmd0aC5pZGwgKi8sCkBAIC0y
NDY0Niw2ICsyNDY1Miw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5
IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAw
OERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzFFNjIzRDExNTFGNzJBNjAw
MzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yNzYzNiw2ICsyNzY0Myw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1
MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzFF
NjIzRDAxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCmluZGV4IDRm
MDlkNWNiN2M0ZGQ1MDEzMjEyZTNhOTFlYmE2YjAyMWNjZTFlNTkuLmI4ZDJmYzkzYzBkNjBlNTY0
NDhmZTgzYTIwOWJlYmE5YmQyMmZkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5jcHAiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDBhZDc1YmFjYTQxNzRk
Y2QxNzI5MGRmZmEzMWNkNzYxZWNjYmE4OGIuLjg2M2M4N2ZiYmFmNmMxYTUxOWQ1ZWRkOTg3NmVl
MzAxZjk5YjU0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRp
b24uaApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYg
U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8aW50PiBTVkdBbmltYXRlZEVudW1lcmF0
aW9uOwordHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjx1bnNpZ25lZCBz
aG9ydD4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjsKIAogLy8gSGVscGVyIG1hY3JvcyB0byBkZWNs
YXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb2JqZWN0CiAjZGVmaW5lIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgRW51
bVR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKaW5kZXgg
YjQwMGIyNmExMzg5YmMyM2Y2YjI0MTJjN2UwMWI4MDM0OTA3OTYxNy4uZjkyZWI3YjA5MzM3Yjg0
MzMxZTM5YTg0M2VmNjk5NWIyNzFmNjVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5jcHAKQEAgLTQwLDYgKzQwLDMxIEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25z
CiAgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmlt
YXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKK3sK
KyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyKGNvbnN0cnVjdEZyb21P
bmVCYXNlVmFsdWU8aW50LCBTVkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRpZXMpKTsKK30KKwor
dm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29u
c3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKK3sKKyAgICBTVkdB
bmltYXRlZFR5cGVBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlPFNWR0FuaW1h
dGVkSW50ZWdlcj4ocHJvcGVydGllcyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7CisgICAgcmVzZXRG
cm9tT25lQmFzZVZhbHVlPGludCwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0aWVzLCB0eXBl
LCAmU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKTsKK30KKwordm9pZCBTVkdBbmltYXRlZEludGVn
ZXJBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYgcHJvcGVydGllcykKK3sKKyAgICBhbmltVmFsV2lsbENoYW5nZUZvclR5cGU8U1ZH
QW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0aWVzKTsKK30KKwordm9pZCBTVkdBbmltYXRlZEludGVn
ZXJBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0Fu
aW1hdGVkSW50ZWdlcj4ocHJvcGVydGllcyk7Cit9CisKIHZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dEVs
ZW1lbnQpOwpAQCAtNjQsNiArODksMTMgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGUKICAgICB0
by0+aW50ZWdlcigpICs9IGZyb20tPmludGVnZXIoKTsKIH0KIAordm9pZCBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1l
bnQqIGFuaW1hdGlvbkVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBpbnQmIGFuaW1hdGVkTnVtYmVyLCBpbnQgZnJvbU51bWJlciwgaW50IHRvTnVtYmVyKQor
eworICAgIGZsb2F0IGFuaW1hdGVkRmxvYXQgPSBhbmltYXRlZE51bWJlcjsKKyAgICBTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51bWJlcihhbmltYXRpb25FbGVt
ZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgYW5pbWF0ZWRGbG9hdCwgZnJvbU51bWJlciwg
dG9OdW1iZXIpOworICAgIGFuaW1hdGVkTnVtYmVyID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYo
YW5pbWF0ZWRGbG9hdCkpOworfQorCiB2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCiB7CkBAIC03NywxMCAr
MTA5LDggQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ24KICAgICBpbnQmIGFuaW1hdGVkSW50ID0g
YW5pbWF0ZWQtPmludGVnZXIoKTsKICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlv
bikKICAgICAgICAgZnJvbS0+aW50ZWdlcigpID0gYW5pbWF0ZWRJbnQ7Ci0gICAgCi0gICAgZmxv
YXQgcmVzdWx0ID0gYW5pbWF0ZWRJbnQ7Ci0gICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIHJlc3VsdCwgZnJvbS0+aW50ZWdlcigpLCB0by0+aW50ZWdlcigpKTsKLSAgICBh
bmltYXRlZEludCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKHJlc3VsdCkpOworCisgICAgY2Fs
Y3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKGFuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVh
dENvdW50LCBhbmltYXRlZEludCwgZnJvbS0+aW50ZWdlcigpLCB0by0+aW50ZWdlcigpKTsKIH0K
IAogZmxvYXQgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAppbmRleCA1MTJkN2MyNzQzN2YyNTYzODIxYzli
MzU4OTgyMDQ5ZjEyZmI1NDk4Li45NWNjZWI5ZDhlNWQyYTc2ZTM4ZjUxNmY1OTI4YTQyMmEzZmI2
ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCkBAIC0yNywxOCAr
MjcsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVkU3Rh
dGljUHJvcGVydHlUZWFyT2ZmPGxvbmc+IFNWR0FuaW1hdGVkSW50ZWdlcjsKK3R5cGVkZWYgU1ZH
QW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8aW50PiBTVkdBbmltYXRlZEludGVnZXI7CiAK
IC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRlZEludGVnZXIg
b2JqZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkSW50
ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBpbnQsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
LS8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVt
YmVyLCBpbnN0ZWFkIG9mIGludGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2lu
Zy4KICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9B
TklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIsIE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQogCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkBAIC00OCwx
MCArNDcsMTUgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRJ
bnRlZ2VyQW5pbWF0b3IoKSB7IH0KICAgICAKLSAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVBbmlt
YXRlZE51bWJlcihTVkdBbmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsIGZsb2F0JiBhbmltYXRlZE51bWJlciwgZmxvYXQgZnJvbU51bWJlciwg
ZmxvYXQgdG9OdW1iZXIpOwotICAgIAorICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVk
SW50ZWdlcihTVkdBbmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsIGludCYgYW5pbWF0ZWROdW1iZXIsIGludCBmcm9tTnVtYmVyLCBpbnQgdG9O
dW1iZXIpOworCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICAKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNW
R0FuaW1hdGVkUHJvcGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1h
dGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hh
bmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7
CisKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwogICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMWQ4MjRiOGYyZmE4MzVm
YzFkNGZmMTQzYmI5ODBiZGU0Mzc0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcApAQCAtMCwwICsxLDEz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
Mi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCIKKwor
I2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRJbnRl
Z2VyLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OlNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLCBhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKK3sKK30KKworUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+IGFuaW10ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKG5ldyBwYWlyPGludCwgaW50Pik7CisgICAgcGFpcjxpbnQsIGludD4m
IGFuaW1hdGVkSW50ZWdlciA9IGFuaW10ZWRUeXBlLT5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7
CisgICAgZmxvYXQgZmlyc3ROdW1iZXIgPSAwOworICAgIGZsb2F0IHNlY29uZE51bWJlciA9IDA7
CisgICAgaWYgKCFwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZywgZmlyc3ROdW1iZXIs
IHNlY29uZE51bWJlcikpIHsKKyAgICAgICAgYW5pbWF0ZWRJbnRlZ2VyLmZpcnN0ID0gMDsKKyAg
ICAgICAgYW5pbWF0ZWRJbnRlZ2VyLnNlY29uZCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
YW5pbWF0ZWRJbnRlZ2VyLmZpcnN0ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoZmlyc3ROdW1i
ZXIpKTsKKyAgICAgICAgYW5pbWF0ZWRJbnRlZ2VyLnNlY29uZCA9IHN0YXRpY19jYXN0PGludD4o
cm91bmRmKHNlY29uZE51bWJlcikpOworICAgIH0KKyAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVs
ZWFzZSgpOworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIHJldHVybiBT
VkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIoY29uc3RydWN0RnJv
bVR3b0Jhc2VWYWx1ZXM8cGFpcjxpbnQsIGludD4sIGludCwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPihw
cm9wZXJ0aWVzKSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
QW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OnN0
b3BBbmltVmFsQW5pbWF0aW9uRm9yVHlwZTxTVkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRpZXMp
OworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYg
cHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlKQoreworICAgIHJlc2V0RnJvbVR3b0Jh
c2VWYWx1ZXM8cGFpcjxpbnQsIGludD4sIGludCwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0
aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKK30K
Kwordm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6YW5pbVZh
bFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGll
cykKK3sKKyAgICBhbmltVmFsV2lsbENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRJbnRlZ2VyPihw
cm9wZXJ0aWVzKTsKK30KKwordm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJB
bmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1h
dGVkSW50ZWdlcj4ocHJvcGVydGllcyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAg
IFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5p
bWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQt
PmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CisgICAg
CisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBj
b25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBB
U1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7
CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxl
bWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsK
KyAgICAKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0
byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOworCisgICAgcGFpcjxpbnQsIGludD4m
IGZyb21OdW1iZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOworICAgIHBh
aXI8aW50LCBpbnQ+JiB0b051bWJlclBhaXIgPSB0by0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigp
OworICAgIAorICAgIHRvTnVtYmVyUGFpci5maXJzdCArPSBmcm9tTnVtYmVyUGFpci5maXJzdDsK
KyAgICB0b051bWJlclBhaXIuc2Vjb25kICs9IGZyb21OdW1iZXJQYWlyLnNlY29uZDsKK30KKwor
dm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworCisgICAgU1ZHQW5p
bWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxl
bWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworCisgICAgLy8gVG8gYW5p
bWF0aW9uIHVzZXMgY29udHJpYnV0aW9ucyBmcm9tIHRoZSBsb3dlciBwcmlvcml0eSBhbmltYXRp
b25zIGFzIHRoZSBiYXNlIHZhbHVlLgorICAgIHBhaXI8aW50LCBpbnQ+JiBmcm9tTnVtYmVyUGFp
ciA9IGZyb20tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBwYWlyPGludCwgaW50PiYg
YW5pbWF0ZWROdW1iZXJQYWlyID0gYW5pbWF0ZWQtPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsK
KyAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikKKyAgICAgICAgZnJvbU51bWJl
clBhaXIgPSBhbmltYXRlZE51bWJlclBhaXI7CisKKyAgICBwYWlyPGludCwgaW50PiYgdG9OdW1i
ZXJQYWlyID0gdG8tPmludGVnZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKGFuaW1hdGlvbkVsZW1lbnQs
IHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZE51bWJlclBhaXIuZmlyc3QsIGZyb21O
dW1iZXJQYWlyLmZpcnN0LCB0b051bWJlclBhaXIuZmlyc3QpOworICAgIFNWR0FuaW1hdGVkSW50
ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZEludGVnZXIoYW5pbWF0aW9uRWxlbWVudCwg
cGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGFuaW1hdGVkTnVtYmVyUGFpci5zZWNvbmQsIGZyb21O
dW1iZXJQYWlyLnNlY29uZCwgdG9OdW1iZXJQYWlyLnNlY29uZCk7Cit9CisKK2Zsb2F0IFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBj
YWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR0ludGVnZXJPcHRpb25hbEludGVnZXIg
cmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgor
ICAgIHJldHVybiAtMTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NDQ1NjVkYWNmN2M0NDgwNGZjNTk3NTg4MjdiOGMyNjE2MDNlZTIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyX2gKKyNkZWZpbmUgU1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyX2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTVkdBbmltYXRpb25FbGVtZW50OworCitjbGFzcyBTVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXJBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CitwdWJs
aWM6CisgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IoU1ZHQW5p
bWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3Qg
VmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopOworICAgIHZp
cnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9y
PFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOworCisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgYW5pbWF0ZWRWYWx1ZSk7CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuY3BwCmluZGV4IDE0NzczZDQwNDYzMWI0YTc3ZTEwNjBiNDU4Y2RkOWY4MjUxYWU4ZDAu
LmM1ZTg3MzQ3YjE3YWRjOGVmMDMwNjFmNzNiMzA3NTBkYWI1ZjcxNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAK
QEAgLTExNSw2ICsxMTUsOSBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZQogICAgICAgICBmcm9t
TnVtYmVyUGFpciA9IGFuaW1hdGVkTnVtYmVyUGFpcjsKIAogICAgIHBhaXI8ZmxvYXQsIGZsb2F0
PiYgdG9OdW1iZXJQYWlyID0gdG8tPm51bWJlck9wdGlvbmFsTnVtYmVyKCk7CisKKworICAgIAog
ICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkTnVtYmVyKGFu
aW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZE51bWJlclBh
aXIuZmlyc3QsIGZyb21OdW1iZXJQYWlyLmZpcnN0LCB0b051bWJlclBhaXIuZmlyc3QpOwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkTnVtYmVyKGFuaW1h
dGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZE51bWJlclBhaXIu
c2Vjb25kLCBmcm9tTnVtYmVyUGFpci5zZWNvbmQsIHRvTnVtYmVyUGFpci5zZWNvbmQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAppbmRleCA0NTM0MmU2YWE0MzM2MDJi
OGUyYzU4MTBjZTdkN2I3OGUyMDJiZWIzLi5iNjU5MzI3NWY1ZTY4YzBjMDMxODlhMGI4NWE2MDUx
YmUwODYxYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcApAQCAtNTUs
OSArNTUsMTYgQEAgU1ZHQW5pbWF0ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKCkKICAgICBjYXNl
IEFuaW1hdGVkQ29sb3I6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEuY29sb3I7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKKyAgICAgICAgLy8gRklYTUU6IEFu
aW1hdGVkRW51bWVyYXRpb24gaXMgbGVmdCB0b2RvLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgICAg
IGRlbGV0ZSBtX2RhdGEuaW50ZWdlcjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXI6CisgICAgICAgIGRlbGV0ZSBtX2RhdGEuaW50ZWdlck9w
dGlvbmFsSW50ZWdlcjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoK
ICAgICAgICAgZGVsZXRlIG1fZGF0YS5sZW5ndGg7CiAgICAgICAgIGJyZWFrOwpAQCAtOTEsNyAr
OTgsNyBAQCBTVkdBbmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0OgogICAgICAgICBkZWxldGUgbV9kYXRhLnRyYW5zZm9ybUxpc3Q7
CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBbmltYXRlZFVua25vd246
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0xMjksNiArMTM2LDE0IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUludGVnZXIoaW50KiBpbnRlZ2VyKQogICAgIHJldHVybiBhbmltYXRlZFR5
cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKHBhaXI8aW50LCBpbnQ+KiBpbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyKQoreworICAgIEFTU0VSVChpbnRlZ2VyT3B0aW9uYWxJbnRlZ2Vy
KTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcikpOworICAg
IGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXJPcHRpb25hbEludGVnZXIgPSBpbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyOworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCiBQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgo
U1ZHTGVuZ3RoKiBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0yNDEsNiArMjU2
LDEyIEBAIGludCYgU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKCkKICAgICByZXR1cm4gKm1fZGF0
YS5pbnRlZ2VyOwogfQogCitwYWlyPGludCwgaW50PiYgU1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlcik7CisgICAgcmV0dXJuICptX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50
ZWdlcjsgICAgICAgIAorfQorCiBTVkdMZW5ndGgmIFNWR0FuaW1hdGVkVHlwZTo6bGVuZ3RoKCkK
IHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoKTsKQEAgLTMyMiw2ICszNDMs
OSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkKICAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5pbnRlZ2VyKTsKICAgICAgICAg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKCptX2RhdGEuaW50ZWdlcik7CisgICAgY2FzZSBBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXI6CisgICAgICAgIEFTU0VSVChtX2RhdGEuaW50ZWdlck9w
dGlvbmFsSW50ZWdlcik7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX2RhdGEuaW50
ZWdlck9wdGlvbmFsSW50ZWdlci0+Zmlyc3QpICsgJyAnICsgU3RyaW5nOjpudW1iZXIobV9kYXRh
LmludGVnZXJPcHRpb25hbEludGVnZXItPnNlY29uZCk7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwogICAgICAgICByZXR1cm4gbV9kYXRh
Lmxlbmd0aC0+dmFsdWVBc1N0cmluZygpOwpAQCAtMzU5LDcgKzM4MywxMSBAQCBTdHJpbmcgU1ZH
QW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkKICAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9y
bUxpc3Q6CiAgICAgICAgIEFTU0VSVChtX2RhdGEudHJhbnNmb3JtTGlzdCk7CiAgICAgICAgIHJl
dHVybiBtX2RhdGEudHJhbnNmb3JtTGlzdC0+dmFsdWVBc1N0cmluZygpOwotICAgIGRlZmF1bHQ6
CisgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgorICAgICAgICAvLyBGSVhNRTogQW5pbWF0
ZWRFbnVtZXJhdGlvbiBpcyBsZWZ0IHRvZG8uCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzgyLDE0ICs0MTAsMTAg
QEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmkKICAgICAgICAgQVNTRVJUKG1fZGF0YS5jb2xvcik7
CiAgICAgICAgICptX2RhdGEuY29sb3IgPSB2YWx1ZS5pc0VtcHR5KCkgPyBDb2xvcigpIDogU1ZH
Q29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHZhbHVlKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBbmltYXRlZEludGVnZXI6IHsKLSAgICAgICAgQVNTRVJUKG1fZGF0YS5pbnRlZ2Vy
KTsKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgKm1fZGF0YS5pbnRlZ2VyID0gdmFsdWUudG9J
bnRTdHJpY3QoJm9rKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIGVjID0gMTsgLy8g
QXJiaXRhcnkgdmFsdWUgPiAwLCBpdCBkb2Vzbid0IG1hdHRlciBhcyB3ZSBkb24ndCByZXBvcnQg
dGhlIGV4Y2VwdGlvbiBjb2RlLgorICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKKyAgICAg
ICAgLy8gRklYTUU6IEFuaW1hdGVkRW51bWVyYXRpb24gaXMgbGVmdCB0b2RvLgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgQW5p
bWF0ZWRMZW5ndGg6CiAgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKICAgICAgICAgbV9k
YXRhLmxlbmd0aC0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSwgU1ZHTGVuZ3RoOjpsZW5ndGhNb2Rl
Rm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpLCBlYyk7CkBAIC00MDIsMTQgKzQy
Niw2IEBAIGJvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVChtX2RhdGEubnVt
YmVyKTsKICAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHZhbHVlLCAqbV9kYXRhLm51bWJl
cik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgotICAgICAg
ICBBU1NFUlQobV9kYXRhLm51bWJlckxpc3QpOwotICAgICAgICBtX2RhdGEubnVtYmVyTGlzdC0+
cGFyc2UodmFsdWUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXI6Ci0gICAgICAgIEFTU0VSVChtX2RhdGEubnVtYmVyT3B0aW9uYWxOdW1iZXIp
OwotICAgICAgICBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHZhbHVlLCBtX2RhdGEubnVtYmVy
T3B0aW9uYWxOdW1iZXItPmZpcnN0LCBtX2RhdGEubnVtYmVyT3B0aW9uYWxOdW1iZXItPnNlY29u
ZCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CiAgICAgICAgIEFT
U0VSVChtX2RhdGEucGF0aCk7CiAgICAgICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gcGF0
aEJ5dGVTdHJlYW0gPSBhZG9wdFB0cihtX2RhdGEucGF0aCk7CkBAIC00MzUsOCArNDUxLDE1IEBA
IGJvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVChtX2RhdGEuc3RyaW5nKTsK
ICAgICAgICAgKm1fZGF0YS5zdHJpbmcgPSB2YWx1ZTsKICAgICAgICAgYnJlYWs7CisKKyAgICAv
LyBUaGVzZSB0eXBlcyBkb24ndCBhcHBlYXIgaW4gdGhlIHRhYmxlIGluIFNWR1N0eWxlZEVsZW1l
bnQ6OmNzc1Byb3BlcnR5VG9UeXBlTWFwKCkgYW5kIHRodXMgZG9uJ3QgbmVlZCBzZXRWYWx1ZUFz
U3RyaW5nKCkgc3VwcG9ydC4gCisgICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CisgICAgY2Fz
ZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2Vy
OgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgogICAgIGNhc2UgQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0OgotICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBbmltYXRlZFVua25v
d246CisgICAgICAgIC8vIE9ubHkgU1ZHIERPTSBhbmltYXRpb25zIHVzZSB0aGVzZSBwcm9wZXJ0
eSB0eXBlcyAtIHRoYXQgbWVhbnMgc2V0VmFsdWVBc1N0cmluZygpIGlzIG5ldmVyIHVzZWQgZm9y
IHRob3NlLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtNDUzLDYgKzQ3Niw4IEBAIGJvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpzdXBwb3J0c0Fu
aW1WYWwoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBs
aXN0cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBvdXIgYW5pbVZhbCBzdXBwb3J0LgogICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgorICAgIGNhc2UgQW5pbWF0ZWRJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2Fz
ZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKQEAgLTQ2NCw3
ICs0ODksNiBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVk
UHJvcGVydHlUeXBlIHR5cGUpCiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBB
bmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKLSAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICBjYXNlIEFuaW1hdGVk
UG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZS5oCmluZGV4IDlmZjE5YTVjY2YyOTFlMjk4ZmM0ZjRjMjQ3Mzdh
NmQ1ZDM4Zjg5MzYuLjQ2Mzc5ZDMwMjViMDJjODBhNThhODA4NTM3YmU3ZDExYjAwOWFmMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQm9vbGVhbihi
b29sKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xv
cihDb2xvciopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
SW50ZWdlcihpbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNy
ZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIoc3RkOjpwYWlyPGludCwgaW50PiopOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCop
OwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoTGlz
dChTVkdMZW5ndGhMaXN0Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjcmVhdGVOdW1iZXIoZmxvYXQqKTsKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIGJv
b2wmIGJvb2xlYW4oKTsKICAgICBDb2xvciYgY29sb3IoKTsKICAgICBpbnQmIGludGVnZXIoKTsK
KyAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+JiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKCk7CiAgICAg
U1ZHTGVuZ3RoJiBsZW5ndGgoKTsKICAgICBTVkdMZW5ndGhMaXN0JiBsZW5ndGhMaXN0KCk7CiAg
ICAgZmxvYXQmIG51bWJlcigpOwpAQCAtOTcsNiArOTksNyBAQCBwcml2YXRlOgogICAgICAgICBi
b29sKiBib29sZWFuOwogICAgICAgICBDb2xvciogY29sb3I7CiAgICAgICAgIGludCogaW50ZWdl
cjsKKyAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiogaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsK
ICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAgIFNWR0xlbmd0aExpc3QqIGxlbmd0
aExpc3Q7CiAgICAgICAgIGZsb2F0KiBudW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
b3JGYWN0b3J5LmgKaW5kZXggMDI4ZGFmNjQxNjA1Nzg4NjNlNDM4ODhkM2ExZmVkZGY0MjM0ODg2
Yy4uOTVjMzczMmFmMjYxMGM1ZGViNjBiZGYwZTAzNDgzZTQ0Yzg4YTBiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQ29sb3IuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZEludGVnZXIuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZEludGVn
ZXJPcHRpb25hbEludGVnZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVt
YmVyLmgiCkBAIC01Nyw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcihhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlcjoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihhbmltYXRpb25FbGVt
ZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRleCA5OTU1MGEzN2Y0YWQ3
NjU2ZmI3NTA3NWFiOTc5M2IzNGJkY2Q5YjMxLi45Zjg3MWM5M2IyOGNjODE3OWE5NTBiNmQyNTBi
Njc4MTc4ZTg3OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRmlsdGVyRWxlbWVudDo6Zmls
dGVyUmVzWUlkZW50aWZpZXIoKQogICAgIHJldHVybiBzX2lkZW50aWZpZXI7CiB9CiAKLXZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6c2V0RmlsdGVyUmVzKHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVzWCwg
dW5zaWduZWQgbG9uZyBmaWx0ZXJSZXNZKQordm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzZXRGaWx0
ZXJSZXModW5zaWduZWQgZmlsdGVyUmVzWCwgdW5zaWduZWQgZmlsdGVyUmVzWSkKIHsKICAgICBz
ZXRGaWx0ZXJSZXNYQmFzZVZhbHVlKGZpbHRlclJlc1gpOwogICAgIHNldEZpbHRlclJlc1lCYXNl
VmFsdWUoZmlsdGVyUmVzWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAppbmRl
eCA0OGI2NzY2NGU3YmVlYzU2ZDI0NWIwNTBlNTE0NDFiZWM1MjdmM2FkLi5lODY1YTUxOWMzZjBi
MGZlNTI0NDFhZThiYThkMzRiNjZhMzZlMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudCA6IHB1Ymxp
YyBTVkdTdHlsZWRFbGVtZW50LAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Zp
bHRlckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAot
ICAgIHZvaWQgc2V0RmlsdGVyUmVzKHVuc2lnbmVkIGxvbmcgZmlsdGVyUmVzWCwgdW5zaWduZWQg
bG9uZyBmaWx0ZXJSZXNZKTsKKyAgICB2b2lkIHNldEZpbHRlclJlcyh1bnNpZ25lZCBmaWx0ZXJS
ZXNYLCB1bnNpZ25lZCBmaWx0ZXJSZXNZKTsKIAogcHJpdmF0ZToKICAgICBTVkdGaWx0ZXJFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKaW5kZXggY2NmODAzNjE0ZTIyNjhiYmNiYTQxMWI4MjA5YjkzZDU4M2I2
NTEwOS4uZGRhYWJlZWZiMTg2OWJmYTRmY2QwYzcwZjA0ZDY0NTkxMDAzODM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0xMDEsOSArMTAxLDkgQEAgRmxvYXRQb2lu
dCBTVkdQYXRoRWxlbWVudDo6Z2V0UG9pbnRBdExlbmd0aChmbG9hdCBsZW5ndGgpCiAgICAgcmV0
dXJuIHBvaW50OwogfQogCi11bnNpZ25lZCBsb25nIFNWR1BhdGhFbGVtZW50OjpnZXRQYXRoU2Vn
QXRMZW5ndGgoZmxvYXQgbGVuZ3RoKQordW5zaWduZWQgU1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhT
ZWdBdExlbmd0aChmbG9hdCBsZW5ndGgpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBwYXRoU2VnID0g
MDsKKyAgICB1bnNpZ25lZCBwYXRoU2VnID0gMDsKICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
c2VsZigpLT5nZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0obV9wYXRo
Qnl0ZVN0cmVhbS5nZXQoKSwgbGVuZ3RoLCBwYXRoU2VnKTsKICAgICByZXR1cm4gcGF0aFNlZzsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKaW5kZXggMGFkZTViY2MwOTFlMmU3ZWYy
YzFkYTNhYjEyN2MyM2ZjNDJlNTQ2OS4uMjZjYzM2YmNiNjZmZWM2MzhjYjg1Y2NjMGIwNWI3MmFj
YTExNGU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIAogICAgIGZsb2F0IGdldFRvdGFsTGVuZ3RoKCk7CiAgICAgRmxvYXRQ
b2ludCBnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsKLSAgICB1bnNpZ25lZCBsb25n
IGdldFBhdGhTZWdBdExlbmd0aChmbG9hdCBkaXN0YW5jZSk7CisgICAgdW5zaWduZWQgZ2V0UGF0
aFNlZ0F0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsKIAogICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNl
Z0Nsb3NlUGF0aD4gY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9sZSByb2xl
ID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwogICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0
b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRo
U2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAKaW5kZXggMDEwOTdhNzE0MTgzZjk0MjhkMDczOTQz
ODQ5MzgxYmRmMDZmMDljYi4uZDg0ODUxNjc1YjIyOWE2MGQyOTA4ZDMwZDQzYmYzY2FkNWRiMDIy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCkBAIC0y
NjIsNyArMjYyLDcgQEAgYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRBbmltYXRlZFNW
R1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBmcm8KICAgICByZXR1cm4gb2s7CiB9
CiAKLWJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21T
VkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBmbG9hdCBsZW5ndGgs
IHVuc2lnbmVkIGxvbmcmIHBhdGhTZWcpCitib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpnZXRT
VkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0q
IHN0cmVhbSwgZmxvYXQgbGVuZ3RoLCB1bnNpZ25lZCYgcGF0aFNlZykKIHsKICAgICBBU1NFUlQo
c3RyZWFtKTsKICAgICBpZiAoc3RyZWFtLT5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoUGFyc2VyRmFjdG9yeS5oCmluZGV4IDg5NGUyNGVmNGE2NjMzZmI2ZGMwMzRkMDI1MWVm
ZDYyNTkwM2M0MWIuLjY1OTM4MjVmYWZjOTU1OTY3ZTBmYmZjYTQyMzFhNjBjN2ZmMzRkMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShT
VkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhFbGVtZW50KiwgU1ZHUGF0aFNlZ0xpc3QmLCBQYXRo
UGFyc2luZ01vZGUpOwogCiAgICAgYm9vbCBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0o
U1ZHUGF0aEJ5dGVTdHJlYW0qLCBTVkdQYXRoQnl0ZVN0cmVhbSosIE93blB0cjxTVkdQYXRoQnl0
ZVN0cmVhbT4mLCBmbG9hdCk7Ci0gICAgYm9vbCBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZH
UGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCBsZW5ndGgsIHVuc2lnbmVk
IGxvbmcmIHBhdGhTZWcpOworICAgIGJvb2wgZ2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1Bh
dGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgZmxvYXQgbGVuZ3RoLCB1bnNpZ25lZCYg
cGF0aFNlZyk7CiAgICAgYm9vbCBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZH
UGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCYgdG90YWxMZW5ndGgpOwogICAgIGJvb2wgZ2V0UG9pbnRB
dExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9hdCBsZW5n
dGgsIEZsb2F0UG9pbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCmluZGV4IDJiY2E1YTI2MWRhOGQ5Y2ZiODcwZTk3ZGFm
NTNlMTI2MTRjNjczZWIuLjJiZDk4ZTU1M2U1N2QxZmNjYTBkMjY2MTNlMTYxNjFlNmEyNzNkOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyOjppbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkKICAgICArK21fdHJhdmVyc2FsU3RhdGUt
Pm1fc2VnbWVudEluZGV4OwogfQogCi11bnNpZ25lZCBsb25nIFNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXI6OnBhdGhTZWdtZW50SW5kZXgoKQordW5zaWduZWQgU1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlcjo6cGF0aFNlZ21lbnRJbmRleCgpCiB7CiAgICAgQVNTRVJUKG1fdHJhdmVyc2Fs
U3RhdGUpOwogICAgIHJldHVybiBtX3RyYXZlcnNhbFN0YXRlLT5tX3NlZ21lbnRJbmRleDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCmlu
ZGV4IDE3MjYxNjUzNDEyNTRiOWVmODA0ZGEzYmRkZmE5OWFjZjQwNTY2YTcuLmIyNjJkZGY0NzQ3
N2I3MjdjMmJhZjgzYWEyY2IwZjk1Y2YyMDZmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFz
cyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7
CiBwdWJsaWM6CiAgICAgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcigpOwogCi0gICAgdW5z
aWduZWQgbG9uZyBwYXRoU2VnbWVudEluZGV4KCk7CisgICAgdW5zaWduZWQgcGF0aFNlZ21lbnRJ
bmRleCgpOwogICAgIGZsb2F0IHRvdGFsTGVuZ3RoKCk7CiAgICAgRmxvYXRQb2ludCBjdXJyZW50
UG9pbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCmluZGV4
IDdlNWE2MjYxYzE0MWRiOWY3ZjkxM2RmYTE5NWMwMTBmZjdlMDRiY2MuLjA1Njc2OGQ4MmUxNGE4
MjI3M2U0MWExMmI5YmY5YjhkOWUxYTI2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmgKQEAgLTI4LDI5ICsyOCwyOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnVtVHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmY8aW50PiB7CitjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmIDog
cHVibGljIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkIHNob3J0PiB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoY29uc3QgaW50JiBwcm9wZXJ0
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoY29uc3Qg
dW5zaWduZWQgc2hvcnQmIHByb3BlcnR5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7CiAgICAg
ICAgIC8vIEFsbCBTVkcgZW51bWVyYXRpb24gdmFsdWVzLCB0aGF0IGFyZSBhbGxvd2VkIHRvIGJl
IHNldCB2aWEgU1ZHIERPTSBzdGFydCB3aXRoIDEsIDAgY29ycmVzcG9uZHMgdG8gdW5rbm93biBh
bmQgaXMgbm90IHNldHRhYmxlIHRocm91Z2ggU1ZHIERPTS4KICAgICAgICAgaWYgKHByb3BlcnR5
IDw9IDAgfHwgcHJvcGVydHkgPiBTVkdQcm9wZXJ0eVRyYWl0czxFbnVtVHlwZT46OmhpZ2hlc3RF
bnVtVmFsdWUoKSkgewogICAgICAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19JTlZBTElE
X1ZBTFVFX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBTVkdB
bmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxpbnQ+OjpzZXRCYXNlVmFsKHByb3BlcnR5LCBl
Yyk7CisgICAgICAgIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkIHNo
b3J0Pjo6c2V0QmFzZVZhbChwcm9wZXJ0eSwgZWMpOwogICAgIH0KIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+ID4g
Y3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwg
RW51bVR5cGUmIHByb3BlcnR5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmPEVudW1UeXBlPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8aW50Jj4ocHJvcGVydHkpKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZjxFbnVtVHlwZT4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
UHJvcGVydHlUeXBlLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Jj4ocHJvcGVydHkp
KSk7CiAgICAgfQogCi0gICAgRW51bVR5cGUmIGN1cnJlbnRBbmltYXRlZFZhbHVlKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxFbnVtVHlwZSY+KFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmPGludD46OmN1cnJlbnRBbmltYXRlZFZhbHVlKCkpOyB9CisgICAgRW51bVR5cGUmIGN1
cnJlbnRBbmltYXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFbnVtVHlwZSY+
KFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkIHNob3J0Pjo6Y3VycmVu
dEFuaW1hdGVkVmFsdWUoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFBy
b3BlcnR5VHlwZSwgaW50JiBwcm9wZXJ0eSkKLSAgICAgICAgOiBTVkdBbmltYXRlZFN0YXRpY1By
b3BlcnR5VGVhck9mZjxpbnQ+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZFByb3BlcnR5VHlwZSwgcHJvcGVydHkpCisgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3Bl
cnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUsIHVuc2lnbmVkIHNob3J0JiBwcm9wZXJ0eSkKKyAgICAgICAgOiBTVkdBbmltYXRlZFN0YXRp
Y1Byb3BlcnR5VGVhck9mZjx1bnNpZ25lZCBzaG9ydD4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBwcm9wZXJ0eSkKICAgICB7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgKaW5k
ZXggMTlhYzJhNWJjMDY2ZDU5NjljNzVlOTUzOWIxY2IzMzU3OWZhZjJhNi4uNTc5MzEyODA4MTVh
NDJiNWJjNWFlNzk0NTQ0YmY4MWE3YTBjZWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgKQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBBbmlt
YXRlZFByb3BlcnR5VHlwZSB7CiAgICAgQW5pbWF0ZWRDb2xvciwKICAgICBBbmltYXRlZEVudW1l
cmF0aW9uLAogICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIsCiAgICAgQW5pbWF0ZWRMZW5ndGgsCiAgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAog
ICAgIEFuaW1hdGVkTnVtYmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5VHJhaXRzLmgKaW5kZXggMGVkOTMzOWMyNTY5OTJiZmU4MTdhZWNlZWY0ZDJl
YjRkNjMzYjQ0Mi4uYjZmMjBkYmVhNzQ2ODBkM2M0NDBjMjYwNTYwZGU3NjRjYmNhYmZlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5o
CkBAIC0zNiwxNSArMzYsMTUgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+IHsKIH07
CiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+IHsKLSAgICBzdGF0
aWMgaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGludCB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQorc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPHVuc2lnbmVkIHNob3J0PiB7CisgICAgc3RhdGljIHVuc2lnbmVk
IHNob3J0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKHVuc2lnbmVkIHNob3J0IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUp
OyB9CiB9OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8bG9uZz4gewot
ICAgIHN0YXRpYyBsb25nIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGxvbmcgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7
IH0KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+IHsKKyAgICBzdGF0aWMgaW50IGluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGludCB0
eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQogfTsKIAogdGVtcGxhdGU8Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY5NTk2ZWZiMWUyMjZkOTRjNWU5NWFmNDdkODAzYTYzOWIzYzIxMGUuLjY4MjNkMDIy
OTEzYzAwMTE3ZjVmZWIxZTU1YzE5MDA3NDIzMGFjYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAxMi0wMy0yNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKwor
ICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1cHBvcnQgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyIGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njc1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFeHRlbmQgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRlc3RzIHRvIGNvdmVy
IGFuaW1WYWwgc3VwcG9ydC4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0
cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzOgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAg
IChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLmpzOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnaW50ZWdlci1hbmltYXRpb24t
MS5qcy4KKyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChz
YW1wbGUzKToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9u
cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvYW5p
bWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMi5odG1sOiBBZGRlZC4K
KwogMjAxMi0wMy0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBOb3QgcmV2aWV3ZWQuIFJlYmFzZWxpbmUgY2hyb21pdW0gZm9yZWlnbk9iamVjdCBy
ZXN1bHRzLCBhZnRlciBOaWtvbGFzJ3MgcmViYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS5q
cyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFu
aW1hdGlvbi0xLmpzCmluZGV4IDZhNTVmMDFkMTM2YjYxMmM0ZjU0OGY2ZTk3MDc3YWM5MDgwMGYy
MTQuLjdkOTM5Y2QzZGNjMDk2ZTk2ZGMzMzNiYTU4MGIxYzRlM2Q4MTZkNWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1h
dGlvbi0xLmpzCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9z
dmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzCkBAIC0zNywxNyArMzcsMTcgQEAgZmVDb252bHZlTWF0
cml4LmFwcGVuZENoaWxkKGFuaW1hdGUpOwogLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKIGZ1bmN0
aW9uIHNhbXBsZTEoKSB7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVDb252b2x2ZU1hdHJp
eC50YXJnZXRYLmFuaW1WYWwiLCAiMCIpOwotICAgIC8vIHNob3VsZEJlKCJmZUNvbnZvbHZlTWF0
cml4LnRhcmdldFguYmFzZVZhbCIsICIwIik7CisgICAgc2hvdWxkQmUoImZlQ29udm9sdmVNYXRy
aXgudGFyZ2V0WC5iYXNlVmFsIiwgIjAiKTsKIH0KIAogZnVuY3Rpb24gc2FtcGxlMigpIHsKICAg
ICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZhbCIs
ICIxIik7Ci0gICAgLy8gc2hvdWxkQmUoImZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNlVmFs
IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmJhc2VWYWwi
LCAiMCIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUzKCkgewogICAgIHNob3VsZEJlQ2xvc2VFbm91
Z2goImZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIiwgIjIiKTsKLSAgICAvLyBzaG91
bGRCZSgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmJhc2VWYWwiLCAiMCIpOworICAgIHNob3Vs
ZEJlKCJmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYmFzZVZhbCIsICIwIik7CiB9CiAKIGZ1bmN0
aW9uIGV4ZWN1dGVUZXN0KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc2NyaXB0LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuanMgYi9MYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnaW50ZWdlci1hbmltYXRpb24tMi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYzVjYWI0MzU5MGEwOWEyNjRmZDVjMTdmN2ZmZWQyZDhkYWI1MTg2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2lu
dGVnZXItYW5pbWF0aW9uLTIuanMKQEAgLTAsMCArMSw3MCBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
YW5pbWF0aW9uIG9mIFNWR0ludGVnZXIuIik7CitjcmVhdGVTVkdUZXN0Q2FzZSgpOworCisvLyBT
ZXR1cCB0ZXN0IGRvY3VtZW50Cit2YXIgZGVmcyA9IGNyZWF0ZVNWR0VsZW1lbnQoImRlZnMiKTsK
K3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKGRlZnMpOworCit2YXIgZmlsdGVyID0gY3JlYXRl
U1ZHRWxlbWVudCgiZmlsdGVyIik7CitmaWx0ZXIuc2V0QXR0cmlidXRlKCJpZCIsICJmaWx0ZXIi
KTsKK2RlZnMuYXBwZW5kQ2hpbGQoZmlsdGVyKTsKKwordmFyIHJlY3QgPSBjcmVhdGVTVkdFbGVt
ZW50KCJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworcmVjdC5zZXRB
dHRyaWJ1dGUoIndpZHRoIiwgIjIwMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIy
MDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CityZWN0LnNldEF0dHJp
YnV0ZSgiZmlsdGVyIiwgInVybCgjZmlsdGVyKSIpOworcmVjdC5zZXRBdHRyaWJ1dGUoIm9uY2xp
Y2siLCAiZXhlY3V0ZVRlc3QoKSIpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdCk7
CisKK3ZhciBmZUNvbnZvbHZlTWF0cml4ID0gY3JlYXRlU1ZHRWxlbWVudCgiZmVDb252b2x2ZU1h
dHJpeCIpOworZmVDb252b2x2ZU1hdHJpeC5zZXRBdHRyaWJ1dGUoImlkIiwgImZlQ29udmx2ZU1h
dHJpeCIpOworZmVDb252b2x2ZU1hdHJpeC5zZXRBdHRyaWJ1dGUoIm9yZGVyIiwgIjMgMSIpOwor
ZmVDb252b2x2ZU1hdHJpeC5zZXRBdHRyaWJ1dGUoImtlcm5lbE1hdHJpeCIsICIwIDAgMSIpOwor
ZmlsdGVyLmFwcGVuZENoaWxkKGZlQ29udm9sdmVNYXRyaXgpOworCit2YXIgYW5pbWF0ZSA9IGNy
ZWF0ZVNWR0VsZW1lbnQoImFuaW1hdGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJh
bmltYXRpb24iKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgIm9yZGVy
Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYmVnaW4iLCAicmVjdC5jbGljayIpOworYW5pbWF0
ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0cyIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImZyb20i
LCAiMyAxIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgidG8iLCAiMSAzIik7CitmZUNvbnZsdmVN
YXRyaXguYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7CisKKy8vIFNldHVwIGFuaW1hdGlvbiB0ZXN0Citm
dW5jdGlvbiBzYW1wbGUxKCkgeworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZlQ29udm9sdmVN
YXRyaXgub3JkZXJYLmFuaW1WYWwiLCAiMyIpOworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZl
Q29udm9sdmVNYXRyaXgub3JkZXJZLmFuaW1WYWwiLCAiMSIpOworICAgIHNob3VsZEJlKCJmZUNv
bnZvbHZlTWF0cml4Lm9yZGVyWC5iYXNlVmFsIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiZmVDb252
b2x2ZU1hdHJpeC5vcmRlclkuYmFzZVZhbCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIo
KSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVDb252b2x2ZU1hdHJpeC5vcmRlclguYW5p
bVZhbCIsICIyIik7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVDb252b2x2ZU1hdHJpeC5v
cmRlclkuYW5pbVZhbCIsICIyIik7CisgICAgc2hvdWxkQmUoImZlQ29udm9sdmVNYXRyaXgub3Jk
ZXJYLmJhc2VWYWwiLCAiMyIpOworICAgIHNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4Lm9yZGVy
WS5iYXNlVmFsIiwgIjEiKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKyAgICBzaG91bGRC
ZUNsb3NlRW5vdWdoKCJmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWC5hbmltVmFsIiwgIjEiKTsKKyAg
ICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5hbmltVmFsIiwg
IjMiKTsKKyAgICBzaG91bGRCZSgiZmVDb252b2x2ZU1hdHJpeC5vcmRlclguYmFzZVZhbCIsICIz
Iik7CisgICAgc2hvdWxkQmUoImZlQ29udm9sdmVNYXRyaXgub3JkZXJZLmJhc2VWYWwiLCAiMSIp
OworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZhbHVl
cyA9IFsKKyAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBzYW1wbGVDYWxsYmFja10KKyAg
ICAgICAgWyJhbmltYXRpb24iLCAwLjAsICAgc2FtcGxlMV0sCisgICAgICAgIFsiYW5pbWF0aW9u
IiwgMi4wLCAgIHNhbXBsZTJdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5LCBzYW1wbGUz
XSwKKyAgICAgICAgWyJhbmltYXRpb24iLCA0LjAwMSwgc2FtcGxlMV0KKyAgICBdOworCisgICAg
cnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3Zn
aW50ZWdlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dAppbmRleCAzZDM3YTczYWUz
MDAzMmNmOGMzNjNiMzc5ODNhZmIzMDE1Njc2NjgzLi5mMDliNThkODNlM2I4YTk3MTE2OTRmOTkx
ZTE5ZTFjYWVkYjgwMzM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9z
dmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dApAQCAtNiw5ICs2
LDEzIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBmZUNvbnZvbHZlTWF0cml4
LnRhcmdldFguYW5pbVZhbCBpcyAwCitQQVNTIGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNl
VmFsIGlzIDAKIFBBU1MgZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwgaXMgMQorUEFT
UyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYmFzZVZhbCBpcyAwCiBQQVNTIGZlQ29udm9sdmVN
YXRyaXgudGFyZ2V0WC5hbmltVmFsIGlzIDIKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC50YXJnZXRY
LmJhc2VWYWwgaXMgMAogUEFTUyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZhbCBpcyAw
CitQQVNTIGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNlVmFsIGlzIDAKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYTAxZDBjZjRkYjZiYzg2OWQzNzZhODIwNzlmODA4ZGZhZWU2
Yzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50
ZWdlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorU1ZHIDEuMSBk
eW5hbWljIGFuaW1hdGlvbiB0ZXN0cworCitUZXN0IGFuaW1hdGlvbiBvZiBTVkdJbnRlZ2VyLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9y
ZGVyWC5hbmltVmFsIGlzIDMKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclkuYW5pbVZhbCBp
cyAxCitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJYLmJhc2VWYWwgaXMgMworUEFTUyBmZUNv
bnZvbHZlTWF0cml4Lm9yZGVyWS5iYXNlVmFsIGlzIDEKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5v
cmRlclguYW5pbVZhbCBpcyAyCitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJZLmFuaW1WYWwg
aXMgMgorUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWC5iYXNlVmFsIGlzIDMKK1BBU1MgZmVD
b252b2x2ZU1hdHJpeC5vcmRlclkuYmFzZVZhbCBpcyAxCitQQVNTIGZlQ29udm9sdmVNYXRyaXgu
b3JkZXJYLmFuaW1WYWwgaXMgMQorUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5hbmltVmFs
IGlzIDMKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclguYmFzZVZhbCBpcyAzCitQQVNTIGZl
Q29udm9sdmVNYXRyaXgub3JkZXJZLmJhc2VWYWwgaXMgMQorUEFTUyBmZUNvbnZvbHZlTWF0cml4
Lm9yZGVyWC5hbmltVmFsIGlzIDMKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclkuYW5pbVZh
bCBpcyAxCitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJYLmJhc2VWYWwgaXMgMworUEFTUyBm
ZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5iYXNlVmFsIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTcz
ZjBiMzM3MzhmMDlkM2JhNjBjOGNkZDExZDg0M2JjZDBlZjcyZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuaHRtbApA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5TTUlMVGVzdCgpIj4KKzxoMT5TVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9u
IHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133689</attachid>
            <date>2012-03-25 13:34:54 -0700</date>
            <delta_ts>2012-03-26 10:47:56 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-67563-20120325223452.patch</filename>
            <type>text/plain</type>
            <size>57154</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTc1ODU0YzM4NTY3NjQz
MTNlYTU3MTUzYWE5YmU1N2VkNDE1Y2RmMC4uOTc2ZTQzZWFhODVkZDI4NWMxMTdkNTNmNzIxYTU3
NDQwNmRkMzJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAzLTI1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFNWR0FuaW1h
dGVkVHlwZSBzaG91bGQgc3VwcG9ydCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIg
YW5pbWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NzU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIgdHlwZSBoYW5kbGluZyBhbmlt
YXRpb24gb2YgcGFpcjxpbnQsIGludD4gb2JqZWN0cworICAgICAgICBhcyB1c2VkIGZvciB0aGUg
U1ZHIHByb3BlcnRpZXMgJ2ZpbHRlclJlcycgYW5kICdvcmRlcicuIFRoZXkncmUgY3VycmVudGx5
IGFuaW1hdGVkIGFzCisgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIgLSBi
dXQgdGhhdCB3b24ndCB3b3JrIGZvciBhbmltVmFsIHN1cHBvcnQuIEZpeCB0aGF0CisgICAgICAg
IGFuZCBlbmFibGUgYW5pbVZhbCBzdXBwb3J0IGZvciBTVkdBbmltYXRlZEludGVnZXIoT3B0aW9u
YWxJbnRlZ2VyKS4KKworICAgICAgICBVc2UgJ2ludCcgYXMgZGF0YXR5cGUgZm9yIFNWR0FuaW1h
dGVkSW50ZWdlciBpbnN0ZWFkIG9mICdsb25nJyBmb3IgY29uc2lzdGVuY3ksIGFuZAorICAgICAg
ICBtb3ZlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZnJvbSAnaW50JyB0byAndW5zaWduZWQgc2hv
cnQnLCB0byBtYWtlIHRoZW0gZGlzdGluZ3Vpc2hhYmxlLgorCisgICAgICAgIFRlc3Q6IHN2Zy9h
bmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuaHRtbAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OnN0b3BBbmlt
VmFsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1h
dG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZElu
dGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0
b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlckFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdl
ck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpzdGFy
dEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpyZXNl
dEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjphbmltVmFs
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXJBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6flNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlckFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp+
U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3Jl
YXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6aW50ZWdlck9wdGlvbmFsSW50ZWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgIChTVkdBbmltYXRlZFR5cGUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9y
RmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzZXRGaWx0ZXJSZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgIChTVkdGaWx0ZXJFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhF
bGVtZW50Lmg6CisgICAgICAgIChTVkdQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhQYXJzZXJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0pOgorICAgICAg
ICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oOgorICAgICAgICAoU1ZHUGF0aFBhcnNlckZh
Y3RvcnkpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnBhdGhTZWdt
ZW50SW5kZXgpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmg6
CisgICAgICAgIChTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmOjpzZXRC
YXNlVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0
eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmOjpjdXJyZW50QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZEVu
dW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUluZm8uaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0
cy5oOgorCiAyMDEyLTAzLTI1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgZHVwbGljYXRlZCBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCkg
ZnJvbSBjb2RlIGdlbmVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTg0ODU4MzZjZDE4
ODI2YTdmNzVjYWMwNDVmODFlYjM5MTJlYmZhNS4uYmY0NTcwN2E4Njc3NjAwODM0ZWY5ZDBjOTFl
M2VlNzM3N2QzNzVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3NjcsNiArMTc2Nyw3IEBA
IElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAogICAg
ICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5jcHAKKyAgICAgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5j
cHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogICAgICAgICBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmZDg4ZmVkYTY4N2RiOWQ2MjVhZGFhOTNj
NTRiZWZiNTdmZjE4NDYwLi42OGJiY2ExYzNhOTA1MGVkNDYyN2EyYmUwYTljYWRiNDQwZjk3NjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQxMjAsNiArNDEyMCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDgzZDNkMzMxYmNkMWVjMTJkNDhkNjMzZjI1
NThjNWFiZGZhZTYxZGMuLmQ3N2Y5NDdjMjk1ZjQ5OWIzNzY4MGRhMjRiNjYwMzQzYmU2NWZjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMjYwMiw2ICsyNjAyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3Zn
L1NWR0FuaW1hdGVkQ29sb3IuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBc
CiAgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oIFwKKyAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5oIFwKICAg
ICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggXAogICAgIHN2Zy9TVkdBbmltYXRlZE51bWJl
ci5oIFwKQEAgLTM1MDQsNiArMzUwNSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9
MSkgewogICAgICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAgXAogICAg
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwIFwKICAgICAgICAgICAgICAg
ICAgIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIFwKKyAgICAgICAgICAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIFwKICAgICAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogICAgICAgICAgICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC5jcHAgXAogICAgICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOGVlZDcxZmMzZDFhMThkMTFhZDJjNzNl
ZjRjZmFlMzJlY2Y1NTdmMC4uMjE2ZjI0ODUxZjNmMTMwYjZkNzVlYTNkOWNjZjc4ZTMzOGNjZDUw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjc4LDYgKzY3OCw3IEBACiAgICAgICAgICAgICAnc3Zn
L1NWR0FuaW1hdGVkQ29sb3IuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oJywKKyAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgnLAogICAgICAg
ICAgICAgJ3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlci5o
JywKQEAgLTU4MzksNiArNTg0MCw3IEBACiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbi5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCcsCiAgICAg
ICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9T
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwJywKICAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEzNzY2
ZjJlZDI3ZDMyNjE0ZjkxMjUwMjI1NjYxMWFjNjVlNGRmZWQuLmJmNDY5OThhZjZkNTczYzRjNjc4
ZDVlZTRiOTY0ZDJlNDZiMGFjOTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC03MDE4Niw2ICs3MDE4NiwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlZExlbmd0aC5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NDAwNzM3NmQ3M2E2YTUyMTViODkwOWY2NTRmOTExNWM5MzIwNTU0Li5kMmRjMTYzYTVh
NGJhOWNjMTYyN2RlOGY1YmI0ODBlZTY3ODg3OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzg4LDYgKzE3ODgsOCBAQAog
CQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzNDQ5NkMxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTUzN0EwMTE0NkJEOUQ3MDA4QkQ2MTUgLyogU1ZHUGF0
aERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
NTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovOyB9OwogCQk3MTU3RjA2
MjE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNTdGMDYxMTUwQjY1NjQw
MDZFQUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwICovOyB9OworCQk3MUU2MjNE
MDE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRTYyM0NF
MTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3Bw
ICovOyB9OworCQk3MUU2MjNEMTE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MUU2MjNDRjE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyLmggKi87IH07CiAJCTcxRkI5NjdCMTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdB
bmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUZCOTY3QTEzODNENjQ2MDBBQzhBNEMgLyogU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAv
KiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87
IH07CiAJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDI5MTEx
RDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwICovOyB9OwpAQCAtODc1Nyw2
ICs4NzU5LDggQEAKIAkJNzE1Mzc5RkUxNDZCRDlENjAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1Mzc5RkYxNDZCRDlENjAwOEJENjE1IC8q
IFNWR1BhdGhEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTdGMDYxMTUwQjY1NjQwMDZF
QUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzFFNjIzQ0UxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MUU2MjNDRjE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUZCOTY3QTEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUwRDAyOTExMUQwRTdGMzAwQkQx
QjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4NjA3LDYgKzE4NjExLDggQEAKIAkJCQk0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIg
LyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCAqLywKIAkJCQkwODIzRDE1ODEyN0FENkFDMDAwRUJD
OTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggKi8sCiAJCQkJQjIyMjc3RTkwRDAwQkYxRjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5pZGwgKi8sCisJCQkJNzFFNjIzQ0UxNTFGNzJBNjAw
MzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAgKi8sCisJCQkJ
NzFFNjIzQ0YxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlci5oICovLAogCQkJCTQzODE3NjNBMTNBNjk3RDQwMDdEMTE4NyAvKiBTVkdBbmltYXRlZExl
bmd0aC5jcHAgKi8sCiAJCQkJMDg5MDIxQTgxMjZFRjVERTAwOTJENUVBIC8qIFNWR0FuaW1hdGVk
TGVuZ3RoLmggKi8sCiAJCQkJQjIyMjc3RUEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVk
TGVuZ3RoLmlkbCAqLywKQEAgLTI0NjQ2LDYgKzI0NjUyLDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdF
MkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MUU2MjNEMTE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3NjM2LDYgKzI3NjQzLDcgQEAKIAkJCQlFMUJF
NTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MUU2MjNEMDE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJ
bnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bGxJbk9uZS5jcHAKaW5kZXggNGYwOWQ1Y2I3YzRkZDUwMTMyMTJlM2E5MWViYTZiMDIxY2NlMWU1
OS4uYjhkMmZjOTNjMGQ2MGU1NjQ0OGZlODNhMjA5YmViYTliZDIyZmQ3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQWxsSW5PbmUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRCb29sZWFuLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmNwcCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZEludGVnZXIuY3BwIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRO
dW1iZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgK
aW5kZXggMGFkNzViYWNhNDE3NGRjZDE3MjkwZGZmYTMxY2Q3NjFlY2NiYTg4Yi4uODYzYzg3ZmJi
YWY2YzFhNTE5ZDVlZGQ5ODc2ZWUzMDFmOTliNTQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxpbnQ+
IFNWR0FuaW1hdGVkRW51bWVyYXRpb247Cit0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVy
dHlUZWFyT2ZmPHVuc2lnbmVkIHNob3J0PiBTVkdBbmltYXRlZEVudW1lcmF0aW9uOwogCiAvLyBI
ZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBv
YmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5LCBFbnVtVHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmNwcAppbmRleCBiNDAwYjI2YTEzODliYzIzZjZiMjQxMmM3ZTAxYjgwMzQ5MDc5
NjE3Li5mOTJlYjdiMDkzMzdiODQzMzFlMzlhODQzZWY2OTk1YjI3MWY2NWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcApAQCAtNDAsNiArNDAsMzEgQEAgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnMKICAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOwog
fQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0
b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUlu
dGVnZXIoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxpbnQsIFNWR0FuaW1hdGVkSW50ZWdlcj4o
cHJvcGVydGllcykpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpzdG9w
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9w
ZXJ0aWVzKQoreworICAgIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1h
dGlvbkZvclR5cGU8U1ZHQW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0aWVzKTsKK30KKwordm9pZCBT
VkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlwZSog
dHlwZSkKK3sKKyAgICByZXNldEZyb21PbmVCYXNlVmFsdWU8aW50LCBTVkdBbmltYXRlZEludGVn
ZXI+KHByb3BlcnRpZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6OmludGVnZXIpOworfQorCit2
b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1WYWxX
aWxsQ2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRpZXMpOworfQorCit2
b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5pbVZhbERp
ZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0aWVzKTsKK30KKwogdm9p
ZCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8s
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAg
ICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CkBAIC02NCw2ICs4OSwxMyBAQCB2b2lkIFNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNW
R0FuaW1hdGVkVHlwZQogICAgIHRvLT5pbnRlZ2VyKCkgKz0gZnJvbS0+aW50ZWdlcigpOwogfQog
Cit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZEludGVn
ZXIoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGludCYgYW5pbWF0ZWROdW1iZXIsIGludCBmcm9tTnVt
YmVyLCBpbnQgdG9OdW1iZXIpCit7CisgICAgZmxvYXQgYW5pbWF0ZWRGbG9hdCA9IGFuaW1hdGVk
TnVtYmVyOworICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
TnVtYmVyKGFuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRl
ZEZsb2F0LCBmcm9tTnVtYmVyLCB0b051bWJlcik7CisgICAgYW5pbWF0ZWROdW1iZXIgPSBzdGF0
aWNfY2FzdDxpbnQ+KHJvdW5kZihhbmltYXRlZEZsb2F0KSk7Cit9CisKIHZvaWQgU1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmlt
YXRlZCkKIHsKQEAgLTc3LDEwICsxMDksOCBAQCB2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbgogICAg
IGludCYgYW5pbWF0ZWRJbnQgPSBhbmltYXRlZC0+aW50ZWdlcigpOwogICAgIGlmIChhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uKQogICAgICAgICBmcm9tLT5pbnRlZ2VyKCkgPSBhbmltYXRl
ZEludDsKLSAgICAKLSAgICBmbG9hdCByZXN1bHQgPSBhbmltYXRlZEludDsKLSAgICBTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51bWJlcihhbmltYXRpb25FbGVt
ZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgcmVzdWx0LCBmcm9tLT5pbnRlZ2VyKCksIHRv
LT5pbnRlZ2VyKCkpOwotICAgIGFuaW1hdGVkSW50ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYo
cmVzdWx0KSk7CisKKyAgICBjYWxjdWxhdGVBbmltYXRlZEludGVnZXIoYW5pbWF0aW9uRWxlbWVu
dCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGFuaW1hdGVkSW50LCBmcm9tLT5pbnRlZ2VyKCks
IHRvLT5pbnRlZ2VyKCkpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCmluZGV4IDUx
MmQ3YzI3NDM3ZjI1NjM4MjFjOWIzNTg5ODIwNDlmMTJmYjU0OTguLjk1Y2NlYjlkOGU1ZDJhNzZl
MzhmNTE2ZjU5MjhhNDIyYTNmYjZlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEludGVnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLmgKQEAgLTI3LDE4ICsyNywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8bG9uZz4gU1ZHQW5pbWF0ZWRJ
bnRlZ2VyOwordHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxpbnQ+IFNW
R0FuaW1hdGVkSW50ZWdlcjsKIAogLy8gSGVscGVyIG1hY3JvcyB0byBkZWNsYXJlL2RlZmluZSBh
IFNWR0FuaW1hdGVkSW50ZWdlciBvYmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9JTlRF
R0VSKFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFkoU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBsb25nLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KQorREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEludGVnZXIsIGludCwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURf
SU5URUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAogREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkSW50ZWdlciwgT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKIAotLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGFuaW1hdGVzIGFz
IG51bWJlci1vcHRpb25hbC1udW1iZXIsIGluc3RlYWQgb2YgaW50ZWdlci1vcHRpb25hbC1pbnRl
Z2VyLCB3aGljaCBpcyBtaXNzaW5nLgogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUl9N
VUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRl
SWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkSW50ZWdlck9wdGlv
bmFsSW50ZWdlciwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50
aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIGNsYXNzIFNWR0FuaW1hdGlv
bkVsZW1lbnQ7CiAKQEAgLTQ4LDEwICs0NywxNSBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5TVkdBbmltYXRlZEludGVnZXJBbmltYXRvcigpIHsgfQogICAgIAotICAgIHN0YXRp
YyB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkTnVtYmVyKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgZmxvYXQmIGFuaW1hdGVkTnVtYmVy
LCBmbG9hdCBmcm9tTnVtYmVyLCBmbG9hdCB0b051bWJlcik7Ci0gICAgCisgICAgc3RhdGljIHZv
aWQgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgaW50JiBhbmltYXRlZE51bWJlciwgaW50
IGZyb21OdW1iZXIsIGludCB0b051bWJlcik7CisKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIAor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1h
dGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2
b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3Rv
cjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYpOworICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mKTsKKwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5
U3RyaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTMxZDgyNGI4ZjJmYTgzNWZjMWQ0ZmYxNDNiYjk4MGJkZTQzNzQwMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXIuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlck9w
dGlvbmFsSW50ZWdlci5oIgorCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTVkdBbmltYXRlZEludGVnZXIuaCIKKyNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3Io
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCisgICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQoreworfQor
CitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJ
bnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIobmV3IHBhaXI8aW50LCBpbnQ+KTsK
KyAgICBwYWlyPGludCwgaW50PiYgYW5pbWF0ZWRJbnRlZ2VyID0gYW5pbXRlZFR5cGUtPmludGVn
ZXJPcHRpb25hbEludGVnZXIoKTsKKyAgICBmbG9hdCBmaXJzdE51bWJlciA9IDA7CisgICAgZmxv
YXQgc2Vjb25kTnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIo
c3RyaW5nLCBmaXJzdE51bWJlciwgc2Vjb25kTnVtYmVyKSkgeworICAgICAgICBhbmltYXRlZElu
dGVnZXIuZmlyc3QgPSAwOworICAgICAgICBhbmltYXRlZEludGVnZXIuc2Vjb25kID0gMDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBhbmltYXRlZEludGVnZXIuZmlyc3QgPSBzdGF0aWNfY2FzdDxp
bnQ+KHJvdW5kZihmaXJzdE51bWJlcikpOworICAgICAgICBhbmltYXRlZEludGVnZXIuc2Vjb25k
ID0gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYoc2Vjb25kTnVtYmVyKSk7CisgICAgfQorICAgIHJl
dHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6c3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRp
ZXMpCit7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlck9wdGlvbmFs
SW50ZWdlcihjb25zdHJ1Y3RGcm9tVHdvQmFzZVZhbHVlczxwYWlyPGludCwgaW50PiwgaW50LCBT
VkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRpZXMpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZElu
dGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3Qg
VmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKK3sKKyAgICBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlPFNWR0FuaW1hdGVk
SW50ZWdlcj4ocHJvcGVydGllcyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7
CisgICAgcmVzZXRGcm9tVHdvQmFzZVZhbHVlczxwYWlyPGludCwgaW50PiwgaW50LCBTVkdBbmlt
YXRlZEludGVnZXI+KHByb3BlcnRpZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6OmludGVnZXJP
cHRpb25hbEludGVnZXIpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50
ZWdlckFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxT
VkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRpZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3Rv
cjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5pbVZhbERpZENo
YW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRJbnRlZ2VyPihwcm9wZXJ0aWVzKTsKK30KKwordm9pZCBT
VkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFu
ZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7Cisg
ICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJp
bmcsIHRvU3RyaW5nKTsKKyAgICAKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9t
U3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcodG9TdHJpbmcpOworfQorCit2
b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJ5U3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxl
bWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50
KTsKKyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJv
bVN0cmluZywgYnlTdHJpbmcpOworICAgIAorICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5n
KGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyhieVN0cmluZyk7CisK
KyAgICBwYWlyPGludCwgaW50PiYgZnJvbU51bWJlclBhaXIgPSBmcm9tLT5pbnRlZ2VyT3B0aW9u
YWxJbnRlZ2VyKCk7CisgICAgcGFpcjxpbnQsIGludD4mIHRvTnVtYmVyUGFpciA9IHRvLT5pbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyKCk7CisgICAgCisgICAgdG9OdW1iZXJQYWlyLmZpcnN0ICs9IGZy
b21OdW1iZXJQYWlyLmZpcnN0OworICAgIHRvTnVtYmVyUGFpci5zZWNvbmQgKz0gZnJvbU51bWJl
clBhaXIuc2Vjb25kOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdl
ckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3sK
KyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250ZXh0RWxl
bWVudCk7CisKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2Rl
KCk7CisKKyAgICAvLyBUbyBhbmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxv
d2VyIHByaW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCisgICAgcGFpcjxpbnQs
IGludD4mIGZyb21OdW1iZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigpOwor
ICAgIHBhaXI8aW50LCBpbnQ+JiBhbmltYXRlZE51bWJlclBhaXIgPSBhbmltYXRlZC0+aW50ZWdl
ck9wdGlvbmFsSW50ZWdlcigpOworICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9u
KQorICAgICAgICBmcm9tTnVtYmVyUGFpciA9IGFuaW1hdGVkTnVtYmVyUGFpcjsKKworICAgIHBh
aXI8aW50LCBpbnQ+JiB0b051bWJlclBhaXIgPSB0by0+aW50ZWdlck9wdGlvbmFsSW50ZWdlcigp
OworICAgIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZEludGVn
ZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGFuaW1hdGVkTnVt
YmVyUGFpci5maXJzdCwgZnJvbU51bWJlclBhaXIuZmlyc3QsIHRvTnVtYmVyUGFpci5maXJzdCk7
CisgICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkSW50ZWdl
cihhbmltYXRpb25FbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgYW5pbWF0ZWROdW1i
ZXJQYWlyLnNlY29uZCwgZnJvbU51bWJlclBhaXIuc2Vjb25kLCB0b051bWJlclBhaXIuc2Vjb25k
KTsKK30KKworZmxvYXQgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
Ly8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHSW50
ZWdlck9wdGlvbmFsSW50ZWdlciByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBl
dmVyeSBzaW5nbGUgdmFsdWUuCisgICAgcmV0dXJuIC0xOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlck9wdGlvbmFsSW50ZWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDU2NWRhY2Y3YzQ0ODA0ZmM1OTc1
ODgyN2I4YzI2MTYwM2VlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJf
aAorI2RlZmluZSBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJfaAorCisjaWYgRU5B
QkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKK2NsYXNzIFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yIHsKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOworICAgIHZp
cnR1YWwgflNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9yKCkgeyB9Cisg
ICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5p
bVZhbFRvQmFzZVZhbChjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgU1ZHQW5p
bWF0ZWRUeXBlKik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERp
ZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21W
YWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKaW5kZXggMTQ3NzNkNDA0NjMxYjRhNzdlMTA2
MGI0NThjZGQ5ZjgyNTFhZThkMC4uYzVlODczNDdiMTdhZGM4ZWYwMzA2MWY3M2IzMDc1MGRhYjVm
NzE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmNwcApAQCAtMTE1LDYgKzExNSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlCiAgICAgICAgIGZyb21OdW1iZXJQYWlyID0gYW5pbWF0ZWROdW1iZXJQYWlyOwogCiAg
ICAgcGFpcjxmbG9hdCwgZmxvYXQ+JiB0b051bWJlclBhaXIgPSB0by0+bnVtYmVyT3B0aW9uYWxO
dW1iZXIoKTsKKworCisgICAgCiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIGFuaW1hdGVkTnVtYmVyUGFpci5maXJzdCwgZnJvbU51bWJlclBhaXIuZmlyc3QsIHRvTnVt
YmVyUGFpci5maXJzdCk7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRl
QW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQs
IGFuaW1hdGVkTnVtYmVyUGFpci5zZWNvbmQsIGZyb21OdW1iZXJQYWlyLnNlY29uZCwgdG9OdW1i
ZXJQYWlyLnNlY29uZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmlu
ZGV4IDQ1MzQyZTZhYTQzMzYwMmI4ZTJjNTgxMGNlN2Q3Yjc4ZTIwMmJlYjMuLmI2NTkzMjc1ZjVl
NjhjMGMwMzE4OWEwYjg1YTYwNTFiZTA4NjFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGUuY3BwCkBAIC01NSw5ICs1NSwxNiBAQCBTVkdBbmltYXRlZFR5cGU6On5TVkdBbmlt
YXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAgICAgZGVsZXRlIG1fZGF0
YS5jb2xvcjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZEVudW1lcmF0aW9uOgor
ICAgICAgICAvLyBGSVhNRTogQW5pbWF0ZWRFbnVtZXJhdGlvbiBpcyBsZWZ0IHRvZG8uCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFuaW1h
dGVkSW50ZWdlcjoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5pbnRlZ2VyOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcjoKKyAgICAgICAgZGVs
ZXRlIG1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICBkZWxldGUgbV9kYXRhLmxlbmd0aDsKICAgICAg
ICAgYnJlYWs7CkBAIC05MSw3ICs5OCw3IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVk
VHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CiAgICAgICAgIGRlbGV0ZSBt
X2RhdGEudHJhbnNmb3JtTGlzdDsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICBj
YXNlIEFuaW1hdGVkVW5rbm93bjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTEyOSw2ICsxMzYsMTQgQEAgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlSW50ZWdlcihpbnQqIGludGVnZXIpCiAg
ICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIo
cGFpcjxpbnQsIGludD4qIGludGVnZXJPcHRpb25hbEludGVnZXIpCit7CisgICAgQVNTRVJUKGlu
dGVnZXJPcHRpb25hbEludGVnZXIpOworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1h
dGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyKSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEuaW50ZWdlck9wdGlvbmFs
SW50ZWdlciA9IGludGVnZXJPcHRpb25hbEludGVnZXI7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlw
ZS5yZWxlYXNlKCk7Cit9CisKIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUxlbmd0aChTVkdMZW5ndGgqIGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVu
Z3RoKTsKQEAgLTI0MSw2ICsyNTYsMTIgQEAgaW50JiBTVkdBbmltYXRlZFR5cGU6OmludGVnZXIo
KQogICAgIHJldHVybiAqbV9kYXRhLmludGVnZXI7CiB9CiAKK3BhaXI8aW50LCBpbnQ+JiBTVkdB
bmltYXRlZFR5cGU6OmludGVnZXJPcHRpb25hbEludGVnZXIoKQoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKKyAgICByZXR1cm4gKm1fZGF0
YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOyAgICAgICAgCit9CisKIFNWR0xlbmd0aCYgU1ZHQW5p
bWF0ZWRUeXBlOjpsZW5ndGgoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5n
dGgpOwpAQCAtMzIyLDYgKzM0Myw5IEBAIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNT
dHJpbmcoKQogICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAgICAgICBBU1NFUlQobV9kYXRh
LmludGVnZXIpOwogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0YS5pbnRlZ2Vy
KTsKKyAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcjoKKyAgICAgICAgQVNT
RVJUKG1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKG1fZGF0YS5pbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLT5maXJzdCkgKyAnICcgKyBT
dHJpbmc6Om51bWJlcihtX2RhdGEuaW50ZWdlck9wdGlvbmFsSW50ZWdlci0+c2Vjb25kKTsKICAg
ICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICBBU1NFUlQobV9kYXRhLmxlbmd0aCk7CiAg
ICAgICAgIHJldHVybiBtX2RhdGEubGVuZ3RoLT52YWx1ZUFzU3RyaW5nKCk7CkBAIC0zNTksNyAr
MzgzLDExIEBAIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQogICAgICBj
YXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICAgICAgQVNTRVJUKG1fZGF0YS50cmFuc2Zv
cm1MaXN0KTsKICAgICAgICAgcmV0dXJuIG1fZGF0YS50cmFuc2Zvcm1MaXN0LT52YWx1ZUFzU3Ry
aW5nKCk7Ci0gICAgZGVmYXVsdDoKKyAgICBjYXNlIEFuaW1hdGVkRW51bWVyYXRpb246CisgICAg
ICAgIC8vIEZJWE1FOiBBbmltYXRlZEVudW1lcmF0aW9uIGlzIGxlZnQgdG9kby4KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRV
bmtub3duOgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0zODIsMTQgKzQxMCwxMCBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0
cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaQogICAgICAgICBB
U1NFUlQobV9kYXRhLmNvbG9yKTsKICAgICAgICAgKm1fZGF0YS5jb2xvciA9IHZhbHVlLmlzRW1w
dHkoKSA/IENvbG9yKCkgOiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcodmFsdWUp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjogewotICAgICAgICBB
U1NFUlQobV9kYXRhLmludGVnZXIpOwotICAgICAgICBib29sIG9rOwotICAgICAgICAqbV9kYXRh
LmludGVnZXIgPSB2YWx1ZS50b0ludFN0cmljdCgmb2spOwotICAgICAgICBpZiAoIW9rKQotICAg
ICAgICAgICAgZWMgPSAxOyAvLyBBcmJpdGFyeSB2YWx1ZSA+IDAsIGl0IGRvZXNuJ3QgbWF0dGVy
IGFzIHdlIGRvbid0IHJlcG9ydCB0aGUgZXhjZXB0aW9uIGNvZGUuCisgICAgY2FzZSBBbmltYXRl
ZEVudW1lcmF0aW9uOgorICAgICAgICAvLyBGSVhNRTogQW5pbWF0ZWRFbnVtZXJhdGlvbiBpcyBs
ZWZ0IHRvZG8uCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
LSAgICB9CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5s
ZW5ndGgpOwogICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBT
VkdMZW5ndGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSks
IGVjKTsKQEAgLTQwMiwxNCArNDI2LDYgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVl
QXNTdHJpbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmkKICAgICAg
ICAgQVNTRVJUKG1fZGF0YS5udW1iZXIpOwogICAgICAgICBwYXJzZU51bWJlckZyb21TdHJpbmco
dmFsdWUsICptX2RhdGEubnVtYmVyKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmltYXRl
ZE51bWJlckxpc3Q6Ci0gICAgICAgIEFTU0VSVChtX2RhdGEubnVtYmVyTGlzdCk7Ci0gICAgICAg
IG1fZGF0YS5udW1iZXJMaXN0LT5wYXJzZSh2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcjoKLSAgICAgICAgQVNTRVJUKG1fZGF0YS5u
dW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgICAgIHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIo
dmFsdWUsIG1fZGF0YS5udW1iZXJPcHRpb25hbE51bWJlci0+Zmlyc3QsIG1fZGF0YS5udW1iZXJP
cHRpb25hbE51bWJlci0+c2Vjb25kKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRl
ZFBhdGg6IHsKICAgICAgICAgQVNTRVJUKG1fZGF0YS5wYXRoKTsKICAgICAgICAgT3duUHRyPFNW
R1BhdGhCeXRlU3RyZWFtPiBwYXRoQnl0ZVN0cmVhbSA9IGFkb3B0UHRyKG1fZGF0YS5wYXRoKTsK
QEAgLTQzNSw4ICs0NTEsMTUgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJp
bmcoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmkKICAgICAgICAgQVNT
RVJUKG1fZGF0YS5zdHJpbmcpOwogICAgICAgICAqbV9kYXRhLnN0cmluZyA9IHZhbHVlOwogICAg
ICAgICBicmVhazsKKworICAgIC8vIFRoZXNlIHR5cGVzIGRvbid0IGFwcGVhciBpbiB0aGUgdGFi
bGUgaW4gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlUb1R5cGVNYXAoKSBhbmQgdGh1cyBk
b24ndCBuZWVkIHNldFZhbHVlQXNTdHJpbmcoKSBzdXBwb3J0LiAKKyAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyTGlzdDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXI6CisgICAg
Y2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXI6CiAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6Ci0gICAgZGVmYXVsdDoKKyAg
ICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKKyAgICAgICAgLy8gT25seSBTVkcgRE9NIGFuaW1hdGlv
bnMgdXNlIHRoZXNlIHByb3BlcnR5IHR5cGVzIC0gdGhhdCBtZWFucyBzZXRWYWx1ZUFzU3RyaW5n
KCkgaXMgbmV2ZXIgdXNlZCBmb3IgdGhvc2UuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NTMsNiArNDc2LDggQEAgYm9vbCBTVkdBbmlt
YXRlZFR5cGU6OnN1cHBvcnRzQW5pbVZhbChBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGxpc3RzIHRoZSBjdXJyZW50IHN0YXRlIG9mIG91ciBhbmltVmFs
IHN1cHBvcnQuCiAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6
CisgICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXI6CiAgICAgY2FzZSBBbmlt
YXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICBjYXNlIEFuaW1h
dGVkTnVtYmVyOgpAQCAtNDY0LDcgKzQ4OSw2IEBAIGJvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpzdXBw
b3J0c0FuaW1WYWwoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKICAgICBjYXNlIEFuaW1hdGVk
Qm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZEVudW1l
cmF0aW9uOgotICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAgIGNhc2UgQW5pbWF0ZWRQYXRo
OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW86CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXggOWZmMTlhNWNj
ZjI5MWUyOThmYzRmNGMyNDczN2E2ZDVkMzhmODkzNi4uNDYzNzlkMzAyNWIwMmM4MGE1OGE4MDg1
MzdiZTdkMTFiMDA5YWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApAQCAt
NDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVCb29sZWFuKGJvb2wqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGNyZWF0ZUNvbG9yKENvbG9yKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjcmVhdGVJbnRlZ2VyKGludCopOworICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlck9wdGlvbmFsSW50ZWdlcihzdGQ6OnBhaXI8
aW50LCBpbnQ+Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVh
dGVMZW5ndGgoU1ZHTGVuZ3RoKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVMZW5ndGhMaXN0KFNWR0xlbmd0aExpc3QqKTsKICAgICBzdGF0aWMgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlcihmbG9hdCopOwpAQCAtNjQsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCYgYm9vbGVhbigpOwogICAgIENvbG9yJiBjb2xvcigpOwog
ICAgIGludCYgaW50ZWdlcigpOworICAgIHN0ZDo6cGFpcjxpbnQsIGludD4mIGludGVnZXJPcHRp
b25hbEludGVnZXIoKTsKICAgICBTVkdMZW5ndGgmIGxlbmd0aCgpOwogICAgIFNWR0xlbmd0aExp
c3QmIGxlbmd0aExpc3QoKTsKICAgICBmbG9hdCYgbnVtYmVyKCk7CkBAIC05Nyw2ICs5OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGJvb2wqIGJvb2xlYW47CiAgICAgICAgIENvbG9yKiBjb2xvcjsK
ICAgICAgICAgaW50KiBpbnRlZ2VyOworICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+KiBpbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyOwogICAgICAgICBTVkdMZW5ndGgqIGxlbmd0aDsKICAgICAgICAg
U1ZHTGVuZ3RoTGlzdCogbGVuZ3RoTGlzdDsKICAgICAgICAgZmxvYXQqIG51bWJlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAppbmRleCAwMjhkYWY2NDE2MDU3ODg2M2U0
Mzg4OGQzYTFmZWRkZjQyMzQ4ODZjLi45NWMzNzMyYWYyNjEwYzVkZWI2MGJkZjBlMDM0ODNlNDRj
ODhhMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlci5oIgorI2luY2x1
ZGUgIlNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKQEAgLTU3LDYgKzU4LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZElu
dGVnZXI6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgIGNh
c2UgQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOgorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRvcihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVu
Z3RoOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFu
aW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2Ug
QW5pbWF0ZWRMZW5ndGhMaXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
CmluZGV4IDk5NTUwYTM3ZjRhZDc2NTZmYjc1MDc1YWI5NzkzYjM0YmRjZDliMzEuLjlmODcxYzkz
YjI4Y2M4MTc5YTk1MGI2ZDI1MGI2NzgxNzhlODc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJSZXNZSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHNfaWRl
bnRpZmllcjsKIH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzZXRGaWx0ZXJSZXModW5zaWdu
ZWQgbG9uZyBmaWx0ZXJSZXNYLCB1bnNpZ25lZCBsb25nIGZpbHRlclJlc1kpCit2b2lkIFNWR0Zp
bHRlckVsZW1lbnQ6OnNldEZpbHRlclJlcyh1bnNpZ25lZCBmaWx0ZXJSZXNYLCB1bnNpZ25lZCBm
aWx0ZXJSZXNZKQogewogICAgIHNldEZpbHRlclJlc1hCYXNlVmFsdWUoZmlsdGVyUmVzWCk7CiAg
ICAgc2V0RmlsdGVyUmVzWUJhc2VWYWx1ZShmaWx0ZXJSZXNZKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCmluZGV4IDQ4YjY3NjY0ZTdiZWVjNTZkMjQ1YjA1MGU1MTQ0MWJlYzUy
N2YzYWQuLmU4NjVhNTE5YzNmMGIwZmU1MjQ0MWFlOGJhOGQzNGI2NmEzNmUwZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBTVkdG
aWx0ZXJFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHRmlsdGVyRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCi0gICAgdm9pZCBzZXRGaWx0ZXJSZXModW5zaWduZWQgbG9uZyBm
aWx0ZXJSZXNYLCB1bnNpZ25lZCBsb25nIGZpbHRlclJlc1kpOworICAgIHZvaWQgc2V0RmlsdGVy
UmVzKHVuc2lnbmVkIGZpbHRlclJlc1gsIHVuc2lnbmVkIGZpbHRlclJlc1kpOwogCiBwcml2YXRl
OgogICAgIFNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBjY2Y4MDM2MTRlMjI2OGJi
Y2JhNDExYjgyMDliOTNkNTgzYjY1MTA5Li5kZGFhYmVlZmIxODY5YmZhNGZjZDBjNzBmMDRkNjQ1
OTEwMDM4MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTEwMSw5
ICsxMDEsOSBAQCBGbG9hdFBvaW50IFNWR1BhdGhFbGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoKGZs
b2F0IGxlbmd0aCkKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKLXVuc2lnbmVkIGxvbmcgU1ZHUGF0
aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aChmbG9hdCBsZW5ndGgpCit1bnNpZ25lZCBTVkdQ
YXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkKIHsKLSAgICB1bnNp
Z25lZCBsb25nIHBhdGhTZWcgPSAwOworICAgIHVuc2lnbmVkIHBhdGhTZWcgPSAwOwogICAgIFNW
R1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQ
YXRoQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBsZW5ndGgsIHBhdGhTZWcpOwog
ICAgIHJldHVybiBwYXRoU2VnOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAppbmRl
eCAwYWRlNWJjYzA5MWUyZTdlZjJjMWRhM2FiMTI3YzIzZmM0MmU1NDY5Li4yNmNjMzZiY2I2NmZl
YzYzOGNiODVjY2MwYjA1YjcyYWNhMTE0ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgZmxvYXQgZ2V0VG90YWxM
ZW5ndGgoKTsKICAgICBGbG9hdFBvaW50IGdldFBvaW50QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2Up
OwotICAgIHVuc2lnbmVkIGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsK
KyAgICB1bnNpZ25lZCBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpOwogCiAgICAg
UGFzc1JlZlB0cjxTVkdQYXRoU2VnQ2xvc2VQYXRoPiBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRo
KFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiAgICAgUGFzc1Jl
ZlB0cjxTVkdQYXRoU2VnTW92ZXRvQWJzPiBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzKGZsb2F0
IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAppbmRleCAwMTA5
N2E3MTQxODNmOTQyOGQwNzM5NDM4NDkzODFiZGYwNmYwOWNiLi5kODQ4NTE2NzViMjI5YTYwZDI5
MDhkMzBkNDNiZjNjYWQ1ZGIwMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFy
c2VyRmFjdG9yeS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBib29sIFNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qIGZy
bwogICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6Z2V0U1ZH
UGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBz
dHJlYW0sIGZsb2F0IGxlbmd0aCwgdW5zaWduZWQgbG9uZyYgcGF0aFNlZykKK2Jvb2wgU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OmdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVh
bShTVkdQYXRoQnl0ZVN0cmVhbSogc3RyZWFtLCBmbG9hdCBsZW5ndGgsIHVuc2lnbmVkJiBwYXRo
U2VnKQogewogICAgIEFTU0VSVChzdHJlYW0pOwogICAgIGlmIChzdHJlYW0tPmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmgKaW5kZXggODk0ZTI0ZWY0
YTY2MzNmYjZkYzAzNGQwMjUxZWZkNjI1OTAzYzQxYi4uNjU5MzgyNWZhZmM5NTU5NjdlMGZiZmNh
NDIzMWE2MGM3ZmYzNGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0
b3J5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGJvb2wgYnVpbGRTVkdQYXRoU2Vn
TGlzdEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgU1ZHUGF0aEVsZW1lbnQqLCBT
VkdQYXRoU2VnTGlzdCYsIFBhdGhQYXJzaW5nTW9kZSk7CiAKICAgICBib29sIGJ1aWxkQW5pbWF0
ZWRTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhCeXRlU3RyZWFt
KiwgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiYsIGZsb2F0KTsKLSAgICBib29sIGdldFNWR1Bh
dGhTZWdBdExlbmd0aEZyb21TVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIGZs
b2F0IGxlbmd0aCwgdW5zaWduZWQgbG9uZyYgcGF0aFNlZyk7CisgICAgYm9vbCBnZXRTVkdQYXRo
U2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBmbG9h
dCBsZW5ndGgsIHVuc2lnbmVkJiBwYXRoU2VnKTsKICAgICBib29sIGdldFRvdGFsTGVuZ3RoT2ZT
VkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIGZsb2F0JiB0b3RhbExlbmd0aCk7
CiAgICAgYm9vbCBnZXRQb2ludEF0TGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0
ZVN0cmVhbSosIGZsb2F0IGxlbmd0aCwgRmxvYXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAKaW5kZXggMmJjYTVh
MjYxZGE4ZDljZmI4NzBlOTdkYWY1M2UxMjYxNGM2NzNlYi4uMmJkOThlNTUzZTU3ZDFmY2NhMGQy
NjYxM2UxNjE2MWU2YTI3M2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKQogICAg
ICsrbV90cmF2ZXJzYWxTdGF0ZS0+bV9zZWdtZW50SW5kZXg7CiB9CiAKLXVuc2lnbmVkIGxvbmcg
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6cGF0aFNlZ21lbnRJbmRleCgpCit1bnNpZ25l
ZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpwYXRoU2VnbWVudEluZGV4KCkKIHsKICAg
ICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7CiAgICAgcmV0dXJuIG1fdHJhdmVyc2FsU3RhdGUt
Pm1fc2VnbWVudEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVy
c2FsU3RhdGVCdWlsZGVyLmgKaW5kZXggMTcyNjE2NTM0MTI1NGI5ZWY4MDRkYTNiZGRmYTk5YWNm
NDA1NjZhNy4uYjI2MmRkZjQ3NDc3YjcyN2MyYmFmODNhYTJjYjBmOTVjZjIwNmYzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCkBA
IC0zMiw3ICszMiw3IEBAIGNsYXNzIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIgOiBwdWJs
aWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1YmxpYzoKICAgICBTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyKCk7CiAKLSAgICB1bnNpZ25lZCBsb25nIHBhdGhTZWdtZW50SW5kZXgoKTsKKyAgICB1
bnNpZ25lZCBwYXRoU2VnbWVudEluZGV4KCk7CiAgICAgZmxvYXQgdG90YWxMZW5ndGgoKTsKICAg
ICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmgKaW5kZXggN2U1YTYyNjFjMTQxZGI5ZjdmOTEzZGZhMTk1YzAxMGZmN2Uw
NGJjYy4uMDU2NzY4ZDgyZTE0YTgyMjczZTQxYTEyYjliZjliOGQ5ZTFhMjYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaApAQCAtMjgsMjkgKzI4LDI5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVudW1UeXBlPgotY2xhc3Mg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxpbnQ+IHsKK2NsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmY8dW5zaWduZWQgc2hvcnQ+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFzZVZh
bChjb25zdCBpbnQmIHByb3BlcnR5LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QmFzZVZhbChjb25zdCB1bnNpZ25lZCBzaG9ydCYgcHJvcGVydHksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIHsKICAgICAgICAgLy8gQWxsIFNWRyBlbnVtZXJhdGlvbiB2YWx1ZXMsIHRo
YXQgYXJlIGFsbG93ZWQgdG8gYmUgc2V0IHZpYSBTVkcgRE9NIHN0YXJ0IHdpdGggMSwgMCBjb3Jy
ZXNwb25kcyB0byB1bmtub3duIGFuZCBpcyBub3Qgc2V0dGFibGUgdGhyb3VnaCBTVkcgRE9NLgog
ICAgICAgICBpZiAocHJvcGVydHkgPD0gMCB8fCBwcm9wZXJ0eSA+IFNWR1Byb3BlcnR5VHJhaXRz
PEVudW1UeXBlPjo6aGlnaGVzdEVudW1WYWx1ZSgpKSB7CiAgICAgICAgICAgICBlYyA9IFNWR0V4
Y2VwdGlvbjo6U1ZHX0lOVkFMSURfVkFMVUVfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPGludD46OnNl
dEJhc2VWYWwocHJvcGVydHksIGVjKTsKKyAgICAgICAgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0
eVRlYXJPZmY8dW5zaWduZWQgc2hvcnQ+OjpzZXRCYXNlVmFsKHByb3BlcnR5LCBlYyk7CiAgICAg
fQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZjxFbnVtVHlwZT4gPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFu
aW1hdGVkUHJvcGVydHlUeXBlLCBFbnVtVHlwZSYgcHJvcGVydHkpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+KGNvbnRleHRFbGVtZW50
LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxp
bnQmPihwcm9wZXJ0eSkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPEVudW1UeXBlPihjb250ZXh0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgc2hvcnQmPihwcm9wZXJ0eSkpKTsKICAgICB9CiAKLSAgICBFbnVtVHlwZSYgY3VycmVudEFu
aW1hdGVkVmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEVudW1UeXBlJj4oU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8aW50Pjo6Y3VycmVudEFuaW1hdGVkVmFsdWUoKSk7
IH0KKyAgICBFbnVtVHlwZSYgY3VycmVudEFuaW1hdGVkVmFsdWUoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PEVudW1UeXBlJj4oU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8dW5z
aWduZWQgc2hvcnQ+OjpjdXJyZW50QW5pbWF0ZWRWYWx1ZSgpKTsgfQogCiBwcml2YXRlOgotICAg
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJv
cGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBpbnQmIHByb3BlcnR5KQotICAgICAgICA6
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPGludD4oY29udGV4dEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBwcm9wZXJ0eSkKKyAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlw
ZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgdW5zaWduZWQgc2hvcnQmIHByb3BlcnR5KQorICAgICAg
ICA6IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkIHNob3J0Pihjb250
ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHByb3BlcnR5
KQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUluZm8uaAppbmRleCAxOWFjMmE1YmMwNjZkNTk2OWM3NWU5NTM5YjFjYjMzNTc5
ZmFmMmE2Li41NzkzMTI4MDgxNWE0MmI1YmM1YWU3OTQ1NDRiZjgxYTdhMGNlYzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaApAQCAtMzQs
NiArMzQsNyBAQCBlbnVtIEFuaW1hdGVkUHJvcGVydHlUeXBlIHsKICAgICBBbmltYXRlZENvbG9y
LAogICAgIEFuaW1hdGVkRW51bWVyYXRpb24sCiAgICAgQW5pbWF0ZWRJbnRlZ2VyLAorICAgIEFu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlciwKICAgICBBbmltYXRlZExlbmd0aCwKICAgICBB
bmltYXRlZExlbmd0aExpc3QsCiAgICAgQW5pbWF0ZWROdW1iZXIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCAwZWQ5MzM5YzI1
Njk5MmJmZTgxN2FlY2VlZjRkMmViNGQ2MzNiNDQyLi5iNmYyMGRiZWE3NDY4MGQzYzQ0MGMyNjA1
NjBkZTc2NGNiY2FiZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8Ym9vbD4gewogfTsKIAogdGVtcGxhdGU8Pgotc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzPGludD4gewotICAgIHN0YXRpYyBpbnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQot
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKHR5cGUpOyB9CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8dW5zaWduZWQgc2hvcnQ+IHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcodW5zaWduZWQgc2hvcnQgdHlwZSkgeyByZXR1cm4g
U3RyaW5nOjpudW1iZXIodHlwZSk7IH0KIH07CiAKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxsb25nPiB7Ci0gICAgc3RhdGljIGxvbmcgaW5pdGlhbFZhbHVlKCkgeyByZXR1
cm4gMDsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcobG9uZyB0eXBlKSB7IHJldHVybiBT
dHJpbmc6Om51bWJlcih0eXBlKTsgfQorc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPGludD4gewor
ICAgIHN0YXRpYyBpbnQgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9
CiB9OwogCiB0ZW1wbGF0ZTw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTczYWQ1MTNjMjZjYjA0NzU5OTg5MGJhNTUzZGM4
MDdkMjJlZjhkYy4uNmE0NmMzODBmNjljMWUxNTNhOTg3MWYyYmRmZTAzZWY5MTlmZTJhYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAzLTI1ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemlt
bWVybWFubkByaW0uY29tPgorCisgICAgICAgIFNWR0FuaW1hdGVkVHlwZSBzaG91bGQgc3VwcG9y
dCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIgYW5pbWF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZCBTVkdBbmltYXRlZElu
dGVnZXIgdGVzdHMgdG8gY292ZXIgYW5pbVZhbCBzdXBwb3J0LgorCisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuanM6CisgICAgICAg
IChzYW1wbGUxKToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIu
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9z
dmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzLgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChz
YW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1h
dGlvbi0yLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTI1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogZml4aW5nIENocm9taXVt
IFdpbjcgYmFzZWxpbmVzIGZvciBlZGl0aW5nL3NlbGVjdGlvbiB0ZXN0cy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1h
dGlvbi0xLmpzIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2lu
dGVnZXItYW5pbWF0aW9uLTEuanMKaW5kZXggNmE1NWYwMWQxMzZiNjEyYzRmNTQ4ZjZlOTcwNzdh
YzkwODAwZjIxNC4uN2Q5MzljZDNkY2MwOTZlOTZkYzMzM2JhNTgwYjFjNGUzZDgxNmQ1ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2ludGVn
ZXItYW5pbWF0aW9uLTEuanMKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuanMKQEAgLTM3LDE3ICszNywxNyBAQCBmZUNv
bnZsdmVNYXRyaXguYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7CiAvLyBTZXR1cCBhbmltYXRpb24gdGVz
dAogZnVuY3Rpb24gc2FtcGxlMSgpIHsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUNvbnZv
bHZlTWF0cml4LnRhcmdldFguYW5pbVZhbCIsICIwIik7Ci0gICAgLy8gc2hvdWxkQmUoImZlQ29u
dm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNlVmFsIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZmVDb252
b2x2ZU1hdHJpeC50YXJnZXRYLmJhc2VWYWwiLCAiMCIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUy
KCkgewogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5h
bmltVmFsIiwgIjEiKTsKLSAgICAvLyBzaG91bGRCZSgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRY
LmJhc2VWYWwiLCAiMCIpOworICAgIHNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4LnRhcmdldFgu
YmFzZVZhbCIsICIwIik7CiB9CiAKIGZ1bmN0aW9uIHNhbXBsZTMoKSB7CiAgICAgc2hvdWxkQmVD
bG9zZUVub3VnaCgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwiLCAiMiIpOwotICAg
IC8vIHNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYmFzZVZhbCIsICIwIik7Cisg
ICAgc2hvdWxkQmUoImZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNlVmFsIiwgIjAiKTsKIH0K
IAogZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnaW50ZWdlci1hbmltYXRpb24tMi5qcyBiL0xheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRjNWNhYjQzNTkwYTA5YTI2NGZkNWMxN2Y3ZmZlZDJkOGRhYjUxODYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVz
dHMvc3ZnaW50ZWdlci1hbmltYXRpb24tMi5qcwpAQCAtMCwwICsxLDcwIEBACitkZXNjcmlwdGlv
bigiVGVzdCBhbmltYXRpb24gb2YgU1ZHSW50ZWdlci4iKTsKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7
CisKKy8vIFNldHVwIHRlc3QgZG9jdW1lbnQKK3ZhciBkZWZzID0gY3JlYXRlU1ZHRWxlbWVudCgi
ZGVmcyIpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQoZGVmcyk7CisKK3ZhciBmaWx0ZXIg
PSBjcmVhdGVTVkdFbGVtZW50KCJmaWx0ZXIiKTsKK2ZpbHRlci5zZXRBdHRyaWJ1dGUoImlkIiwg
ImZpbHRlciIpOworZGVmcy5hcHBlbmRDaGlsZChmaWx0ZXIpOworCit2YXIgcmVjdCA9IGNyZWF0
ZVNWR0VsZW1lbnQoInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJpZCIsICJyZWN0Iik7City
ZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMjAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiaGVp
Z2h0IiwgIjIwMCIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3JlY3Qu
c2V0QXR0cmlidXRlKCJmaWx0ZXIiLCAidXJsKCNmaWx0ZXIpIik7CityZWN0LnNldEF0dHJpYnV0
ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGls
ZChyZWN0KTsKKwordmFyIGZlQ29udm9sdmVNYXRyaXggPSBjcmVhdGVTVkdFbGVtZW50KCJmZUNv
bnZvbHZlTWF0cml4Iik7CitmZUNvbnZvbHZlTWF0cml4LnNldEF0dHJpYnV0ZSgiaWQiLCAiZmVD
b252bHZlTWF0cml4Iik7CitmZUNvbnZvbHZlTWF0cml4LnNldEF0dHJpYnV0ZSgib3JkZXIiLCAi
MyAxIik7CitmZUNvbnZvbHZlTWF0cml4LnNldEF0dHJpYnV0ZSgia2VybmVsTWF0cml4IiwgIjAg
MCAxIik7CitmaWx0ZXIuYXBwZW5kQ2hpbGQoZmVDb252b2x2ZU1hdHJpeCk7CisKK3ZhciBhbmlt
YXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUo
ImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUi
LCAib3JkZXIiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJiZWdpbiIsICJyZWN0LmNsaWNrIik7
CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRzIik7CithbmltYXRlLnNldEF0dHJpYnV0
ZSgiZnJvbSIsICIzIDEiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJ0byIsICIxIDMiKTsKK2Zl
Q29udmx2ZU1hdHJpeC5hcHBlbmRDaGlsZChhbmltYXRlKTsKKworLy8gU2V0dXAgYW5pbWF0aW9u
IHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVD
b252b2x2ZU1hdHJpeC5vcmRlclguYW5pbVZhbCIsICIzIik7CisgICAgc2hvdWxkQmVDbG9zZUVu
b3VnaCgiZmVDb252b2x2ZU1hdHJpeC5vcmRlclkuYW5pbVZhbCIsICIxIik7CisgICAgc2hvdWxk
QmUoImZlQ29udm9sdmVNYXRyaXgub3JkZXJYLmJhc2VWYWwiLCAiMyIpOworICAgIHNob3VsZEJl
KCJmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5iYXNlVmFsIiwgIjEiKTsKK30KKworZnVuY3Rpb24g
c2FtcGxlMigpIHsKKyAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUNvbnZvbHZlTWF0cml4Lm9y
ZGVyWC5hbmltVmFsIiwgIjIiKTsKKyAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUNvbnZvbHZl
TWF0cml4Lm9yZGVyWS5hbmltVmFsIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZmVDb252b2x2ZU1h
dHJpeC5vcmRlclguYmFzZVZhbCIsICIzIik7CisgICAgc2hvdWxkQmUoImZlQ29udm9sdmVNYXRy
aXgub3JkZXJZLmJhc2VWYWwiLCAiMSIpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworICAg
IHNob3VsZEJlQ2xvc2VFbm91Z2goImZlQ29udm9sdmVNYXRyaXgub3JkZXJYLmFuaW1WYWwiLCAi
MSIpOworICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZlQ29udm9sdmVNYXRyaXgub3JkZXJZLmFu
aW1WYWwiLCAiMyIpOworICAgIHNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWC5iYXNl
VmFsIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiZmVDb252b2x2ZU1hdHJpeC5vcmRlclkuYmFzZVZh
bCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVj
dGVkVmFsdWVzID0gWworICAgICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIHNhbXBsZUNhbGxi
YWNrXQorICAgICAgICBbImFuaW1hdGlvbiIsIDAuMCwgICBzYW1wbGUxXSwKKyAgICAgICAgWyJh
bmltYXRpb24iLCAyLjAsICAgc2FtcGxlMl0sCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMy45OTks
IHNhbXBsZTNdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDQuMDAxLCBzYW1wbGUxXQorICAgIF07
CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0CmluZGV4IDNk
MzdhNzNhZTMwMDMyY2Y4YzM2M2IzNzk4M2FmYjMwMTU2NzY2ODMuLmYwOWI1OGQ4M2UzYjhhOTcx
MTY5NGY5OTFlMTllMWNhZWRiODAzMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0CkBA
IC02LDkgKzYsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGZlQ29udm9s
dmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIGlzIDAKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC50YXJn
ZXRYLmJhc2VWYWwgaXMgMAogUEFTUyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZhbCBp
cyAxCitQQVNTIGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5iYXNlVmFsIGlzIDAKIFBBU1MgZmVD
b252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwgaXMgMgorUEFTUyBmZUNvbnZvbHZlTWF0cml4
LnRhcmdldFguYmFzZVZhbCBpcyAwCiBQQVNTIGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5hbmlt
VmFsIGlzIDAKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmJhc2VWYWwgaXMgMAogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9u
LTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDFkMGNmNGRiNmJjODY5ZDM3NmE4MjA3OWY4
MDhkZmFlZTZjODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitT
VkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRlc3RzCisKK1Rlc3QgYW5pbWF0aW9uIG9mIFNWR0lu
dGVnZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZlQ29udm9sdmVN
YXRyaXgub3JkZXJYLmFuaW1WYWwgaXMgMworUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5h
bmltVmFsIGlzIDEKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclguYmFzZVZhbCBpcyAzCitQ
QVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJZLmJhc2VWYWwgaXMgMQorUEFTUyBmZUNvbnZvbHZl
TWF0cml4Lm9yZGVyWC5hbmltVmFsIGlzIDIKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclku
YW5pbVZhbCBpcyAyCitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJYLmJhc2VWYWwgaXMgMwor
UEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWS5iYXNlVmFsIGlzIDEKK1BBU1MgZmVDb252b2x2
ZU1hdHJpeC5vcmRlclguYW5pbVZhbCBpcyAxCitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJZ
LmFuaW1WYWwgaXMgMworUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVyWC5iYXNlVmFsIGlzIDMK
K1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclkuYmFzZVZhbCBpcyAxCitQQVNTIGZlQ29udm9s
dmVNYXRyaXgub3JkZXJYLmFuaW1WYWwgaXMgMworUEFTUyBmZUNvbnZvbHZlTWF0cml4Lm9yZGVy
WS5hbmltVmFsIGlzIDEKK1BBU1MgZmVDb252b2x2ZU1hdHJpeC5vcmRlclguYmFzZVZhbCBpcyAz
CitQQVNTIGZlQ29udm9sdmVNYXRyaXgub3JkZXJZLmJhc2VWYWwgaXMgMQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuaHRtbCBiL0xheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NzNmMGIzMzczOGYwOWQzYmE2MGM4Y2RkMTFkODQzYmNkMGVmNzJkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24t
Mi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9TVkdBbmltYXRpb25UZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blNNSUxUZXN0KCkiPgorPGgxPlNWRyAxLjEgZHluYW1pYyBh
bmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3ZnaW50ZWdlci1hbmlt
YXRpb24tMi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="137758"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>