<?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>184474</bug_id>
          
          <creation_ts>2018-04-10 16:14:48 -0700</creation_ts>
          <short_desc>[ESNext][BigInt] Implement support for &quot;==&quot; operation</short_desc>
          <delta_ts>2018-05-13 08:38:15 -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>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179001</blocked>
    
    <blocked>179901</blocked>
    
    <blocked>185379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1413448</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-04-10 16:14:48 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416722</commentid>
    <comment_count>1</comment_count>
      <attachid>338542</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-04-21 18:14:15 -0700</bug_when>
    <thetext>Created attachment 338542
WIP - Patch

It starts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416725</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-21 18:17:24 -0700</bug_when>
    <thetext>Attachment 338542 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:847:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:851:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:852:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:877:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:879:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:908:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:918:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:919:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:977:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 10 in 4 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>1416728</commentid>
    <comment_count>3</comment_count>
      <attachid>338542</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-21 19:31:26 -0700</bug_when>
    <thetext>Comment on attachment 338542
WIP - Patch

Attachment 338542 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/7400116

New failing tests:
stress/big-int-equals-basic.js.big-int-enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416772</commentid>
    <comment_count>4</comment_count>
      <attachid>338556</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-04-22 10:49:02 -0700</bug_when>
    <thetext>Created attachment 338556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416773</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-22 10:51:51 -0700</bug_when>
    <thetext>Attachment 338556 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:923:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:924:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418299</commentid>
    <comment_count>6</comment_count>
      <attachid>338556</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-26 15:48:23 -0700</bug_when>
    <thetext>Comment on attachment 338556
Patch

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

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:857
&gt; +        return (this-&gt;length() == 1) &amp;&amp; (this-&gt;sign() == (value &lt; 0)) &amp;&amp; (this-&gt;digit(0) == static_cast&lt;Digit&gt;(std::abs(static_cast&lt;int64_t&gt;(value))));

This works for INT32_MIN, right?

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:874
&gt; +    if (std::isnan(y))
&gt; +        return ComparisonResult::Undefined;
&gt; +
&gt; +    if (y == std::numeric_limits&lt;double&gt;::infinity())
&gt; +        return ComparisonResult::LessThan;
&gt; +
&gt; +    if (y == -std::numeric_limits&lt;double&gt;::infinity())
&gt; +        return ComparisonResult::GreaterThan;

I think there is a way to check if it&apos;s any of these three in a single branch, check out some of the JIT code I emit here:
https://bugs.webkit.org/attachment.cgi?id=334549&amp;action=review

We should see if the compiler is smart enough to make this a single branch followed by individual compares. If not, maybe the C++ stdlib has some function that does similarly.

Since you&apos;re grabbing the raw exponent below, you may as well make it a single branch.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:984
&gt; +        if (v1.isBigInt() &amp;&amp; s2) {

== for bigint really does type conversions? That&apos;s really unfortunate...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418372</commentid>
    <comment_count>7</comment_count>
      <attachid>338556</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-04-26 19:10:24 -0700</bug_when>
    <thetext>Comment on attachment 338556
Patch

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

Thank you very much for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:857
&gt;&gt; +        return (this-&gt;length() == 1) &amp;&amp; (this-&gt;sign() == (value &lt; 0)) &amp;&amp; (this-&gt;digit(0) == static_cast&lt;Digit&gt;(std::abs(static_cast&lt;int64_t&gt;(value))));
&gt; 
&gt; This works for INT32_MIN, right?

I think so. I&apos;m going to add a test case for that.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:874
&gt;&gt; +        return ComparisonResult::GreaterThan;
&gt; 
&gt; I think there is a way to check if it&apos;s any of these three in a single branch, check out some of the JIT code I emit here:
&gt; https://bugs.webkit.org/attachment.cgi?id=334549&amp;action=review
&gt; 
&gt; We should see if the compiler is smart enough to make this a single branch followed by individual compares. If not, maybe the C++ stdlib has some function that does similarly.
&gt; 
&gt; Since you&apos;re grabbing the raw exponent below, you may as well make it a single branch.

Cool. I&apos;m going to update that.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:984
&gt;&gt; +        if (v1.isBigInt() &amp;&amp; s2) {
&gt; 
&gt; == for bigint really does type conversions? That&apos;s really unfortunate...

Yes. Also relational operations &quot;&lt;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419992</commentid>
    <comment_count>8</comment_count>
      <attachid>339379</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-02 19:33:39 -0700</bug_when>
    <thetext>Created attachment 339379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419993</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-02 19:34:52 -0700</bug_when>
    <thetext>Attachment 339379 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:923:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:924:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421050</commentid>
    <comment_count>10</comment_count>
      <attachid>339647</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-05 08:15:06 -0700</bug_when>
    <thetext>Created attachment 339647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421051</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-05 08:17:35 -0700</bug_when>
    <thetext>Attachment 339647 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:922:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:923:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421555</commentid>
    <comment_count>12</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-07 17:32:40 -0700</bug_when>
    <thetext>Ping Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422248</commentid>
    <comment_count>13</comment_count>
      <attachid>339647</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-09 07:49:02 -0700</bug_when>
    <thetext>Comment on attachment 339647
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:867
&gt; +    uint64_t doubleBits = *(reinterpret_cast&lt;uint64_t*&gt;(&amp;y));

Let&apos;s do `uint64_t doubleBits = bitwise_cast&lt;uint64_t&gt;(y);`.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:886
&gt; +    if (!y)
&gt; +        return x-&gt;isZero() ? ComparisonResult::Equal : ComparisonResult::GreaterThan;

Adding `ASSERT(!xSign)` inside this `if` helps readers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422619</commentid>
    <comment_count>14</comment_count>
      <attachid>339647</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-09 20:03:50 -0700</bug_when>
    <thetext>Comment on attachment 339647
Patch

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

Thx for the review!

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:867
&gt;&gt; +    uint64_t doubleBits = *(reinterpret_cast&lt;uint64_t*&gt;(&amp;y));
&gt; 
&gt; Let&apos;s do `uint64_t doubleBits = bitwise_cast&lt;uint64_t&gt;(y);`.

Good to know that! I&apos;m just worried about the memcpy of bitwise_cast, but I think it is ok.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:886
&gt;&gt; +        return x-&gt;isZero() ? ComparisonResult::Equal : ComparisonResult::GreaterThan;
&gt; 
&gt; Adding `ASSERT(!xSign)` inside this `if` helps readers.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422621</commentid>
    <comment_count>15</comment_count>
      <attachid>340066</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-05-09 20:25:27 -0700</bug_when>
    <thetext>Created attachment 340066
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422622</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-09 20:28:02 -0700</bug_when>
    <thetext>Attachment 340066 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:905:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSBigInt.cpp:906:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422624</commentid>
    <comment_count>17</comment_count>
      <attachid>339647</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-09 20:59:24 -0700</bug_when>
    <thetext>Comment on attachment 339647
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:867
&gt;&gt;&gt; +    uint64_t doubleBits = *(reinterpret_cast&lt;uint64_t*&gt;(&amp;y));
&gt;&gt; 
&gt;&gt; Let&apos;s do `uint64_t doubleBits = bitwise_cast&lt;uint64_t&gt;(y);`.
&gt; 
&gt; Good to know that! I&apos;m just worried about the memcpy of bitwise_cast, but I think it is ok.

Compilers have optimizations for memcpy, so it produces simple mov related instructions inlinely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422628</commentid>
    <comment_count>18</comment_count>
      <attachid>340066</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-09 21:25:54 -0700</bug_when>
    <thetext>Comment on attachment 340066
Patch for landing

Clearing flags on attachment: 340066

Committed r231629: &lt;https://trac.webkit.org/changeset/231629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423413</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-13 08:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/40201833&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338542</attachid>
            <date>2018-04-21 18:14:15 -0700</date>
            <delta_ts>2018-04-22 10:48:56 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>big-int-equals.diff</filename>
            <type>text/plain</type>
            <size>12519</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLWJhc2ljLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYWEyNGYyNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtZXF1YWxzLWJhc2ljLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vQCBydW5CaWdJbnRF
bmFibGVkCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gdGVzdEVxdWFscyhhLCBi
LCBlKSB7CisgICAgYXNzZXJ0KGEgPT0gYiwgZSwgYSArICIgPT0gIiArIGIgKyAiIHNob3VsZCBi
ZSAiICsgZSk7CisgICAgYXNzZXJ0KGIgPT0gYSwgZSwgYiArICIgPT0gIiArIGEgKyAiIHNob3Vs
ZCBiZSAiICsgZSk7Cit9CisKKy8vIEJpZ0ludCAtIEJpZ0ludAordGVzdEVxdWFscygxbiwgMW4s
IHRydWUpOwordGVzdEVxdWFscygxOTI4MzkyMTI5MzEybiwgMW4sIGZhbHNlKTsKK3Rlc3RFcXVh
bHMoMG4sIDFuLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBuLCAwbiwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDgxNzI4MzkxMjkzMW4sIDgxNzI4MzkxMjkzMW4sIHRydWUpOwordGVzdEVxdWFscygweEZGRDgx
NzI4M0FGOTEyOUUzMW4sIDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDB4QUZGRDgxNzI4M0FGOTEyOUUzMW4sIDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgdHJ1ZSk7Cit0
ZXN0RXF1YWxzKDQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODFuLCBCaWdJbnQoIi00NzE5NDkwNjk3MjY2
MzQ0NDAyNDgxIiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItNDcxOTQ5MDY5NzI2NjM0
NDQwMjQ4MSIpLCBCaWdJbnQoIi00NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiksIGZhbHNlKTsKK3Rl
c3RFcXVhbHMoQmlnSW50KCItNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBCaWdJbnQoIi00NzE5
NDkwNjk3MjY2MzQ0NDAyNDgxIiksIHRydWUpOwordGVzdEVxdWFscyhCaWdJbnQoIi0xNyIpLCBC
aWdJbnQoIi0xNyIpLCB0cnVlKTsKKworLy8gQmlnSW50IC0gU3RyaW5nCisKK3Rlc3RFcXVhbHMo
MW4sICIxIiwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDE5MjgzOTIxMjkzMTJuLCAiMSIsIGZhbHNlKTsK
K3Rlc3RFcXVhbHMoMG4sICIxIiwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgIjAiLCB0cnVlKTsK
K3Rlc3RFcXVhbHMoODE3MjgzOTEyOTMxbiwgIjgxNzI4MzkxMjkzMSIsIHRydWUpOwordGVzdEVx
dWFscygweEZGRDgxNzI4M0FGOTEyOUUzMW4sICI0NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiwgdHJ1
ZSk7Cit0ZXN0RXF1YWxzKDB4QUZGRDgxNzI4M0FGOTEyOUUzMW4sICI0NzE5NDkwNjk3MjY2MzQ0
NDAyNDgxIiwgdHJ1ZSk7CisKKy8vIEJpZ0ludCAtIE51bWJlcgorCithc3NlcnQoMG4sIDAsIHRy
dWUpOworYXNzZXJ0KDBuLCAtMCwgdHJ1ZSk7Cithc3NlcnQoLTAgPT0gMG4sIHRydWUpOworYXNz
ZXJ0KDBuLCAwLjAwMDAwMDAwMDAwMSwgZmFsc2UpOworYXNzZXJ0KDBuLCAxLCBmYWxzZSk7Cith
c3NlcnQoMSwgMG4sIGZhbHNlKTsKK2Fzc2VydCgxbiwgMC45OTk5OTk5OTk5OTksIGZhbHNlKTsK
K2Fzc2VydCgxbiwgMSwgdHJ1ZSk7Cithc3NlcnQoMG4sIE51bWJlci5NSU5fVkFMVUUsIGZhbHNl
KTsKK2Fzc2VydCgwbiwgLU51bWJlci5NSU5fVkFMVUUsIGZhbHNlKTsKK2Fzc2VydCgtMTBuLCBO
dW1iZXIuTUlOX1ZBTFVFLCBmYWxzZSk7Cithc3NlcnQoMW4sIE51bWJlci5NQVhfVkFMVUUsIGZh
bHNlKTsKK2Fzc2VydCgxbiwgLU51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK2Fzc2VydCgweGZm
ZmZmZmZmZmZmZmY3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZuLCBOdW1iZXIuTUFYX1ZBTFVFLCBmYWxzZSk7Cith
c3NlcnQoMHhmZmZmZmZmZmZmZmZmODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgTnVtYmVyLk1BWF9WQUxVRSwg
dHJ1ZSk7Cithc3NlcnQoMHhmZmZmZmZmZmZmZmZmODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxbiwgTnVtYmVyLk1B
WF9WQUxVRSwgZmFsc2UpOworYXNzZXJ0KDE0NDExNTE4ODA3NTg1NTg3MCwgMTQ0MTE1MTg4MDc1
ODU1ODcwbiwgdHJ1ZSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
Y3BwCmluZGV4IGM1MWM4YjIuLmViZjI2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKQEAgLTgzMywxMCArODMzLDE1MyBAQCB2b2lkIEpTQmlnSW50Ojpz
ZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCiAgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgbGVu
Z3RoKCkpOwogICAgIGRhdGFTdG9yYWdlKClbbl0gPSB2YWx1ZTsKIH0KLQogSlNPYmplY3QqIEpT
QmlnSW50Ojp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZt
KCksIGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpKTsKIH0KIAorYm9v
bCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKK3sKKyAgICBBU1NF
UlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CisgICAgCisgICAgaWYgKG51bVZhbHVlLmlzSW50MzIo
KSkgeworICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7CisgICAgICAgIGlm
ICh2YWx1ZSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworCisgICAg
ICAgIHJldHVybiAodGhpcy0+bGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgICAgICAgICYmICh0aGlz
LT5zaWduKCkgPT0gKHZhbHVlIDwgMCkpCisgICAgICAgICAgICAgICAmJiAodGhpcy0+ZGlnaXQo
MCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZh
bHVlKSkpKTsKKyAgICB9CisgICAgCisgICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3Vi
bGUoKTsKKyAgICByZXR1cm4gY29tcGFyZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJp
c29uUmVzdWx0OjpFcXVhbDsKK30KKworSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJ
bnQ6OmNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpCit7CisgICAgLy8gVGhp
cyBhbGdvcml0aG0gZXhwZWN0IHRoYXQgdGhlIGRvdWJsZSBmb3JtYXQgaXMgSUVFRSA3NTQKKyAg
ICBpZiAoc3RkOjppc25hbih5KSkKKyAgICAgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OlVu
ZGVmaW5lZDsKKworICAgIGlmICh5ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSkKKyAgICAgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworCisg
ICAgaWYgKHkgPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkKKyAg
ICAgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworCisgICAgYm9vbCB4
U2lnbiA9IHgtPnNpZ24oKTsKKyAgICAKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJl
bnQgZnJvbSB0aGUgZG91YmxlJ3Mgc2lnbiBiaXQgZm9yIC0wLiBUaGF0J3MKKyAgICAvLyBpbnRl
bnRpb25hbCBiZWNhdXNlIC0wIG11c3QgYmUgdHJlYXRlZCBsaWtlIDAuCisgICAgYm9vbCB5U2ln
biA9IHkgPCAwOworICAgIGlmICh4U2lnbiAhPSB5U2lnbikKKyAgICAgICAgcmV0dXJuIHhTaWdu
ID8gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVy
VGhhbjs7CisKKyAgICBpZiAoeSA9PSAwKQorICAgICAgICByZXR1cm4geC0+aXNaZXJvKCkgPyBD
b21wYXJpc29uUmVzdWx0OjpFcXVhbCA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwor
CisgICAgaWYgKHgtPmlzWmVybygpKQorICAgICAgICByZXR1cm4gQ29tcGFyaXNvblJlc3VsdDo6
TGVzc1RoYW47CisKKyAgICB1aW50NjRfdCBkb3VibGVCaXRzID0gKihyZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Kj4oJnkpKTsKKyAgICBpbnQgcmF3RXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGRvdWJsZUJpdHMgPj4gNTIpICYgMHg3RkY7CisgICAgdWludDY0X3QgbWFudGlzc2EgPSBkb3Vi
bGVCaXRzICYgMHgwMDBGRkZGRkZGRkZGRkZGOworCisgICAgLy8gTm9uLWZpbml0ZSBkb3VibGVz
IGFyZSBoYW5kbGVkIGFib3ZlLgorICAgIEFTU0VSVChyYXdFeHBvbmVudCAhPSAweDdGRik7Cisg
ICAgaW50IGV4cG9uZW50ID0gcmF3RXhwb25lbnQgLSAweDNGRjsKKyAgICBpZiAoZXhwb25lbnQg
PCAwKSB7CisgICAgICAgIC8vIFRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZG91YmxlIGlzIGxl
c3MgdGhhbiAxLiBPbmx5IDBuIGhhcyBhbgorICAgICAgICAvLyBhYnNvbHV0ZSB2YWx1ZSBzbWFs
bGVyIHRoYW4gdGhhdCwgYnV0IHdlJ3ZlIGFscmVhZHkgY292ZXJlZCB0aGF0IGNhc2UuCisgICAg
ICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNv
blJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgfQorCisgICAgaW50IHhMZW5ndGggPSB4LT5sZW5n
dGgoKTsKKyAgICBEaWdpdCB4TVNEID0geC0+ZGlnaXQoeExlbmd0aCAtIDEpOworICAgIGludCBt
c2RMZWFkaW5nWmVyb3MgPSBzaXplb2YoeE1TRCkgPT0gOCAgPyBjbHo2NCh4TVNEKSA6IGNsejMy
KHhNU0QpOworCisgICAgaW50IHhCaXRMZW5ndGggPSB4TGVuZ3RoICogZGlnaXRCaXRzIC0gbXNk
TGVhZGluZ1plcm9zOworICAgIGludCB5Qml0TGVuZ3RoID0gZXhwb25lbnQgKyAxOworICAgIGlm
ICh4Qml0TGVuZ3RoIDwgeUJpdExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHhTaWduPyBDb21wYXJp
c29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworCisg
ICAgaWYgKHhCaXRMZW5ndGggPiB5Qml0TGVuZ3RoKQorICAgICAgICByZXR1cm4geFNpZ24gPyBD
b21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFu
OzsKKyAgICAKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoYXQgc2lnbnMgYW5kIGJp
dCBsZW5ndGhzIChpLmUuIHBvc2l0aW9uIG9mCisgICAgLy8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQg
Yml0IGluIGV4cG9uZW50LWZyZWUgcmVwcmVzZW50YXRpb24pIGFyZSBpZGVudGljYWwuCisgICAg
Ly8ge3h9IGlzIG5vdCB6ZXJvLCB7eX0gaXMgZmluaXRlIGFuZCBub3QgZGVub3JtYWwuCisgICAg
Ly8gTm93IHdlIHZpcnR1YWxseSBjb252ZXJ0IHRoZSBkb3VibGUgdG8gYW4gaW50ZWdlciBieSBz
aGlmdGluZyBpdHMKKyAgICAvLyBtYW50aXNzYSBhY2NvcmRpbmcgdG8gaXRzIGV4cG9uZW50LCBz
byBpdCB3aWxsIGFsaWduIHdpdGggdGhlIEJpZ0ludCB7eH0sCisgICAgLy8gYW5kIHRoZW4gd2Ug
Y29tcGFyZSB0aGVtIGJpdCBmb3IgYml0IHVudGlsIHdlIGZpbmQgYSBkaWZmZXJlbmNlIG9yIHRo
ZQorICAgIC8vIGxlYXN0IHNpZ25pZmljYW50IGJpdC4KKyAgICAvLyAgICAgICAgICAgICAgICAg
ICAgPC0tLS0tIDUyIC0tLS0tLT4gPC0tIHZpcnR1YWwgdHJhaWxpbmcgemVyb2VzIC0tPgorICAg
IC8vIHkgLyBtYW50aXNzYTogICAgIDF5eXl5eXl5eXl5eXl5eXl5eSAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCisgICAgLy8geCAvIGRpZ2l0czogICAgMDAwMXh4eHggeHh4eHh4eHgg
eHh4eHh4eHggLi4uCisgICAgLy8gICAgICAgICAgICAgICAgICAgIDwtLT4gICAgICAgICAgPC0t
LS0tLT4KKyAgICAvLyAgICAgICAgICAgICAgbXNkVG9wQml0ICAgICAgICAgZGlnaXRCaXRzCisg
ICAgLy8KKyAgICBtYW50aXNzYSB8PSAweDAwMTAwMDAwMDAwMDAwMDA7CisgICAgY29uc3QgaW50
IG1hbnRpc3NhVG9wQml0ID0gNTI7ICAvLyAwLWluZGV4ZWQuCisKKyAgICAvLyAwLWluZGV4ZWQg
cG9zaXRpb24gb2Yge3h9J3MgbW9zdCBzaWduaWZpY2FudCBiaXQgd2l0aGluIHRoZSB7bXNkfS4K
KyAgICBpbnQgbXNkVG9wQml0ID0gZGlnaXRCaXRzIC0gMSAtIG1zZExlYWRpbmdaZXJvczsKKyAg
ICBBU1NFUlQobXNkVG9wQml0ID09ICh4Qml0TGVuZ3RoIC0gMSkgJSBkaWdpdEJpdHMpOworICAg
IAorICAgIC8vIFNoaWZ0ZWQgY2h1bmsgb2Yge21hbnRpc3NhfSBmb3IgY29tcGFyaW5nIHdpdGgg
e2RpZ2l0fS4KKyAgICBEaWdpdCBjb21wYXJlTWFudGlzc2E7CisKKyAgICAvLyBOdW1iZXIgb2Yg
dW5wcm9jZXNzZWQgYml0cyBpbiB7bWFudGlzc2F9LiBXZSdsbCBrZWVwIHRoZW0gc2hpZnRlZCB0
bworICAgIC8vIHRoZSBsZWZ0IChpLmUuIG1vc3Qgc2lnbmlmaWNhbnQgcGFydCkgb2YgdGhlIHVu
ZGVybHlpbmcgdWludDY0X3QuCisgICAgaW50IHJlbWFpbmluZ01hbnRpc3NhQml0cyA9IDA7Cisg
ICAgCisgICAgLy8gRmlyc3QsIGNvbXBhcmUgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgYWdh
aW5zdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgLy8gdGhlIG1hbnRpc3NhIGFuZCB0aGVuIHdlIGFs
aWduIHRoZW0uCisgICAgaWYgKG1zZFRvcEJpdCA8IG1hbnRpc3NhVG9wQml0KSB7CisgICAgICAg
IHJlbWFpbmluZ01hbnRpc3NhQml0cyA9IChtYW50aXNzYVRvcEJpdCAtIG1zZFRvcEJpdCk7Cisg
ICAgICAgIGNvbXBhcmVNYW50aXNzYSA9IHN0YXRpY19jYXN0PERpZ2l0PihtYW50aXNzYSA+PiBy
ZW1haW5pbmdNYW50aXNzYUJpdHMpOworICAgICAgICBtYW50aXNzYSA9IG1hbnRpc3NhIDw8ICg2
NCAtIHJlbWFpbmluZ01hbnRpc3NhQml0cyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29tcGFy
ZU1hbnRpc3NhID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KG1hbnRpc3NhIDw8IChtc2RUb3BCaXQgLSBt
YW50aXNzYVRvcEJpdCkpOworICAgICAgICBtYW50aXNzYSA9IDA7CisgICAgfQorCisgICAgaWYg
KHhNU0QgPiBjb21wYXJlTWFudGlzc2EpCisgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlz
b25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisKKyAg
ICBpZiAoeE1TRCA8IGNvbXBhcmVNYW50aXNzYSkKKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29t
cGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbjsK
KyAgICAKKyAgICAvLyBUaGVuLCBjb21wYXJlIGFkZGl0aW9uYWwgZGlnaXRzIGFnYWluc3QgYW55
IHJlbWFpbmluZyBtYW50aXNzYSBiaXRzLgorICAgIGZvciAoaW50IGRpZ2l0SW5kZXggPSB4TGVu
Z3RoIC0gMjsgZGlnaXRJbmRleCA+PSAwOyBkaWdpdEluZGV4LS0pIHsKKyAgICAgICAgaWYgKHJl
bWFpbmluZ01hbnRpc3NhQml0cyA+IDApIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ01hbnRpc3Nh
Qml0cyAtPSBkaWdpdEJpdHM7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKG1hbnRpc3NhKSAhPSBz
aXplb2YoeE1TRCkpIHsKKyAgICAgICAgICAgICAgICBjb21wYXJlTWFudGlzc2EgPSBzdGF0aWNf
Y2FzdDxEaWdpdD4obWFudGlzc2EgPj4gKDY0IC0gZGlnaXRCaXRzKSk7CisgICAgICAgICAgICAg
ICAgLy8gIiYgNjMiIHRvIGFwcGVhc2UgY29tcGlsZXJzLiBkaWdpdEJpdHMgaXMgMzIgaGVyZSBh
bnl3YXkuCisgICAgICAgICAgICAgICAgbWFudGlzc2EgPSBtYW50aXNzYSA8PCAoZGlnaXRCaXRz
ICYgNjMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb21wYXJlTWFu
dGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlzc2EpOworICAgICAgICAgICAgICAgIG1h
bnRpc3NhID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBj
b21wYXJlTWFudGlzc2EgPSAwOworCisgICAgICAgIERpZ2l0IGRpZ2l0ID0geC0+ZGlnaXQoZGln
aXRJbmRleCk7CisgICAgICAgIGlmIChkaWdpdCA+IGNvbXBhcmVNYW50aXNzYSkKKyAgICAgICAg
ICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNv
blJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgICAgIGlmIChkaWdpdCA8IGNvbXBhcmVNYW50aXNz
YSkKKyAgICAgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJU
aGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CisgICAgfQorCisgICAgLy8gSW50ZWdl
ciBwYXJ0cyBhcmUgZXF1YWw7IGNoZWNrIHdoZXRoZXIge3l9IGhhcyBhIGZyYWN0aW9uYWwgcGFy
dC4KKyAgICBpZiAobWFudGlzc2EgIT0gMCkgeworICAgICAgICBBU1NFUlQocmVtYWluaW5nTWFu
dGlzc2FCaXRzID4gMCk7CisgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6
OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CisgICAgfQorCisgICAg
cmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDI5OGMzNDguLjZl
MzM4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtODAs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSYsIGludCBy
YWRpeCk7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWxzKEpT
QmlnSW50KiwgSlNCaWdJbnQqKTsKKyAgICBib29sIGVxdWFsc1RvTnVtYmVyKEpTVmFsdWUpOwog
CiAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIs
IEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7CiAgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSop
IGNvbnN0OwpAQCAtODcsNiArODgsMTQgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiB0b09iamVj
dChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIAogcHJpdmF0ZToKKwor
ICAgIGVudW0gQ29tcGFyaXNvblJlc3VsdCB7CisgICAgICAgIEVxdWFsLAorICAgICAgICBVbmRl
ZmluZWQsCisgICAgICAgIEdyZWF0ZXJUaGFuLAorICAgICAgICBMZXNzVGhhbgorICAgIH07CisK
ICAgICB1c2luZyBEaWdpdCA9IHVpbnRwdHJfdDsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGludCBiaXRzUGVyQnl0ZSA9IDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQgZGln
aXRCaXRzID0gc2l6ZW9mKERpZ2l0KSAqIGJpdHNQZXJCeXRlOwpAQCAtMTE2LDYgKzEyNSw4IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGlzWmVybygpOwogCisgICAgQ29tcGFyaXNvblJlc3VsdCBz
dGF0aWMgY29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSk7CisKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChF
eGVjU3RhdGUqLCBDaGFyVHlwZSogIGRhdGEsIGludCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBkMGQzNzk5
Li5iYmZlYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKQEAgLTk4MSw2ICs5ODEsMjQgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
VmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBK
U1YKICAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5n
KHYyKSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewor
ICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6cGFyc2VJbnQoZXhlYywgdm0sIGFz
U3RyaW5nKHYyKS0+dmFsdWUoZXhlYyksIDEwKTsKKyAgICAgICAgICAgIGlmICghbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHYyID0g
SlNWYWx1ZShuKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHMxICYmIHYyLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNC
aWdJbnQ6OnBhcnNlSW50KGV4ZWMsIHZtLCBhc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpLCAxMCk7
CisgICAgICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB2MSA9IEpTVmFsdWUobik7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh2MS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CiAgICAgICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTEwMzQsMTAgKzEwNTIsMjcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYx
LCBKU1YKICAgICAgICAgaWYgKHYxLmlzQm9vbGVhbigpKSB7CiAgICAgICAgICAgICBpZiAodjIu
aXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2
MS5hc0Jvb2xlYW4oKSkgPT0gdjIuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHYy
LmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgICAgICB2MSA9IEpTVmFsdWUodjEudG9OdW1iZXIo
ZXhlYykpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHYyLmlzQm9vbGVhbigpKSB7CiAgICAgICAgICAgICBpZiAodjEuaXNOdW1i
ZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHYyLmFzQm9vbGVhbigpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHYxLmlzQmln
SW50KCkpIHsKKyAgICAgICAgICAgICAgICB2MiA9IEpTVmFsdWUodjIudG9OdW1iZXIoZXhlYykp
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQorICAg
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjplcXVhbHMoYXNCaWdJbnQodjEpLCBhc0JpZ0ludCh2
MikpOworICAgICAgICAKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNOdW1iZXIo
KSkKKyAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MSktPmVxdWFsc1RvTnVtYmVyKHYyKTsK
KworICAgICAgICBpZiAodjIuaXNCaWdJbnQoKSAmJiB2MS5pc051bWJlcigpKQorICAgICAgICAg
ICAgcmV0dXJuIGFzQmlnSW50KHYyKS0+ZXF1YWxzVG9OdW1iZXIodjEpOwogCiAgICAgICAgIHJl
dHVybiB2MSA9PSB2MjsKICAgICB9IHdoaWxlICh0cnVlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338556</attachid>
            <date>2018-04-22 10:49:02 -0700</date>
            <delta_ts>2018-05-02 19:33:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184474-20180422144900.patch</filename>
            <type>text/plain</type>
            <size>24750</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjFkMzhhOWJmMGRjOTYxNjEzMzNlODQ4MGE1NWVlM2ZmOTg0NTAyLi4wNjk0M2RmYmY5ZDQ0ZmJl
NGM1NjNkZTJjNjdlZWNkZGRiMDFiYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOC0wNC0yMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgIj09IiBv
cGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHN1cHBvcnQgb2YgQmlnSW50IGZvciBlcXVhbHMg
b3BlcmF0b3IKKyAgICAgICAgZm9sbG93aW5nIHRoZSBzcGVjIHNlbWFudGljc1sxXS4KKworICAg
ICAgICBbMV0gLSBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWJpZ2ludC8jc2VjLWFi
c3RyYWN0LWVxdWFsaXR5LWNvbXBhcmlzb24KKworICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0RGln
aXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKwogMjAxOC0wNC0xNCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5j
YWxsZXIgc2hvdWxkbid0IHJldHVybiBnZW5lcmF0b3IgYm9kaWVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggYzUxYzhiMjEwZDkzYzE3Zjk2NDAwZWZl
NzdkYWE2NzJhMjU5YTZkMy4uMzFlMzg3MzYzNzUwMjRlNDVjY2Q2YzY4NDRiNWVhZTg4MzM0ZmRi
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMjA5
LDE4ICsyMDksMjMgQEAgc3RkOjpvcHRpb25hbDx1aW50OF90PiBKU0JpZ0ludDo6c2luZ2xlRGln
aXRWYWx1ZUZvclN0cmluZygpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBTdHJpbmdWaWV3IHMpCitKU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIFN0cmluZ1ZpZXcgcywgRXJyb3JQ
YXJzZU1vZGUgcGFyc2VyTW9kZSkKIHsKICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAgcmV0
dXJuIHBhcnNlSW50KHN0YXRlLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCkpOwotICAgIHJl
dHVybiBwYXJzZUludChzdGF0ZSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCBw
YXJzZXJNb2RlKTsKKyAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMuY2hhcmFjdGVyczE2KCks
IHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNl
SW50KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4
KQorSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0s
IFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgcGFyc2VyTW9kZSkK
IHsKICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2
bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFsc2UpOwotICAgIHJl
dHVybiBwYXJzZUludChzdGF0ZSwgdm0sIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAs
IHJhZGl4LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIHMuY2hh
cmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIGZhbHNlKTsKKyAg
ICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgp
LCAwLCByYWRpeCwgcGFyc2VyTW9kZSwgZmFsc2UpOworfQorCitKU0JpZ0ludCogSlNCaWdJbnQ6
OnN0cmluZ1RvQmlnSW50KEV4ZWNTdGF0ZSogc3RhdGUsIFN0cmluZ1ZpZXcgcykKK3sKKyAgICBy
ZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25z
KTsKIH0KIAogU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCBpbnQg
cmFkaXgpCkBAIC03MTksNyArNzI0LDcgQEAgc2l6ZV90IEpTQmlnSW50OjpvZmZzZXRPZkRhdGEo
KQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1KU0JpZ0ludCogSlNCaWdJbnQ6
OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIENoYXJUeXBlKiAgZGF0YSwgaW50IGxlbmd0aCkK
K0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgQ2hhclR5cGUq
ICBkYXRhLCBpbnQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKIApAQCAtNzMwLDEzICs3MzUsMTMgQEAgSlNCaWdJbnQq
IEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBDaGFyVHlwZSogIGRhdGEsIGlu
dCBsZW5ndGgpCiAgICAgLy8gQ2hlY2sgUmFkaXggZnJvbSBmcmlzdCBjaGFyYWN0ZXJzCiAgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwKSArIDEgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bGVuZ3RoKSAmJiBkYXRhW3BdID09ICcwJykgewogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChkYXRhW3AgKyAxXSwgJ2InKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUlu
dChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGZhbHNlKTsKKyAgICAgICAgICAg
IHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDIsIGVycm9y
UGFyc2VNb2RlLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChkYXRhW3AgKyAxXSwgJ3gnKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUlu
dChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDE2LCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAxNiwgZXJy
b3JQYXJzZU1vZGUsIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnbycpKQotICAgICAgICAgICAgcmV0dXJuIHBhcnNl
SW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgOCwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgOCwgZXJy
b3JQYXJzZU1vZGUsIGZhbHNlKTsKICAgICB9CiAKICAgICBib29sIHNpZ24gPSBmYWxzZTsKQEAg
LTc0OSw3ICs3NTQsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSog
c3RhdGUsIENoYXJUeXBlKiAgZGF0YSwgaW50IGxlbmd0aCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwg
cCwgMTApOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBwYXJzZUludChzdGF0ZSwgdm0sIGRhdGEs
IGxlbmd0aCwgcCwgMTAsIGVycm9yUGFyc2VNb2RlKTsKIAogICAgIGlmIChyZXN1bHQgJiYgIXJl
c3VsdC0+aXNaZXJvKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0U2lnbihzaWduKTsKQEAgLTc1OCw3
ICs3NjMsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUs
IENoYXJUeXBlKiAgZGF0YSwgaW50IGxlbmd0aCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBW
TSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJh
ZGl4LCBib29sIGFsbG93RW1wdHlTdHJpbmcpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50
KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGlu
dCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFyc2VNb2RlLCBi
b29sIGFsbG93RW1wdHlTdHJpbmcpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKICAgICBp
bnQgcCA9IHN0YXJ0SW5kZXg7CkBAIC03NjcsNyArNzcyLDggQEAgSlNCaWdJbnQqIEpTQmlnSW50
OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQg
bGVuZ3QKIAogICAgIGlmICghYWxsb3dFbXB0eVN0cmluZyAmJiBzdGFydEluZGV4ID09IGxlbmd0
aCkgewogICAgICAgICBBU1NFUlQoc3RhdGUpOwotICAgICAgICB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihzdGF0ZSwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcg
dG8gQmlnSW50IikpOworICAgICAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1v
ZGU6OlRocm93RXhjZXB0aW9ucykKKyAgICAgICAgICAgIHRocm93Vk1FcnJvcihzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZVN5bnRheEVycm9yKHN0YXRlLCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBC
aWdJbnQiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtODEyLDcgKzgx
OCw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0m
IHZtLCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0CiAgICAgICAgIHJldHVybiByZXN1bHQtPnJp
Z2h0VHJpbSh2bSk7CiAKICAgICBBU1NFUlQoc3RhdGUpOwotICAgIHRocm93Vk1FcnJvcihzdGF0
ZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKHN0YXRlLCAiRmFpbGVkIHRvIHBhcnNlIFN0cmlu
ZyB0byBCaWdJbnQiKSk7CisgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2Rl
OjpUaHJvd0V4Y2VwdGlvbnMpCisgICAgICAgIHRocm93Vk1FcnJvcihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVN5bnRheEVycm9yKHN0YXRlLCAiRmFpbGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQi
KSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTgzMywxMCArODQwLDE1MSBAQCB2b2lk
IEpTQmlnSW50OjpzZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCiAgICAgQVNTRVJUKG4gPj0g
MCAmJiBuIDwgbGVuZ3RoKCkpOwogICAgIGRhdGFTdG9yYWdlKClbbl0gPSB2YWx1ZTsKIH0KLQog
SlNPYmplY3QqIEpTQmlnSW50Ojp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3Jl
YXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMp
KTsKIH0KIAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkK
K3sKKyAgICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CisgICAgCisgICAgaWYgKG51bVZh
bHVlLmlzSW50MzIoKSkgeworICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7
CisKKyAgICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigp
ID09ICh2YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+
KHN0ZDo6YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKKyAgICB9CisgICAgCisg
ICAgZG91YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKKyAgICByZXR1cm4gY29tcGFy
ZVRvRG91YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKK30KKwor
SlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShKU0Jp
Z0ludCogeCwgZG91YmxlIHkpCit7CisgICAgLy8gVGhpcyBhbGdvcml0aG0gZXhwZWN0IHRoYXQg
dGhlIGRvdWJsZSBmb3JtYXQgaXMgSUVFRSA3NTQKKyAgICBpZiAoc3RkOjppc25hbih5KSkKKyAg
ICAgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAgIGlmICh5ID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkKKyAgICAgICAgcmV0dXJu
IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworCisgICAgaWYgKHkgPT0gLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkKKyAgICAgICAgcmV0dXJuIENvbXBhcmlzb25S
ZXN1bHQ6OkdyZWF0ZXJUaGFuOworCisgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKKyAgICAK
KyAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZG91YmxlJ3Mgc2ln
biBiaXQgZm9yIC0wLiBUaGF0J3MKKyAgICAvLyBpbnRlbnRpb25hbCBiZWNhdXNlIC0wIG11c3Qg
YmUgdHJlYXRlZCBsaWtlIDAuCisgICAgYm9vbCB5U2lnbiA9IHkgPCAwOworICAgIGlmICh4U2ln
biAhPSB5U2lnbikKKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6TGVz
c1RoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKworICAgIGlmICgheSkKKyAg
ICAgICAgcmV0dXJuIHgtPmlzWmVybygpID8gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWwgOiBDb21w
YXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKworICAgIGlmICh4LT5pc1plcm8oKSkKKyAgICAg
ICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworCisgICAgdWludDY0X3QgZG91
YmxlQml0cyA9ICoocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZ5KSk7CisgICAgaW50IHJh
d0V4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihkb3VibGVCaXRzID4+IDUyKSAmIDB4N0ZGOwor
ICAgIHVpbnQ2NF90IG1hbnRpc3NhID0gZG91YmxlQml0cyAmIDB4MDAwRkZGRkZGRkZGRkZGRjsK
KworICAgIC8vIE5vbi1maW5pdGUgZG91YmxlcyBhcmUgaGFuZGxlZCBhYm92ZS4KKyAgICBBU1NF
UlQocmF3RXhwb25lbnQgIT0gMHg3RkYpOworICAgIGludCBleHBvbmVudCA9IHJhd0V4cG9uZW50
IC0gMHgzRkY7CisgICAgaWYgKGV4cG9uZW50IDwgMCkgeworICAgICAgICAvLyBUaGUgYWJzb2x1
dGUgdmFsdWUgb2YgdGhlIGRvdWJsZSBpcyBsZXNzIHRoYW4gMS4gT25seSAwbiBoYXMgYW4KKyAg
ICAgICAgLy8gYWJzb2x1dGUgdmFsdWUgc21hbGxlciB0aGFuIHRoYXQsIGJ1dCB3ZSd2ZSBhbHJl
YWR5IGNvdmVyZWQgdGhhdCBjYXNlLgorICAgICAgICByZXR1cm4geFNpZ24gPyBDb21wYXJpc29u
UmVzdWx0OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworICAgIH0K
KworICAgIGludCB4TGVuZ3RoID0geC0+bGVuZ3RoKCk7CisgICAgRGlnaXQgeE1TRCA9IHgtPmRp
Z2l0KHhMZW5ndGggLSAxKTsKKyAgICBpbnQgbXNkTGVhZGluZ1plcm9zID0gc2l6ZW9mKHhNU0Qp
ID09IDggID8gY2x6NjQoeE1TRCkgOiBjbHozMih4TVNEKTsKKworICAgIGludCB4Qml0TGVuZ3Ro
ID0geExlbmd0aCAqIGRpZ2l0Qml0cyAtIG1zZExlYWRpbmdaZXJvczsKKyAgICBpbnQgeUJpdExl
bmd0aCA9IGV4cG9uZW50ICsgMTsKKyAgICBpZiAoeEJpdExlbmd0aCA8IHlCaXRMZW5ndGgpCisg
ICAgICAgIHJldHVybiB4U2lnbj8gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21w
YXJpc29uUmVzdWx0OjpMZXNzVGhhbjsKKworICAgIGlmICh4Qml0TGVuZ3RoID4geUJpdExlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4gOiBD
b21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKyAgICAKKyAgICAvLyBBdCB0aGlzIHBvaW50
LCB3ZSBrbm93IHRoYXQgc2lnbnMgYW5kIGJpdCBsZW5ndGhzIChpLmUuIHBvc2l0aW9uIG9mCisg
ICAgLy8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGluIGV4cG9uZW50LWZyZWUgcmVwcmVzZW50
YXRpb24pIGFyZSBpZGVudGljYWwuCisgICAgLy8ge3h9IGlzIG5vdCB6ZXJvLCB7eX0gaXMgZmlu
aXRlIGFuZCBub3QgZGVub3JtYWwuCisgICAgLy8gTm93IHdlIHZpcnR1YWxseSBjb252ZXJ0IHRo
ZSBkb3VibGUgdG8gYW4gaW50ZWdlciBieSBzaGlmdGluZyBpdHMKKyAgICAvLyBtYW50aXNzYSBh
Y2NvcmRpbmcgdG8gaXRzIGV4cG9uZW50LCBzbyBpdCB3aWxsIGFsaWduIHdpdGggdGhlIEJpZ0lu
dCB7eH0sCisgICAgLy8gYW5kIHRoZW4gd2UgY29tcGFyZSB0aGVtIGJpdCBmb3IgYml0IHVudGls
IHdlIGZpbmQgYSBkaWZmZXJlbmNlIG9yIHRoZQorICAgIC8vIGxlYXN0IHNpZ25pZmljYW50IGJp
dC4KKyAgICAvLyAgICAgICAgICAgICAgICAgICAgPC0tLS0tIDUyIC0tLS0tLT4gPC0tIHZpcnR1
YWwgdHJhaWxpbmcgemVyb2VzIC0tPgorICAgIC8vIHkgLyBtYW50aXNzYTogICAgIDF5eXl5eXl5
eXl5eXl5eXl5eSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCisgICAgLy8geCAvIGRp
Z2l0czogICAgMDAwMXh4eHggeHh4eHh4eHggeHh4eHh4eHggLi4uCisgICAgLy8gICAgICAgICAg
ICAgICAgICAgIDwtLT4gICAgICAgICAgPC0tLS0tLT4KKyAgICAvLyAgICAgICAgICAgICAgbXNk
VG9wQml0ICAgICAgICAgZGlnaXRCaXRzCisgICAgLy8KKyAgICBtYW50aXNzYSB8PSAweDAwMTAw
MDAwMDAwMDAwMDA7CisgICAgY29uc3QgaW50IG1hbnRpc3NhVG9wQml0ID0gNTI7IC8vIDAtaW5k
ZXhlZC4KKworICAgIC8vIDAtaW5kZXhlZCBwb3NpdGlvbiBvZiB7eH0ncyBtb3N0IHNpZ25pZmlj
YW50IGJpdCB3aXRoaW4gdGhlIHttc2R9LgorICAgIGludCBtc2RUb3BCaXQgPSBkaWdpdEJpdHMg
LSAxIC0gbXNkTGVhZGluZ1plcm9zOworICAgIEFTU0VSVChtc2RUb3BCaXQgPT0gKHhCaXRMZW5n
dGggLSAxKSAlIGRpZ2l0Qml0cyk7CisgICAgCisgICAgLy8gU2hpZnRlZCBjaHVuayBvZiB7bWFu
dGlzc2F9IGZvciBjb21wYXJpbmcgd2l0aCB7ZGlnaXR9LgorICAgIERpZ2l0IGNvbXBhcmVNYW50
aXNzYTsKKworICAgIC8vIE51bWJlciBvZiB1bnByb2Nlc3NlZCBiaXRzIGluIHttYW50aXNzYX0u
IFdlJ2xsIGtlZXAgdGhlbSBzaGlmdGVkIHRvCisgICAgLy8gdGhlIGxlZnQgKGkuZS4gbW9zdCBz
aWduaWZpY2FudCBwYXJ0KSBvZiB0aGUgdW5kZXJseWluZyB1aW50NjRfdC4KKyAgICBpbnQgcmVt
YWluaW5nTWFudGlzc2FCaXRzID0gMDsKKyAgICAKKyAgICAvLyBGaXJzdCwgY29tcGFyZSB0aGUg
bW9zdCBzaWduaWZpY2FudCBkaWdpdCBhZ2FpbnN0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAvLyB0
aGUgbWFudGlzc2EgYW5kIHRoZW4gd2UgYWxpZ24gdGhlbS4KKyAgICBpZiAobXNkVG9wQml0IDwg
bWFudGlzc2FUb3BCaXQpIHsKKyAgICAgICAgcmVtYWluaW5nTWFudGlzc2FCaXRzID0gKG1hbnRp
c3NhVG9wQml0IC0gbXNkVG9wQml0KTsKKyAgICAgICAgY29tcGFyZU1hbnRpc3NhID0gc3RhdGlj
X2Nhc3Q8RGlnaXQ+KG1hbnRpc3NhID4+IHJlbWFpbmluZ01hbnRpc3NhQml0cyk7CisgICAgICAg
IG1hbnRpc3NhID0gbWFudGlzc2EgPDwgKDY0IC0gcmVtYWluaW5nTWFudGlzc2FCaXRzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb21wYXJlTWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4o
bWFudGlzc2EgPDwgKG1zZFRvcEJpdCAtIG1hbnRpc3NhVG9wQml0KSk7CisgICAgICAgIG1hbnRp
c3NhID0gMDsKKyAgICB9CisKKyAgICBpZiAoeE1TRCA+IGNvbXBhcmVNYW50aXNzYSkKKyAgICAg
ICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4gOiBDb21wYXJpc29u
UmVzdWx0OjpHcmVhdGVyVGhhbjsKKworICAgIGlmICh4TVNEIDwgY29tcGFyZU1hbnRpc3NhKQor
ICAgICAgICByZXR1cm4geFNpZ24gPyBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENv
bXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworICAgIAorICAgIC8vIFRoZW4sIGNvbXBhcmUgYWRk
aXRpb25hbCBkaWdpdHMgYWdhaW5zdCBhbnkgcmVtYWluaW5nIG1hbnRpc3NhIGJpdHMuCisgICAg
Zm9yIChpbnQgZGlnaXRJbmRleCA9IHhMZW5ndGggLSAyOyBkaWdpdEluZGV4ID49IDA7IGRpZ2l0
SW5kZXgtLSkgeworICAgICAgICBpZiAocmVtYWluaW5nTWFudGlzc2FCaXRzID4gMCkgeworICAg
ICAgICAgICAgcmVtYWluaW5nTWFudGlzc2FCaXRzIC09IGRpZ2l0Qml0czsKKyAgICAgICAgICAg
IGlmIChzaXplb2YobWFudGlzc2EpICE9IHNpemVvZih4TVNEKSkgeworICAgICAgICAgICAgICAg
IGNvbXBhcmVNYW50aXNzYSA9IHN0YXRpY19jYXN0PERpZ2l0PihtYW50aXNzYSA+PiAoNjQgLSBk
aWdpdEJpdHMpKTsKKyAgICAgICAgICAgICAgICAvLyAiJiA2MyIgdG8gYXBwZWFzZSBjb21waWxl
cnMuIGRpZ2l0Qml0cyBpcyAzMiBoZXJlIGFueXdheS4KKyAgICAgICAgICAgICAgICBtYW50aXNz
YSA9IG1hbnRpc3NhIDw8IChkaWdpdEJpdHMgJiA2Myk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGNvbXBhcmVNYW50aXNzYSA9IHN0YXRpY19jYXN0PERpZ2l0PihtYW50
aXNzYSk7CisgICAgICAgICAgICAgICAgbWFudGlzc2EgPSAwOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbXBhcmVNYW50aXNzYSA9IDA7CisKKyAgICAgICAg
RGlnaXQgZGlnaXQgPSB4LT5kaWdpdChkaWdpdEluZGV4KTsKKyAgICAgICAgaWYgKGRpZ2l0ID4g
Y29tcGFyZU1hbnRpc3NhKQorICAgICAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJl
c3VsdDo6TGVzc1RoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKyAgICAgICAg
aWYgKGRpZ2l0IDwgY29tcGFyZU1hbnRpc3NhKQorICAgICAgICAgICAgcmV0dXJuIHhTaWduID8g
Q29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhh
bjsKKyAgICB9CisKKyAgICAvLyBJbnRlZ2VyIHBhcnRzIGFyZSBlcXVhbDsgY2hlY2sgd2hldGhl
ciB7eX0gaGFzIGEgZnJhY3Rpb25hbCBwYXJ0LgorICAgIGlmIChtYW50aXNzYSkgeworICAgICAg
ICBBU1NFUlQocmVtYWluaW5nTWFudGlzc2FCaXRzID4gMCk7CisgICAgICAgIHJldHVybiB4U2ln
biA/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVz
c1RoYW47CisgICAgfQorCisgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oCmluZGV4IDI5OGMzNDhjZDJiNGU1YWI1YzkyYzdiYjc5OWEzMGYzZWJmYTYyMzEuLjY0Y2Ew
ZDQ4ODlkMmE5NGU1OTJlMTA4MWNlZDE1YjhmOTk2ODEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtNzMsMTMgKzczLDIwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExlbmd0aChpbnQgbGVuZ3RoKSB7IG1fbGVuZ3RoID0gbGVuZ3RoOyB9CiAgICAgaW50
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKLSAgICBzdGF0aWMgSlNCaWdJ
bnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCk7
Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBTdHJpbmdWaWV3KTsK
KyAgICBlbnVtIEVycm9yUGFyc2VNb2RlIHsKKyAgICAgICAgVGhyb3dFeGNlcHRpb25zLAorICAg
ICAgICBJZ25vcmVFeGNlcHRpb25zCisgICAgfTsKKworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFy
c2VJbnQoRXhlY1N0YXRlKiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBh
cnNlTW9kZSA9IFRocm93RXhjZXB0aW9ucyk7CisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUlu
dChFeGVjU3RhdGUqLCBTdHJpbmdWaWV3LCBFcnJvclBhcnNlTW9kZSA9IFRocm93RXhjZXB0aW9u
cyk7CisgICAgc3RhdGljIEpTQmlnSW50KiBzdHJpbmdUb0JpZ0ludChFeGVjU3RhdGUqLCBTdHJp
bmdWaWV3KTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gc2luZ2xlRGlnaXRWYWx1ZUZv
clN0cmluZygpOwogICAgIFN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUmLCBpbnQgcmFkaXgpOwog
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCos
IEpTQmlnSW50Kik7CisgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKIAogICAgIGJv
b2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVl
JiByZXN1bHQpIGNvbnN0OwogICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsK
QEAgLTg3LDYgKzk0LDE0IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisKKyAgICBlbnVt
IENvbXBhcmlzb25SZXN1bHQgeworICAgICAgICBFcXVhbCwKKyAgICAgICAgVW5kZWZpbmVkLAor
ICAgICAgICBHcmVhdGVyVGhhbiwKKyAgICAgICAgTGVzc1RoYW4KKyAgICB9OworCiAgICAgdXNp
bmcgRGlnaXQgPSB1aW50cHRyX3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQgYml0
c1BlckJ5dGUgPSA4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IGRpZ2l0Qml0cyA9
IHNpemVvZihEaWdpdCkgKiBiaXRzUGVyQnl0ZTsKQEAgLTExNiwxMSArMTMxLDEzIEBAIHByaXZh
dGU6CiAKICAgICBib29sIGlzWmVybygpOwogCisgICAgQ29tcGFyaXNvblJlc3VsdCBzdGF0aWMg
Y29tcGFyZVRvRG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSk7CisKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3Rh
dGUqLCBDaGFyVHlwZSogIGRhdGEsIGludCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCog
cGFyc2VJbnQoRXhlY1N0YXRlKiwgQ2hhclR5cGUqICBkYXRhLCBpbnQgbGVuZ3RoLCBFcnJvclBh
cnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGlj
IEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCBpbnQg
bGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJhZGl4LCBib29sIGFsbG93RW1wdHlTdHJpbmcg
PSB0cnVlKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwg
Q2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIEVy
cm9yUGFyc2VNb2RlLCBib29sIGFsbG93RW1wdHlTdHJpbmcgPSB0cnVlKTsKIAogICAgIHN0YXRp
YyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoRXhlY1N0YXRlKiwgVk0mLCBpbnQgcmFkaXgsIGludCBj
aGFyY291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAppbmRleCBkMGQzNzk5ZmIzOWVjMzE4MmRjZDIxNDk2MDcwNjBlMzViNWIy
NzlhLi4zNDc1ZDUzOTQzMGE2ZGQwOTQ2ZGQwODQwYjM2YWEyMjUwNjQ5YjZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTk4
MSw2ICs5ODEsMjQgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgICAgIHJldHVy
biBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgeworICAgICAgICAgICAgSlNCaWdJbnQq
IG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZXhlYywgYXNTdHJpbmcodjIpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgICAgICBpZiAoIW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgCisgICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgp
KSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChl
eGVjLCBhc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIGlmICghbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHYx
ID0gSlNWYWx1ZShuKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAg
ICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAzNCwx
MCArMTA1MiwyNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlu
bGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBpZiAodjEuaXNC
b29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc051bWJlcigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051
bWJlcigpOworICAgICAgICAgICAgZWxzZSBpZiAodjIuaXNCaWdJbnQoKSkgeworICAgICAgICAg
ICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051bWJlcihleGVjKSk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFu
KCkpIHsKICAgICAgICAgICAgIGlmICh2MS5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiB2MS5hc051bWJlcigpID09IHN0YXRpY19jYXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkp
OworICAgICAgICAgICAgZWxzZSBpZiAodjEuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAg
IHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihleGVjKSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh2MS5p
c0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkpCisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmlnSW50KHYyKSk7CisgICAgICAgIAorICAgICAgICBp
ZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGFz
QmlnSW50KHYxKS0+ZXF1YWxzVG9OdW1iZXIodjIpOworCisgICAgICAgIGlmICh2Mi5pc0JpZ0lu
dCgpICYmIHYxLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjIpLT5l
cXVhbHNUb051bWJlcih2MSk7CiAKICAgICAgICAgcmV0dXJuIHYxID09IHYyOwogICAgIH0gd2hp
bGUgKHRydWUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCBhM2EyNjQzZmNjOTNhYmVlYjU4ZjZiMjIyOTAxNzc5ZjJlNDBiNzhkLi4xMzU1
MmJkY2Y4MzU0NmM5ZGU3N2JjOWU4NTJiZjE3YzE5ZTgwY2UxIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4
LTA0LTIyICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNO
ZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciAiPT0iIG9wZXJhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NDc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLWlu
dC1lcXVhbHMtYmFzaWMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWVxdWFs
cy10by1wcmltaXRpdmUtcHJlY2VkZW5jZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Jp
Zy1pbnQtZXF1YWxzLXdyYXBwZWQtdmFsdWUuanM6IEFkZGVkLgorCiAyMDE4LTA0LTE0ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBl
LmNhbGxlciBzaG91bGRuJ3QgcmV0dXJuIGdlbmVyYXRvciBib2RpZXMKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1lcXVhbHMtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlMThlNzBkODU0YWYwMmQzZmU2Yzll
MmVkYTdiMWI3ZmVjYTIzMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtZXF1YWxzLWJhc2ljLmpzCkBAIC0wLDAgKzEsMTE4IEBACisvL0AgcnVuQmlnSW50RW5hYmxl
ZAorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFcXVhbHMoYSwgYiwgZSkg
eworICAgIGFzc2VydChhID09IGIsIGUsIGEgKyAiID09ICIgKyBiICsgIiBzaG91bGQgYmUgIiAr
IGUpOworICAgIGFzc2VydChiID09IGEsIGUsIGIgKyAiID09ICIgKyBhICsgIiBzaG91bGQgYmUg
IiArIGUpOworfQorCitmdW5jdGlvbiB0ZXN0RXF1YWxzV2l0aE1lc3NhZ2UoYSwgYiwgZSwgbSkg
eworICAgIGFzc2VydChhID09IGIsIGUsIG0pOworICAgIGFzc2VydChiID09IGEsIGUsIG0pOwor
fQorCisvLyBCaWdJbnQgLSBCaWdJbnQKK3Rlc3RFcXVhbHMoMW4sIDFuLCB0cnVlKTsKK3Rlc3RF
cXVhbHMoMTkyODM5MjEyOTMxMm4sIDFuLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBuLCAxbiwgZmFs
c2UpOwordGVzdEVxdWFscygwbiwgMG4sIHRydWUpOwordGVzdEVxdWFscyg4MTcyODM5MTI5MzFu
LCA4MTcyODM5MTI5MzFuLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMHhGRkQ4MTcyODNBRjkxMjlFMzFu
LCAweEZGRDgxNzI4M0FGOTEyOUUzMW4sIHRydWUpOwordGVzdEVxdWFscygweEFGRkQ4MTcyODNB
RjkxMjlFMzFuLCAweEZGRDgxNzI4M0FGOTEyOUUzMW4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoNDcx
OTQ5MDY5NzI2NjM0NDQwMjQ4MW4sIEJpZ0ludCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEiKSwg
ZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIi00NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiksIEJp
Z0ludCgiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0lu
dCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEiKSwgQmlnSW50KCItNDcxOTQ5MDY5NzI2NjM0NDQw
MjQ4MSIpLCB0cnVlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItMTciKSwgQmlnSW50KCItMTciKSwg
dHJ1ZSk7CisKKy8vIEJpZ0ludCAtIFN0cmluZworCit0ZXN0RXF1YWxzKDFuLCAiMSIsIHRydWUp
OwordGVzdEVxdWFscygxOTI4MzkyMTI5MzEybiwgIjEiLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBu
LCAiMSIsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sICIwIiwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDgx
NzI4MzkxMjkzMW4sICI4MTcyODM5MTI5MzEiLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMHhGRkQ4MTcy
ODNBRjkxMjlFMzFuLCAiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIsIHRydWUpOwordGVzdEVxdWFs
cygweEFGRkQ4MTcyODNBRjkxMjlFMzFuLCAiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIsIGZhbHNl
KTsKKworLy8gQmlnSW50IC0gTnVtYmVyCisKK3Rlc3RFcXVhbHMoMG4sIDAsIHRydWUpOwordGVz
dEVxdWFscygwbiwgLTAsIHRydWUpOwordGVzdEVxdWFscygtMCwgMG4sIHRydWUpOwordGVzdEVx
dWFscygwbiwgMC4wMDAwMDAwMDAwMDEsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIDEsIGZhbHNl
KTsKK3Rlc3RFcXVhbHMoMSwgMG4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4sIDAuOTk5OTk5OTk5
OTk5LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCAxLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIE51
bWJlci5NSU5fVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIC1OdW1iZXIuTUlOX1ZBTFVF
LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgiLTEwIiksIE51bWJlci5NSU5fVkFMVUUsIGZh
bHNlKTsKK3Rlc3RFcXVhbHMoMW4sIE51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVh
bHMoMW4sIC1OdW1iZXIuTUFYX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDB4ZmZmZmZmZmZm
ZmZmZjdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZm4sIE51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVh
bHMoMHhmZmZmZmZmZmZmZmZmODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgTnVtYmVyLk1BWF9WQUxVRSwgdHJ1
ZSk7Cit0ZXN0RXF1YWxzKDB4ZmZmZmZmZmZmZmZmZjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMW4sIE51bWJlci5N
QVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMjMwMDAwMDAwMDAwMDAwMDAwMDAwLCAyMzAw
MDAwMDAwMDAwMDAwMDAwMDBuLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMTBuLCBOYU4sIGZhbHNlKTsK
K3Rlc3RFcXVhbHMoMTBuLCB1bmRlZmluZWQsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMTBuLCBudWxs
LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDEwbiwgSW5maW5pdHksIGZhbHNlKTsKK3Rlc3RFcXVhbHMo
MTBuLCAtSW5maW5pdHksIGZhbHNlKTsKKworLy8gQmlnSW50IC0gQm9vbGVhbgorCit0ZXN0RXF1
YWxzKEJpZ0ludCgiLTEiKSwgZmFsc2UsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItMSIp
LCB0cnVlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBuLCBmYWxzZSwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDBuLCB0cnVlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCBmYWxzZSwgZmFsc2UpOwordGVzdEVx
dWFscygxbiwgdHJ1ZSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDJuLCBmYWxzZSwgZmFsc2UpOwordGVz
dEVxdWFscygybiwgdHJ1ZSwgZmFsc2UpOworCisvLyBCaWdJbnQgLSBPYmplY3QKKwordGVzdEVx
dWFscygwbiwgT2JqZWN0KDBuKSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDBuLCBPYmplY3QoMW4pLCBm
YWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCBPYmplY3QoMG4pLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFu
LCBPYmplY3QoMW4pLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMm4sIE9iamVjdCgwbiksIGZhbHNlKTsK
K3Rlc3RFcXVhbHMoMm4sIE9iamVjdCgxbiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMm4sIE9iamVj
dCgybiksIHRydWUpOwordGVzdEVxdWFscygwbiwge30sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4s
IHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0dXJuIDBuOyB9fSwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDBuLCB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiAxbjsgfX0sIGZhbHNlKTsKK3Rlc3RF
cXVhbHMoMG4sIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiMCI7IH19LCB0cnVlKTsK
K3Rlc3RFcXVhbHMoMG4sIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiMSI7IH19LCBm
YWxzZSk7Cit0ZXN0RXF1YWxzKDkwMDcxOTkyNTQ3NDA5OTEwMW4sIHt2YWx1ZU9mOiBmdW5jdGlv
bigpIHsgcmV0dXJuIDkwMDcxOTkyNTQ3NDA5OTEwMW47IH19LCB0cnVlKTsKK3Rlc3RFcXVhbHMo
OTAwNzE5OTI1NDc0MDk5MTAxbiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gOTAwNzE5
OTI1NDc0MDk5MTAybjsgfX0sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoOTAwNzE5OTI1NDc0MDk5MTAx
biwge3RvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICI5MDA3MTk5MjU0NzQwOTkxMDEiOyB9
fSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDkwMDcxOTkyNTQ3NDA5OTEwMW4sIHt0b1N0cmluZzogZnVu
Y3Rpb24oKSB7IHJldHVybiAiOTAwNzE5OTI1NDc0MDk5MTAyIjsgfX0sIGZhbHNlKTsKKwordHJ5
IHsKKyAgICBsZXQgbyA9IHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKCJt
eSBlcnJvciIpOyB9fTsKKyAgICBvID09IDFuOworICAgIHRocm93IG5ldyBFcnJvcigiRXhjZXB0
aW9uIGluIFRvUHJpbWl0aXZlIG5vdCBjYXRjaGVkIik7Cit9IGNhdGNoKGUpIHsKKyAgICBhc3Nl
cnQoZS5tZXNzYWdlLCAibXkgZXJyb3IiLCAiV3JvbmcgZXhjZXB0aW9uIGluIFRvUHJpbWl0aXZl
Iik7Cit9CisKK3RyeSB7CisgICAgbGV0IG8gPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyB0aHJv
dyBuZXcgRXJyb3IoIm15IGVycm9yIik7IH19OworICAgIG8gPT0gMW47CisgICAgdGhyb3cgbmV3
IEVycm9yKCJFeGNlcHRpb24gaW4gVG9TdHJpbmcgbm90IGNhdGNoZWQiKTsKK30gY2F0Y2goZSkg
eworICAgIGFzc2VydChlLm1lc3NhZ2UsICJteSBlcnJvciIsICJXcm9uZyBleGNlcHRpb24gaW4g
VG9TdHJpbmciKTsKK30KKworLy8gQmlnSW50IC0gU3ltYm9sCisKK3Rlc3RFcXVhbHNXaXRoTWVz
c2FnZSgwbiwgU3ltYm9sKCIxIiksIGZhbHNlLCAiMG4gPT0gU3ltYm9sKDEpIik7Cit0ZXN0RXF1
YWxzV2l0aE1lc3NhZ2UoU3ltYm9sKCIxIiksIDBuLCBmYWxzZSwgIlN5bWJvbCgxKSA9PSAwbiIp
OwordGVzdEVxdWFsc1dpdGhNZXNzYWdlKDFuLCBTeW1ib2woIjEiKSwgZmFsc2UsICIxbiA9PSBT
eW1ib2woMSkiKTsKK3Rlc3RFcXVhbHNXaXRoTWVzc2FnZShTeW1ib2woIjEiKSwgMW4sIGZhbHNl
LCAiU3ltYm9sKDEpID09IDFuIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZy1p
bnQtZXF1YWxzLXRvLXByaW1pdGl2ZS1wcmVjZWRlbmNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmln
LWludC1lcXVhbHMtdG8tcHJpbWl0aXZlLXByZWNlZGVuY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVlZDU2
NGRkN2MxMDQzMjkwYzVmNmM4ZjkzYWI2ZWY2YjIyN2FiZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLXRvLXByaW1pdGl2ZS1wcmVjZWRlbmNlLmpzCkBA
IC0wLDAgKzEsMzkgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Fzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgICAgICAg
aWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiB0ZXN0RXF1YWxzKHgsIHksIHosIG1lc3NhZ2Up
IHsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHggPT0geSwgeiwgbWVzc2FnZSk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh5ID09IHgsIHosIG1lc3NhZ2UpOworfQorCit0ZXN0RXF1YWxzKE9iamVjdCgy
biksIDFuLCBmYWxzZSwgIlRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBz
bG90Iik7CisKK2xldCBvID0geworICAgIFtTeW1ib2wudG9QcmltaXRpdmVdOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIDJuOworICAgIH0sCisgICAgdmFsdWVPZjogZnVuY3Rpb24gKCkg
eworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBleGVjdXRlIGl0Iik7Cisg
ICAgfSwKKyAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlNob3VsZCBuZXZlciBleGVjdXRlIGl0Iik7CisgICAgfQorfTsKK3Rlc3RFcXVhbHMobywg
Mm4sIHRydWUsICJUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSIpOworCitvID0geworICAgIHZh
bHVlT2Y6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMm47CisgICAgfSwKKyAgICB0b1N0
cmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZl
ciBleGVjdXRlIGl0Iik7CisgICAgfQorfTsKK3Rlc3RFcXVhbHMobywgMW4sIGZhbHNlLCAiVG9Q
cmltaXRpdmU6IHZhbHVlT2YiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1lcXVhbHMtd3JhcHBlZC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxz
LXdyYXBwZWQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVkODliZTEzNWVlODdhNWVmOTM5MDM0ZDMz
MWM5NWViNGYzM2JjMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
ZXF1YWxzLXdyYXBwZWQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAorLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKKworYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgIH0KK307CisKK2Z1bmN0aW9uIHRl
c3RFcXVhbHMoeCwgeSwgeiwgbWVzc2FnZSkgeworICAgIGFzc2VydC5zYW1lVmFsdWUoeCA9PSB5
LCB6LCBtZXNzYWdlKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHkgPT0geCwgeiwgbWVzc2FnZSk7
Cit9CisKK3Rlc3RFcXVhbHMoT2JqZWN0KDJuKSwgMW4sIGZhbHNlLCAiVG9QcmltaXRpdmU6IHVu
Ym94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QiKTsKKworbGV0IG8gPSB7CisgICAgW1N5bWJv
bC50b1ByaW1pdGl2ZV06IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMW47CisgICAgfQor
fTsKK3Rlc3RFcXVhbHMobywgMW4sIHRydWUsICJUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSIp
OworCitvID0geworICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMm47
CisgICAgfQorfTsKK3Rlc3RFcXVhbHMobywgMm4sIHRydWUsICJUb1ByaW1pdGl2ZTogdmFsdWVP
ZiIpOworCitvID0geworICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IDJuOworICAgIH0KK30KK3Rlc3RFcXVhbHMobywgMW4sIGZhbHNlLCAiVG9QcmltaXRpdmU6IHRv
U3RyaW5nIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339379</attachid>
            <date>2018-05-02 19:33:39 -0700</date>
            <delta_ts>2018-05-05 08:14:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184474-20180502233338.patch</filename>
            <type>text/plain</type>
            <size>26181</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDE4MGQ1NjFlODUwMTljMGNhYTNiNWIzNDZjNDlhMmJlNWY3MWZiLi4yOTYzNDJmZTQxNzUxZjIw
MzQ0ZjBmMDY5Nzc3YTNiZDIwN2FhZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOC0wNS0wMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgIj09IiBv
cGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHN1cHBvcnQgb2YgQmlnSW50IGZvciBlcXVhbHMg
b3BlcmF0b3IKKyAgICAgICAgZm9sbG93aW5nIHRoZSBzcGVjIHNlbWFudGljc1sxXS4KKworICAg
ICAgICBbMV0gLSBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWJpZ2ludC8jc2VjLWFi
c3RyYWN0LWVxdWFsaXR5LWNvbXBhcmlzb24KKworICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0RGln
aXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6Y29tcGFyZVRvRG91YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKwogMjAxOC0wNS0wMiAgUm9iaW4g
TW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIGVtaXRDb2RlVG9HZXRB
cmd1bWVudHNBcnJheUxlbmd0aCBzaG91bGQgbm90IGNyYXNoIG9uIFBoYW50b21OZXdBcnJheVdp
dGhTcHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRl
eCBjNTFjOGIyMTBkOTNjMTdmOTY0MDBlZmU3N2RhYTY3MmEyNTlhNmQzLi5jZGMzNzY4MjZlMDk5
OWIzYmFmNzMyMDkxYzE5ZmU3ZGVjOWIxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yMDksMjEgKzIwOSwyNiBAQCBzdGQ6Om9wdGlvbmFsPHVp
bnQ4X3Q+IEpTQmlnSW50OjpzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCkKICAgICByZXR1cm4g
eyB9OwogfQogCi1KU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUs
IFN0cmluZ1ZpZXcgcykKK0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBz
dGF0ZSwgU3RyaW5nVmlldyBzLCBFcnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQogewogICAgIGlm
IChzLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMuY2hhcmFjdGVy
czgoKSwgcy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCBzLmNoYXJhY3Rl
cnMxNigpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCBzLmNo
YXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIHBhcnNlck1vZGUpOworICAgIHJldHVybiBwYXJzZUlu
dChzdGF0ZSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7CiB9CiAK
LUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBT
dHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50
KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgU3RyaW5nVmlldyBzLCB1aW50OF90IHJhZGl4LCBF
cnJvclBhcnNlTW9kZSBwYXJzZXJNb2RlKQogewogICAgIGlmIChzLmlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCks
IDAsIHJhZGl4LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgcy5jaGFy
YWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
IHBhcnNlSW50KHN0YXRlLCB2bSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpLCAwLCByYWRp
eCwgcGFyc2VyTW9kZSwgZmFsc2UpOworICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIHMu
Y2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBmYWxzZSk7
CiB9CiAKLVN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmcoRXhlY1N0YXRlJiBzdGF0ZSwgaW50IHJh
ZGl4KQorSlNCaWdJbnQqIEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChFeGVjU3RhdGUqIHN0YXRl
LCBTdHJpbmdWaWV3IHMpCit7CisgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCBzLCBFcnJvclBh
cnNlTW9kZTo6SWdub3JlRXhjZXB0aW9ucyk7Cit9CisKK1N0cmluZyBKU0JpZ0ludDo6dG9TdHJp
bmcoRXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgaWYgKHRoaXMtPmlz
WmVybygpKQogICAgICAgICByZXR1cm4gc3RhdGUudm0oKS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nUmVwKCcwJyk7CkBAIC03MTksMjQgKzcyNCwyNCBAQCBzaXplX3QgSlNCaWdJ
bnQ6Om9mZnNldE9mRGF0YSgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpT
QmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgQ2hhclR5cGUqICBk
YXRhLCBpbnQgbGVuZ3RoKQorSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUq
IHN0YXRlLCBDaGFyVHlwZSogIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUg
ZXJyb3JQYXJzZU1vZGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAKLSAgICBpbnQg
cCA9IDA7CisgICAgdW5zaWduZWQgcCA9IDA7CiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNT
dHJXaGl0ZVNwYWNlKGRhdGFbcF0pKQogICAgICAgICArK3A7CiAKICAgICAvLyBDaGVjayBSYWRp
eCBmcm9tIGZyaXN0IGNoYXJhY3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHAp
ICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7
CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicp
KQotICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBw
ICsgMiwgMiwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwg
ZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZXJyb3JQYXJzZU1vZGUsIGZhbHNlKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAneCcp
KQotICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBw
ICsgMiwgMTYsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0s
IGRhdGEsIGxlbmd0aCwgcCArIDIsIDE2LCBlcnJvclBhcnNlTW9kZSwgZmFsc2UpOwogICAgICAg
ICAKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdv
JykpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgs
IHAgKyAyLCA4LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZt
LCBkYXRhLCBsZW5ndGgsIHAgKyAyLCA4LCBlcnJvclBhcnNlTW9kZSwgZmFsc2UpOwogICAgIH0K
IAogICAgIGJvb2wgc2lnbiA9IGZhbHNlOwpAQCAtNzQ5LDcgKzc1NCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgQ2hhclR5cGUqICBkYXRhLCBpbnQg
bGVuZ3RoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNl
SW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCk7CisgICAgSlNCaWdJbnQqIHJlc3Vs
dCA9IHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1v
ZGUpOwogCiAgICAgaWYgKHJlc3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKICAgICAgICAgcmVz
dWx0LT5zZXRTaWduKHNpZ24pOwpAQCAtNzU4LDE2ICs3NjMsMTcgQEAgSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBDaGFyVHlwZSogIGRhdGEsIGludCBsZW5n
dGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0lu
dDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgaW50
IGxlbmd0aCwgaW50IHN0YXJ0SW5kZXgsIGludCByYWRpeCwgYm9vbCBhbGxvd0VtcHR5U3RyaW5n
KQorSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0s
IENoYXJUeXBlKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVu
c2lnbmVkIHJhZGl4LCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgYm9vbCBhbGxvd0Vt
cHR5U3RyaW5nKQogewogICAgIEFTU0VSVChsZW5ndGggPj0gMCk7Ci0gICAgaW50IHAgPSBzdGFy
dEluZGV4OworICAgIHVuc2lnbmVkIHAgPSBzdGFydEluZGV4OwogCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYm
IHN0YXJ0SW5kZXggPT0gbGVuZ3RoKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgICAg
IHRocm93Vk1FcnJvcihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKHN0YXRlLCAiRmFp
bGVkIHRvIHBhcnNlIFN0cmluZyB0byBCaWdJbnQiKSk7CisgICAgICAgIGlmIChlcnJvclBhcnNl
TW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQorICAgICAgICAgICAgdGhy
b3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQg
dG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC03NzcsNyArNzgzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChF
eGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3QKIAogICAg
IGludCBlbmRJbmRleCA9IGxlbmd0aCAtIDE7CiAgICAgLy8gUmVtb3ZpbmcgdHJhaWxpbmcgc3Bh
Y2VzCi0gICAgd2hpbGUgKGVuZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5k
SW5kZXhdKSkKKyAgICB3aGlsZSAoZW5kSW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50PihwKSAmJiBp
c1N0cldoaXRlU3BhY2UoZGF0YVtlbmRJbmRleF0pKQogICAgICAgICAtLWVuZEluZGV4OwogCiAg
ICAgbGVuZ3RoID0gZW5kSW5kZXggKyAxOwpAQCAtNzk0LDcgKzgwMCw3IEBAIEpTQmlnSW50KiBK
U0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBDaGFyVHlwZSogZGF0
YSwgaW50IGxlbmd0CiAKICAgICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBl
OjpXaXRoWmVybyk7CiAKLSAgICBmb3IgKGludCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKysp
IHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgewogICAg
ICAgICB1aW50MzJfdCBkaWdpdDsKICAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRhdGFb
aV0gPCBsaW1pdDApCiAgICAgICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7CkBAIC04MTIs
NyArODE4LDggQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRl
LCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3QKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+cmlnaHRUcmltKHZtKTsKIAogICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgdGhyb3dWTUVycm9y
KHN0YXRlLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2Ug
U3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJz
ZU1vZGU6OlRocm93RXhjZXB0aW9ucykKKyAgICAgICAgdGhyb3dWTUVycm9yKHN0YXRlLCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJp
Z0ludCIpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtODMzLDEwICs4NDAsMTUxIEBA
IHZvaWQgSlNCaWdJbnQ6OnNldERpZ2l0KGludCBuLCBEaWdpdCB2YWx1ZSkKICAgICBBU1NFUlQo
biA+PSAwICYmIG4gPCBsZW5ndGgoKSk7CiAgICAgZGF0YVN0b3JhZ2UoKVtuXSA9IHZhbHVlOwog
fQotCiBKU09iamVjdCogSlNCaWdJbnQ6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gQmlnSW50T2JqZWN0
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBjb25zdF9jYXN0PEpTQmlnSW50Kj4o
dGhpcykpOwogfQogCitib29sIEpTQmlnSW50OjplcXVhbHNUb051bWJlcihKU1ZhbHVlIG51bVZh
bHVlKQoreworICAgIEFTU0VSVChudW1WYWx1ZS5pc051bWJlcigpKTsKKyAgICAKKyAgICBpZiAo
bnVtVmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgIGludCB2YWx1ZSA9IG51bVZhbHVlLmFzSW50
MzIoKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5pc1pl
cm8oKTsKKworICAgICAgICByZXR1cm4gKHRoaXMtPmxlbmd0aCgpID09IDEpICYmICh0aGlzLT5z
aWduKCkgPT0gKHZhbHVlIDwgMCkpICYmICh0aGlzLT5kaWdpdCgwKSA9PSBzdGF0aWNfY2FzdDxE
aWdpdD4oc3RkOjphYnMoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSkpOworICAgIH0KKyAg
ICAKKyAgICBkb3VibGUgdmFsdWUgPSBudW1WYWx1ZS5hc0RvdWJsZSgpOworICAgIHJldHVybiBj
b21wYXJlVG9Eb3VibGUodGhpcywgdmFsdWUpID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOwor
fQorCitKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBKU0JpZ0ludDo6Y29tcGFyZVRvRG91Ymxl
KEpTQmlnSW50KiB4LCBkb3VibGUgeSkKK3sKKyAgICAvLyBUaGlzIGFsZ29yaXRobSBleHBlY3Qg
dGhhdCB0aGUgZG91YmxlIGZvcm1hdCBpcyBJRUVFIDc1NAorCisgICAgdWludDY0X3QgZG91Ymxl
Qml0cyA9ICoocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZ5KSk7CisgICAgaW50IHJhd0V4
cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihkb3VibGVCaXRzID4+IDUyKSAmIDB4N0ZGOworCisg
ICAgaWYgKHJhd0V4cG9uZW50ID09IDB4N0ZGKSB7CisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHkp
KQorICAgICAgICAgICAgcmV0dXJuIENvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsKKworICAg
ICAgICByZXR1cm4gKHkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRl
clRoYW47CisgICAgfQorCisgICAgYm9vbCB4U2lnbiA9IHgtPnNpZ24oKTsKKyAgICAKKyAgICAv
LyBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZG91YmxlJ3Mgc2lnbiBiaXQg
Zm9yIC0wLiBUaGF0J3MKKyAgICAvLyBpbnRlbnRpb25hbCBiZWNhdXNlIC0wIG11c3QgYmUgdHJl
YXRlZCBsaWtlIDAuCisgICAgYm9vbCB5U2lnbiA9IHkgPCAwOworICAgIGlmICh4U2lnbiAhPSB5
U2lnbikKKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4g
OiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKworICAgIGlmICgheSkKKyAgICAgICAg
cmV0dXJuIHgtPmlzWmVybygpID8gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWwgOiBDb21wYXJpc29u
UmVzdWx0OjpHcmVhdGVyVGhhbjsKKworICAgIGlmICh4LT5pc1plcm8oKSkKKyAgICAgICAgcmV0
dXJuIENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworCisgICAgdWludDY0X3QgbWFudGlzc2Eg
PSBkb3VibGVCaXRzICYgMHgwMDBGRkZGRkZGRkZGRkZGOworCisgICAgLy8gTm9uLWZpbml0ZSBk
b3VibGVzIGFyZSBoYW5kbGVkIGFib3ZlLgorICAgIEFTU0VSVChyYXdFeHBvbmVudCAhPSAweDdG
Rik7CisgICAgaW50IGV4cG9uZW50ID0gcmF3RXhwb25lbnQgLSAweDNGRjsKKyAgICBpZiAoZXhw
b25lbnQgPCAwKSB7CisgICAgICAgIC8vIFRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZG91Ymxl
IGlzIGxlc3MgdGhhbiAxLiBPbmx5IDBuIGhhcyBhbgorICAgICAgICAvLyBhYnNvbHV0ZSB2YWx1
ZSBzbWFsbGVyIHRoYW4gdGhhdCwgYnV0IHdlJ3ZlIGFscmVhZHkgY292ZXJlZCB0aGF0IGNhc2Uu
CisgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29t
cGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgfQorCisgICAgaW50IHhMZW5ndGggPSB4
LT5sZW5ndGgoKTsKKyAgICBEaWdpdCB4TVNEID0geC0+ZGlnaXQoeExlbmd0aCAtIDEpOworICAg
IGludCBtc2RMZWFkaW5nWmVyb3MgPSBzaXplb2YoeE1TRCkgPT0gOCAgPyBjbHo2NCh4TVNEKSA6
IGNsejMyKHhNU0QpOworCisgICAgaW50IHhCaXRMZW5ndGggPSB4TGVuZ3RoICogZGlnaXRCaXRz
IC0gbXNkTGVhZGluZ1plcm9zOworICAgIGludCB5Qml0TGVuZ3RoID0gZXhwb25lbnQgKyAxOwor
ICAgIGlmICh4Qml0TGVuZ3RoIDwgeUJpdExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHhTaWduPyBD
b21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFu
OworCisgICAgaWYgKHhCaXRMZW5ndGggPiB5Qml0TGVuZ3RoKQorICAgICAgICByZXR1cm4geFNp
Z24gPyBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0
ZXJUaGFuOworICAgIAorICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhhdCBzaWducyBh
bmQgYml0IGxlbmd0aHMgKGkuZS4gcG9zaXRpb24gb2YKKyAgICAvLyB0aGUgbW9zdCBzaWduaWZp
Y2FudCBiaXQgaW4gZXhwb25lbnQtZnJlZSByZXByZXNlbnRhdGlvbikgYXJlIGlkZW50aWNhbC4K
KyAgICAvLyB7eH0gaXMgbm90IHplcm8sIHt5fSBpcyBmaW5pdGUgYW5kIG5vdCBkZW5vcm1hbC4K
KyAgICAvLyBOb3cgd2UgdmlydHVhbGx5IGNvbnZlcnQgdGhlIGRvdWJsZSB0byBhbiBpbnRlZ2Vy
IGJ5IHNoaWZ0aW5nIGl0cworICAgIC8vIG1hbnRpc3NhIGFjY29yZGluZyB0byBpdHMgZXhwb25l
bnQsIHNvIGl0IHdpbGwgYWxpZ24gd2l0aCB0aGUgQmlnSW50IHt4fSwKKyAgICAvLyBhbmQgdGhl
biB3ZSBjb21wYXJlIHRoZW0gYml0IGZvciBiaXQgdW50aWwgd2UgZmluZCBhIGRpZmZlcmVuY2Ug
b3IgdGhlCisgICAgLy8gbGVhc3Qgc2lnbmlmaWNhbnQgYml0LgorICAgIC8vICAgICAgICAgICAg
ICAgICAgICA8LS0tLS0gNTIgLS0tLS0tPiA8LS0gdmlydHVhbCB0cmFpbGluZyB6ZXJvZXMgLS0+
CisgICAgLy8geSAvIG1hbnRpc3NhOiAgICAgMXl5eXl5eXl5eXl5eXl5eXl5IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKKyAgICAvLyB4IC8gZGlnaXRzOiAgICAwMDAxeHh4eCB4eHh4
eHh4eCB4eHh4eHh4eCAuLi4KKyAgICAvLyAgICAgICAgICAgICAgICAgICAgPC0tPiAgICAgICAg
ICA8LS0tLS0tPgorICAgIC8vICAgICAgICAgICAgICBtc2RUb3BCaXQgICAgICAgICBkaWdpdEJp
dHMKKyAgICAvLworICAgIG1hbnRpc3NhIHw9IDB4MDAxMDAwMDAwMDAwMDAwMDsKKyAgICBjb25z
dCBpbnQgbWFudGlzc2FUb3BCaXQgPSA1MjsgLy8gMC1pbmRleGVkLgorCisgICAgLy8gMC1pbmRl
eGVkIHBvc2l0aW9uIG9mIHt4fSdzIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHdpdGhpbiB0aGUge21z
ZH0uCisgICAgaW50IG1zZFRvcEJpdCA9IGRpZ2l0Qml0cyAtIDEgLSBtc2RMZWFkaW5nWmVyb3M7
CisgICAgQVNTRVJUKG1zZFRvcEJpdCA9PSAoeEJpdExlbmd0aCAtIDEpICUgZGlnaXRCaXRzKTsK
KyAgICAKKyAgICAvLyBTaGlmdGVkIGNodW5rIG9mIHttYW50aXNzYX0gZm9yIGNvbXBhcmluZyB3
aXRoIHtkaWdpdH0uCisgICAgRGlnaXQgY29tcGFyZU1hbnRpc3NhOworCisgICAgLy8gTnVtYmVy
IG9mIHVucHJvY2Vzc2VkIGJpdHMgaW4ge21hbnRpc3NhfS4gV2UnbGwga2VlcCB0aGVtIHNoaWZ0
ZWQgdG8KKyAgICAvLyB0aGUgbGVmdCAoaS5lLiBtb3N0IHNpZ25pZmljYW50IHBhcnQpIG9mIHRo
ZSB1bmRlcmx5aW5nIHVpbnQ2NF90LgorICAgIGludCByZW1haW5pbmdNYW50aXNzYUJpdHMgPSAw
OworICAgIAorICAgIC8vIEZpcnN0LCBjb21wYXJlIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0
IGFnYWluc3QgdGhlIGJlZ2lubmluZyBvZgorICAgIC8vIHRoZSBtYW50aXNzYSBhbmQgdGhlbiB3
ZSBhbGlnbiB0aGVtLgorICAgIGlmIChtc2RUb3BCaXQgPCBtYW50aXNzYVRvcEJpdCkgeworICAg
ICAgICByZW1haW5pbmdNYW50aXNzYUJpdHMgPSAobWFudGlzc2FUb3BCaXQgLSBtc2RUb3BCaXQp
OworICAgICAgICBjb21wYXJlTWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlzc2Eg
Pj4gcmVtYWluaW5nTWFudGlzc2FCaXRzKTsKKyAgICAgICAgbWFudGlzc2EgPSBtYW50aXNzYSA8
PCAoNjQgLSByZW1haW5pbmdNYW50aXNzYUJpdHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNv
bXBhcmVNYW50aXNzYSA9IHN0YXRpY19jYXN0PERpZ2l0PihtYW50aXNzYSA8PCAobXNkVG9wQml0
IC0gbWFudGlzc2FUb3BCaXQpKTsKKyAgICAgICAgbWFudGlzc2EgPSAwOworICAgIH0KKworICAg
IGlmICh4TVNEID4gY29tcGFyZU1hbnRpc3NhKQorICAgICAgICByZXR1cm4geFNpZ24gPyBDb21w
YXJpc29uUmVzdWx0OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOwor
CisgICAgaWYgKHhNU0QgPCBjb21wYXJlTWFudGlzc2EpCisgICAgICAgIHJldHVybiB4U2lnbiA/
IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1Ro
YW47CisgICAgCisgICAgLy8gVGhlbiwgY29tcGFyZSBhZGRpdGlvbmFsIGRpZ2l0cyBhZ2FpbnN0
IGFueSByZW1haW5pbmcgbWFudGlzc2EgYml0cy4KKyAgICBmb3IgKGludCBkaWdpdEluZGV4ID0g
eExlbmd0aCAtIDI7IGRpZ2l0SW5kZXggPj0gMDsgZGlnaXRJbmRleC0tKSB7CisgICAgICAgIGlm
IChyZW1haW5pbmdNYW50aXNzYUJpdHMgPiAwKSB7CisgICAgICAgICAgICByZW1haW5pbmdNYW50
aXNzYUJpdHMgLT0gZGlnaXRCaXRzOworICAgICAgICAgICAgaWYgKHNpemVvZihtYW50aXNzYSkg
IT0gc2l6ZW9mKHhNU0QpKSB7CisgICAgICAgICAgICAgICAgY29tcGFyZU1hbnRpc3NhID0gc3Rh
dGljX2Nhc3Q8RGlnaXQ+KG1hbnRpc3NhID4+ICg2NCAtIGRpZ2l0Qml0cykpOworICAgICAgICAg
ICAgICAgIC8vICImIDYzIiB0byBhcHBlYXNlIGNvbXBpbGVycy4gZGlnaXRCaXRzIGlzIDMyIGhl
cmUgYW55d2F5LgorICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gbWFudGlzc2EgPDwgKGRpZ2l0
Qml0cyAmIDYzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcGFy
ZU1hbnRpc3NhID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KG1hbnRpc3NhKTsKKyAgICAgICAgICAgICAg
ICBtYW50aXNzYSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgY29tcGFyZU1hbnRpc3NhID0gMDsKKworICAgICAgICBEaWdpdCBkaWdpdCA9IHgtPmRpZ2l0
KGRpZ2l0SW5kZXgpOworICAgICAgICBpZiAoZGlnaXQgPiBjb21wYXJlTWFudGlzc2EpCisgICAg
ICAgICAgICByZXR1cm4geFNpZ24gPyBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbiA6IENvbXBh
cmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworICAgICAgICBpZiAoZGlnaXQgPCBjb21wYXJlTWFu
dGlzc2EpCisgICAgICAgICAgICByZXR1cm4geFNpZ24gPyBDb21wYXJpc29uUmVzdWx0OjpHcmVh
dGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOworICAgIH0KKworICAgIC8vIElu
dGVnZXIgcGFydHMgYXJlIGVxdWFsOyBjaGVjayB3aGV0aGVyIHt5fSBoYXMgYSBmcmFjdGlvbmFs
IHBhcnQuCisgICAgaWYgKG1hbnRpc3NhKSB7CisgICAgICAgIEFTU0VSVChyZW1haW5pbmdNYW50
aXNzYUJpdHMgPiAwKTsKKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6
R3JlYXRlclRoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbjsKKyAgICB9CisKKyAgICBy
ZXR1cm4gQ29tcGFyaXNvblJlc3VsdDo6RXF1YWw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggMjk4YzM0OGNkMmI0
ZTVhYjVjOTJjN2JiNzk5YTMwZjNlYmZhNjIzMS4uYjliZjc1MTJmZmMxM2I4ZjRmMmJhNzNhYjRh
MTc4NTMyYjljNzkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5o
CkBAIC03MywxMyArNzMsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGVuZ3RoKGludCBsZW5n
dGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KIAotICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRl
KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4KTsKLSAgICBzdGF0aWMgSlNCaWdJbnQq
IHBhcnNlSW50KEV4ZWNTdGF0ZSosIFN0cmluZ1ZpZXcpOworICAgIGVudW0gRXJyb3JQYXJzZU1v
ZGUgeworICAgICAgICBUaHJvd0V4Y2VwdGlvbnMsCisgICAgICAgIElnbm9yZUV4Y2VwdGlvbnMK
KyAgICB9OworCisgICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYs
IFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlID0gVGhyb3dFeGNlcHRp
b25zKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFN0cmluZ1Zp
ZXcsIEVycm9yUGFyc2VNb2RlID0gVGhyb3dFeGNlcHRpb25zKTsKKyAgICBzdGF0aWMgSlNCaWdJ
bnQqIHN0cmluZ1RvQmlnSW50KEV4ZWNTdGF0ZSosIFN0cmluZ1ZpZXcpOwogCiAgICAgc3RkOjpv
cHRpb25hbDx1aW50OF90PiBzaW5nbGVEaWdpdFZhbHVlRm9yU3RyaW5nKCk7Ci0gICAgU3RyaW5n
IHRvU3RyaW5nKEV4ZWNTdGF0ZSYsIGludCByYWRpeCk7CisgICAgU3RyaW5nIHRvU3RyaW5nKEV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIHJhZGl4KTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBlcXVhbHMoSlNCaWdJbnQqLCBKU0JpZ0ludCopOworICAgIGJvb2wgZXF1YWxz
VG9OdW1iZXIoSlNWYWx1ZSk7CiAKICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3Rh
dGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdDsKICAgICBkb3VibGUg
dG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC04Nyw2ICs5NCwxNCBAQCBwdWJsaWM6CiAg
ICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgorCisgICAgZW51bSBDb21wYXJpc29uUmVzdWx0IHsKKyAgICAgICAg
RXF1YWwsCisgICAgICAgIFVuZGVmaW5lZCwKKyAgICAgICAgR3JlYXRlclRoYW4sCisgICAgICAg
IExlc3NUaGFuCisgICAgfTsKKwogICAgIHVzaW5nIERpZ2l0ID0gdWludHB0cl90OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IGJpdHNQZXJCeXRlID0gODsKICAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGludCBkaWdpdEJpdHMgPSBzaXplb2YoRGlnaXQpICogYml0c1BlckJ5dGU7
CkBAIC0xMTYsMTEgKzEzMSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1plcm8oKTsKIAor
ICAgIENvbXBhcmlzb25SZXN1bHQgc3RhdGljIGNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwg
ZG91YmxlIHkpOworCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIHN0YXRp
YyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgQ2hhclR5cGUqICBkYXRhLCBpbnQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIENoYXJUeXBl
KiAgZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBFcnJvclBhcnNlTW9kZSk7CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVj
U3RhdGUqLCBWTSYsIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwg
aW50IHJhZGl4LCBib29sIGFsbG93RW1wdHlTdHJpbmcgPSB0cnVlKTsKKyAgICBzdGF0aWMgSlNC
aWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VN
b2RlLCBib29sIGFsbG93RW1wdHlTdHJpbmcgPSB0cnVlKTsKIAogICAgIHN0YXRpYyBKU0JpZ0lu
dCogYWxsb2NhdGVGb3IoRXhlY1N0YXRlKiwgVk0mLCBpbnQgcmFkaXgsIGludCBjaGFyY291bnQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAppbmRleCBkMGQzNzk5ZmIzOWVjMzE4MmRjZDIxNDk2MDcwNjBlMzViNWIyNzlhLi4yM2Qz
YjI2YzU5NTQyYjc3MGU0ZDNkMGEyNDYxMjYyZTNkZTVjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTk4MSw2ICs5ODEs
MjYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgICAgIHJldHVybiBhc1N0cmlu
Zyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgeworICAgICAgICAgICAgSlNCaWdJbnQqIG4gPSBKU0Jp
Z0ludDo6c3RyaW5nVG9CaWdJbnQoZXhlYywgYXNTdHJpbmcodjIpLT52YWx1ZShleGVjKSk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAg
ICBpZiAoIW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICB2MiA9IEpTVmFsdWUobik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzMSAmJiB2Mi5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICBK
U0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChleGVjLCBhc1N0cmluZyh2MSkt
PnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKKyAgICAgICAgICAgIGlmICghbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHYxID0gSlNWYWx1ZShuKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKHYxLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKICAgICAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAzNCwxMCArMTA1NCwyNyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdjEsIEpTVgogICAgICAgICBpZiAodjEuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlm
ICh2Mi5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHYxLmFzQm9vbGVhbigpKSA9PSB2Mi5hc051bWJlcigpOworICAgICAgICAgICAgZWxzZSBp
ZiAodjIuaXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIHYxID0gSlNWYWx1ZSh2MS50b051
bWJlcihleGVjKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAodjIuaXNCb29sZWFuKCkpIHsKICAgICAgICAgICAgIGlmICh2MS5p
c051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHN0YXRp
Y19jYXN0PGRvdWJsZT4odjIuYXNCb29sZWFuKCkpOworICAgICAgICAgICAgZWxzZSBpZiAodjEu
aXNCaWdJbnQoKSkgeworICAgICAgICAgICAgICAgIHYyID0gSlNWYWx1ZSh2Mi50b051bWJlcihl
eGVjKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzQmlnSW50KCkp
CisgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyhhc0JpZ0ludCh2MSksIGFzQmln
SW50KHYyKSk7CisgICAgICAgIAorICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiB2Mi5pc051
bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGFzQmlnSW50KHYxKS0+ZXF1YWxzVG9OdW1iZXIo
djIpOworCisgICAgICAgIGlmICh2Mi5pc0JpZ0ludCgpICYmIHYxLmlzTnVtYmVyKCkpCisgICAg
ICAgICAgICByZXR1cm4gYXNCaWdJbnQodjIpLT5lcXVhbHNUb051bWJlcih2MSk7CiAKICAgICAg
ICAgcmV0dXJuIHYxID09IHYyOwogICAgIH0gd2hpbGUgKHRydWUpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyOGU2MDc5NzJhYmM2MWVj
ZWQzMDZkZmYzOGQxYjdhNzkxMzZlZjliLi5kYjdhYjEzNzNjOGMxOTQwMmE4OWEwYWFjN2RjODhk
NjY2Yjk4OWNiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA1LTAzICBDYWlvIExpbWEgIDx0aWNhaW9s
aW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBw
b3J0IGZvciAiPT0iIG9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1lcXVhbHMtYmFzaWMuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9iaWctaW50LWVxdWFscy10by1wcmltaXRpdmUtcHJlY2VkZW5jZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtZXF1YWxzLXdyYXBwZWQtdmFsdWUu
anM6IEFkZGVkLgorCiAyMDE4LTA1LTAyICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBs
ZS5jb20+CiAKICAgICAgICAgZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoIHNob3Vs
ZCBub3QgY3Jhc2ggb24gUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtYmFzaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWVxdWFscy1iYXNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWJhMDI4NmY4MDI4ZTU5N2I2MmY5MmI3
ZDBiZGUxZmY2M2ZhNmZlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWlu
dC1lcXVhbHMtYmFzaWMuanMKQEAgLTAsMCArMSwxMjQgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVk
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gdGVzdEVxdWFscyhhLCBiLCBlKSB7
CisgICAgYXNzZXJ0KGEgPT0gYiwgZSwgYSArICIgPT0gIiArIGIgKyAiIHNob3VsZCBiZSAiICsg
ZSk7CisgICAgYXNzZXJ0KGIgPT0gYSwgZSwgYiArICIgPT0gIiArIGEgKyAiIHNob3VsZCBiZSAi
ICsgZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFcXVhbHNXaXRoTWVzc2FnZShhLCBiLCBlLCBtKSB7
CisgICAgYXNzZXJ0KGEgPT0gYiwgZSwgbSk7CisgICAgYXNzZXJ0KGIgPT0gYSwgZSwgbSk7Cit9
CisKKy8vIEJpZ0ludCAtIEJpZ0ludAordGVzdEVxdWFscygxbiwgMW4sIHRydWUpOwordGVzdEVx
dWFscygxOTI4MzkyMTI5MzEybiwgMW4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIDFuLCBmYWxz
ZSk7Cit0ZXN0RXF1YWxzKDBuLCAwbiwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDgxNzI4MzkxMjkzMW4s
IDgxNzI4MzkxMjkzMW4sIHRydWUpOwordGVzdEVxdWFscygweEZGRDgxNzI4M0FGOTEyOUUzMW4s
IDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDB4QUZGRDgxNzI4M0FG
OTEyOUUzMW4sIDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgZmFsc2UpOwordGVzdEVxdWFscyg0NzE5
NDkwNjk3MjY2MzQ0NDAyNDgxbiwgQmlnSW50KCItNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBm
YWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEiKSwgQmln
SW50KCI0NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50
KCItNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBCaWdJbnQoIi00NzE5NDkwNjk3MjY2MzQ0NDAy
NDgxIiksIHRydWUpOwordGVzdEVxdWFscyhCaWdJbnQoIi0xNyIpLCBCaWdJbnQoIi0xNyIpLCB0
cnVlKTsKKworLy8gQmlnSW50IC0gU3RyaW5nCisKK3Rlc3RFcXVhbHMoMW4sICIxIiwgdHJ1ZSk7
Cit0ZXN0RXF1YWxzKDE5MjgzOTIxMjkzMTJuLCAiMSIsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4s
ICIxIiwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgIjAiLCB0cnVlKTsKK3Rlc3RFcXVhbHMoODE3
MjgzOTEyOTMxbiwgIjgxNzI4MzkxMjkzMSIsIHRydWUpOwordGVzdEVxdWFscygweEZGRDgxNzI4
M0FGOTEyOUUzMW4sICI0NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDB4QUZGRDgxNzI4M0FGOTEyOUUzMW4sICI0NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiwgZmFsc2Up
OworCisvLyBCaWdJbnQgLSBOdW1iZXIKKwordGVzdEVxdWFscygwbiwgMCwgdHJ1ZSk7Cit0ZXN0
RXF1YWxzKDBuLCAtMCwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKC0wLCAwbiwgdHJ1ZSk7Cit0ZXN0RXF1
YWxzKDBuLCAwLjAwMDAwMDAwMDAwMSwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgMSwgZmFsc2Up
OwordGVzdEVxdWFscygxLCAwbiwgZmFsc2UpOwordGVzdEVxdWFscygxbiwgMC45OTk5OTk5OTk5
OTksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4sIDEsIHRydWUpOwordGVzdEVxdWFscygwbiwgTnVt
YmVyLk1JTl9WQUxVRSwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgLU51bWJlci5NSU5fVkFMVUUs
IGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItMTAiKSwgTnVtYmVyLk1JTl9WQUxVRSwgZmFs
c2UpOwordGVzdEVxdWFscygxbiwgTnVtYmVyLk1BWF9WQUxVRSwgZmFsc2UpOwordGVzdEVxdWFs
cygxbiwgLU51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMHhmZmZmZmZmZmZm
ZmZmN2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmbiwgTnVtYmVyLk1BWF9WQUxVRSwgZmFsc2UpOwordGVzdEVxdWFs
cygweGZmZmZmZmZmZmZmZmY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBuLCBOdW1iZXIuTUFYX1ZBTFVFLCB0cnVl
KTsKK3Rlc3RFcXVhbHMoMHhmZmZmZmZmZmZmZmZmODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxbiwgTnVtYmVyLk1B
WF9WQUxVRSwgZmFsc2UpOwordGVzdEVxdWFscygyMzAwMDAwMDAwMDAwMDAwMDAwMDAsIDIzMDAw
MDAwMDAwMDAwMDAwMDAwMG4sIHRydWUpOwordGVzdEVxdWFscygxMG4sIE5hTiwgZmFsc2UpOwor
dGVzdEVxdWFscygxMG4sIHVuZGVmaW5lZCwgZmFsc2UpOwordGVzdEVxdWFscygxMG4sIG51bGws
IGZhbHNlKTsKK3Rlc3RFcXVhbHMoMTBuLCBJbmZpbml0eSwgZmFsc2UpOwordGVzdEVxdWFscygx
MG4sIC1JbmZpbml0eSwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIi0yMTQ3NDgzNjQ4Iiks
IC0yMTQ3NDgzNjQ4LCB0cnVlKTsgLy8gVGVzdGluZyBJTlQzMl9NSU4KK3Rlc3RFcXVhbHMoQmln
SW50KCItMjE0NzQ4MzY0NyIpLCAtMjE0NzQ4MzY0OCwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJ
bnQoIjIxNDc0ODM2NDciKSwgLTIxNDc0ODM2NDgsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50
KCIyMTQ3NDgzNjQ4IiksIC0yMTQ3NDgzNjQ4LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgi
MjE0NzQ4MzY0NyIpLCAyMTQ3NDgzNjQ3LCB0cnVlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCIyMTQ3
NDgzNjQ4IiksIDIxNDc0ODM2NDcsIGZhbHNlKTsKKworLy8gQmlnSW50IC0gQm9vbGVhbgorCit0
ZXN0RXF1YWxzKEJpZ0ludCgiLTEiKSwgZmFsc2UsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50
KCItMSIpLCB0cnVlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBuLCBmYWxzZSwgdHJ1ZSk7Cit0ZXN0
RXF1YWxzKDBuLCB0cnVlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCBmYWxzZSwgZmFsc2UpOwor
dGVzdEVxdWFscygxbiwgdHJ1ZSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDJuLCBmYWxzZSwgZmFsc2Up
OwordGVzdEVxdWFscygybiwgdHJ1ZSwgZmFsc2UpOworCisvLyBCaWdJbnQgLSBPYmplY3QKKwor
dGVzdEVxdWFscygwbiwgT2JqZWN0KDBuKSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDBuLCBPYmplY3Qo
MW4pLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCBPYmplY3QoMG4pLCBmYWxzZSk7Cit0ZXN0RXF1
YWxzKDFuLCBPYmplY3QoMW4pLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMm4sIE9iamVjdCgwbiksIGZh
bHNlKTsKK3Rlc3RFcXVhbHMoMm4sIE9iamVjdCgxbiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMm4s
IE9iamVjdCgybiksIHRydWUpOwordGVzdEVxdWFscygwbiwge30sIGZhbHNlKTsKK3Rlc3RFcXVh
bHMoMG4sIHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0dXJuIDBuOyB9fSwgdHJ1ZSk7Cit0ZXN0
RXF1YWxzKDBuLCB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiAxbjsgfX0sIGZhbHNlKTsK
K3Rlc3RFcXVhbHMoMG4sIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiMCI7IH19LCB0
cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiMSI7
IH19LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDkwMDcxOTkyNTQ3NDA5OTEwMW4sIHt2YWx1ZU9mOiBm
dW5jdGlvbigpIHsgcmV0dXJuIDkwMDcxOTkyNTQ3NDA5OTEwMW47IH19LCB0cnVlKTsKK3Rlc3RF
cXVhbHMoOTAwNzE5OTI1NDc0MDk5MTAxbiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
OTAwNzE5OTI1NDc0MDk5MTAybjsgfX0sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoOTAwNzE5OTI1NDc0
MDk5MTAxbiwge3RvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICI5MDA3MTk5MjU0NzQwOTkx
MDEiOyB9fSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDkwMDcxOTkyNTQ3NDA5OTEwMW4sIHt0b1N0cmlu
ZzogZnVuY3Rpb24oKSB7IHJldHVybiAiOTAwNzE5OTI1NDc0MDk5MTAyIjsgfX0sIGZhbHNlKTsK
KwordHJ5IHsKKyAgICBsZXQgbyA9IHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVy
cm9yKCJteSBlcnJvciIpOyB9fTsKKyAgICBvID09IDFuOworICAgIHRocm93IG5ldyBFcnJvcigi
RXhjZXB0aW9uIGluIFRvUHJpbWl0aXZlIG5vdCBjYXRjaGVkIik7Cit9IGNhdGNoKGUpIHsKKyAg
ICBhc3NlcnQoZS5tZXNzYWdlLCAibXkgZXJyb3IiLCAiV3JvbmcgZXhjZXB0aW9uIGluIFRvUHJp
bWl0aXZlIik7Cit9CisKK3RyeSB7CisgICAgbGV0IG8gPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkg
eyB0aHJvdyBuZXcgRXJyb3IoIm15IGVycm9yIik7IH19OworICAgIG8gPT0gMW47CisgICAgdGhy
b3cgbmV3IEVycm9yKCJFeGNlcHRpb24gaW4gVG9TdHJpbmcgbm90IGNhdGNoZWQiKTsKK30gY2F0
Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UsICJteSBlcnJvciIsICJXcm9uZyBleGNlcHRp
b24gaW4gVG9TdHJpbmciKTsKK30KKworLy8gQmlnSW50IC0gU3ltYm9sCisKK3Rlc3RFcXVhbHNX
aXRoTWVzc2FnZSgwbiwgU3ltYm9sKCIxIiksIGZhbHNlLCAiMG4gPT0gU3ltYm9sKDEpIik7Cit0
ZXN0RXF1YWxzV2l0aE1lc3NhZ2UoU3ltYm9sKCIxIiksIDBuLCBmYWxzZSwgIlN5bWJvbCgxKSA9
PSAwbiIpOwordGVzdEVxdWFsc1dpdGhNZXNzYWdlKDFuLCBTeW1ib2woIjEiKSwgZmFsc2UsICIx
biA9PSBTeW1ib2woMSkiKTsKK3Rlc3RFcXVhbHNXaXRoTWVzc2FnZShTeW1ib2woIjEiKSwgMW4s
IGZhbHNlLCAiU3ltYm9sKDEpID09IDFuIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2JpZy1pbnQtZXF1YWxzLXRvLXByaW1pdGl2ZS1wcmVjZWRlbmNlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvYmlnLWludC1lcXVhbHMtdG8tcHJpbWl0aXZlLXByZWNlZGVuY2UuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjVlZDU2NGRkN2MxMDQzMjkwYzVmNmM4ZjkzYWI2ZWY2YjIyN2FiZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLXRvLXByaW1pdGl2ZS1wcmVjZWRlbmNl
LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCBydW5CaWdJbnRFbmFibGVkCisKK2Fzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChpbnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
ICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3RlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihtZXNzYWdlKTsKKyAgICB9Cit9OworCitmdW5jdGlvbiB0ZXN0RXF1YWxzKHgsIHksIHosIG1l
c3NhZ2UpIHsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHggPT0geSwgeiwgbWVzc2FnZSk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZSh5ID09IHgsIHosIG1lc3NhZ2UpOworfQorCit0ZXN0RXF1YWxzKE9i
amVjdCgybiksIDFuLCBmYWxzZSwgIlRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRl
cm5hbCBzbG90Iik7CisKK2xldCBvID0geworICAgIFtTeW1ib2wudG9QcmltaXRpdmVdOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuIDJuOworICAgIH0sCisgICAgdmFsdWVPZjogZnVuY3Rp
b24gKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBleGVjdXRlIGl0
Iik7CisgICAgfSwKKyAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIlNob3VsZCBuZXZlciBleGVjdXRlIGl0Iik7CisgICAgfQorfTsKK3Rlc3RFcXVh
bHMobywgMm4sIHRydWUsICJUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSIpOworCitvID0gewor
ICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMm47CisgICAgfSwKKyAg
ICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3Vs
ZCBuZXZlciBleGVjdXRlIGl0Iik7CisgICAgfQorfTsKK3Rlc3RFcXVhbHMobywgMW4sIGZhbHNl
LCAiVG9QcmltaXRpdmU6IHZhbHVlT2YiKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1lcXVhbHMtd3JhcHBlZC12YWx1ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQt
ZXF1YWxzLXdyYXBwZWQtdmFsdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVkODliZTEzNWVlODdhNWVmOTM5
MDM0ZDMzMWM5NWViNGYzM2JjMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtZXF1YWxzLXdyYXBwZWQtdmFsdWUuanMKQEAgLTAsMCArMSwzNyBAQAorLy9AIHJ1bkJp
Z0ludEVuYWJsZWQKKworYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0
LCBleHBlY3RlZCwgbWVzc2FnZSkgeworICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgIH0KK307CisKK2Z1bmN0
aW9uIHRlc3RFcXVhbHMoeCwgeSwgeiwgbWVzc2FnZSkgeworICAgIGFzc2VydC5zYW1lVmFsdWUo
eCA9PSB5LCB6LCBtZXNzYWdlKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHkgPT0geCwgeiwgbWVz
c2FnZSk7Cit9CisKK3Rlc3RFcXVhbHMoT2JqZWN0KDJuKSwgMW4sIGZhbHNlLCAiVG9QcmltaXRp
dmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QiKTsKKworbGV0IG8gPSB7CisgICAg
W1N5bWJvbC50b1ByaW1pdGl2ZV06IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMW47Cisg
ICAgfQorfTsKK3Rlc3RFcXVhbHMobywgMW4sIHRydWUsICJUb1ByaW1pdGl2ZTogQEB0b1ByaW1p
dGl2ZSIpOworCitvID0geworICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gMm47CisgICAgfQorfTsKK3Rlc3RFcXVhbHMobywgMm4sIHRydWUsICJUb1ByaW1pdGl2ZTog
dmFsdWVPZiIpOworCitvID0geworICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIDJuOworICAgIH0KK30KK3Rlc3RFcXVhbHMobywgMW4sIGZhbHNlLCAiVG9QcmltaXRp
dmU6IHRvU3RyaW5nIik7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339647</attachid>
            <date>2018-05-05 08:15:06 -0700</date>
            <delta_ts>2018-05-10 17:01:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184474-20180505121504.patch</filename>
            <type>text/plain</type>
            <size>26185</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjFhYWZlNzBkNGUyMzkzNmU1MjVmMThjZTkyYmFmZGI0OGMyYjUwLi5lMThjNzgyNDExNjM0MTA4
Nzg3ODU1YTkyYzY4M2JlNGQ0OWQ1Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wNS0wNSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgIj09IiBv
cGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHN1cHBvcnQgb2YgQmlnSW50IGZvciBlcXVhbHMg
b3BlcmF0b3IKKyAgICAgICAgZm9sbG93aW5nIHRoZSBzcGVjIHNlbWFudGljc1sxXS4KKworICAg
ICAgICBbMV0gLSBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWJpZ2ludC8jc2VjLWFi
c3RyYWN0LWVxdWFsaXR5LWNvbXBhcmlzb24KKworICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQu
Y3BwOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0RGlnaXQpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y29tcGFy
ZVRvRG91YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNs
b3dDYXNlSW5saW5lKToKKwogMjAxOC0wNS0wNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoIHNob3VsZCByZXR1
cm4gdHJ1ZSBmb3IgdW5kZWNpZGVkIGFycmF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCaWdJbnQuY3BwCmluZGV4IDNkMWU5ZjE4M2FmYjA5ZTNjYjgyNWFhYmYyYTA0Nzk4MGYx
MDc5OTMuLmMzNmEwNmE2YzZjMjFhNjU1NzgxNTcyZmQ2MzdkNjAwYTZhN2U3OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTIwOCwyMSArMjA4LDI2
IEBAIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURpZ2l0VmFsdWVGb3JT
dHJpbmcoKQogICAgIHJldHVybiB7IH07CiB9CiAKLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJ
bnQoRXhlY1N0YXRlKiBzdGF0ZSwgU3RyaW5nVmlldyBzKQorSlNCaWdJbnQqIEpTQmlnSW50Ojpw
YXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBTdHJpbmdWaWV3IHMsIEVycm9yUGFyc2VNb2RlIHBh
cnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBwYXJzZUlu
dChzdGF0ZSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gcGFyc2VJ
bnQoc3RhdGUsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4g
cGFyc2VJbnQoc3RhdGUsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgcGFyc2VyTW9kZSk7
CisgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgp
LCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3Rh
dGUqIHN0YXRlLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRpeCkKK0pTQmlnSW50
KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBTdHJpbmdWaWV3
IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYg
KHMuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIHMuY2hhcmFj
dGVyczgoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKLSAgICByZXR1cm4gcGFyc2VJ
bnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAwLCByYWRpeCwgZmFs
c2UpOworICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnM4KCks
IHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBmYWxzZSk7CisgICAgcmV0dXJuIHBh
cnNlSW50KHN0YXRlLCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgs
IHBhcnNlck1vZGUsIGZhbHNlKTsKIH0KIAotU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVj
U3RhdGUmIHN0YXRlLCBpbnQgcmFkaXgpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnN0cmluZ1RvQmln
SW50KEV4ZWNTdGF0ZSogc3RhdGUsIFN0cmluZ1ZpZXcgcykKK3sKKyAgICByZXR1cm4gcGFyc2VJ
bnQoc3RhdGUsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25zKTsKK30KKworU3Ry
aW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCByYWRpeCkK
IHsKICAgICBpZiAodGhpcy0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnNt
YWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKQEAgLTcxOCwyNCArNzIz
LDI0IEBAIHNpemVfdCBKU0JpZ0ludDo6b2Zmc2V0T2ZEYXRhKCkKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUq
IHN0YXRlLCBDaGFyVHlwZSogIGRhdGEsIGludCBsZW5ndGgpCitKU0JpZ0ludCogSlNCaWdJbnQ6
OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIENoYXJUeXBlKiAgZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBFcnJvclBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKIAotICAgIGludCBwID0gMDsKKyAgICB1bnNpZ25lZCBwID0gMDsKICAgICB3aGls
ZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2UoZGF0YVtwXSkpCiAgICAgICAgICsrcDsK
IAogICAgIC8vIENoZWNrIFJhZGl4IGZyb20gZnJpc3QgY2hhcmFjdGVycwogICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocCkgKyAxIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCkg
JiYgZGF0YVtwXSA9PSAnMCcpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwoZGF0YVtwICsgMV0sICdiJykpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUs
IHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4g
cGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAyLCBlcnJvclBhcnNlTW9k
ZSwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwoZGF0YVtwICsgMV0sICd4JykpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUs
IHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCAxNiwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMTYsIGVycm9yUGFyc2VN
b2RlLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChkYXRhW3AgKyAxXSwgJ28nKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzdGF0
ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDgsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUludChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCArIDIsIDgsIGVycm9yUGFyc2VN
b2RlLCBmYWxzZSk7CiAgICAgfQogCiAgICAgYm9vbCBzaWduID0gZmFsc2U7CkBAIC03NDgsNyAr
NzUzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBD
aGFyVHlwZSogIGRhdGEsIGludCBsZW5ndGgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU0Jp
Z0ludCogcmVzdWx0ID0gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgsIHAsIDEwKTsK
KyAgICBKU0JpZ0ludCogcmVzdWx0ID0gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgs
IHAsIDEwLCBlcnJvclBhcnNlTW9kZSk7CiAKICAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlz
WmVybygpKQogICAgICAgICByZXN1bHQtPnNldFNpZ24oc2lnbik7CkBAIC03NTcsMTYgKzc2Miwx
NyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIENoYXJU
eXBlKiAgZGF0YSwgaW50IGxlbmd0aCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0s
IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRJbmRleCwgaW50IHJhZGl4LCBi
b29sIGFsbG93RW1wdHlTdHJpbmcpCitKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNT
dGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgsIEVycm9yUGFyc2VNb2RlIGVycm9yUGFy
c2VNb2RlLCBib29sIGFsbG93RW1wdHlTdHJpbmcpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+PSAw
KTsKLSAgICBpbnQgcCA9IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQgcCA9IHN0YXJ0SW5kZXg7
CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAo
IWFsbG93RW1wdHlTdHJpbmcgJiYgc3RhcnRJbmRleCA9PSBsZW5ndGgpIHsKICAgICAgICAgQVNT
RVJUKHN0YXRlKTsKLSAgICAgICAgdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlU3lu
dGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKKyAg
ICAgICAgaWYgKGVycm9yUGFyc2VNb2RlID09IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlv
bnMpCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHNjb3BlLCBjcmVhdGVTeW50YXhF
cnJvcihzdGF0ZSwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc3Niw3ICs3ODIsNyBAQCBKU0JpZ0ludCog
SlNCaWdJbnQ6OnBhcnNlSW50KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRh
dGEsIGludCBsZW5ndAogCiAgICAgaW50IGVuZEluZGV4ID0gbGVuZ3RoIC0gMTsKICAgICAvLyBS
ZW1vdmluZyB0cmFpbGluZyBzcGFjZXMKLSAgICB3aGlsZSAoZW5kSW5kZXggPj0gcCAmJiBpc1N0
cldoaXRlU3BhY2UoZGF0YVtlbmRJbmRleF0pKQorICAgIHdoaWxlIChlbmRJbmRleCA+PSBzdGF0
aWNfY2FzdDxpbnQ+KHApICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW2VuZEluZGV4XSkpCiAgICAg
ICAgIC0tZW5kSW5kZXg7CiAKICAgICBsZW5ndGggPSBlbmRJbmRleCArIDE7CkBAIC03OTMsNyAr
Nzk5LDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBW
TSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3QKIAogICAgIHJlc3VsdC0+aW5pdGlhbGl6
ZShJbml0aWFsaXphdGlvblR5cGU6OldpdGhaZXJvKTsKIAotICAgIGZvciAoaW50IGkgPSBwOyBp
IDwgbGVuZ3RoOyBpKyssIHArKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IHA7IGkgPCBsZW5n
dGg7IGkrKywgcCsrKSB7CiAgICAgICAgIHVpbnQzMl90IGRpZ2l0OwogICAgICAgICBpZiAoZGF0
YVtpXSA+PSAnMCcgJiYgZGF0YVtpXSA8IGxpbWl0MCkKICAgICAgICAgICAgIGRpZ2l0ID0gZGF0
YVtpXSAtICcwJzsKQEAgLTgxMSw3ICs4MTcsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OnBhcnNl
SW50KEV4ZWNTdGF0ZSogc3RhdGUsIFZNJiB2bSwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndAog
ICAgICAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOwogCiAgICAgQVNTRVJUKHN0YXRl
KTsKLSAgICB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihzdGF0
ZSwgIkZhaWxlZCB0byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOworICAgIGlmIChlcnJvclBh
cnNlTW9kZSA9PSBFcnJvclBhcnNlTW9kZTo6VGhyb3dFeGNlcHRpb25zKQorICAgICAgICB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihzdGF0ZSwgIkZhaWxlZCB0
byBwYXJzZSBTdHJpbmcgdG8gQmlnSW50IikpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC04MzIsMTAgKzgzOSwxNTEgQEAgdm9pZCBKU0JpZ0ludDo6c2V0RGlnaXQoaW50IG4sIERpZ2l0
IHZhbHVlKQogICAgIEFTU0VSVChuID49IDAgJiYgbiA8IGxlbmd0aCgpKTsKICAgICBkYXRhU3Rv
cmFnZSgpW25dID0gdmFsdWU7CiB9Ci0KIEpTT2JqZWN0KiBKU0JpZ0ludDo6dG9PYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAg
IHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsIGNv
bnN0X2Nhc3Q8SlNCaWdJbnQqPih0aGlzKSk7CiB9CiAKK2Jvb2wgSlNCaWdJbnQ6OmVxdWFsc1Rv
TnVtYmVyKEpTVmFsdWUgbnVtVmFsdWUpCit7CisgICAgQVNTRVJUKG51bVZhbHVlLmlzTnVtYmVy
KCkpOworICAgIAorICAgIGlmIChudW1WYWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgaW50IHZh
bHVlID0gbnVtVmFsdWUuYXNJbnQzMigpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMtPmlzWmVybygpOworCisgICAgICAgIHJldHVybiAodGhpcy0+bGVuZ3Ro
KCkgPT0gMSkgJiYgKHRoaXMtPnNpZ24oKSA9PSAodmFsdWUgPCAwKSkgJiYgKHRoaXMtPmRpZ2l0
KDApID09IHN0YXRpY19jYXN0PERpZ2l0PihzdGQ6OmFicyhzdGF0aWNfY2FzdDxpbnQ2NF90Pih2
YWx1ZSkpKSk7CisgICAgfQorICAgIAorICAgIGRvdWJsZSB2YWx1ZSA9IG51bVZhbHVlLmFzRG91
YmxlKCk7CisgICAgcmV0dXJuIGNvbXBhcmVUb0RvdWJsZSh0aGlzLCB2YWx1ZSkgPT0gQ29tcGFy
aXNvblJlc3VsdDo6RXF1YWw7Cit9CisKK0pTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0IEpTQmln
SW50Ojpjb21wYXJlVG9Eb3VibGUoSlNCaWdJbnQqIHgsIGRvdWJsZSB5KQoreworICAgIC8vIFRo
aXMgYWxnb3JpdGhtIGV4cGVjdCB0aGF0IHRoZSBkb3VibGUgZm9ybWF0IGlzIElFRUUgNzU0CisK
KyAgICB1aW50NjRfdCBkb3VibGVCaXRzID0gKihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4o
JnkpKTsKKyAgICBpbnQgcmF3RXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGRvdWJsZUJpdHMg
Pj4gNTIpICYgMHg3RkY7CisKKyAgICBpZiAocmF3RXhwb25lbnQgPT0gMHg3RkYpIHsKKyAgICAg
ICAgaWYgKHN0ZDo6aXNuYW4oeSkpCisgICAgICAgICAgICByZXR1cm4gQ29tcGFyaXNvblJlc3Vs
dDo6VW5kZWZpbmVkOworCisgICAgICAgIHJldHVybiAoeSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpID8gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4gOiBDb21w
YXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKyAgICB9CisKKyAgICBib29sIHhTaWduID0geC0+
c2lnbigpOworICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRo
ZSBkb3VibGUncyBzaWduIGJpdCBmb3IgLTAuIFRoYXQncworICAgIC8vIGludGVudGlvbmFsIGJl
Y2F1c2UgLTAgbXVzdCBiZSB0cmVhdGVkIGxpa2UgMC4KKyAgICBib29sIHlTaWduID0geSA8IDA7
CisgICAgaWYgKHhTaWduICE9IHlTaWduKQorICAgICAgICByZXR1cm4geFNpZ24gPyBDb21wYXJp
c29uUmVzdWx0OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworCisg
ICAgaWYgKCF5KQorICAgICAgICByZXR1cm4geC0+aXNaZXJvKCkgPyBDb21wYXJpc29uUmVzdWx0
OjpFcXVhbCA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworCisgICAgaWYgKHgtPmlz
WmVybygpKQorICAgICAgICByZXR1cm4gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CisKKyAg
ICB1aW50NjRfdCBtYW50aXNzYSA9IGRvdWJsZUJpdHMgJiAweDAwMEZGRkZGRkZGRkZGRkY7CisK
KyAgICAvLyBOb24tZmluaXRlIGRvdWJsZXMgYXJlIGhhbmRsZWQgYWJvdmUuCisgICAgQVNTRVJU
KHJhd0V4cG9uZW50ICE9IDB4N0ZGKTsKKyAgICBpbnQgZXhwb25lbnQgPSByYXdFeHBvbmVudCAt
IDB4M0ZGOworICAgIGlmIChleHBvbmVudCA8IDApIHsKKyAgICAgICAgLy8gVGhlIGFic29sdXRl
IHZhbHVlIG9mIHRoZSBkb3VibGUgaXMgbGVzcyB0aGFuIDEuIE9ubHkgMG4gaGFzIGFuCisgICAg
ICAgIC8vIGFic29sdXRlIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGF0LCBidXQgd2UndmUgYWxyZWFk
eSBjb3ZlcmVkIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJl
c3VsdDo6TGVzc1RoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKyAgICB9CisK
KyAgICBpbnQgeExlbmd0aCA9IHgtPmxlbmd0aCgpOworICAgIERpZ2l0IHhNU0QgPSB4LT5kaWdp
dCh4TGVuZ3RoIC0gMSk7CisgICAgaW50IG1zZExlYWRpbmdaZXJvcyA9IHNpemVvZih4TVNEKSA9
PSA4ICA/IGNsejY0KHhNU0QpIDogY2x6MzIoeE1TRCk7CisKKyAgICBpbnQgeEJpdExlbmd0aCA9
IHhMZW5ndGggKiBkaWdpdEJpdHMgLSBtc2RMZWFkaW5nWmVyb3M7CisgICAgaW50IHlCaXRMZW5n
dGggPSBleHBvbmVudCArIDE7CisgICAgaWYgKHhCaXRMZW5ndGggPCB5Qml0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4geFNpZ24/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFy
aXNvblJlc3VsdDo6TGVzc1RoYW47CisKKyAgICBpZiAoeEJpdExlbmd0aCA+IHlCaXRMZW5ndGgp
CisgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29t
cGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgCisgICAgLy8gQXQgdGhpcyBwb2ludCwg
d2Uga25vdyB0aGF0IHNpZ25zIGFuZCBiaXQgbGVuZ3RocyAoaS5lLiBwb3NpdGlvbiBvZgorICAg
IC8vIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpbiBleHBvbmVudC1mcmVlIHJlcHJlc2VudGF0
aW9uKSBhcmUgaWRlbnRpY2FsLgorICAgIC8vIHt4fSBpcyBub3QgemVybywge3l9IGlzIGZpbml0
ZSBhbmQgbm90IGRlbm9ybWFsLgorICAgIC8vIE5vdyB3ZSB2aXJ0dWFsbHkgY29udmVydCB0aGUg
ZG91YmxlIHRvIGFuIGludGVnZXIgYnkgc2hpZnRpbmcgaXRzCisgICAgLy8gbWFudGlzc2EgYWNj
b3JkaW5nIHRvIGl0cyBleHBvbmVudCwgc28gaXQgd2lsbCBhbGlnbiB3aXRoIHRoZSBCaWdJbnQg
e3h9LAorICAgIC8vIGFuZCB0aGVuIHdlIGNvbXBhcmUgdGhlbSBiaXQgZm9yIGJpdCB1bnRpbCB3
ZSBmaW5kIGEgZGlmZmVyZW5jZSBvciB0aGUKKyAgICAvLyBsZWFzdCBzaWduaWZpY2FudCBiaXQu
CisgICAgLy8gICAgICAgICAgICAgICAgICAgIDwtLS0tLSA1MiAtLS0tLS0+IDwtLSB2aXJ0dWFs
IHRyYWlsaW5nIHplcm9lcyAtLT4KKyAgICAvLyB5IC8gbWFudGlzc2E6ICAgICAxeXl5eXl5eXl5
eXl5eXl5eXkgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorICAgIC8vIHggLyBkaWdp
dHM6ICAgIDAwMDF4eHh4IHh4eHh4eHh4IHh4eHh4eHh4IC4uLgorICAgIC8vICAgICAgICAgICAg
ICAgICAgICA8LS0+ICAgICAgICAgIDwtLS0tLS0+CisgICAgLy8gICAgICAgICAgICAgIG1zZFRv
cEJpdCAgICAgICAgIGRpZ2l0Qml0cworICAgIC8vCisgICAgbWFudGlzc2EgfD0gMHgwMDEwMDAw
MDAwMDAwMDAwOworICAgIGNvbnN0IGludCBtYW50aXNzYVRvcEJpdCA9IDUyOyAvLyAwLWluZGV4
ZWQuCisKKyAgICAvLyAwLWluZGV4ZWQgcG9zaXRpb24gb2Yge3h9J3MgbW9zdCBzaWduaWZpY2Fu
dCBiaXQgd2l0aGluIHRoZSB7bXNkfS4KKyAgICBpbnQgbXNkVG9wQml0ID0gZGlnaXRCaXRzIC0g
MSAtIG1zZExlYWRpbmdaZXJvczsKKyAgICBBU1NFUlQobXNkVG9wQml0ID09ICh4Qml0TGVuZ3Ro
IC0gMSkgJSBkaWdpdEJpdHMpOworICAgIAorICAgIC8vIFNoaWZ0ZWQgY2h1bmsgb2Yge21hbnRp
c3NhfSBmb3IgY29tcGFyaW5nIHdpdGgge2RpZ2l0fS4KKyAgICBEaWdpdCBjb21wYXJlTWFudGlz
c2E7CisKKyAgICAvLyBOdW1iZXIgb2YgdW5wcm9jZXNzZWQgYml0cyBpbiB7bWFudGlzc2F9LiBX
ZSdsbCBrZWVwIHRoZW0gc2hpZnRlZCB0bworICAgIC8vIHRoZSBsZWZ0IChpLmUuIG1vc3Qgc2ln
bmlmaWNhbnQgcGFydCkgb2YgdGhlIHVuZGVybHlpbmcgdWludDY0X3QuCisgICAgaW50IHJlbWFp
bmluZ01hbnRpc3NhQml0cyA9IDA7CisgICAgCisgICAgLy8gRmlyc3QsIGNvbXBhcmUgdGhlIG1v
c3Qgc2lnbmlmaWNhbnQgZGlnaXQgYWdhaW5zdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgLy8gdGhl
IG1hbnRpc3NhIGFuZCB0aGVuIHdlIGFsaWduIHRoZW0uCisgICAgaWYgKG1zZFRvcEJpdCA8IG1h
bnRpc3NhVG9wQml0KSB7CisgICAgICAgIHJlbWFpbmluZ01hbnRpc3NhQml0cyA9IChtYW50aXNz
YVRvcEJpdCAtIG1zZFRvcEJpdCk7CisgICAgICAgIGNvbXBhcmVNYW50aXNzYSA9IHN0YXRpY19j
YXN0PERpZ2l0PihtYW50aXNzYSA+PiByZW1haW5pbmdNYW50aXNzYUJpdHMpOworICAgICAgICBt
YW50aXNzYSA9IG1hbnRpc3NhIDw8ICg2NCAtIHJlbWFpbmluZ01hbnRpc3NhQml0cyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgY29tcGFyZU1hbnRpc3NhID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KG1h
bnRpc3NhIDw8IChtc2RUb3BCaXQgLSBtYW50aXNzYVRvcEJpdCkpOworICAgICAgICBtYW50aXNz
YSA9IDA7CisgICAgfQorCisgICAgaWYgKHhNU0QgPiBjb21wYXJlTWFudGlzc2EpCisgICAgICAg
IHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJl
c3VsdDo6R3JlYXRlclRoYW47CisKKyAgICBpZiAoeE1TRCA8IGNvbXBhcmVNYW50aXNzYSkKKyAg
ICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21w
YXJpc29uUmVzdWx0OjpMZXNzVGhhbjsKKyAgICAKKyAgICAvLyBUaGVuLCBjb21wYXJlIGFkZGl0
aW9uYWwgZGlnaXRzIGFnYWluc3QgYW55IHJlbWFpbmluZyBtYW50aXNzYSBiaXRzLgorICAgIGZv
ciAoaW50IGRpZ2l0SW5kZXggPSB4TGVuZ3RoIC0gMjsgZGlnaXRJbmRleCA+PSAwOyBkaWdpdElu
ZGV4LS0pIHsKKyAgICAgICAgaWYgKHJlbWFpbmluZ01hbnRpc3NhQml0cyA+IDApIHsKKyAgICAg
ICAgICAgIHJlbWFpbmluZ01hbnRpc3NhQml0cyAtPSBkaWdpdEJpdHM7CisgICAgICAgICAgICBp
ZiAoc2l6ZW9mKG1hbnRpc3NhKSAhPSBzaXplb2YoeE1TRCkpIHsKKyAgICAgICAgICAgICAgICBj
b21wYXJlTWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlzc2EgPj4gKDY0IC0gZGln
aXRCaXRzKSk7CisgICAgICAgICAgICAgICAgLy8gIiYgNjMiIHRvIGFwcGVhc2UgY29tcGlsZXJz
LiBkaWdpdEJpdHMgaXMgMzIgaGVyZSBhbnl3YXkuCisgICAgICAgICAgICAgICAgbWFudGlzc2Eg
PSBtYW50aXNzYSA8PCAoZGlnaXRCaXRzICYgNjMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBjb21wYXJlTWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlz
c2EpOworICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBjb21wYXJlTWFudGlzc2EgPSAwOworCisgICAgICAgIERp
Z2l0IGRpZ2l0ID0geC0+ZGlnaXQoZGlnaXRJbmRleCk7CisgICAgICAgIGlmIChkaWdpdCA+IGNv
bXBhcmVNYW50aXNzYSkKKyAgICAgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1
bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgICAgIGlm
IChkaWdpdCA8IGNvbXBhcmVNYW50aXNzYSkKKyAgICAgICAgICAgIHJldHVybiB4U2lnbiA/IENv
bXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47
CisgICAgfQorCisgICAgLy8gSW50ZWdlciBwYXJ0cyBhcmUgZXF1YWw7IGNoZWNrIHdoZXRoZXIg
e3l9IGhhcyBhIGZyYWN0aW9uYWwgcGFydC4KKyAgICBpZiAobWFudGlzc2EpIHsKKyAgICAgICAg
QVNTRVJUKHJlbWFpbmluZ01hbnRpc3NhQml0cyA+IDApOworICAgICAgICByZXR1cm4geFNpZ24g
PyBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NU
aGFuOworICAgIH0KKworICAgIHJldHVybiBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aAppbmRleCAyOThjMzQ4Y2QyYjRlNWFiNWM5MmM3YmI3OTlhMzBmM2ViZmE2MjMxLi5iOWJmNzUx
MmZmYzEzYjhmNGYyYmE3M2FiNGExNzg1MzJiOWM3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTczLDEzICs3MywyMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRMZW5ndGgoaW50IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQogICAgIGludCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCi0gICAgc3RhdGljIEpTQmlnSW50
KiBwYXJzZUludChFeGVjU3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOwot
ICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgU3RyaW5nVmlldyk7Cisg
ICAgZW51bSBFcnJvclBhcnNlTW9kZSB7CisgICAgICAgIFRocm93RXhjZXB0aW9ucywKKyAgICAg
ICAgSWdub3JlRXhjZXB0aW9ucworICAgIH07CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNl
SW50KEV4ZWNTdGF0ZSosIFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJz
ZU1vZGUgPSBUaHJvd0V4Y2VwdGlvbnMpOworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQo
RXhlY1N0YXRlKiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBUaHJvd0V4Y2VwdGlvbnMp
OworICAgIHN0YXRpYyBKU0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoRXhlY1N0YXRlKiwgU3RyaW5n
Vmlldyk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JT
dHJpbmcoKTsKLSAgICBTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlJiwgaW50IHJhZGl4KTsKKyAg
ICBTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlJiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50
Kik7CisgICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1ZhbHVlKTsKIAogICAgIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQp
IGNvbnN0OwogICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTg3LDYg
Kzk0LDE0IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAKIHByaXZhdGU6CisKKyAgICBlbnVtIENvbXBhcmlz
b25SZXN1bHQgeworICAgICAgICBFcXVhbCwKKyAgICAgICAgVW5kZWZpbmVkLAorICAgICAgICBH
cmVhdGVyVGhhbiwKKyAgICAgICAgTGVzc1RoYW4KKyAgICB9OworCiAgICAgdXNpbmcgRGlnaXQg
PSB1aW50cHRyX3Q7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQgYml0c1BlckJ5dGUg
PSA4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50IGRpZ2l0Qml0cyA9IHNpemVvZihE
aWdpdCkgKiBiaXRzUGVyQnl0ZTsKQEAgLTExNiwxMSArMTMxLDEzIEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGlzWmVybygpOwogCisgICAgQ29tcGFyaXNvblJlc3VsdCBzdGF0aWMgY29tcGFyZVRv
RG91YmxlKEpTQmlnSW50KiB4LCBkb3VibGUgeSk7CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGU+Ci0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBDaGFy
VHlwZSogIGRhdGEsIGludCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQo
RXhlY1N0YXRlKiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VN
b2RlKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNC
aWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5n
dGgsIGludCBzdGFydEluZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRy
dWUpOworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgVk0mLCBDaGFy
VHlwZSogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCByYWRpeCwgRXJyb3JQYXJzZU1vZGUsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpOwog
CiAgICAgc3RhdGljIEpTQmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCBy
YWRpeCwgaW50IGNoYXJjb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGQwZDM3OTlmYjM5ZWMzMTgyZGNkMjE0OTYw
NzA2MGUzNWI1YjI3OWEuLjIzZDNiMjZjNTk1NDJiNzcwZTRkM2QwYTI0NjEyNjJlM2RlNWM5YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtOTgxLDYgKzk4MSwyNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVgogICAgICAg
ICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+ZXF1YWwoZXhlYywgYXNTdHJpbmcodjIpKTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHMyKSB7CisgICAgICAgICAg
ICBKU0JpZ0ludCogbiA9IEpTQmlnSW50OjpzdHJpbmdUb0JpZ0ludChleGVjLCBhc1N0cmluZyh2
MiktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHYyID0gSlNWYWx1ZShuKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHMxICYmIHYyLmlzQmlnSW50
KCkpIHsKKyAgICAgICAgICAgIEpTQmlnSW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50
KGV4ZWMsIGFzU3RyaW5nKHYxKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCFuKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdjEgPSBKU1Zh
bHVlKG4pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
djEuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDM0LDEwICsxMDU0
LDI3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4o
KSkgewogICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7
CisgICAgICAgICAgICBlbHNlIGlmICh2Mi5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAg
djEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewog
ICAgICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHYx
LmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7CisgICAg
ICAgICAgICBlbHNlIGlmICh2MS5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgdjIgPSBK
U1ZhbHVlKHYyLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50
KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxz
KGFzQmlnSW50KHYxKSwgYXNCaWdJbnQodjIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2MS5p
c0JpZ0ludCgpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQo
djEpLT5lcXVhbHNUb051bWJlcih2Mik7CisKKyAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYg
djEuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1Rv
TnVtYmVyKHYxKTsKIAogICAgICAgICByZXR1cm4gdjEgPT0gdjI7CiAgICAgfSB3aGlsZSAodHJ1
ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDNjYzFhNDhjY2Q0OGUyYzgxN2FjMzc1MWU5MjFjOTk1MjBlOGQ3M2EuLjg5OWU2YmVjZWE5
NzQwM2IyNGQyYWIwMjNlM2U1OTM5ZGVhODVlNTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDUtMDUg
IENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdW0Jp
Z0ludF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yICI9PSIgb3BlcmF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LWVxdWFs
cy1iYXNpYy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtZXF1YWxzLXRvLXBy
aW1pdGl2ZS1wcmVjZWRlbmNlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1l
cXVhbHMtd3JhcHBlZC12YWx1ZS5qczogQWRkZWQuCisKIDIwMTgtMDUtMDQgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgaXNDYWNoZWFibGVBcnJheUxl
bmd0aCBzaG91bGQgcmV0dXJuIHRydWUgZm9yIHVuZGVjaWRlZCBhcnJheXMKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YmlnLWludC1lcXVhbHMtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliYTAyODZmODAyOGU1OTdiNjJm
OTJiN2QwYmRlMWZmNjNmYTZmZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Jp
Zy1pbnQtZXF1YWxzLWJhc2ljLmpzCkBAIC0wLDAgKzEsMTI0IEBACisvL0AgcnVuQmlnSW50RW5h
YmxlZAorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFcXVhbHMoYSwgYiwg
ZSkgeworICAgIGFzc2VydChhID09IGIsIGUsIGEgKyAiID09ICIgKyBiICsgIiBzaG91bGQgYmUg
IiArIGUpOworICAgIGFzc2VydChiID09IGEsIGUsIGIgKyAiID09ICIgKyBhICsgIiBzaG91bGQg
YmUgIiArIGUpOworfQorCitmdW5jdGlvbiB0ZXN0RXF1YWxzV2l0aE1lc3NhZ2UoYSwgYiwgZSwg
bSkgeworICAgIGFzc2VydChhID09IGIsIGUsIG0pOworICAgIGFzc2VydChiID09IGEsIGUsIG0p
OworfQorCisvLyBCaWdJbnQgLSBCaWdJbnQKK3Rlc3RFcXVhbHMoMW4sIDFuLCB0cnVlKTsKK3Rl
c3RFcXVhbHMoMTkyODM5MjEyOTMxMm4sIDFuLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBuLCAxbiwg
ZmFsc2UpOwordGVzdEVxdWFscygwbiwgMG4sIHRydWUpOwordGVzdEVxdWFscyg4MTcyODM5MTI5
MzFuLCA4MTcyODM5MTI5MzFuLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMHhGRkQ4MTcyODNBRjkxMjlF
MzFuLCAweEZGRDgxNzI4M0FGOTEyOUUzMW4sIHRydWUpOwordGVzdEVxdWFscygweEFGRkQ4MTcy
ODNBRjkxMjlFMzFuLCAweEZGRDgxNzI4M0FGOTEyOUUzMW4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMo
NDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MW4sIEJpZ0ludCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEi
KSwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIi00NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiks
IEJpZ0ludCgiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJp
Z0ludCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEiKSwgQmlnSW50KCItNDcxOTQ5MDY5NzI2NjM0
NDQwMjQ4MSIpLCB0cnVlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItMTciKSwgQmlnSW50KCItMTci
KSwgdHJ1ZSk7CisKKy8vIEJpZ0ludCAtIFN0cmluZworCit0ZXN0RXF1YWxzKDFuLCAiMSIsIHRy
dWUpOwordGVzdEVxdWFscygxOTI4MzkyMTI5MzEybiwgIjEiLCBmYWxzZSk7Cit0ZXN0RXF1YWxz
KDBuLCAiMSIsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sICIwIiwgdHJ1ZSk7Cit0ZXN0RXF1YWxz
KDgxNzI4MzkxMjkzMW4sICI4MTcyODM5MTI5MzEiLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMHhGRkQ4
MTcyODNBRjkxMjlFMzFuLCAiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIsIHRydWUpOwordGVzdEVx
dWFscygweEFGRkQ4MTcyODNBRjkxMjlFMzFuLCAiNDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIsIGZh
bHNlKTsKKworLy8gQmlnSW50IC0gTnVtYmVyCisKK3Rlc3RFcXVhbHMoMG4sIDAsIHRydWUpOwor
dGVzdEVxdWFscygwbiwgLTAsIHRydWUpOwordGVzdEVxdWFscygtMCwgMG4sIHRydWUpOwordGVz
dEVxdWFscygwbiwgMC4wMDAwMDAwMDAwMDEsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIDEsIGZh
bHNlKTsKK3Rlc3RFcXVhbHMoMSwgMG4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4sIDAuOTk5OTk5
OTk5OTk5LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCAxLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4s
IE51bWJlci5NSU5fVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIC1OdW1iZXIuTUlOX1ZB
TFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgiLTEwIiksIE51bWJlci5NSU5fVkFMVUUs
IGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4sIE51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RF
cXVhbHMoMW4sIC1OdW1iZXIuTUFYX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDB4ZmZmZmZm
ZmZmZmZmZjdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm4sIE51bWJlci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RF
cXVhbHMoMHhmZmZmZmZmZmZmZmZmODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwbiwgTnVtYmVyLk1BWF9WQUxVRSwg
dHJ1ZSk7Cit0ZXN0RXF1YWxzKDB4ZmZmZmZmZmZmZmZmZjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMW4sIE51bWJl
ci5NQVhfVkFMVUUsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMjMwMDAwMDAwMDAwMDAwMDAwMDAwLCAy
MzAwMDAwMDAwMDAwMDAwMDAwMDBuLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMTBuLCBOYU4sIGZhbHNl
KTsKK3Rlc3RFcXVhbHMoMTBuLCB1bmRlZmluZWQsIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMTBuLCBu
dWxsLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDEwbiwgSW5maW5pdHksIGZhbHNlKTsKK3Rlc3RFcXVh
bHMoMTBuLCAtSW5maW5pdHksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCItMjE0NzQ4MzY0
OCIpLCAtMjE0NzQ4MzY0OCwgdHJ1ZSk7IC8vIFRlc3RpbmcgSU5UMzJfTUlOCit0ZXN0RXF1YWxz
KEJpZ0ludCgiLTIxNDc0ODM2NDciKSwgLTIxNDc0ODM2NDgsIGZhbHNlKTsKK3Rlc3RFcXVhbHMo
QmlnSW50KCIyMTQ3NDgzNjQ3IiksIC0yMTQ3NDgzNjQ4LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJp
Z0ludCgiMjE0NzQ4MzY0OCIpLCAtMjE0NzQ4MzY0OCwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJ
bnQoIjIxNDc0ODM2NDciKSwgMjE0NzQ4MzY0NywgdHJ1ZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgi
MjE0NzQ4MzY0OCIpLCAyMTQ3NDgzNjQ3LCBmYWxzZSk7CisKKy8vIEJpZ0ludCAtIEJvb2xlYW4K
KwordGVzdEVxdWFscyhCaWdJbnQoIi0xIiksIGZhbHNlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJp
Z0ludCgiLTEiKSwgdHJ1ZSwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgZmFsc2UsIHRydWUpOwor
dGVzdEVxdWFscygwbiwgdHJ1ZSwgZmFsc2UpOwordGVzdEVxdWFscygxbiwgZmFsc2UsIGZhbHNl
KTsKK3Rlc3RFcXVhbHMoMW4sIHRydWUsIHRydWUpOwordGVzdEVxdWFscygybiwgZmFsc2UsIGZh
bHNlKTsKK3Rlc3RFcXVhbHMoMm4sIHRydWUsIGZhbHNlKTsKKworLy8gQmlnSW50IC0gT2JqZWN0
CisKK3Rlc3RFcXVhbHMoMG4sIE9iamVjdCgwbiksIHRydWUpOwordGVzdEVxdWFscygwbiwgT2Jq
ZWN0KDFuKSwgZmFsc2UpOwordGVzdEVxdWFscygxbiwgT2JqZWN0KDBuKSwgZmFsc2UpOwordGVz
dEVxdWFscygxbiwgT2JqZWN0KDFuKSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDJuLCBPYmplY3QoMG4p
LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDJuLCBPYmplY3QoMW4pLCBmYWxzZSk7Cit0ZXN0RXF1YWxz
KDJuLCBPYmplY3QoMm4pLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIHt9LCBmYWxzZSk7Cit0ZXN0
RXF1YWxzKDBuLCB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiAwbjsgfX0sIHRydWUpOwor
dGVzdEVxdWFscygwbiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMW47IH19LCBmYWxz
ZSk7Cit0ZXN0RXF1YWxzKDBuLCB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIjAiOyB9
fSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDBuLCB7dG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4g
IjEiOyB9fSwgZmFsc2UpOwordGVzdEVxdWFscyg5MDA3MTk5MjU0NzQwOTkxMDFuLCB7dmFsdWVP
ZjogZnVuY3Rpb24oKSB7IHJldHVybiA5MDA3MTk5MjU0NzQwOTkxMDFuOyB9fSwgdHJ1ZSk7Cit0
ZXN0RXF1YWxzKDkwMDcxOTkyNTQ3NDA5OTEwMW4sIHt2YWx1ZU9mOiBmdW5jdGlvbigpIHsgcmV0
dXJuIDkwMDcxOTkyNTQ3NDA5OTEwMm47IH19LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDkwMDcxOTky
NTQ3NDA5OTEwMW4sIHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiOTAwNzE5OTI1NDc0
MDk5MTAxIjsgfX0sIHRydWUpOwordGVzdEVxdWFscyg5MDA3MTk5MjU0NzQwOTkxMDFuLCB7dG9T
dHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIjkwMDcxOTkyNTQ3NDA5OTEwMiI7IH19LCBmYWxz
ZSk7CisKK3RyeSB7CisgICAgbGV0IG8gPSB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHRocm93IG5l
dyBFcnJvcigibXkgZXJyb3IiKTsgfX07CisgICAgbyA9PSAxbjsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4Y2VwdGlvbiBpbiBUb1ByaW1pdGl2ZSBub3QgY2F0Y2hlZCIpOworfSBjYXRjaChlKSB7
CisgICAgYXNzZXJ0KGUubWVzc2FnZSwgIm15IGVycm9yIiwgIldyb25nIGV4Y2VwdGlvbiBpbiBU
b1ByaW1pdGl2ZSIpOworfQorCit0cnkgeworICAgIGxldCBvID0ge3RvU3RyaW5nOiBmdW5jdGlv
bigpIHsgdGhyb3cgbmV3IEVycm9yKCJteSBlcnJvciIpOyB9fTsKKyAgICBvID09IDFuOworICAg
IHRocm93IG5ldyBFcnJvcigiRXhjZXB0aW9uIGluIFRvU3RyaW5nIG5vdCBjYXRjaGVkIik7Cit9
IGNhdGNoKGUpIHsKKyAgICBhc3NlcnQoZS5tZXNzYWdlLCAibXkgZXJyb3IiLCAiV3JvbmcgZXhj
ZXB0aW9uIGluIFRvU3RyaW5nIik7Cit9CisKKy8vIEJpZ0ludCAtIFN5bWJvbAorCit0ZXN0RXF1
YWxzV2l0aE1lc3NhZ2UoMG4sIFN5bWJvbCgiMSIpLCBmYWxzZSwgIjBuID09IFN5bWJvbCgxKSIp
OwordGVzdEVxdWFsc1dpdGhNZXNzYWdlKFN5bWJvbCgiMSIpLCAwbiwgZmFsc2UsICJTeW1ib2wo
MSkgPT0gMG4iKTsKK3Rlc3RFcXVhbHNXaXRoTWVzc2FnZSgxbiwgU3ltYm9sKCIxIiksIGZhbHNl
LCAiMW4gPT0gU3ltYm9sKDEpIik7Cit0ZXN0RXF1YWxzV2l0aE1lc3NhZ2UoU3ltYm9sKCIxIiks
IDFuLCBmYWxzZSwgIlN5bWJvbCgxKSA9PSAxbiIpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9iaWctaW50LWVxdWFscy10by1wcmltaXRpdmUtcHJlY2VkZW5jZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL2JpZy1pbnQtZXF1YWxzLXRvLXByaW1pdGl2ZS1wcmVjZWRlbmNlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY1ZWQ1NjRkZDdjMTA0MzI5MGM1ZjZjOGY5M2FiNmVmNmIyMjdhYmQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWVxdWFscy10by1wcmltaXRpdmUtcHJlY2Vk
ZW5jZS5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcnVuQmlnSW50RW5hYmxlZAorCithc3NlcnQg
PSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7
CisgICAgICAgIGlmIChpbnB1dCAhPT0gZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobWVzc2FnZSk7CisgICAgfQorfTsKKworZnVuY3Rpb24gdGVzdEVxdWFscyh4LCB5LCB6
LCBtZXNzYWdlKSB7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh4ID09IHksIHosIG1lc3NhZ2UpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoeSA9PSB4LCB6LCBtZXNzYWdlKTsKK30KKwordGVzdEVxdWFs
cyhPYmplY3QoMm4pLCAxbiwgZmFsc2UsICJUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGgg
aW50ZXJuYWwgc2xvdCIpOworCitsZXQgbyA9IHsKKyAgICBbU3ltYm9sLnRvUHJpbWl0aXZlXTog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAybjsKKyAgICB9LAorICAgIHZhbHVlT2Y6IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgZXhlY3V0
ZSBpdCIpOworICAgIH0sCisgICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgZXhlY3V0ZSBpdCIpOworICAgIH0KK307Cit0ZXN0
RXF1YWxzKG8sIDJuLCB0cnVlLCAiVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUiKTsKKworbyA9
IHsKKyAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIDJuOworICAgIH0s
CisgICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJT
aG91bGQgbmV2ZXIgZXhlY3V0ZSBpdCIpOworICAgIH0KK307Cit0ZXN0RXF1YWxzKG8sIDFuLCBm
YWxzZSwgIlRvUHJpbWl0aXZlOiB2YWx1ZU9mIik7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZy1pbnQtZXF1YWxzLXdyYXBwZWQtdmFsdWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWct
aW50LWVxdWFscy13cmFwcGVkLXZhbHVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZDg5YmUxMzVlZTg3YTVl
ZjkzOTAzNGQzMzFjOTVlYjRmMzNiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9iaWctaW50LWVxdWFscy13cmFwcGVkLXZhbHVlLmpzCkBAIC0wLDAgKzEsMzcgQEAKKy8vQCBy
dW5CaWdJbnRFbmFibGVkCisKK2Fzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChp
bnB1dCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKGlucHV0ICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICB9Cit9OworCitm
dW5jdGlvbiB0ZXN0RXF1YWxzKHgsIHksIHosIG1lc3NhZ2UpIHsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKHggPT0geSwgeiwgbWVzc2FnZSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh5ID09IHgsIHos
IG1lc3NhZ2UpOworfQorCit0ZXN0RXF1YWxzKE9iamVjdCgybiksIDFuLCBmYWxzZSwgIlRvUHJp
bWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90Iik7CisKK2xldCBvID0gewor
ICAgIFtTeW1ib2wudG9QcmltaXRpdmVdOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIDFu
OworICAgIH0KK307Cit0ZXN0RXF1YWxzKG8sIDFuLCB0cnVlLCAiVG9QcmltaXRpdmU6IEBAdG9Q
cmltaXRpdmUiKTsKKworbyA9IHsKKyAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIDJuOworICAgIH0KK307Cit0ZXN0RXF1YWxzKG8sIDJuLCB0cnVlLCAiVG9QcmltaXRp
dmU6IHZhbHVlT2YiKTsKKworbyA9IHsKKyAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiAybjsKKyAgICB9Cit9Cit0ZXN0RXF1YWxzKG8sIDFuLCBmYWxzZSwgIlRvUHJp
bWl0aXZlOiB0b1N0cmluZyIpOworCg==
</data>
<flag name="review"
          id="357878"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340066</attachid>
            <date>2018-05-09 20:25:27 -0700</date>
            <delta_ts>2018-05-09 21:25:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>big-int-equals.diff</filename>
            <type>text/plain</type>
            <size>25630</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MzlmNDhiNC4uNTE1OTcyZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0wNS0wOSAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1l
bnQgc3VwcG9ydCBmb3IgIj09IiBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3Vr
ZSBTdXp1a2kuCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1lcXVhbHMtYmFzaWMuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LWVxdWFscy10by1wcmltaXRpdmUtcHJlY2Vk
ZW5jZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtZXF1YWxzLXdyYXBwZWQt
dmFsdWUuanM6IEFkZGVkLgorCiAyMDE4LTA1LTA4ICBWYWxlcmllIFIgWW91bmcgIDx2YWxlcmll
QGJvY291cC5jb20+CiAKICAgICAgICAgdGVzdDI2Mi9SdW5uZXIucG06IG1vdmUgaW5wdXQgZmls
ZXMgdG8gSlNUZXN0cy90ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50
LWVxdWFscy1iYXNpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZy1pbnQtZXF1YWxzLWJhc2ljLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YmEwMjgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWVxdWFscy1iYXNpYy5qcwpAQCAtMCwwICsx
LDEyNCBAQAorLy9AIHJ1bkJpZ0ludEVuYWJsZWQKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0p
IHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitm
dW5jdGlvbiB0ZXN0RXF1YWxzKGEsIGIsIGUpIHsKKyAgICBhc3NlcnQoYSA9PSBiLCBlLCBhICsg
IiA9PSAiICsgYiArICIgc2hvdWxkIGJlICIgKyBlKTsKKyAgICBhc3NlcnQoYiA9PSBhLCBlLCBi
ICsgIiA9PSAiICsgYSArICIgc2hvdWxkIGJlICIgKyBlKTsKK30KKworZnVuY3Rpb24gdGVzdEVx
dWFsc1dpdGhNZXNzYWdlKGEsIGIsIGUsIG0pIHsKKyAgICBhc3NlcnQoYSA9PSBiLCBlLCBtKTsK
KyAgICBhc3NlcnQoYiA9PSBhLCBlLCBtKTsKK30KKworLy8gQmlnSW50IC0gQmlnSW50Cit0ZXN0
RXF1YWxzKDFuLCAxbiwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDE5MjgzOTIxMjkzMTJuLCAxbiwgZmFs
c2UpOwordGVzdEVxdWFscygwbiwgMW4sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMG4sIDBuLCB0cnVl
KTsKK3Rlc3RFcXVhbHMoODE3MjgzOTEyOTMxbiwgODE3MjgzOTEyOTMxbiwgdHJ1ZSk7Cit0ZXN0
RXF1YWxzKDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgMHhGRkQ4MTcyODNBRjkxMjlFMzFuLCB0cnVl
KTsKK3Rlc3RFcXVhbHMoMHhBRkZEODE3MjgzQUY5MTI5RTMxbiwgMHhGRkQ4MTcyODNBRjkxMjlF
MzFuLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODFuLCBCaWdJbnQo
Ii00NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCIt
NDcxOTQ5MDY5NzI2NjM0NDQwMjQ4MSIpLCBCaWdJbnQoIjQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEi
KSwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIi00NzE5NDkwNjk3MjY2MzQ0NDAyNDgxIiks
IEJpZ0ludCgiLTQ3MTk0OTA2OTcyNjYzNDQ0MDI0ODEiKSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKEJp
Z0ludCgiLTE3IiksIEJpZ0ludCgiLTE3IiksIHRydWUpOworCisvLyBCaWdJbnQgLSBTdHJpbmcK
KwordGVzdEVxdWFscygxbiwgIjEiLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMTkyODM5MjEyOTMxMm4s
ICIxIiwgZmFsc2UpOwordGVzdEVxdWFscygwbiwgIjEiLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDBu
LCAiMCIsIHRydWUpOwordGVzdEVxdWFscyg4MTcyODM5MTI5MzFuLCAiODE3MjgzOTEyOTMxIiwg
dHJ1ZSk7Cit0ZXN0RXF1YWxzKDB4RkZEODE3MjgzQUY5MTI5RTMxbiwgIjQ3MTk0OTA2OTcyNjYz
NDQ0MDI0ODEiLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMHhBRkZEODE3MjgzQUY5MTI5RTMxbiwgIjQ3
MTk0OTA2OTcyNjYzNDQ0MDI0ODEiLCBmYWxzZSk7CisKKy8vIEJpZ0ludCAtIE51bWJlcgorCit0
ZXN0RXF1YWxzKDBuLCAwLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIC0wLCB0cnVlKTsKK3Rlc3RF
cXVhbHMoLTAsIDBuLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIDAuMDAwMDAwMDAwMDAxLCBmYWxz
ZSk7Cit0ZXN0RXF1YWxzKDBuLCAxLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDEsIDBuLCBmYWxzZSk7
Cit0ZXN0RXF1YWxzKDFuLCAwLjk5OTk5OTk5OTk5OSwgZmFsc2UpOwordGVzdEVxdWFscygxbiwg
MSwgdHJ1ZSk7Cit0ZXN0RXF1YWxzKDBuLCBOdW1iZXIuTUlOX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0
RXF1YWxzKDBuLCAtTnVtYmVyLk1JTl9WQUxVRSwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQo
Ii0xMCIpLCBOdW1iZXIuTUlOX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCBOdW1iZXIu
TUFYX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCAtTnVtYmVyLk1BWF9WQUxVRSwgZmFs
c2UpOwordGVzdEVxdWFscygweGZmZmZmZmZmZmZmZmY3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZuLCBOdW1iZXIu
TUFYX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDB4ZmZmZmZmZmZmZmZmZjgwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMG4sIE51bWJlci5NQVhfVkFMVUUsIHRydWUpOwordGVzdEVxdWFscygweGZmZmZmZmZmZmZm
ZmY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDFuLCBOdW1iZXIuTUFYX1ZBTFVFLCBmYWxzZSk7Cit0ZXN0RXF1YWxz
KDIzMDAwMDAwMDAwMDAwMDAwMDAwMCwgMjMwMDAwMDAwMDAwMDAwMDAwMDAwbiwgdHJ1ZSk7Cit0
ZXN0RXF1YWxzKDEwbiwgTmFOLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDEwbiwgdW5kZWZpbmVkLCBm
YWxzZSk7Cit0ZXN0RXF1YWxzKDEwbiwgbnVsbCwgZmFsc2UpOwordGVzdEVxdWFscygxMG4sIElu
ZmluaXR5LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDEwbiwgLUluZmluaXR5LCBmYWxzZSk7Cit0ZXN0
RXF1YWxzKEJpZ0ludCgiLTIxNDc0ODM2NDgiKSwgLTIxNDc0ODM2NDgsIHRydWUpOyAvLyBUZXN0
aW5nIElOVDMyX01JTgordGVzdEVxdWFscyhCaWdJbnQoIi0yMTQ3NDgzNjQ3IiksIC0yMTQ3NDgz
NjQ4LCBmYWxzZSk7Cit0ZXN0RXF1YWxzKEJpZ0ludCgiMjE0NzQ4MzY0NyIpLCAtMjE0NzQ4MzY0
OCwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIjIxNDc0ODM2NDgiKSwgLTIxNDc0ODM2NDgs
IGZhbHNlKTsKK3Rlc3RFcXVhbHMoQmlnSW50KCIyMTQ3NDgzNjQ3IiksIDIxNDc0ODM2NDcsIHRy
dWUpOwordGVzdEVxdWFscyhCaWdJbnQoIjIxNDc0ODM2NDgiKSwgMjE0NzQ4MzY0NywgZmFsc2Up
OworCisvLyBCaWdJbnQgLSBCb29sZWFuCisKK3Rlc3RFcXVhbHMoQmlnSW50KCItMSIpLCBmYWxz
ZSwgZmFsc2UpOwordGVzdEVxdWFscyhCaWdJbnQoIi0xIiksIHRydWUsIGZhbHNlKTsKK3Rlc3RF
cXVhbHMoMG4sIGZhbHNlLCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIHRydWUsIGZhbHNlKTsKK3Rl
c3RFcXVhbHMoMW4sIGZhbHNlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDFuLCB0cnVlLCB0cnVlKTsK
K3Rlc3RFcXVhbHMoMm4sIGZhbHNlLCBmYWxzZSk7Cit0ZXN0RXF1YWxzKDJuLCB0cnVlLCBmYWxz
ZSk7CisKKy8vIEJpZ0ludCAtIE9iamVjdAorCit0ZXN0RXF1YWxzKDBuLCBPYmplY3QoMG4pLCB0
cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIE9iamVjdCgxbiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4s
IE9iamVjdCgwbiksIGZhbHNlKTsKK3Rlc3RFcXVhbHMoMW4sIE9iamVjdCgxbiksIHRydWUpOwor
dGVzdEVxdWFscygybiwgT2JqZWN0KDBuKSwgZmFsc2UpOwordGVzdEVxdWFscygybiwgT2JqZWN0
KDFuKSwgZmFsc2UpOwordGVzdEVxdWFscygybiwgT2JqZWN0KDJuKSwgdHJ1ZSk7Cit0ZXN0RXF1
YWxzKDBuLCB7fSwgZmFsc2UpOwordGVzdEVxdWFscygwbiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkg
eyByZXR1cm4gMG47IH19LCB0cnVlKTsKK3Rlc3RFcXVhbHMoMG4sIHt2YWx1ZU9mOiBmdW5jdGlv
bigpIHsgcmV0dXJuIDFuOyB9fSwgZmFsc2UpOwordGVzdEVxdWFscygwbiwge3RvU3RyaW5nOiBm
dW5jdGlvbigpIHsgcmV0dXJuICIwIjsgfX0sIHRydWUpOwordGVzdEVxdWFscygwbiwge3RvU3Ry
aW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICIxIjsgfX0sIGZhbHNlKTsKK3Rlc3RFcXVhbHMoOTAw
NzE5OTI1NDc0MDk5MTAxbiwge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gOTAwNzE5OTI1
NDc0MDk5MTAxbjsgfX0sIHRydWUpOwordGVzdEVxdWFscyg5MDA3MTk5MjU0NzQwOTkxMDFuLCB7
dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJldHVybiA5MDA3MTk5MjU0NzQwOTkxMDJuOyB9fSwgZmFs
c2UpOwordGVzdEVxdWFscyg5MDA3MTk5MjU0NzQwOTkxMDFuLCB7dG9TdHJpbmc6IGZ1bmN0aW9u
KCkgeyByZXR1cm4gIjkwMDcxOTkyNTQ3NDA5OTEwMSI7IH19LCB0cnVlKTsKK3Rlc3RFcXVhbHMo
OTAwNzE5OTI1NDc0MDk5MTAxbiwge3RvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICI5MDA3
MTk5MjU0NzQwOTkxMDIiOyB9fSwgZmFsc2UpOworCit0cnkgeworICAgIGxldCBvID0ge3ZhbHVl
T2Y6IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoIm15IGVycm9yIik7IH19OworICAgIG8g
PT0gMW47CisgICAgdGhyb3cgbmV3IEVycm9yKCJFeGNlcHRpb24gaW4gVG9QcmltaXRpdmUgbm90
IGNhdGNoZWQiKTsKK30gY2F0Y2goZSkgeworICAgIGFzc2VydChlLm1lc3NhZ2UsICJteSBlcnJv
ciIsICJXcm9uZyBleGNlcHRpb24gaW4gVG9QcmltaXRpdmUiKTsKK30KKwordHJ5IHsKKyAgICBs
ZXQgbyA9IHt0b1N0cmluZzogZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcigibXkgZXJyb3Ii
KTsgfX07CisgICAgbyA9PSAxbjsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4Y2VwdGlvbiBpbiBU
b1N0cmluZyBub3QgY2F0Y2hlZCIpOworfSBjYXRjaChlKSB7CisgICAgYXNzZXJ0KGUubWVzc2Fn
ZSwgIm15IGVycm9yIiwgIldyb25nIGV4Y2VwdGlvbiBpbiBUb1N0cmluZyIpOworfQorCisvLyBC
aWdJbnQgLSBTeW1ib2wKKwordGVzdEVxdWFsc1dpdGhNZXNzYWdlKDBuLCBTeW1ib2woIjEiKSwg
ZmFsc2UsICIwbiA9PSBTeW1ib2woMSkiKTsKK3Rlc3RFcXVhbHNXaXRoTWVzc2FnZShTeW1ib2wo
IjEiKSwgMG4sIGZhbHNlLCAiU3ltYm9sKDEpID09IDBuIik7Cit0ZXN0RXF1YWxzV2l0aE1lc3Nh
Z2UoMW4sIFN5bWJvbCgiMSIpLCBmYWxzZSwgIjFuID09IFN5bWJvbCgxKSIpOwordGVzdEVxdWFs
c1dpdGhNZXNzYWdlKFN5bWJvbCgiMSIpLCAxbiwgZmFsc2UsICJTeW1ib2woMSkgPT0gMW4iKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtdG8tcHJpbWl0aXZl
LXByZWNlZGVuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWVxdWFscy10by1wcmltaXRp
dmUtcHJlY2VkZW5jZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWVk
NTY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtdG8t
cHJpbWl0aXZlLXByZWNlZGVuY2UuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJ1bkJpZ0ludEVu
YWJsZWQKKworYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGlucHV0LCBleHBl
Y3RlZCwgbWVzc2FnZSkgeworICAgICAgICBpZiAoaW5wdXQgIT09IGV4cGVjdGVkKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworICAgIH0KK307CisKK2Z1bmN0aW9uIHRl
c3RFcXVhbHMoeCwgeSwgeiwgbWVzc2FnZSkgeworICAgIGFzc2VydC5zYW1lVmFsdWUoeCA9PSB5
LCB6LCBtZXNzYWdlKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHkgPT0geCwgeiwgbWVzc2FnZSk7
Cit9CisKK3Rlc3RFcXVhbHMoT2JqZWN0KDJuKSwgMW4sIGZhbHNlLCAiVG9QcmltaXRpdmU6IHVu
Ym94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QiKTsKKworbGV0IG8gPSB7CisgICAgW1N5bWJv
bC50b1ByaW1pdGl2ZV06IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gMm47CisgICAgfSwK
KyAgICB2YWx1ZU9mOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hv
dWxkIG5ldmVyIGV4ZWN1dGUgaXQiKTsKKyAgICB9LAorICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAo
KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGV4ZWN1dGUgaXQiKTsK
KyAgICB9Cit9OwordGVzdEVxdWFscyhvLCAybiwgdHJ1ZSwgIlRvUHJpbWl0aXZlOiBAQHRvUHJp
bWl0aXZlIik7CisKK28gPSB7CisgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiAybjsKKyAgICB9LAorICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGV4ZWN1dGUgaXQiKTsKKyAgICB9Cit9OwordGVz
dEVxdWFscyhvLCAxbiwgZmFsc2UsICJUb1ByaW1pdGl2ZTogdmFsdWVPZiIpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWctaW50LWVxdWFscy13cmFwcGVkLXZhbHVlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtd3JhcHBlZC12YWx1ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQ4OWJlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1lcXVhbHMtd3JhcHBlZC12YWx1ZS5qcwpAQCAtMCwwICsxLDM3IEBA
CisvL0AgcnVuQmlnSW50RW5hYmxlZAorCithc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAoaW5wdXQsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgICAgICAgIGlmIChpbnB1dCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgfQor
fTsKKworZnVuY3Rpb24gdGVzdEVxdWFscyh4LCB5LCB6LCBtZXNzYWdlKSB7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZSh4ID09IHksIHosIG1lc3NhZ2UpOworICAgIGFzc2VydC5zYW1lVmFsdWUoeSA9
PSB4LCB6LCBtZXNzYWdlKTsKK30KKwordGVzdEVxdWFscyhPYmplY3QoMm4pLCAxbiwgZmFsc2Us
ICJUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCIpOworCitsZXQg
byA9IHsKKyAgICBbU3ltYm9sLnRvUHJpbWl0aXZlXTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiAxbjsKKyAgICB9Cit9OwordGVzdEVxdWFscyhvLCAxbiwgdHJ1ZSwgIlRvUHJpbWl0aXZl
OiBAQHRvUHJpbWl0aXZlIik7CisKK28gPSB7CisgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiAybjsKKyAgICB9Cit9OwordGVzdEVxdWFscyhvLCAybiwgdHJ1ZSwgIlRv
UHJpbWl0aXZlOiB2YWx1ZU9mIik7CisKK28gPSB7CisgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gMm47CisgICAgfQorfQordGVzdEVxdWFscyhvLCAxbiwgZmFsc2Us
ICJUb1ByaW1pdGl2ZTogdG9TdHJpbmciKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDI5YmQ4Yi4uMzc3ZGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTgtMDUtMDkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yICI9PSIgb3BlcmF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NzQK
KworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaXMgaW1wbGVtZW50aW5nIHN1cHBvcnQgb2YgQmlnSW50IGZvciBlcXVhbHMgb3BlcmF0b3IK
KyAgICAgICAgZm9sbG93aW5nIHRoZSBzcGVjIHNlbWFudGljc1sxXS4KKworICAgICAgICBbMV0g
LSBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWJpZ2ludC8jc2VjLWFic3RyYWN0LWVx
dWFsaXR5LWNvbXBhcmlzb24KKworICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6cGFyc2VJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
c3RyaW5nVG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6c2V0RGlnaXQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
ZXF1YWxzVG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6Y29tcGFyZVRvRG91Ymxl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKwogMjAxOC0wNS0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNwZWVkIHVwIEFic3RyYWN0SW50ZXJwcmV0ZXI6OmV4ZWN1dGVFZGdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDQ2YzJhNmMuLjVmYWQw
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTIw
OCwyMSArMjA4LDI2IEBAIHN0ZDo6b3B0aW9uYWw8dWludDhfdD4gSlNCaWdJbnQ6OnNpbmdsZURp
Z2l0VmFsdWVGb3JTdHJpbmcoKQogICAgIHJldHVybiB7IH07CiB9CiAKLUpTQmlnSW50KiBKU0Jp
Z0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgU3RyaW5nVmlldyBzKQorSlNCaWdJbnQq
IEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBTdHJpbmdWaWV3IHMsIEVycm9y
UGFyc2VNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiBwYXJzZUludChzdGF0ZSwgcy5jaGFyYWN0ZXJzOCgpLCBzLmxlbmd0aCgpKTsKLSAgICBy
ZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMuY2hhcmFjdGVyczE2KCksIHMubGVuZ3RoKCkpOworICAg
ICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
cGFyc2VyTW9kZSk7CisgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCBzLmNoYXJhY3RlcnMxNigp
LCBzLmxlbmd0aCgpLCBwYXJzZXJNb2RlKTsKIH0KIAotSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJz
ZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIFN0cmluZ1ZpZXcgcywgdWludDhfdCByYWRp
eCkKK0pTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZt
LCBTdHJpbmdWaWV3IHMsIHVpbnQ4X3QgcmFkaXgsIEVycm9yUGFyc2VNb2RlIHBhcnNlck1vZGUp
CiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwg
dm0sIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgMCwgcmFkaXgsIGZhbHNlKTsKLSAgICBy
ZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNoYXJhY3RlcnMxNigpLCBzLmxlbmd0aCgpLCAw
LCByYWRpeCwgZmFsc2UpOworICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBzLmNo
YXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIDAsIHJhZGl4LCBwYXJzZXJNb2RlLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgcy5jaGFyYWN0ZXJzMTYoKSwgcy5sZW5ndGgo
KSwgMCwgcmFkaXgsIHBhcnNlck1vZGUsIGZhbHNlKTsKIH0KIAotU3RyaW5nIEpTQmlnSW50Ojp0
b1N0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCBpbnQgcmFkaXgpCitKU0JpZ0ludCogSlNCaWdJbnQ6
OnN0cmluZ1RvQmlnSW50KEV4ZWNTdGF0ZSogc3RhdGUsIFN0cmluZ1ZpZXcgcykKK3sKKyAgICBy
ZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHMsIEVycm9yUGFyc2VNb2RlOjpJZ25vcmVFeGNlcHRpb25z
KTsKK30KKworU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZyhFeGVjU3RhdGUmIHN0YXRlLCB1bnNp
Z25lZCByYWRpeCkKIHsKICAgICBpZiAodGhpcy0+aXNaZXJvKCkpCiAgICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAoJzAnKTsKQEAg
LTY5OSwyNCArNzA0LDI0IEBAIGlubGluZSBzaXplX3QgSlNCaWdJbnQ6Om9mZnNldE9mRGF0YSgp
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6
cGFyc2VJbnQoRXhlY1N0YXRlKiBzdGF0ZSwgQ2hhclR5cGUqICBkYXRhLCBpbnQgbGVuZ3RoKQor
SlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBDaGFyVHlwZSog
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRXJyb3JQYXJzZU1vZGUgZXJyb3JQYXJzZU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAKLSAgICBpbnQgcCA9IDA7CisgICAgdW5zaWdu
ZWQgcCA9IDA7CiAgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFb
cF0pKQogICAgICAgICArK3A7CiAKICAgICAvLyBDaGVjayBSYWRpeCBmcm9tIGZyaXN0IGNoYXJh
Y3RlcnMKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHApICsgMSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsZW5ndGgpICYmIGRhdGFbcF0gPT0gJzAnKSB7CiAgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAnYicpKQotICAgICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMiwgZmFsc2UpOwor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsg
MiwgMiwgZXJyb3JQYXJzZU1vZGUsIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKGRhdGFbcCArIDFdLCAneCcpKQotICAgICAgICAgICAgcmV0
dXJuIHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0YSwgbGVuZ3RoLCBwICsgMiwgMTYsIGZhbHNlKTsK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzdGF0ZSwgdm0sIGRhdGEsIGxlbmd0aCwgcCAr
IDIsIDE2LCBlcnJvclBhcnNlTW9kZSwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoZGF0YVtwICsgMV0sICdvJykpCi0gICAgICAgICAgICBy
ZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgsIHAgKyAyLCA4LCBmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RhdGUsIHZtLCBkYXRhLCBsZW5ndGgsIHAg
KyAyLCA4LCBlcnJvclBhcnNlTW9kZSwgZmFsc2UpOwogICAgIH0KIAogICAgIGJvb2wgc2lnbiA9
IGZhbHNlOwpAQCAtNzI5LDcgKzczNCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgQ2hhclR5cGUqICBkYXRhLCBpbnQgbGVuZ3RoKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNlSW50KHN0YXRlLCB2bSwgZGF0
YSwgbGVuZ3RoLCBwLCAxMCk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IHBhcnNlSW50KHN0YXRl
LCB2bSwgZGF0YSwgbGVuZ3RoLCBwLCAxMCwgZXJyb3JQYXJzZU1vZGUpOwogCiAgICAgaWYgKHJl
c3VsdCAmJiAhcmVzdWx0LT5pc1plcm8oKSkKICAgICAgICAgcmVzdWx0LT5zZXRTaWduKHNpZ24p
OwpAQCAtNzM4LDE2ICs3NDMsMTcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVj
U3RhdGUqIHN0YXRlLCBDaGFyVHlwZSogIGRhdGEsIGludCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KLUpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQoRXhlY1N0
YXRlKiBzdGF0ZSwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0
SW5kZXgsIGludCByYWRpeCwgYm9vbCBhbGxvd0VtcHR5U3RyaW5nKQorSlNCaWdJbnQqIEpTQmln
SW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIENoYXJUeXBlKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHJhZGl4LCBFcnJv
clBhcnNlTW9kZSBlcnJvclBhcnNlTW9kZSwgYm9vbCBhbGxvd0VtcHR5U3RyaW5nKQogewogICAg
IEFTU0VSVChsZW5ndGggPj0gMCk7Ci0gICAgaW50IHAgPSBzdGFydEluZGV4OworICAgIHVuc2ln
bmVkIHAgPSBzdGFydEluZGV4OwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKCFhbGxvd0VtcHR5U3RyaW5nICYmIHN0YXJ0SW5kZXggPT0gbGVu
Z3RoKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgICAgIHRocm93Vk1FcnJvcihzdGF0
ZSwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKHN0YXRlLCAiRmFpbGVkIHRvIHBhcnNlIFN0cmlu
ZyB0byBCaWdJbnQiKSk7CisgICAgICAgIGlmIChlcnJvclBhcnNlTW9kZSA9PSBFcnJvclBhcnNl
TW9kZTo6VGhyb3dFeGNlcHRpb25zKQorICAgICAgICAgICAgdGhyb3dWTUVycm9yKHN0YXRlLCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRv
IEJpZ0ludCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC03NTcsNyAr
NzYzLDcgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBW
TSYgdm0sIENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3QKIAogICAgIGludCBlbmRJbmRleCA9IGxl
bmd0aCAtIDE7CiAgICAgLy8gUmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzCi0gICAgd2hpbGUgKGVu
ZEluZGV4ID49IHAgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbZW5kSW5kZXhdKSkKKyAgICB3aGls
ZSAoZW5kSW5kZXggPj0gc3RhdGljX2Nhc3Q8aW50PihwKSAmJiBpc1N0cldoaXRlU3BhY2UoZGF0
YVtlbmRJbmRleF0pKQogICAgICAgICAtLWVuZEluZGV4OwogCiAgICAgbGVuZ3RoID0gZW5kSW5k
ZXggKyAxOwpAQCAtNzc0LDcgKzc4MCw3IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6cGFyc2VJbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgVk0mIHZtLCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0CiAKICAg
ICByZXN1bHQtPmluaXRpYWxpemUoSW5pdGlhbGl6YXRpb25UeXBlOjpXaXRoWmVybyk7CiAKLSAg
ICBmb3IgKGludCBpID0gcDsgaSA8IGxlbmd0aDsgaSsrLCBwKyspIHsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBwOyBpIDwgbGVuZ3RoOyBpKyssIHArKykgewogICAgICAgICB1aW50MzJfdCBkaWdp
dDsKICAgICAgICAgaWYgKGRhdGFbaV0gPj0gJzAnICYmIGRhdGFbaV0gPCBsaW1pdDApCiAgICAg
ICAgICAgICBkaWdpdCA9IGRhdGFbaV0gLSAnMCc7CkBAIC03OTIsNyArNzk4LDggQEAgSlNCaWdJ
bnQqIEpTQmlnSW50OjpwYXJzZUludChFeGVjU3RhdGUqIHN0YXRlLCBWTSYgdm0sIENoYXJUeXBl
KiBkYXRhLCBpbnQgbGVuZ3QKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsK
IAogICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3Jl
YXRlU3ludGF4RXJyb3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIp
KTsKKyAgICBpZiAoZXJyb3JQYXJzZU1vZGUgPT0gRXJyb3JQYXJzZU1vZGU6OlRocm93RXhjZXB0
aW9ucykKKyAgICAgICAgdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlU3ludGF4RXJy
b3Ioc3RhdGUsICJGYWlsZWQgdG8gcGFyc2UgU3RyaW5nIHRvIEJpZ0ludCIpKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtODEzLDEwICs4MjAsMTUzIEBAIGlubGluZSB2b2lkIEpTQmln
SW50OjpzZXREaWdpdChpbnQgbiwgRGlnaXQgdmFsdWUpCiAgICAgQVNTRVJUKG4gPj0gMCAmJiBu
IDwgbGVuZ3RoKCkpOwogICAgIGRhdGFTdG9yYWdlKClbbl0gPSB2YWx1ZTsKIH0KLQogSlNPYmpl
Y3QqIEpTQmlnSW50Ojp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKGV4
ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU0JpZ0ludCo+KHRoaXMpKTsKIH0K
IAorYm9vbCBKU0JpZ0ludDo6ZXF1YWxzVG9OdW1iZXIoSlNWYWx1ZSBudW1WYWx1ZSkKK3sKKyAg
ICBBU1NFUlQobnVtVmFsdWUuaXNOdW1iZXIoKSk7CisgICAgCisgICAgaWYgKG51bVZhbHVlLmlz
SW50MzIoKSkgeworICAgICAgICBpbnQgdmFsdWUgPSBudW1WYWx1ZS5hc0ludDMyKCk7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gdGhpcy0+aXNaZXJvKCk7CisKKyAg
ICAgICAgcmV0dXJuICh0aGlzLT5sZW5ndGgoKSA9PSAxKSAmJiAodGhpcy0+c2lnbigpID09ICh2
YWx1ZSA8IDApKSAmJiAodGhpcy0+ZGlnaXQoMCkgPT0gc3RhdGljX2Nhc3Q8RGlnaXQ+KHN0ZDo6
YWJzKHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSkpKTsKKyAgICB9CisgICAgCisgICAgZG91
YmxlIHZhbHVlID0gbnVtVmFsdWUuYXNEb3VibGUoKTsKKyAgICByZXR1cm4gY29tcGFyZVRvRG91
YmxlKHRoaXMsIHZhbHVlKSA9PSBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKK30KKworSlNCaWdJ
bnQ6OkNvbXBhcmlzb25SZXN1bHQgSlNCaWdJbnQ6OmNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCog
eCwgZG91YmxlIHkpCit7CisgICAgLy8gVGhpcyBhbGdvcml0aG0gZXhwZWN0IHRoYXQgdGhlIGRv
dWJsZSBmb3JtYXQgaXMgSUVFRSA3NTQKKworICAgIHVpbnQ2NF90IGRvdWJsZUJpdHMgPSBiaXR3
aXNlX2Nhc3Q8dWludDY0X3Q+KHkpOworICAgIGludCByYXdFeHBvbmVudCA9IHN0YXRpY19jYXN0
PGludD4oZG91YmxlQml0cyA+PiA1MikgJiAweDdGRjsKKworICAgIGlmIChyYXdFeHBvbmVudCA9
PSAweDdGRikgeworICAgICAgICBpZiAoc3RkOjppc25hbih5KSkKKyAgICAgICAgICAgIHJldHVy
biBDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7CisKKyAgICAgICAgcmV0dXJuICh5ID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkgPyBDb21wYXJpc29uUmVzdWx0
OjpMZXNzVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOworICAgIH0KKworICAg
IGJvb2wgeFNpZ24gPSB4LT5zaWduKCk7CisgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMg
ZGlmZmVyZW50IGZyb20gdGhlIGRvdWJsZSdzIHNpZ24gYml0IGZvciAtMC4gVGhhdCdzCisgICAg
Ly8gaW50ZW50aW9uYWwgYmVjYXVzZSAtMCBtdXN0IGJlIHRyZWF0ZWQgbGlrZSAwLgorICAgIGJv
b2wgeVNpZ24gPSB5IDwgMDsKKyAgICBpZiAoeFNpZ24gIT0geVNpZ24pCisgICAgICAgIHJldHVy
biB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6
R3JlYXRlclRoYW47CisKKyAgICBpZiAoIXkpIHsKKyAgICAgICAgQVNTRVJUKCF4U2lnbik7Cisg
ICAgICAgIHJldHVybiB4LT5pc1plcm8oKSA/IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFsIDogQ29t
cGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgfQorCisgICAgaWYgKHgtPmlzWmVybygp
KQorICAgICAgICByZXR1cm4gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CisKKyAgICB1aW50
NjRfdCBtYW50aXNzYSA9IGRvdWJsZUJpdHMgJiAweDAwMEZGRkZGRkZGRkZGRkY7CisKKyAgICAv
LyBOb24tZmluaXRlIGRvdWJsZXMgYXJlIGhhbmRsZWQgYWJvdmUuCisgICAgQVNTRVJUKHJhd0V4
cG9uZW50ICE9IDB4N0ZGKTsKKyAgICBpbnQgZXhwb25lbnQgPSByYXdFeHBvbmVudCAtIDB4M0ZG
OworICAgIGlmIChleHBvbmVudCA8IDApIHsKKyAgICAgICAgLy8gVGhlIGFic29sdXRlIHZhbHVl
IG9mIHRoZSBkb3VibGUgaXMgbGVzcyB0aGFuIDEuIE9ubHkgMG4gaGFzIGFuCisgICAgICAgIC8v
IGFic29sdXRlIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGF0LCBidXQgd2UndmUgYWxyZWFkeSBjb3Zl
cmVkIHRoYXQgY2FzZS4KKyAgICAgICAgcmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6
TGVzc1RoYW4gOiBDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbjsKKyAgICB9CisKKyAgICBp
bnQgeExlbmd0aCA9IHgtPmxlbmd0aCgpOworICAgIERpZ2l0IHhNU0QgPSB4LT5kaWdpdCh4TGVu
Z3RoIC0gMSk7CisgICAgaW50IG1zZExlYWRpbmdaZXJvcyA9IHNpemVvZih4TVNEKSA9PSA4ICA/
IGNsejY0KHhNU0QpIDogY2x6MzIoeE1TRCk7CisKKyAgICBpbnQgeEJpdExlbmd0aCA9IHhMZW5n
dGggKiBkaWdpdEJpdHMgLSBtc2RMZWFkaW5nWmVyb3M7CisgICAgaW50IHlCaXRMZW5ndGggPSBl
eHBvbmVudCArIDE7CisgICAgaWYgKHhCaXRMZW5ndGggPCB5Qml0TGVuZ3RoKQorICAgICAgICBy
ZXR1cm4geFNpZ24/IENvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJl
c3VsdDo6TGVzc1RoYW47CisKKyAgICBpZiAoeEJpdExlbmd0aCA+IHlCaXRMZW5ndGgpCisgICAg
ICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNv
blJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2Uga25v
dyB0aGF0IHNpZ25zIGFuZCBiaXQgbGVuZ3RocyAoaS5lLiBwb3NpdGlvbiBvZgorICAgIC8vIHRo
ZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpbiBleHBvbmVudC1mcmVlIHJlcHJlc2VudGF0aW9uKSBh
cmUgaWRlbnRpY2FsLgorICAgIC8vIHt4fSBpcyBub3QgemVybywge3l9IGlzIGZpbml0ZSBhbmQg
bm90IGRlbm9ybWFsLgorICAgIC8vIE5vdyB3ZSB2aXJ0dWFsbHkgY29udmVydCB0aGUgZG91Ymxl
IHRvIGFuIGludGVnZXIgYnkgc2hpZnRpbmcgaXRzCisgICAgLy8gbWFudGlzc2EgYWNjb3JkaW5n
IHRvIGl0cyBleHBvbmVudCwgc28gaXQgd2lsbCBhbGlnbiB3aXRoIHRoZSBCaWdJbnQge3h9LAor
ICAgIC8vIGFuZCB0aGVuIHdlIGNvbXBhcmUgdGhlbSBiaXQgZm9yIGJpdCB1bnRpbCB3ZSBmaW5k
IGEgZGlmZmVyZW5jZSBvciB0aGUKKyAgICAvLyBsZWFzdCBzaWduaWZpY2FudCBiaXQuCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgIDwtLS0tLSA1MiAtLS0tLS0+IDwtLSB2aXJ0dWFsIHRyYWls
aW5nIHplcm9lcyAtLT4KKyAgICAvLyB5IC8gbWFudGlzc2E6ICAgICAxeXl5eXl5eXl5eXl5eXl5
eXkgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorICAgIC8vIHggLyBkaWdpdHM6ICAg
IDAwMDF4eHh4IHh4eHh4eHh4IHh4eHh4eHh4IC4uLgorICAgIC8vICAgICAgICAgICAgICAgICAg
ICA8LS0+ICAgICAgICAgIDwtLS0tLS0+CisgICAgLy8gICAgICAgICAgICAgIG1zZFRvcEJpdCAg
ICAgICAgIGRpZ2l0Qml0cworICAgIC8vCisgICAgbWFudGlzc2EgfD0gMHgwMDEwMDAwMDAwMDAw
MDAwOworICAgIGNvbnN0IGludCBtYW50aXNzYVRvcEJpdCA9IDUyOyAvLyAwLWluZGV4ZWQuCisK
KyAgICAvLyAwLWluZGV4ZWQgcG9zaXRpb24gb2Yge3h9J3MgbW9zdCBzaWduaWZpY2FudCBiaXQg
d2l0aGluIHRoZSB7bXNkfS4KKyAgICBpbnQgbXNkVG9wQml0ID0gZGlnaXRCaXRzIC0gMSAtIG1z
ZExlYWRpbmdaZXJvczsKKyAgICBBU1NFUlQobXNkVG9wQml0ID09ICh4Qml0TGVuZ3RoIC0gMSkg
JSBkaWdpdEJpdHMpOworICAgIAorICAgIC8vIFNoaWZ0ZWQgY2h1bmsgb2Yge21hbnRpc3NhfSBm
b3IgY29tcGFyaW5nIHdpdGgge2RpZ2l0fS4KKyAgICBEaWdpdCBjb21wYXJlTWFudGlzc2E7CisK
KyAgICAvLyBOdW1iZXIgb2YgdW5wcm9jZXNzZWQgYml0cyBpbiB7bWFudGlzc2F9LiBXZSdsbCBr
ZWVwIHRoZW0gc2hpZnRlZCB0bworICAgIC8vIHRoZSBsZWZ0IChpLmUuIG1vc3Qgc2lnbmlmaWNh
bnQgcGFydCkgb2YgdGhlIHVuZGVybHlpbmcgdWludDY0X3QuCisgICAgaW50IHJlbWFpbmluZ01h
bnRpc3NhQml0cyA9IDA7CisgICAgCisgICAgLy8gRmlyc3QsIGNvbXBhcmUgdGhlIG1vc3Qgc2ln
bmlmaWNhbnQgZGlnaXQgYWdhaW5zdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgLy8gdGhlIG1hbnRp
c3NhIGFuZCB0aGVuIHdlIGFsaWduIHRoZW0uCisgICAgaWYgKG1zZFRvcEJpdCA8IG1hbnRpc3Nh
VG9wQml0KSB7CisgICAgICAgIHJlbWFpbmluZ01hbnRpc3NhQml0cyA9IChtYW50aXNzYVRvcEJp
dCAtIG1zZFRvcEJpdCk7CisgICAgICAgIGNvbXBhcmVNYW50aXNzYSA9IHN0YXRpY19jYXN0PERp
Z2l0PihtYW50aXNzYSA+PiByZW1haW5pbmdNYW50aXNzYUJpdHMpOworICAgICAgICBtYW50aXNz
YSA9IG1hbnRpc3NhIDw8ICg2NCAtIHJlbWFpbmluZ01hbnRpc3NhQml0cyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgY29tcGFyZU1hbnRpc3NhID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KG1hbnRpc3Nh
IDw8IChtc2RUb3BCaXQgLSBtYW50aXNzYVRvcEJpdCkpOworICAgICAgICBtYW50aXNzYSA9IDA7
CisgICAgfQorCisgICAgaWYgKHhNU0QgPiBjb21wYXJlTWFudGlzc2EpCisgICAgICAgIHJldHVy
biB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6
R3JlYXRlclRoYW47CisKKyAgICBpZiAoeE1TRCA8IGNvbXBhcmVNYW50aXNzYSkKKyAgICAgICAg
cmV0dXJuIHhTaWduID8gQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW4gOiBDb21wYXJpc29u
UmVzdWx0OjpMZXNzVGhhbjsKKyAgICAKKyAgICAvLyBUaGVuLCBjb21wYXJlIGFkZGl0aW9uYWwg
ZGlnaXRzIGFnYWluc3QgYW55IHJlbWFpbmluZyBtYW50aXNzYSBiaXRzLgorICAgIGZvciAoaW50
IGRpZ2l0SW5kZXggPSB4TGVuZ3RoIC0gMjsgZGlnaXRJbmRleCA+PSAwOyBkaWdpdEluZGV4LS0p
IHsKKyAgICAgICAgaWYgKHJlbWFpbmluZ01hbnRpc3NhQml0cyA+IDApIHsKKyAgICAgICAgICAg
IHJlbWFpbmluZ01hbnRpc3NhQml0cyAtPSBkaWdpdEJpdHM7CisgICAgICAgICAgICBpZiAoc2l6
ZW9mKG1hbnRpc3NhKSAhPSBzaXplb2YoeE1TRCkpIHsKKyAgICAgICAgICAgICAgICBjb21wYXJl
TWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlzc2EgPj4gKDY0IC0gZGlnaXRCaXRz
KSk7CisgICAgICAgICAgICAgICAgLy8gIiYgNjMiIHRvIGFwcGVhc2UgY29tcGlsZXJzLiBkaWdp
dEJpdHMgaXMgMzIgaGVyZSBhbnl3YXkuCisgICAgICAgICAgICAgICAgbWFudGlzc2EgPSBtYW50
aXNzYSA8PCAoZGlnaXRCaXRzICYgNjMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBjb21wYXJlTWFudGlzc2EgPSBzdGF0aWNfY2FzdDxEaWdpdD4obWFudGlzc2EpOwor
ICAgICAgICAgICAgICAgIG1hbnRpc3NhID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjb21wYXJlTWFudGlzc2EgPSAwOworCisgICAgICAgIERpZ2l0IGRp
Z2l0ID0geC0+ZGlnaXQoZGlnaXRJbmRleCk7CisgICAgICAgIGlmIChkaWdpdCA+IGNvbXBhcmVN
YW50aXNzYSkKKyAgICAgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlzb25SZXN1bHQ6Okxl
c3NUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6R3JlYXRlclRoYW47CisgICAgICAgIGlmIChkaWdp
dCA8IGNvbXBhcmVNYW50aXNzYSkKKyAgICAgICAgICAgIHJldHVybiB4U2lnbiA/IENvbXBhcmlz
b25SZXN1bHQ6OkdyZWF0ZXJUaGFuIDogQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW47CisgICAg
fQorCisgICAgLy8gSW50ZWdlciBwYXJ0cyBhcmUgZXF1YWw7IGNoZWNrIHdoZXRoZXIge3l9IGhh
cyBhIGZyYWN0aW9uYWwgcGFydC4KKyAgICBpZiAobWFudGlzc2EpIHsKKyAgICAgICAgQVNTRVJU
KHJlbWFpbmluZ01hbnRpc3NhQml0cyA+IDApOworICAgICAgICByZXR1cm4geFNpZ24gPyBDb21w
YXJpc29uUmVzdWx0OjpHcmVhdGVyVGhhbiA6IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOwor
ICAgIH0KKworICAgIHJldHVybiBDb21wYXJpc29uUmVzdWx0OjpFcXVhbDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRl
eCAyOThjMzQ4Li5iOWJmNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKQEAgLTczLDEzICs3MywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMZW5ndGgoaW50
IGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQogICAgIGludCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQogCi0gICAgc3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVj
U3RhdGUqLCBWTSYsIFN0cmluZ1ZpZXcsIHVpbnQ4X3QgcmFkaXgpOwotICAgIHN0YXRpYyBKU0Jp
Z0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgU3RyaW5nVmlldyk7CisgICAgZW51bSBFcnJvclBh
cnNlTW9kZSB7CisgICAgICAgIFRocm93RXhjZXB0aW9ucywKKyAgICAgICAgSWdub3JlRXhjZXB0
aW9ucworICAgIH07CisKKyAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50KEV4ZWNTdGF0ZSos
IFZNJiwgU3RyaW5nVmlldywgdWludDhfdCByYWRpeCwgRXJyb3JQYXJzZU1vZGUgPSBUaHJvd0V4
Y2VwdGlvbnMpOworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgU3Ry
aW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBUaHJvd0V4Y2VwdGlvbnMpOworICAgIHN0YXRpYyBK
U0JpZ0ludCogc3RyaW5nVG9CaWdJbnQoRXhlY1N0YXRlKiwgU3RyaW5nVmlldyk7CiAKICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+IHNpbmdsZURpZ2l0VmFsdWVGb3JTdHJpbmcoKTsKLSAgICBT
dHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlJiwgaW50IHJhZGl4KTsKKyAgICBTdHJpbmcgdG9TdHJp
bmcoRXhlY1N0YXRlJiwgdW5zaWduZWQgcmFkaXgpOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGVxdWFscyhKU0JpZ0ludCosIEpTQmlnSW50Kik7CisgICAgYm9vbCBl
cXVhbHNUb051bWJlcihKU1ZhbHVlKTsKIAogICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4
ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0OwogICAgIGRv
dWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTg3LDYgKzk0LDE0IEBAIHB1Ymxp
YzoKICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKICAgICAKIHByaXZhdGU6CisKKyAgICBlbnVtIENvbXBhcmlzb25SZXN1bHQgeworICAg
ICAgICBFcXVhbCwKKyAgICAgICAgVW5kZWZpbmVkLAorICAgICAgICBHcmVhdGVyVGhhbiwKKyAg
ICAgICAgTGVzc1RoYW4KKyAgICB9OworCiAgICAgdXNpbmcgRGlnaXQgPSB1aW50cHRyX3Q7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgaW50IGRpZ2l0Qml0cyA9IHNpemVvZihEaWdpdCkgKiBiaXRzUGVy
Qnl0ZTsKQEAgLTExNiwxMSArMTMxLDEzIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzWmVybygp
OwogCisgICAgQ29tcGFyaXNvblJlc3VsdCBzdGF0aWMgY29tcGFyZVRvRG91YmxlKEpTQmlnSW50
KiB4LCBkb3VibGUgeSk7CisKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAg
c3RhdGljIEpTQmlnSW50KiBwYXJzZUludChFeGVjU3RhdGUqLCBDaGFyVHlwZSogIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgQ2hh
clR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVycm9yUGFyc2VNb2RlKTsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBzdGF0aWMgSlNCaWdJbnQqIHBhcnNlSW50
KEV4ZWNTdGF0ZSosIFZNJiwgQ2hhclR5cGUqIGRhdGEsIGludCBsZW5ndGgsIGludCBzdGFydElu
ZGV4LCBpbnQgcmFkaXgsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpOworICAgIHN0YXRp
YyBKU0JpZ0ludCogcGFyc2VJbnQoRXhlY1N0YXRlKiwgVk0mLCBDaGFyVHlwZSogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCByYWRpeCwgRXJyb3JQ
YXJzZU1vZGUsIGJvb2wgYWxsb3dFbXB0eVN0cmluZyA9IHRydWUpOwogCiAgICAgc3RhdGljIEpT
QmlnSW50KiBhbGxvY2F0ZUZvcihFeGVjU3RhdGUqLCBWTSYsIGludCByYWRpeCwgaW50IGNoYXJj
b3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCmluZGV4IGQwZDM3OTkuLjIzZDNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtOTgxLDYgKzk4MSwyNiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYx
KS0+ZXF1YWwoZXhlYywgYXNTdHJpbmcodjIpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh2
MS5pc0JpZ0ludCgpICYmIHMyKSB7CisgICAgICAgICAgICBKU0JpZ0ludCogbiA9IEpTQmlnSW50
OjpzdHJpbmdUb0JpZ0ludChleGVjLCBhc1N0cmluZyh2MiktPnZhbHVlKGV4ZWMpKTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgIGlm
ICghbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHYyID0gSlNWYWx1ZShuKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHMxICYmIHYyLmlzQmlnSW50KCkpIHsKKyAgICAgICAgICAgIEpTQmln
SW50KiBuID0gSlNCaWdJbnQ6OnN0cmluZ1RvQmlnSW50KGV4ZWMsIGFzU3RyaW5nKHYxKS0+dmFs
dWUoZXhlYykpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OworICAgICAgICAgICAgaWYgKCFuKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKG4pOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAodjEuaXNVbmRlZmluZWRPck51bGwoKSkg
ewogICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMDM0LDEwICsxMDU0LDI3IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
MSwgSlNWCiAgICAgICAgIGlmICh2MS5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICAgaWYgKHYy
LmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4o
djEuYXNCb29sZWFuKCkpID09IHYyLmFzTnVtYmVyKCk7CisgICAgICAgICAgICBlbHNlIGlmICh2
Mi5pc0JpZ0ludCgpKSB7CisgICAgICAgICAgICAgICAgdjEgPSBKU1ZhbHVlKHYxLnRvTnVtYmVy
KGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIGlmICh2Mi5pc0Jvb2xlYW4oKSkgewogICAgICAgICAgICAgaWYgKHYxLmlzTnVt
YmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nh
c3Q8ZG91YmxlPih2Mi5hc0Jvb2xlYW4oKSk7CisgICAgICAgICAgICBlbHNlIGlmICh2MS5pc0Jp
Z0ludCgpKSB7CisgICAgICAgICAgICAgICAgdjIgPSBKU1ZhbHVlKHYyLnRvTnVtYmVyKGV4ZWMp
KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKHYxLmlzQmlnSW50KCkgJiYgdjIuaXNCaWdJbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6ZXF1YWxzKGFzQmlnSW50KHYxKSwgYXNCaWdJbnQo
djIpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2MS5pc0JpZ0ludCgpICYmIHYyLmlzTnVtYmVy
KCkpCisgICAgICAgICAgICByZXR1cm4gYXNCaWdJbnQodjEpLT5lcXVhbHNUb051bWJlcih2Mik7
CisKKyAgICAgICAgaWYgKHYyLmlzQmlnSW50KCkgJiYgdjEuaXNOdW1iZXIoKSkKKyAgICAgICAg
ICAgIHJldHVybiBhc0JpZ0ludCh2MiktPmVxdWFsc1RvTnVtYmVyKHYxKTsKIAogICAgICAgICBy
ZXR1cm4gdjEgPT0gdjI7CiAgICAgfSB3aGlsZSAodHJ1ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>