<?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>25293</bug_id>
          
          <creation_ts>2009-04-20 06:55:52 -0700</creation_ts>
          <short_desc>We should implement outline-radius:</short_desc>
          <delta_ts>2014-04-20 14:23:58 -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>CSS</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20807</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexander H">hmurr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>aldomx</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>intemperie</cc>
    
    <cc>jerome</cc>
    
    <cc>josh</cc>
    
    <cc>macpherson</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>moz</cc>
    
    <cc>newsletters</cc>
    
    <cc>peter</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118099</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander H">hmurr</who>
    <bug_when>2009-04-20 06:55:52 -0700</bug_when>
    <thetext>We should implement outline-radius:
All the blocks with border-radius currently have boxed outlines without rounded corners</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153805</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-10-09 16:30:01 -0700</bug_when>
    <thetext>*** Bug 29988 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153875</commentid>
    <comment_count>2</comment_count>
    <who name="Alberto Calvo">intemperie</who>
    <bug_when>2009-10-10 07:50:30 -0700</bug_when>
    <thetext>I agree. My alternative suggestion is to make the outline follow it&apos;s container&apos;s border-radius. That will save us a property to add and it makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164261</commentid>
    <comment_count>3</comment_count>
      <attachid>43366</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-17 10:09:50 -0800</bug_when>
    <thetext>Created attachment 43366
draft implementation

This is my very first incursion into the inner parts of WebCore, so please be picky, and let me know of any bad decisions regarding naming, implementation, code reuse, etc. I am not sure we would want to call the property outline-radius, for instance. Should we use the &apos;-webkit-&apos; prefix for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164263</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-11-17 10:15:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I agree. My alternative suggestion is to make the outline follow it&apos;s
&gt; container&apos;s border-radius. That will save us a property to add and it makes
&gt; sense.

This makes sense to me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164803</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:16:15 -0800</bug_when>
    <thetext>Who&apos;s going to review this? Hyatt, Mitz, Simon, Beth?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164827</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-18 16:54:37 -0800</bug_when>
    <thetext>Can you give a link to the CSS spec for outline-radius?
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165876</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-23 10:36:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Can you give a link to the CSS spec for outline-radius?
&gt; Thanks.

No such thing, AFAIK. This is currently only implemented in Mozilla, with the -moz- prefix, which is why I was asking about using the -webkit- prefix. Looks like they are there for a long time now:

http://lists.w3.org/Archives/Public/www-style/2000Apr/0033.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165877</commentid>
    <comment_count>8</comment_count>
      <attachid>43719</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-23 10:37:51 -0800</bug_when>
    <thetext>Created attachment 43719
second draft

Second patch, actually drawing the rounded corners correctly, and also for inline elements, in addition to block ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165880</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-23 10:42:52 -0800</bug_when>
    <thetext>Why do we want to implement something that isn&apos;t even proposed for CSS3? Is there a compelling use case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166467</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-25 08:30:50 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Why do we want to implement something that isn&apos;t even proposed for CSS3? Is
&gt; there a compelling use case?

The reason I started working on it was that a client wanted to use rounded outlines to mean &apos;this link is selected&apos; in a webkit browser of theirs. I see value in having rounded corners for outlines, but I am not able to identify this as something authors are really missing (perhaps because outlines are not used too much either).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166648</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-25 22:38:51 -0800</bug_when>
    <thetext>One could fake this using SVG or even an absolute position div with a border-radius, although having webkit-outline-radius is clearly a slicker solution.  Without anyone really asking for this I&apos;m not sure we should bother with the complexity though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166668</commentid>
    <comment_count>12</comment_count>
    <who name="Alberto Calvo">intemperie</who>
    <bug_when>2009-11-26 00:41:00 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; One could fake this using SVG or even an absolute position div with a
&gt; border-radius, although having webkit-outline-radius is clearly a slicker
&gt; solution.  Without anyone really asking for this I&apos;m not sure we should bother
&gt; with the complexity though.

One of the main uses of outline is for accessibility. I think it automatically discards using SVG...

On the other hand, the div proposal is what seems unnecessary for me. Why adding additional markup for faking something that should be rendered by the browser? I think only few ppl thinked about it when all the border-radius fever started. 
I know maybe it&apos;s a pure cosmetique issue, but aren&apos;t border-radius, box-shadow, etc... the same? I think the main problem is that not much people knows how to use outline properly, and even it&apos;s a common (bad) practice to remove it, but should that move us away from doing things right? I don&apos;t think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166710</commentid>
    <comment_count>13</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-11-26 06:02:58 -0800</bug_when>
    <thetext>Hyatt and I have talked about something like this in the past.  Styled form controls (like our styled pop up button) with border-radius, look pretty terrible with the default focus ring.  I think a lot of peole making custom controls end up having to turn off the outline all together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166750</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-11-26 10:10:03 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Hyatt and I have talked about something like this in the past.  Styled form
&gt; controls (like our styled pop up button) with border-radius, look pretty
&gt; terrible with the default focus ring.  I think a lot of peole making custom
&gt; controls end up having to turn off the outline all together.

This case can be addressed (simply) by following the suggestion in comment #2. If we make that work even for inlines that specify border-radius (even if they don’t have a border), then I think it will also address the use case from comment #10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166789</commentid>
    <comment_count>15</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-26 14:01:11 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; This case can be addressed (simply) by following the suggestion in comment #2.
&gt; If we make that work even for inlines that specify border-radius (even if they
&gt; don’t have a border), then I think it will also address the use case from
&gt; comment #10.

I believe it would, indeed. If there&apos;s a consensus, I can try to implement that, instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166951</commentid>
    <comment_count>16</comment_count>
      <attachid>43719</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 14:49:42 -0800</bug_when>
    <thetext>Comment on attachment 43719
second draft

Rejecting patch 43719 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 500 characters of output:
ing/style/RenderStyle.cpp
Done processing WebCore/css/CSSParser.h
Done processing WebCore/css/CSSParser.cpp
Done processing WebCore/rendering/RenderBlock.cpp
WebCore/rendering/style/RenderStyle.h:761:  More than one command on the same line  [whitespace/newline] [4]
Done processing WebCore/rendering/style/RenderStyle.h
Done processing WebCore/rendering/style/OutlineValue.h
Done processing WebCore/rendering/RenderObject.cpp
Done processing WebCore/rendering/RenderInline.cpp
Total errors found: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166961</commentid>
    <comment_count>17</comment_count>
      <attachid>43719</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 15:15:31 -0800</bug_when>
    <thetext>Comment on attachment 43719
second draft

Sorry for the bug spam.  The style-queue is almost done and it&apos;s a little too comment-happy at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167348</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:36:16 -0800</bug_when>
    <thetext>Attachment 43719 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:4686:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/css/CSSStyleSelector.cpp:4688:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/css/CSSStyleSelector.cpp:4693:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Done processing WebCore/css/CSSStyleSelector.cpp
Done processing WebCore/rendering/style/RenderStyle.cpp
Done processing WebCore/css/CSSParser.h
Done processing WebCore/css/CSSParser.cpp
Done processing WebCore/rendering/RenderBlock.cpp
WebCore/rendering/style/RenderStyle.h:761:  More than one command on the same line  [whitespace/newline] [4]
Done processing WebCore/rendering/style/RenderStyle.h
Done processing WebCore/rendering/style/OutlineValue.h
Done processing WebCore/rendering/RenderObject.cpp
Done processing WebCore/rendering/RenderInline.cpp
Total errors found: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175183</commentid>
    <comment_count>19</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 01:11:51 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; This case can be addressed (simply) by following the suggestion in comment #2.
&gt; &gt; If we make that work even for inlines that specify border-radius (even if they
&gt; &gt; don’t have a border), then I think it will also address the use case from
&gt; &gt; comment #10.
&gt; 
&gt; I believe it would, indeed. If there&apos;s a consensus, I can try to implement
&gt; that, instead.

I think that sounds like the right thing to do. Therefore marking current patch r-, in favor of the alternate approach to make the outline follow border-radius.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175186</commentid>
    <comment_count>20</comment_count>
      <attachid>43719</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 01:16:03 -0800</bug_when>
    <thetext>Comment on attachment 43719
second draft

r- per previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190739</commentid>
    <comment_count>21</comment_count>
    <who name="Alberto Calvo">intemperie</who>
    <bug_when>2010-02-16 13:58:43 -0800</bug_when>
    <thetext>Any news about this one? I&apos;d love to see this solved :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205642</commentid>
    <comment_count>22</comment_count>
    <who name="Pat">micropat+bugzilla</who>
    <bug_when>2010-03-29 13:32:45 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Any news about this one? I&apos;d love to see this solved :)

Same here. If it makes geometrical sense, I would love to see outline radius adjusted per border-radius as proposed in comment #21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205645</commentid>
    <comment_count>23</comment_count>
    <who name="Pat">micropat+bugzilla</who>
    <bug_when>2010-03-29 13:34:41 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; Any news about this one? I&apos;d love to see this solved :)
&gt; 
&gt; Same here. If it makes geometrical sense, I would love to see outline radius
&gt; adjusted per border-radius as proposed in comment #21

* comment #2 !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237656</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Buckley">newsletters</who>
    <bug_when>2010-06-13 18:44:02 -0700</bug_when>
    <thetext>IMHO if this is implemented it would be good if what Firefox has been doing since 1.5 was followed see https://developer.mozilla.org/en/CSS/-moz-outline-radius</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276159</commentid>
    <comment_count>25</comment_count>
    <who name="j.j.">moz</who>
    <bug_when>2010-09-08 16:24:06 -0700</bug_when>
    <thetext>https://bugzilla.mozilla.org/show_bug.cgi?id=593717
(In reply to comment #24)
&gt; IMHO if this is implemented it would be good if what Firefox has been doing

https://bugzilla.mozilla.org/show_bug.cgi?id=593717
&quot;remove -moz-outline-radius and make outlines follow border-radius&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565852</commentid>
    <comment_count>26</comment_count>
    <who name="Aldonio">aldomx</who>
    <bug_when>2012-02-27 11:31:46 -0800</bug_when>
    <thetext>Sorry for the spam, I was just trying to add myself to the CC List to get notified about the progress of this bug, but I couldn&apos;t find a save button (like mozilla&apos;s bug tracker), a subscribe button or something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579082</commentid>
    <comment_count>27</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-14 20:38:53 -0700</bug_when>
    <thetext>Marking resolved / wontfix because I believe this bug is obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002227</commentid>
    <comment_count>28</comment_count>
    <who name="Josh Davenport">josh</who>
    <bug_when>2014-04-19 10:59:44 -0700</bug_when>
    <thetext>This bug still occurs, is it really obsolete?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002303</commentid>
    <comment_count>29</comment_count>
    <who name="j.j.">moz</who>
    <bug_when>2014-04-19 17:05:15 -0700</bug_when>
    <thetext>&gt; This bug still occurs, is it really obsolete?

it is obsolete, see comment 19. 
The real bug is: &quot;outline should follow border-radius&quot;.
I don&apos;t see this bug filed, but it&apos;s basically bug 20807</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43366</attachid>
            <date>2009-11-17 10:09:50 -0800</date>
            <delta_ts>2009-11-23 10:37:51 -0800</delta_ts>
            <desc>draft implementation</desc>
            <filename>0001-outline-radius-support.patch</filename>
            <type>text/plain</type>
            <size>23564</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSAwNWNmMGVhMGFjYmZhYWZjYTRkNTMwNzcxZDljZjFlYjQ0ZDg2NTJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IE1vbiwgMTYgTm92IDIwMDkgMTg6NTQ6MzIgLTAyMDAK
U3ViamVjdDogW1BBVENIXSBvdXRsaW5lLXJhZGl1cyBzdXBwb3J0CgotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysKIExheW91
dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVzLmh0bWwgICAgICAgICAgIHwgICAgNyArKwog
Li4uL2d0ay9mYXN0L2Nzcy9vdXRsaW5lLXJhZGl1cy1leHBlY3RlZC50eHQgICAgICAgfCAgIDE1
ICsrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA0NyArKysrKysrKysrKysrCiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysrKysrKy0tCiBXZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlOYW1lcy5pbiAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsrCiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgNzIgKysrKysrKysr
KysrKysrKysrKysKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgICAgICAg
ICAgICAgIHwgICAxNSArKysrLQogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVl
LmggICAgICAgICAgICAgfCAgIDE4ICsrKysrCiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAgICAgICAgICAgICB8ICAgMzAgKysrKysrLS0KIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmggICAgICAgICAgICAgIHwgICAyNiArKysrKysrCiAxMiBmaWxl
cyBjaGFuZ2VkLCAyODAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nzcy9vdXRsaW5lLXJh
ZGl1cy1leHBlY3RlZC50eHQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTk5YWRjMi4uZmIwYzljYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE3IEBACiAyMDA5LTExLTE3ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5v
cm9uaGFAY29sbGFib3JhLmNvLnVrPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBvdXRsaW5lLXJhZGl1cyBpcyByZXNwZWN0ZWQuCisK
KyAgICAgICAgV2Ugc2hvdWxkIGltcGxlbWVudCBvdXRsaW5lLXJhZGl1czoKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MjkzCisKKyAgICAgICAgKiBm
YXN0L2Nzcy9vdXRsaW5lLXJhZGl1cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKworMjAwOS0x
MS0xNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5j
by51az4KKwogICAgICAgICBBY3R1YWxseSBza2lwIHRoZSBpbnNwZWN0b3IgY29uc29sZSB0ZXN0
cyB3aGlsZSB0aGUgcHJvYmxlbQogICAgICAgICBkaXNjdXNzZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyIGlzCiAgICAgICAgIGZpeGVkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTdmNDYzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL291dGxpbmUtcmFkaXVzLmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxib2R5IGlk
PSJib2R5Ij4KKzxkaXYgc3R5bGU9Im1hcmdpbjogMjBweDsgb3V0bGluZTogZ3JlZW4gZGFzaGVk
IDEwcHg7IG91dGxpbmUtcmFkaXVzOiAxMHB4OyI+Cis8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6
Ym9sZDsiPjxwcmU+WW91IHNob3VsZCBzZWUgYSBkYXNoZWQgb3V0bGluZSB3aXRoIHJvdW5kIGNv
cm5lcnMgYXJvdW5kIHRoaXMgdGV4dC48L3ByZT48L3NwYW4+Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nzcy9vdXRs
aW5lLXJhZGl1cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9j
c3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmJlZWNhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwy
MCkgc2l6ZSA3ODR4NTYwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjAsMCkgc2l6ZSA3
NDR4MTgKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3NDR4
MAorICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3NDR4MTgKKyAgICAgICAg
ICBSZW5kZXJCbG9jayB7UFJFfSBhdCAoMCwwKSBzaXplIDc0NHgxOAorICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTQ0eDE4CisgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDU0NDogIllvdSBzaG91bGQgc2VlIGEgZGFzaGVkIG91dGxpbmUg
d2l0aCByb3VuZCBjb3JuZXJzIGFyb3VuZCB0aGlzIHRleHQuIgorICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwzMSkgc2l6ZSA3NDR4MAorICAgICAgICAgIFJlbmRlcklubGlu
ZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNTY1ZWU2MS4uNWY2N2Y4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAwOS0x
MS0xNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5j
by51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgbmV3IENTUyBwcm9wZXJ0aWVzIHRvIHByb3ZpZGUgb3V0bGluZS1yYWRpdXMgaW4g
YSB3YXkKKyAgICAgICAgc2ltaWxhciB0byBib3JkZXItcmFkaXVzLCBhbmQgYXBwbHkgdGhlbSB3
aGVuIHBhaW50aW5nIHRoZSBvdXRsaW5lLgorCisgICAgICAgIFdlIHNob3VsZCBpbXBsZW1lbnQg
b3V0bGluZS1yYWRpdXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNTI5MworCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL291dGxpbmUtcmFkaXVzLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VS
YWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlT3V0bGluZVJhZGl1cyk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmlu
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRPYmpl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok91dGxpbmVWYWx1ZTo6aGFzT3V0bGluZVJhZGl1cyk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhZGlp
Rm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlG
b3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRPdXRsaW5lUmFkaWlG
b3JSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpvdXRsaW5lVG9wTGVmdFJhZGl1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6b3V0bGluZVRvcFJpZ2h0UmFkaXVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpvdXRsaW5lQm90dG9tTGVmdFJhZGl1cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6b3V0bGluZUJvdHRvbVJpZ2h0UmFk
aXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpoYXNPdXRsaW5lUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpyZXNldE91dGxpbmVSYWRpdXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnJlc2V0T3V0bGluZVRvcExlZnRS
YWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnJlc2V0T3V0bGluZVRv
cFJpZ2h0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpyZXNldE91
dGxpbmVCb3R0b21MZWZ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpyZXNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0T3V0bGluZVRvcExlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5oZXJpdGVkRmxhZ3M6OnNldE91dGxpbmVUb3BSaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0T3V0bGluZUJvdHRvbUxlZnRSYWRpdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0T3V0bGluZVJhZGl1cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aW5pdGlhbE91dGxpbmVSYWRpdXMpOgor
CiAyMDA5LTExLTE3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDg3OGQ2
MWMuLjY4ZDAxMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29sbGFib3JhIEx0
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTE2OCw3ICsxMTY5LDExIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1
czoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IHsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmVUb3BSaWdodFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVRv
cExlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVCb3R0b21MZWZ0UmFkaXVz
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXM6IHsKICAgICAg
ICAgaWYgKG51bSAhPSAxICYmIG51bSAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3Ry
aWN0KTsKQEAgLTE2MTIsNiArMTYxNyw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKICAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKICAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU91dGxpbmVSYWRpdXM6CisgICAgICAgIHJldHVybiBwYXJzZU91dGxpbmVS
YWRpdXMocHJvcElkLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xv
cjoKICAgICAgICAgLy8gPGNvbG9yPnsxLDR9IHwgaW5oZXJpdAogICAgIHsKQEAgLTQwNjMsMTMg
KzQwNzAsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUJvcmRlclJhZGlpKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcmFkaWlbNF0pCiAgICAgcmFkaWlbM10gPSByYWRpaVsxXTsKIH0KIAotYm9v
bCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaXVzKGludCBwcm9wSWQsIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcmFkaWlbMl1bNF0pCiB7CiAgICAgdW5zaWduZWQgbnVtID0gbV92YWx1ZUxp
c3QtPnNpemUoKTsKLSAgICBpZiAobnVtID4gOSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpaVsyXVs0XTsKIAogICAgIHVuc2lnbmVk
IGluZGV4QWZ0ZXJTbGFzaCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bTsg
KytpKSB7CkBAIC00MTEzLDYgKzQxMTYsMTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVy
UmFkaXVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIH0gZWxzZQogICAgICAgICBj
b21wbGV0ZUJvcmRlclJhZGlpKHJhZGlpWzFdKTsKIAorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgaWYgKG1fdmFsdWVMaXN0LT5zaXplKCkgPiA5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzJdWzRdOworCisg
ICAgaWYgKCFwYXJzZVJhZGl1cyhwcm9wSWQsIHJhZGlpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKFBhaXI6OmNyZWF0ZShyYWRpaVswXVswXS5yZWxlYXNlKCks
IHJhZGlpWzFdWzBdLnJlbGVhc2UoKSkpLCBpbXBvcnRhbnQpOwogICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
UGFpcjo6Y3JlYXRlKHJhZGlpWzBdWzFdLnJlbGVhc2UoKSwgcmFkaWlbMV1bMV0ucmVsZWFzZSgp
KSksIGltcG9ydGFudCk7CiAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21S
aWdodFJhZGl1cywgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShQYWlyOjpjcmVhdGUocmFkaWlb
MF1bMl0ucmVsZWFzZSgpLCByYWRpaVsxXVsyXS5yZWxlYXNlKCkpKSwgaW1wb3J0YW50KTsKQEAg
LTQxMjAsNiArNDEzNiwyMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZU91dGxpbmVSYWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCit7
CisgICAgaWYgKG1fdmFsdWVMaXN0LT5zaXplKCkgPiA5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzJdWzRdOworICAgIGlmICgh
cGFyc2VSYWRpdXMocHJvcElkLCByYWRpaSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3V0bGluZVRvcExlZnRSYWRpdXMsIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoUGFpcjo6Y3JlYXRlKHJhZGlpWzBdWzBdLnJlbGVhc2UoKSwgcmFkaWlb
MV1bMF0ucmVsZWFzZSgpKSksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlPdXRsaW5lVG9wUmlnaHRSYWRpdXMsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUGFpcjo6
Y3JlYXRlKHJhZGlpWzBdWzFdLnJlbGVhc2UoKSwgcmFkaWlbMV1bMV0ucmVsZWFzZSgpKSksIGlt
cG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tUmlnaHRS
YWRpdXMsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUGFpcjo6Y3JlYXRlKHJhZGlpWzBdWzJd
LnJlbGVhc2UoKSwgcmFkaWlbMV1bMl0ucmVsZWFzZSgpKSksIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShQYWlyOjpjcmVhdGUocmFkaWlbMF1bM10ucmVsZWFzZSgpLCByYWRpaVsx
XVszXS5yZWxlYXNlKCkpKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBDU1NQYXJzZXI6OnBhcnNlQ291bnRlcihpbnQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBi
b29sIGltcG9ydGFudCkKIHsKICAgICBlbnVtIHsgSUQsIFZBTCB9IHN0YXRlID0gSUQ7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CmluZGV4IGFjZTJmYmQuLjc3NzFhYjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHBhcnNlQm9yZGVyUmFkaXVzKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcGFyc2VSZWZsZWN0
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICAgICAgYm9vbCBwYXJzZU91dGxpbmVS
YWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworCisgICAgICAgIGJvb2wgcGFyc2VS
YWRpdXMoaW50IHByb3BJZCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpaVsyXVs0XSk7
CiAKICAgICAgICAgLy8gSW1hZ2UgZ2VuZXJhdG9ycwogICAgICAgICBib29sIHBhcnNlQ2FudmFz
KFJlZlB0cjxDU1NWYWx1ZT4mKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4gYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDk2OTVkMGIu
LmMwYzkwYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysr
IGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtODgsNiArODgsMTEgQEAgbWlu
LXdpZHRoCiBvcGFjaXR5CiBvcnBoYW5zCiBvdXRsaW5lCitvdXRsaW5lLWJvdHRvbS1sZWZ0LXJh
ZGl1cworb3V0bGluZS1ib3R0b20tcmlnaHQtcmFkaXVzCitvdXRsaW5lLXRvcC1sZWZ0LXJhZGl1
cworb3V0bGluZS10b3AtcmlnaHQtcmFkaXVzCitvdXRsaW5lLXJhZGl1cwogb3V0bGluZS1jb2xv
cgogb3V0bGluZS1vZmZzZXQKIG91dGxpbmUtc3R5bGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
aW5kZXggOWRlNDkyOC4uNzdmYjFkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTYs
NiArNiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDYzNiw2ICs0NjM3LDc3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lUmFkaXVzOgorICAgICAgICBpZiAoaXNJbmhlcml0KSB7
CisgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lVG9wTGVmdFJhZGl1cyhtX3BhcmVudFN0
eWxlLT5vdXRsaW5lVG9wTGVmdFJhZGl1cygpKTsKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE91
dGxpbmVUb3BSaWdodFJhZGl1cyhtX3BhcmVudFN0eWxlLT5vdXRsaW5lVG9wUmlnaHRSYWRpdXMo
KSk7CisgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lQm90dG9tTGVmdFJhZGl1cyhtX3Bh
cmVudFN0eWxlLT5vdXRsaW5lQm90dG9tTGVmdFJhZGl1cygpKTsKKyAgICAgICAgICAgIG1fc3R5
bGUtPnNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1cyhtX3BhcmVudFN0eWxlLT5vdXRsaW5lQm90
dG9tUmlnaHRSYWRpdXMoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGlzSW5pdGlhbCkgeworICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRPdXRsaW5lUmFk
aXVzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRmFsbCB0
aHJvdWdoCisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVUb3BMZWZ0UmFkaXVzOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlPdXRsaW5lVG9wUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU91dGxpbmVCb3R0b21MZWZ0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQm90
dG9tUmlnaHRSYWRpdXM6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCkgeworICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU91dGxpbmVUb3BMZWZ0UmFkaXVzLCBvdXRs
aW5lVG9wTGVmdFJhZGl1cywgT3V0bGluZVRvcExlZnRSYWRpdXMpCisgICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5T3V0bGluZVRvcFJpZ2h0UmFkaXVzLCBvdXRsaW5l
VG9wUmlnaHRSYWRpdXMsIE91dGxpbmVUb3BSaWdodFJhZGl1cykKKyAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tTGVmdFJhZGl1cywgb3V0bGlu
ZUJvdHRvbUxlZnRSYWRpdXMsIE91dGxpbmVCb3R0b21MZWZ0UmFkaXVzKQorICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU91dGxpbmVCb3R0b21SaWdodFJhZGl1cywg
b3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzLCBPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc0luaXRp
YWwpIHsKKyAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eU91dGxpbmVUb3BMZWZ0UmFkaXVzLCBPdXRsaW5lVG9wTGVmdFJhZGl1cywgT3V0bGluZVJh
ZGl1cykKKyAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eU91dGxpbmVUb3BSaWdodFJhZGl1cywgT3V0bGluZVRvcFJpZ2h0UmFkaXVzLCBPdXRsaW5l
UmFkaXVzKQorICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5T3V0bGluZUJvdHRvbUxlZnRSYWRpdXMsIE91dGxpbmVCb3R0b21MZWZ0UmFkaXVzLCBP
dXRsaW5lUmFkaXVzKQorICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVF
KENTU1Byb3BlcnR5T3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzLCBPdXRsaW5lQm90dG9tUmlnaHRS
YWRpdXMsIE91dGxpbmVSYWRpdXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgICAg
IGlmICghcGFpcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgd2lkdGggPSBw
YWlyLT5maXJzdCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7CisgICAgICAgIGludCBoZWlnaHQgPSBwYWlyLT5zZWNvbmQoKS0+Y29t
cHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsICB6b29tRmFjdG9yKTsK
KyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmICh3aWR0aCA9PSAwKQorICAgICAgICAgICAgaGVpZ2h0ID0gMDsgLy8g
TnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgorICAgICAgICBlbHNlIGlmIChoZWlnaHQgPT0gMCkK
KyAgICAgICAgICAgIHdpZHRoID0gMDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgorCisg
ICAgICAgIEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgc3dpdGNoIChpZCkg
eworICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVUb3BMZWZ0UmFkaXVzOgorICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVUb3BMZWZ0UmFkaXVzKHNpemUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVU
b3BSaWdodFJhZGl1czoKKyAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lVG9wUmln
aHRSYWRpdXMoc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1Byb3BlcnR5T3V0bGluZUJvdHRvbUxlZnRSYWRpdXM6CisgICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0T3V0bGluZUJvdHRvbUxlZnRSYWRpdXMoc2l6ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUJvdHRvbVJpZ2h0UmFk
aXVzOgorICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1
cyhzaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVJhZGl1cyhzaXplKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKG91dGxpbmVPZmZzZXQsIE91dGxpbmVPZmZzZXQpCiAgICAgICAgIG1fc3R5bGUt
PnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggYTg0MDdkMS4uNDM5MGExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtMyw2ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0
ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOSBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNzMw
LDggKzE3MzEsMjAgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBw
YWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIH0KIAogICAgIC8vIDUuIHBhaW50IG91dGxp
bmUuCi0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNP
dXRsaW5lKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKworICAgICAg
ICBpZiAoc3R5bGUoKS0+aGFzT3V0bGluZVJhZGl1cygpKSB7CisgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpOworICAgICAgICAgICAgaW50IG91dGxpbmVX
aWR0aCA9IHN0eWxlKCktPm91dGxpbmVXaWR0aCgpOworICAgICAgICAgICAgSW50U2l6ZSB0b3BM
ZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7CisgICAgICAgICAgICBJbnRS
ZWN0IG91dGxpbmVSZWN0ID0gSW50UmVjdCh0eCAtIG9mZnNldCAtIG91dGxpbmVXaWR0aCwgdHkg
LSBvZmZzZXQgLSBvdXRsaW5lV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCgpICsgMiAqIG9mZnNldCArIDIgKiBvdXRsaW5lV2lkdGgsIGhlaWdo
dCgpICsgMiAqIG9mZnNldCArIDIgKiBvdXRsaW5lV2lkdGgpOworICAgICAgICAgICAgc3R5bGUo
KS0+Z2V0T3V0bGluZVJhZGlpRm9yUmVjdChvdXRsaW5lUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5hZGRSb3VuZGVkUmVjdENsaXAob3V0bGluZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0
b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgICAgIH0KKwogICAgICAgICBwYWludE91dGxpbmUo
cGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOwor
ICAgIH0KIAogICAgIC8vIDYuIHBhaW50IGNvbnRpbnVhdGlvbiBvdXRsaW5lcy4KICAgICBpZiAo
KHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBo
YXNlQ2hpbGRPdXRsaW5lcykpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L091dGxpbmVWYWx1ZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmgK
aW5kZXggMjYyOGI3Zi4uZmI4YjU0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvT3V0bGluZVZhbHVlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZh
bHVlLmgKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQorICogQ29weXJp
Z2h0IChDKSAyMDA5IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDkg
KzQ3LDI2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwog
ICAgIH0KKworICAgIGJvb2wgaGFzT3V0bGluZVJhZGl1cygpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAodG9wTGVmdC53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAodG9wUmlnaHQud2lkdGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKGJvdHRvbUxlZnQud2lkdGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKGJvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCiAgICAgaW50
IF9vZmZzZXQ7CiAgICAgYm9vbCBfYXV0bzsKKyAgICBJbnRTaXplIHRvcExlZnQ7CisgICAgSW50
U2l6ZSB0b3BSaWdodDsKKyAgICBJbnRTaXplIGJvdHRvbUxlZnQ7CisgICAgSW50U2l6ZSBib3R0
b21SaWdodDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1OWQ0MGI0Li42YmVlMzMxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03MjcsMTQgKzcyNyw4IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJveFNoYWRvdyhTaGFkb3dEYXRhKiBzaGFkb3dEYXRhLCBib29sIGFkZCkK
ICAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cuc2V0KHNoYWRvd0RhdGEpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6
ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNp
emUmIGJvdHRvbVJpZ2h0KSBjb25zdAorc3RhdGljIHZvaWQgZ2V0UmFkaWlGb3JSZWN0KGNvbnN0
IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXpl
JiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkKIHsKLSAgICB0b3BMZWZ0ID0gc3Vy
cm91bmQtPmJvcmRlci50b3BMZWZ0OwotICAgIHRvcFJpZ2h0ID0gc3Vycm91bmQtPmJvcmRlci50
b3BSaWdodDsKLSAgICAKLSAgICBib3R0b21MZWZ0ID0gc3Vycm91bmQtPmJvcmRlci5ib3R0b21M
ZWZ0OwotICAgIGJvdHRvbVJpZ2h0ID0gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodDsKLQog
ICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBydWxlczoKICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3JkZXItcmFkaXVzCiAg
ICAgCkBAIC03NzksNiArNzczLDI4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmdldEJvcmRlclJhZGlp
Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTCiAgICAgfQog
fQogCit2b2lkIFJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVj
dCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRv
bUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdAoreworICAgIHRvcExlZnQgPSBzdXJy
b3VuZC0+Ym9yZGVyLnRvcExlZnQ7CisgICAgdG9wUmlnaHQgPSBzdXJyb3VuZC0+Ym9yZGVyLnRv
cFJpZ2h0OworICAgIAorICAgIGJvdHRvbUxlZnQgPSBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxl
ZnQ7CisgICAgYm90dG9tUmlnaHQgPSBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0OworCisg
ICAgZ2V0UmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmdldE91dGxpbmVSYWRpaUZvclJlY3Qo
Y29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIElu
dFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdAoreworICAgIHRv
cExlZnQgPSBiYWNrZ3JvdW5kLT5tX291dGxpbmUudG9wTGVmdDsKKyAgICB0b3BSaWdodCA9IGJh
Y2tncm91bmQtPm1fb3V0bGluZS50b3BSaWdodDsKKworICAgIGJvdHRvbUxlZnQgPSBiYWNrZ3Jv
dW5kLT5tX291dGxpbmUuYm90dG9tTGVmdDsKKyAgICBib3R0b21SaWdodCA9IGJhY2tncm91bmQt
Pm1fb3V0bGluZS5ib3R0b21SaWdodDsKKworICAgIGdldFJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOworfQorCiBjb25zdCBDb3VudGVy
RGlyZWN0aXZlTWFwKiBSZW5kZXJTdHlsZTo6Y291bnRlckRpcmVjdGl2ZXMoKSBjb25zdAogewog
ICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDQwY2YxY2QuLjJmMWU0
ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzg1LDYgKzM4NSwx
MiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0OyB9CiAgICAgYm9v
bCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0Jv
cmRlclJhZGl1cygpOyB9CiAKKyAgICBjb25zdCBJbnRTaXplJiBvdXRsaW5lVG9wTGVmdFJhZGl1
cygpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS50b3BMZWZ0OyB9CisgICAg
Y29uc3QgSW50U2l6ZSYgb3V0bGluZVRvcFJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gYmFj
a2dyb3VuZC0+bV9vdXRsaW5lLnRvcFJpZ2h0OyB9CisgICAgY29uc3QgSW50U2l6ZSYgb3V0bGlu
ZUJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBiYWNrZ3JvdW5kLT5tX291dGxpbmUu
Ym90dG9tTGVmdDsgfQorICAgIGNvbnN0IEludFNpemUmIG91dGxpbmVCb3R0b21SaWdodFJhZGl1
cygpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS5ib3R0b21SaWdodDsgfQor
ICAgIGJvb2wgaGFzT3V0bGluZVJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1f
b3V0bGluZS5oYXNPdXRsaW5lUmFkaXVzKCk7IH0KKwogICAgIHVuc2lnbmVkIHNob3J0IGJvcmRl
ckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyTGVmdFdp
ZHRoKCk7IH0KICAgICBFQm9yZGVyU3R5bGUgYm9yZGVyTGVmdFN0eWxlKCkgY29uc3QgeyByZXR1
cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0LnN0eWxlKCk7IH0KICAgICBjb25zdCBDb2xvciYgYm9y
ZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0LmNvbG9y
OyB9CkBAIC03NTIsNiArNzU4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5ib3R0b21SaWdodCwg
aW5pdGlhbEJvcmRlclJhZGl1cygpKSB9CiAKICAgICB2b2lkIHJlc2V0T3V0bGluZSgpIHsgU0VU
X1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUsIE91dGxpbmVWYWx1ZSgpKSB9CisgICAgdm9pZCBy
ZXNldE91dGxpbmVSYWRpdXMoKSB7IHJlc2V0T3V0bGluZVRvcExlZnRSYWRpdXMoKTsgcmVzZXRP
dXRsaW5lVG9wUmlnaHRSYWRpdXMoKTsgcmVzZXRPdXRsaW5lQm90dG9tTGVmdFJhZGl1cygpOyBy
ZXNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1cygpOyB9CisgICAgdm9pZCByZXNldE91dGxpbmVU
b3BMZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKGJhY2tncm91bmQsIG1fb3V0bGluZS50b3BMZWZ0LCBp
bml0aWFsT3V0bGluZVJhZGl1cygpKSB9CisgICAgdm9pZCByZXNldE91dGxpbmVUb3BSaWdodFJh
ZGl1cygpIHsgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUudG9wUmlnaHQsIGluaXRpYWxP
dXRsaW5lUmFkaXVzKCkpIH0KKyAgICB2b2lkIHJlc2V0T3V0bGluZUJvdHRvbUxlZnRSYWRpdXMo
KSB7IFNFVF9WQVIoYmFja2dyb3VuZCwgbV9vdXRsaW5lLmJvdHRvbUxlZnQsIGluaXRpYWxPdXRs
aW5lUmFkaXVzKCkpIH0KKyAgICB2b2lkIHJlc2V0T3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzKCkg
eyBTRVRfVkFSKGJhY2tncm91bmQsIG1fb3V0bGluZS5ib3R0b21SaWdodCwgaW5pdGlhbE91dGxp
bmVSYWRpdXMoKSkgfQogCiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX2NvbG9yLCB2KSB9CiAKQEAgLTc3NSw3ICs3ODYs
MjEgQEAgcHVibGljOgogICAgICAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhzKTsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBzZXRPdXRsaW5lVG9wTGVmdFJhZGl1cyhjb25zdCBJbnRTaXpl
JiBzKSB7IFNFVF9WQVIoYmFja2dyb3VuZCwgbV9vdXRsaW5lLnRvcExlZnQsIHMpIH0KKyAgICB2
b2lkIHNldE91dGxpbmVUb3BSaWdodFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIo
YmFja2dyb3VuZCwgbV9vdXRsaW5lLnRvcFJpZ2h0LCBzKSB9CisgICAgdm9pZCBzZXRPdXRsaW5l
Qm90dG9tTGVmdFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIoYmFja2dyb3VuZCwg
bV9vdXRsaW5lLmJvdHRvbUxlZnQsIHMpIH0KKyAgICB2b2lkIHNldE91dGxpbmVCb3R0b21SaWdo
dFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIoYmFja2dyb3VuZCwgbV9vdXRsaW5l
LmJvdHRvbVJpZ2h0LCBzKSB9CisKKyAgICB2b2lkIHNldE91dGxpbmVSYWRpdXMoY29uc3QgSW50
U2l6ZSYgcykKKyAgICB7CisgICAgICAgIHNldE91dGxpbmVUb3BMZWZ0UmFkaXVzKHMpOworICAg
ICAgICBzZXRPdXRsaW5lVG9wUmlnaHRSYWRpdXMocyk7CisgICAgICAgIHNldE91dGxpbmVCb3R0
b21MZWZ0UmFkaXVzKHMpOworICAgICAgICBzZXRPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMocyk7
CisgICAgfQorCiAgICAgdm9pZCBnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYs
IEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0
LCBJbnRTaXplJiBib3R0b21SaWdodCkgY29uc3Q7CisgICAgdm9pZCBnZXRPdXRsaW5lUmFkaWlG
b3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdo
dCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpIGNvbnN0OwogCiAg
ICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubGVmdC53aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0
eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5sZWZ0Lm1fc3R5
bGUsIHYpIH0KQEAgLTExMzgsNiArMTE2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRVRleHRE
ZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJuIFRETk9ORTsgfQogICAg
IHN0YXRpYyBmbG9hdCBpbml0aWFsWm9vbSgpIHsgcmV0dXJuIDEuMGY7IH0KICAgICBzdGF0aWMg
aW50IGluaXRpYWxPdXRsaW5lT2Zmc2V0KCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBJbnRT
aXplIGluaXRpYWxPdXRsaW5lUmFkaXVzKCkgeyByZXR1cm4gSW50U2l6ZSgwLCAwKTsgfQogICAg
IHN0YXRpYyBmbG9hdCBpbml0aWFsT3BhY2l0eSgpIHsgcmV0dXJuIDEuMGY7IH0KICAgICBzdGF0
aWMgRUJveEFsaWdubWVudCBpbml0aWFsQm94QWxpZ24oKSB7IHJldHVybiBCU1RSRVRDSDsgfQog
ICAgIHN0YXRpYyBFQm94RGlyZWN0aW9uIGluaXRpYWxCb3hEaXJlY3Rpb24oKSB7IHJldHVybiBC
Tk9STUFMOyB9Ci0tIAoxLjYuNS4yCgo=
</data>
<flag name="commit-queue"
          id="25067"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43719</attachid>
            <date>2009-11-23 10:37:51 -0800</date>
            <delta_ts>2010-06-11 13:53:14 -0700</delta_ts>
            <desc>second draft</desc>
            <filename>0001-outline-radius-support.patch</filename>
            <type>text/plain</type>
            <size>36379</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBkZmI4YzE0YmNjZTQyYzRhNmUzMzdhYzAyNTc0NmU3OTgzNTVjZTBjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IE1vbiwgMTYgTm92IDIwMDkgMTg6NTQ6MzIgLTAyMDAK
U3ViamVjdDogW1BBVENIXSBvdXRsaW5lLXJhZGl1cyBzdXBwb3J0CgotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMuaHRtbCAgICAgICAgICAgfCAgICA3ICsKIC4u
Li9ndGsvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0ICAgICAgIHwgICAxNSAr
KysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA0NyArKysrKysrKwogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDQ0ICsrKysrKy0KIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDcyICsrKysrKysrKysrKwogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKy0KIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgICAgICAgICAgICAgICAgIHwgIDEyMiAr
KysrKysrKysrKysrKysrKysrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAg
ICAgICAgICAgICAgICAgfCAgMTA5ICsrKysrKysrKysrKysrKystLQogV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvT3V0bGluZVZhbHVlLmggICAgICAgICAgICAgfCAgIDE4ICsrKwogV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwICAgICAgICAgICAgfCAgIDMwICsrKystCiBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oICAgICAgICAgICAgICB8ICAgMjYg
KysrKwogMTQgZmlsZXMgY2hhbmdlZCwgNTAwIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVz
Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9j
c3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM5MWZiMmIuLjNiMmQ5MTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTYyNSw2ICs2MjUsMTggQEAKIAogMjAwOS0xMS0xNyAgR3VzdGF2byBOb3Jvbmhh
IFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KIAorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRoYXQgb3V0bGluZS1yYWRp
dXMgaXMgcmVzcGVjdGVkLgorCisgICAgICAgIFdlIHNob3VsZCBpbXBsZW1lbnQgb3V0bGluZS1y
YWRpdXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NTI5MworCisgICAgICAgICogZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKKzIwMDktMTEtMTcgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8u
bm9yb25oYUBjb2xsYWJvcmEuY28udWs+CisKICAgICAgICAgQWN0dWFsbHkgc2tpcCB0aGUgaW5z
cGVjdG9yIGNvbnNvbGUgdGVzdHMgd2hpbGUgdGhlIHByb2JsZW0KICAgICAgICAgZGlzY3Vzc2Vk
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ3MiBpcwogICAg
ICAgICBmaXhlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL291dGxpbmUtcmFk
aXVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9vdXRsaW5lLXJhZGl1cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjQ2MzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9vdXRsaW5lLXJhZGl1cy5odG1sCkBAIC0wLDAgKzEsNyBA
QAorPGh0bWw+Cis8Ym9keSBpZD0iYm9keSI+Cis8ZGl2IHN0eWxlPSJtYXJnaW46IDIwcHg7IG91
dGxpbmU6IGdyZWVuIGRhc2hlZCAxMHB4OyBvdXRsaW5lLXJhZGl1czogMTBweDsiPgorPHNwYW4g
c3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7Ij48cHJlPllvdSBzaG91bGQgc2VlIGEgZGFzaGVkIG91
dGxpbmUgd2l0aCByb3VuZCBjb3JuZXJzIGFyb3VuZCB0aGlzIHRleHQuPC9wcmU+PC9zcGFuPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvZmFzdC9jc3Mvb3V0bGluZS1yYWRpdXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWVjYWEwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY3NzL291dGxpbmUtcmFkaXVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsMjApIHNpemUgNzg0eDU2MAorICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDIwLDApIHNpemUgNzQ0eDE4CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDApIHNpemUgNzQ0eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNp
emUgNzQ0eDE4CisgICAgICAgICAgUmVuZGVyQmxvY2sge1BSRX0gYXQgKDAsMCkgc2l6ZSA3NDR4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU0NHgxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1NDQ6ICJZb3Ugc2hvdWxkIHNl
ZSBhIGRhc2hlZCBvdXRsaW5lIHdpdGggcm91bmQgY29ybmVycyBhcm91bmQgdGhpcyB0ZXh0LiIK
KyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzEpIHNpemUgNzQ0eDAKKyAg
ICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhY2FhZGYuLmM1NWMzMjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMDktMTEtMjMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8u
bm9yb25oYUBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBDU1MgcHJvcGVydGllcyB0byBwcm92aWRl
IG91dGxpbmUtcmFkaXVzIGluIGEgd2F5CisgICAgICAgIHNpbWlsYXIgdG8gYm9yZGVyLXJhZGl1
cywgYW5kIGFwcGx5IHRoZW0gd2hlbiBwYWludGluZyB0aGUgb3V0bGluZS4KKworICAgICAgICBX
ZSBzaG91bGQgaW1wbGVtZW50IG91dGxpbmUtcmFkaXVzOgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUyOTMKKworICAgICAgICBUZXN0OiBmYXN0L2Nz
cy9vdXRsaW5lLXJhZGl1cy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlUmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZU91
dGxpbmVSYWRpdXMpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvT3V0bGlu
ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpPdXRsaW5lVmFsdWU6Omhhc091dGxpbmVSYWRp
dXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRSYWRpaUZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmdldEJvcmRlclJhZGlpRm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Z2V0T3V0bGluZVJhZGlpRm9yUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6b3V0bGluZVRv
cExlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6Om91dGxpbmVU
b3BSaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6b3V0bGlu
ZUJvdHRvbUxlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6Om91
dGxpbmVCb3R0b21SaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFn
czo6aGFzT3V0bGluZVJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
cmVzZXRPdXRsaW5lUmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpy
ZXNldE91dGxpbmVUb3BMZWZ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjpyZXNldE91dGxpbmVUb3BSaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6cmVzZXRPdXRsaW5lQm90dG9tTGVmdFJhZGl1cyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmhlcml0ZWRGbGFnczo6cmVzZXRPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE91dGxpbmVUb3BMZWZ0UmFkaXVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRPdXRsaW5lVG9wUmlnaHRSYWRp
dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE91dGxpbmVCb3R0b21M
ZWZ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRPdXRsaW5l
Qm90dG9tUmlnaHRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dE91dGxpbmVSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmluaXRp
YWxPdXRsaW5lUmFkaXVzKToKKwogMjAwOS0xMS0yMiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXph
Y2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggODc4ZDYxYy4uNjhkMDExMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC01LDYgKzUsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8d2Via2l0QG5pY2tzaGFua3Mu
Y29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTY4LDcgKzExNjksMTEg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJh
ZGl1czogeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVRvcFJpZ2h0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlPdXRsaW5lVG9wTGVmdFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUJv
dHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVCb3R0b21SaWdodFJh
ZGl1czogewogICAgICAgICBpZiAobnVtICE9IDEgJiYgbnVtICE9IDIpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCwgbV9zdHJpY3QpOwpAQCAtMTYxMiw2ICsxNjE3LDggQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciB9OwogICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwog
ICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVJhZGl1czoKKyAgICAgICAgcmV0dXJu
IHBhcnNlT3V0bGluZVJhZGl1cyhwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yOgogICAgICAgICAvLyA8Y29sb3I+ezEsNH0gfCBpbmhlcml0CiAgICAg
ewpAQCAtNDA2MywxMyArNDA3MCw5IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlQm9yZGVyUmFkaWko
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpaVs0XSkKICAgICByYWRpaVszXSA9IHJhZGlp
WzFdOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpdXMoaW50IHByb3BJZCwg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpaVsyXVs0XSkKIHsKICAgICB1bnNpZ25lZCBu
dW0gPSBtX3ZhbHVlTGlzdC0+c2l6ZSgpOwotICAgIGlmIChudW0gPiA5KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzJdWzRdOwog
CiAgICAgdW5zaWduZWQgaW5kZXhBZnRlclNsYXNoID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtOyArK2kpIHsKQEAgLTQxMTMsNiArNDExNiwxOSBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfSBl
bHNlCiAgICAgICAgIGNvbXBsZXRlQm9yZGVyUmFkaWkocmFkaWlbMV0pOwogCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBpZiAobV92YWx1ZUxpc3QtPnNpemUoKSA+IDkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFk
aWlbMl1bNF07CisKKyAgICBpZiAoIXBhcnNlUmFkaXVzKHByb3BJZCwgcmFkaWkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExl
ZnRSYWRpdXMsIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoUGFpcjo6Y3JlYXRlKHJhZGlpWzBd
WzBdLnJlbGVhc2UoKSwgcmFkaWlbMV1bMF0ucmVsZWFzZSgpKSksIGltcG9ydGFudCk7CiAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShQYWlyOjpjcmVhdGUocmFkaWlbMF1bMV0ucmVsZWFzZSgpLCByYWRpaVsx
XVsxXS5yZWxlYXNlKCkpKSwgaW1wb3J0YW50KTsKICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKFBhaXI6
OmNyZWF0ZShyYWRpaVswXVsyXS5yZWxlYXNlKCksIHJhZGlpWzFdWzJdLnJlbGVhc2UoKSkpLCBp
bXBvcnRhbnQpOwpAQCAtNDEyMCw2ICs0MTM2LDIyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJv
cmRlclJhZGl1cyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBDU1NQYXJzZXI6OnBhcnNlT3V0bGluZVJhZGl1cyhpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKK3sKKyAgICBpZiAobV92YWx1ZUxpc3QtPnNpemUoKSA+IDkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaWlbMl1b
NF07CisgICAgaWYgKCFwYXJzZVJhZGl1cyhwcm9wSWQsIHJhZGlpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdXRsaW5lVG9wTGVmdFJhZGl1
cywgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShQYWlyOjpjcmVhdGUocmFkaWlbMF1bMF0ucmVs
ZWFzZSgpLCByYWRpaVsxXVswXS5yZWxlYXNlKCkpKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU91dGxpbmVUb3BSaWdodFJhZGl1cywgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShQYWlyOjpjcmVhdGUocmFkaWlbMF1bMV0ucmVsZWFzZSgpLCByYWRpaVsxXVsxXS5y
ZWxlYXNlKCkpKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU91dGxp
bmVCb3R0b21SaWdodFJhZGl1cywgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShQYWlyOjpjcmVh
dGUocmFkaWlbMF1bMl0ucmVsZWFzZSgpLCByYWRpaVsxXVsyXS5yZWxlYXNlKCkpKSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU91dGxpbmVCb3R0b21MZWZ0UmFkaXVz
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKFBhaXI6OmNyZWF0ZShyYWRpaVswXVszXS5yZWxl
YXNlKCksIHJhZGlpWzFdWzNdLnJlbGVhc2UoKSkpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0
cnVlOworfQorCiBib29sIENTU1BhcnNlcjo6cGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBk
ZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGVudW0geyBJRCwgVkFMIH0gc3Rh
dGUgPSBJRDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKaW5kZXggYWNlMmZiZC4uNzc3MWFiNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTE0NCw2
ICsxNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcGFyc2VCb3JkZXJS
YWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICAKICAgICAgICAgYm9v
bCBwYXJzZVJlZmxlY3QoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgICAgICBib29s
IHBhcnNlT3V0bGluZVJhZGl1cyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisKKyAgICAg
ICAgYm9vbCBwYXJzZVJhZGl1cyhpbnQgcHJvcElkLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHJhZGlpWzJdWzRdKTsKIAogICAgICAgICAvLyBJbWFnZSBnZW5lcmF0b3JzCiAgICAgICAgIGJv
b2wgcGFyc2VDYW52YXMoUmVmUHRyPENTU1ZhbHVlPiYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4K
aW5kZXggOTY5NWQwYi4uYzBjOTBiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC04OCw2
ICs4OCwxMSBAQCBtaW4td2lkdGgKIG9wYWNpdHkKIG9ycGhhbnMKIG91dGxpbmUKK291dGxpbmUt
Ym90dG9tLWxlZnQtcmFkaXVzCitvdXRsaW5lLWJvdHRvbS1yaWdodC1yYWRpdXMKK291dGxpbmUt
dG9wLWxlZnQtcmFkaXVzCitvdXRsaW5lLXRvcC1yaWdodC1yYWRpdXMKK291dGxpbmUtcmFkaXVz
CiBvdXRsaW5lLWNvbG9yCiBvdXRsaW5lLW9mZnNldAogb3V0bGluZS1zdHlsZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAppbmRleCA1NWFjYTk2Li5mOGU5M2M3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcApAQCAtNiw2ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJv
c2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBDb2xsYWJvcmEgTHRkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00NjM5LDYgKzQ2NDAsNzcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVSYWRpdXM6CisgICAgICAgIGlm
IChpc0luaGVyaXQpIHsKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVUb3BMZWZ0UmFk
aXVzKG1fcGFyZW50U3R5bGUtPm91dGxpbmVUb3BMZWZ0UmFkaXVzKCkpOworICAgICAgICAgICAg
bV9zdHlsZS0+c2V0T3V0bGluZVRvcFJpZ2h0UmFkaXVzKG1fcGFyZW50U3R5bGUtPm91dGxpbmVU
b3BSaWdodFJhZGl1cygpKTsKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVCb3R0b21M
ZWZ0UmFkaXVzKG1fcGFyZW50U3R5bGUtPm91dGxpbmVCb3R0b21MZWZ0UmFkaXVzKCkpOworICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzKG1fcGFyZW50U3R5
bGUtPm91dGxpbmVCb3R0b21SaWdodFJhZGl1cygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoaXNJbml0aWFsKSB7CisgICAgICAgICAgICBtX3N0eWxlLT5y
ZXNldE91dGxpbmVSYWRpdXMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAvLyBGYWxsIHRocm91Z2gKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVRvcExlZnRS
YWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVUb3BSaWdodFJhZGl1czoKKyAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZUJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmVCb3R0b21SaWdodFJhZGl1czogeworICAgICAgICBpZiAoaXNJbmhlcml0KSB7
CisgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5T3V0bGluZVRvcExl
ZnRSYWRpdXMsIG91dGxpbmVUb3BMZWZ0UmFkaXVzLCBPdXRsaW5lVG9wTGVmdFJhZGl1cykKKyAg
ICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlPdXRsaW5lVG9wUmlnaHRS
YWRpdXMsIG91dGxpbmVUb3BSaWdodFJhZGl1cywgT3V0bGluZVRvcFJpZ2h0UmFkaXVzKQorICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU91dGxpbmVCb3R0b21MZWZ0
UmFkaXVzLCBvdXRsaW5lQm90dG9tTGVmdFJhZGl1cywgT3V0bGluZUJvdHRvbUxlZnRSYWRpdXMp
CisgICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5T3V0bGluZUJvdHRv
bVJpZ2h0UmFkaXVzLCBvdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMsIE91dGxpbmVCb3R0b21SaWdo
dFJhZGl1cykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKGlzSW5pdGlhbCkgeworICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVRvcExlZnRSYWRpdXMsIE91dGxpbmVUb3BMZWZ0UmFk
aXVzLCBPdXRsaW5lUmFkaXVzKQorICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVRvcFJpZ2h0UmFkaXVzLCBPdXRsaW5lVG9wUmlnaHRS
YWRpdXMsIE91dGxpbmVSYWRpdXMpCisgICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tTGVmdFJhZGl1cywgT3V0bGluZUJvdHRv
bUxlZnRSYWRpdXMsIE91dGxpbmVSYWRpdXMpCisgICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9D
T05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMsIE91dGxp
bmVCb3R0b21SaWdodFJhZGl1cywgT3V0bGluZVJhZGl1cykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFs
dWUoKTsKKyAgICAgICAgaWYgKCFwYWlyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGludCB3aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgaW50IGhlaWdodCA9IHBhaXIt
PnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
IHpvb21GYWN0b3IpOworICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHdpZHRoID09IDApCisgICAgICAgICAgICBo
ZWlnaHQgPSAwOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCisgICAgICAgIGVsc2UgaWYg
KGhlaWdodCA9PSAwKQorICAgICAgICAgICAgd2lkdGggPSAwOyAvLyBOdWxsIG91dCB0aGUgb3Ro
ZXIgdmFsdWUuCisKKyAgICAgICAgSW50U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICBzd2l0Y2ggKGlkKSB7CisgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVRvcExl
ZnRSYWRpdXM6CisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVRvcExlZnRSYWRp
dXMoc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5T3V0bGluZVRvcFJpZ2h0UmFkaXVzOgorICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dE91dGxpbmVUb3BSaWdodFJhZGl1cyhzaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQm90dG9tTGVmdFJhZGl1czoKKyAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lQm90dG9tTGVmdFJhZGl1cyhzaXplKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
Qm90dG9tUmlnaHRSYWRpdXM6CisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUJv
dHRvbVJpZ2h0UmFkaXVzKHNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lUmFkaXVzKHNp
emUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldDoKICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwob3V0bGluZU9mZnNldCwgT3V0bGluZU9mZnNldCkKICAg
ICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZU9mZnNldChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBkZTQ0Mjc4Li45YmY3ZjYzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0zLDYgKzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDA3IERh
dmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IENvbGxhYm9yYSBMdGQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTE3MzAsOCArMTczMSwyMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgfQogCiAgICAgLy8g
NS4gcGFpbnQgb3V0bGluZS4KLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxp
bmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUo
KSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91
dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkgeworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgICAgICBpZiAoc3R5
bGUoKS0+aGFzT3V0bGluZVJhZGl1cygpKSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gc3R5
bGUoKS0+b3V0bGluZU9mZnNldCgpOworICAgICAgICAgICAgaW50IG91dGxpbmVXaWR0aCA9IHN0
eWxlKCktPm91dGxpbmVXaWR0aCgpOworICAgICAgICAgICAgSW50U2l6ZSB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQ7CisgICAgICAgICAgICBJbnRSZWN0IG91dGxp
bmVSZWN0ID0gSW50UmVjdCh0eCAtIG9mZnNldCAtIG91dGxpbmVXaWR0aCwgdHkgLSBvZmZzZXQg
LSBvdXRsaW5lV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCgpICsgMiAqIG9mZnNldCArIDIgKiBvdXRsaW5lV2lkdGgsIGhlaWdodCgpICsgMiAq
IG9mZnNldCArIDIgKiBvdXRsaW5lV2lkdGgpOworICAgICAgICAgICAgc3R5bGUoKS0+Z2V0T3V0
bGluZVJhZGlpRm9yUmVjdChvdXRsaW5lUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3Vu
ZGVkUmVjdENsaXAob3V0bGluZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBi
b3R0b21SaWdodCk7CisgICAgICAgIH0KKwogICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZv
LmNvbnRleHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIH0KIAogICAgIC8vIDYuIHBhaW50IGNv
bnRpbnVhdGlvbiBvdXRsaW5lcy4KICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91
dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcykpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDJmOWEyNDcuLjBmZjAyNGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTAxNyw3ICsxMDE3LDIwIEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBpbnQgdHgsCiAgICAgaW50IGwgPSB0eCArIHRoaXNsaW5lLngoKSAtIG9mZnNldDsKICAgICBp
bnQgYiA9IHR5ICsgdGhpc2xpbmUuYm90dG9tKCkgKyBvZmZzZXQ7CiAgICAgaW50IHIgPSB0eCAr
IHRoaXNsaW5lLnJpZ2h0KCkgKyBvZmZzZXQ7CisKKyAgICBib29sIHJlbmRlclJhZGlpID0gc3R5
bGUoKS0+aGFzT3V0bGluZVJhZGl1cygpOworICAgIEludFNpemUgdG9wTGVmdCwgdG9wUmlnaHQs
IGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0OwogICAgIAorICAgIGlmIChyZW5kZXJSYWRpaSkgewor
ICAgICAgICBJbnRSZWN0IG91dGxpbmVSZWN0ID0gSW50UmVjdChsIC0gb3csIHQgLSBvdywgciAt
IGwgKyBvdyAqIDIsIGIgLSB0ICsgb3cgKiAyKTsKKworICAgICAgICBzdHlsZSgpLT5nZXRPdXRs
aW5lUmFkaWlGb3JSZWN0KG91dGxpbmVSZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpOworCisgICAgICAgIC8vIENsaXAgdG8gdGhlIHJvdW5kZWQgcmVjdGFu
Z2xlLgorICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAob3V0bGluZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CisgICAgfQorCiAgICAgLy8gbGVmdCBlZGdlCiAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgICAgIGwg
LSBvdywKQEAgLTEwMzksOCArMTA1MiwxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LAogICAg
ICAgICAgICAgICAgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAogICAgICAgICAgICAgICAgKGxh
c3RsaW5lLmlzRW1wdHkoKSB8fCBsYXN0bGluZS5yaWdodCgpIDwgdGhpc2xpbmUucmlnaHQoKSB8
fCAodGhpc2xpbmUucmlnaHQoKSAtIDEpIDw9IGxhc3RsaW5lLngoKSA/IG93IDogLW93KSwKICAg
ICAgICAgICAgICAgIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgbmV4dGxpbmUucmlnaHQoKSA8PSB0
aGlzbGluZS5yaWdodCgpIHx8ICh0aGlzbGluZS5yaWdodCgpIC0gMSkgPD0gbmV4dGxpbmUueCgp
ID8gb3cgOiAtb3cpKTsKKworICAgIGJvb2wgZHJhd1VwcGVyID0gZmFsc2U7CisKICAgICAvLyB1
cHBlciBlZGdlCi0gICAgaWYgKHRoaXNsaW5lLngoKSA8IGxhc3RsaW5lLngoKSkKKyAgICBpZiAo
dGhpc2xpbmUueCgpIDwgbGFzdGxpbmUueCgpKSB7CiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgbCAtIG93LAogICAgICAgICAg
ICAgICAgICAgIHQgLSBvdywKQEAgLTEwNDksOCArMTA2NSwxMCBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
aW50IHR4LAogICAgICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwg
b3MsCiAgICAgICAgICAgICAgICAgICAgb3csCiAgICAgICAgICAgICAgICAgICAgKCFsYXN0bGlu
ZS5pc0VtcHR5KCkgJiYgdHggKyBsYXN0bGluZS54KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93
KTsKKyAgICAgICAgZHJhd1VwcGVyID0gdHJ1ZTsKKyAgICB9CiAgICAgCi0gICAgaWYgKGxhc3Rs
aW5lLnJpZ2h0KCkgPCB0aGlzbGluZS5yaWdodCgpKQorICAgIGlmIChsYXN0bGluZS5yaWdodCgp
IDwgdGhpc2xpbmUucmlnaHQoKSkgewogICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LAogICAgICAgICAgICAgICAgICAgIG1heChsYXN0bGluZS5pc0VtcHR5KCkgPyAt
MTAwMDAwMCA6IHR4ICsgbGFzdGxpbmUucmlnaHQoKSwgbCAtIG93KSwKICAgICAgICAgICAgICAg
ICAgICB0IC0gb3csCkBAIC0xMDU5LDkgKzEwNzcsMTMgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBh
aW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwKICAgICAgICAgICAgICAgICAgICBCU1RvcCwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAog
ICAgICAgICAgICAgICAgICAgICghbGFzdGxpbmUuaXNFbXB0eSgpICYmIGwgLSBvdyA8IHR4ICsg
bGFzdGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAgICAgICAgICAgICBvdyk7Cisg
ICAgICAgIGRyYXdVcHBlciA9IHRydWU7CisgICAgfQogICAgIAorICAgIGJvb2wgZHJhd0xvd2Vy
ID0gZmFsc2U7CisKICAgICAvLyBsb3dlciBlZGdlCi0gICAgaWYgKHRoaXNsaW5lLngoKSA8IG5l
eHRsaW5lLngoKSkKKyAgICBpZiAodGhpc2xpbmUueCgpIDwgbmV4dGxpbmUueCgpKSB7CiAgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgbCAtIG93LAogICAgICAgICAgICAgICAgICAgIGIsCkBAIC0xMDcwLDggKzEwOTIsMTAgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2Ms
IHN0eWxlKCktPmNvbG9yKCksIG9zLAogICAgICAgICAgICAgICAgICAgIG93LAogICAgICAgICAg
ICAgICAgICAgICghbmV4dGxpbmUuaXNFbXB0eSgpICYmIHR4ICsgbmV4dGxpbmUueCgpICsgMSA8
IHIgKyBvdykgPyAtb3cgOiBvdyk7CisgICAgICAgIGRyYXdMb3dlciA9IHRydWU7CisgICAgfQog
ICAgIAotICAgIGlmIChuZXh0bGluZS5yaWdodCgpIDwgdGhpc2xpbmUucmlnaHQoKSkKKyAgICBp
ZiAobmV4dGxpbmUucmlnaHQoKSA8IHRoaXNsaW5lLnJpZ2h0KCkpIHsKICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICBtYXgoIW5l
eHRsaW5lLmlzRW1wdHkoKSA/IHR4ICsgbmV4dGxpbmUucmlnaHQoKSA6IC0xMDAwMDAwLCBsIC0g
b3cpLAogICAgICAgICAgICAgICAgICAgIGIsCkBAIC0xMDgwLDYgKzExMDQsOTYgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGludCB0eCwKICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAogICAgICAgICAgICAgICAgICAgICghbmV4dGxpbmUuaXNFbXB0eSgp
ICYmIGwgLSBvdyA8IHR4ICsgbmV4dGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAg
ICAgICAgICAgICBvdyk7CisgICAgICAgIGRyYXdMb3dlciA9IHRydWU7CisgICAgfQorCisgICAg
aWYgKHJlbmRlclJhZGlpKSB7CisgICAgICAgIGludCBmaXJzdEFuZ2xlU3RhcnQsIHNlY29uZEFu
Z2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLCBzZWNvbmRBbmdsZVNwYW47CisKKyAgICAgICAgLy8g
U2FtZSBzdHJhdGVneSBhcyB3aXRoIGJvcmRlcnMuIExldCBjbGlwIHdvcmsgaXRzIG1hZ2ljLgor
ICAgICAgICBmbG9hdCB0aGlja25lc3MgPSBvdyAqIDI7CisKKyAgICAgICAgLy8gVGhlIGlubmVy
IGNsaXAgY2xpcHMgaW5zaWRlIHRoZSBhcmMuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQg
Zm9yIDFweCBib3JkZXJzLgorICAgICAgICBib29sIGFwcGx5TGVmdElubmVyQ2xpcCA9IChvdyA8
IHRvcExlZnQud2lkdGgoKSkKKyAgICAgICAgICAgICYmIChvdyA8IHRvcExlZnQuaGVpZ2h0KCkp
CisgICAgICAgICAgICAmJiAob3MgIT0gRE9VQkxFIHx8IG93ID4gNik7CisKKyAgICAgICAgaWYg
KGRyYXdVcHBlciAmJiAobGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IGxhc3Rs
aW5lLngoKSkpIHsKKyAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApIHsKKyAgICAg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QobCAtIG93LCB0IC0g
b3csIHRvcExlZnQud2lkdGgoKSAqIDIsIHRvcExlZnQuaGVpZ2h0KCkgKiAyKSwgb3cpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmaXJzdEFuZ2xlU3RhcnQgPSA5MDsKKyAgICAgICAg
ICAgIGZpcnN0QW5nbGVTcGFuID0gOTA7CisKKyAgICAgICAgICAgIC8vIERyYXcgdXBwZXIgbGVm
dCBhcmMKKyAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgbCAt
IG93LCB0IC0gb3csIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFu
Z2xlU3BhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCBDb2xvcihvYyks
IHN0eWxlKCktPmNvbG9yKCksIG9zLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChhcHBseUxlZnRJ
bm5lckNsaXApCisgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIGFwcGx5UmlnaHRJbm5lckNsaXAgPSAob3cgPCB0b3BS
aWdodC53aWR0aCgpKQorICAgICAgICAgICAgJiYgKG93IDwgdG9wUmlnaHQuaGVpZ2h0KCkpCisg
ICAgICAgICAgICAmJiAob3MgIT0gRE9VQkxFIHx8IG93ID4gNik7CisKKyAgICAgICAgaW50IHJp
Z2h0WCA9IHIgKyBvdyAtIHRvcFJpZ2h0LndpZHRoKCkgKiAyOworCisgICAgICAgIGlmIChkcmF3
VXBwZXIgJiYgKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS5yaWdodCgpID4gbGFzdGxp
bmUucmlnaHQoKSkpIHsKKyAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7Cisg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwg
dCAtIG93LCB0b3BSaWdodC53aWR0aCgpICogMiwgdG9wUmlnaHQuaGVpZ2h0KCkgKiAyKSwgb3cp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWNvbmRBbmdsZVN0YXJ0ID0gMDsKKyAg
ICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDkwOworCisgICAgICAgICAgICAvLyBEcmF3IHVw
cGVyIHJpZ2h0IGFyYworICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCByaWdodFgsIHQgLSBvdywgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25kQW5nbGVTdGFy
dCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3As
IENvbG9yKG9jKSwgc3R5bGUoKS0+Y29sb3IoKSwgb3MsIGZhbHNlKTsKKyAgICAgICAgICAgIGlm
IChhcHBseVJpZ2h0SW5uZXJDbGlwKQorICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
cmVzdG9yZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRyYXdMb3dlciAmJiAobmV4dGxp
bmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IG5leHRsaW5lLngoKSkpIHsKKyAgICAgICAg
ICAgIGludCBsZWZ0WSA9IGIgKyBvdyAtIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyOworCisgICAg
ICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKSB7CisgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRJ
bm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGwgLSBvdywgbGVmdFksIGJvdHRvbUxlZnQud2lk
dGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwgb3cpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmaXJzdEFuZ2xlU3RhcnQgPSAxODA7CisgICAgICAgICAgICBmaXJzdEFu
Z2xlU3BhbiA9IDkwOworCisgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJjCisgICAg
ICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGwgLSBvdywgbGVmdFks
IHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBDb2xvcihvYyksIHN0eWxl
KCktPmNvbG9yKCksIG9zLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNs
aXApCisgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZHJhd0xvd2VyICYmIChsYXN0bGluZS5pc0VtcHR5KCkgfHwgdGhp
c2xpbmUucmlnaHQoKSA+IG5leHRsaW5lLnJpZ2h0KCkpKSB7CisgICAgICAgICAgICBpbnQgcmln
aHRZID0gYiArIG93IC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOworCisgICAgICAgICAgICBp
ZiAoYXBwbHlSaWdodElubmVyQ2xpcCkgeworICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoSW50UmVjdChyaWdodFgsIHJpZ2h0WSwgYm90dG9tUmlnaHQud2lkdGgoKSAq
IDIsIGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMiksIG93KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc2Vjb25kQW5nbGVTdGFydCA9IDI3MDsKKyAgICAgICAgICAgIHNlY29uZEFuZ2xl
U3BhbiA9IDkwOworCisgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYworICAgICAg
ICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCByaWdodFgsIHJpZ2h0WSwg
dGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIENvbG9yKG9jKSwgc3R5
bGUoKS0+Y29sb3IoKSwgb3MsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5u
ZXJDbGlwKQorICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgfQogfQog
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggMWU4ZTE5Zi4uMTY0NGVmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CkBAIC0xMDI5LDE3ICsxMDI5LDExMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5l
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eQogICAgIGlm
IChoIDwgMCB8fCB3IDwgMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHgsIHR5ICsgaCArIG93LAot
ICAgICAgICAgICAgICAgQlNMZWZ0LCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3cs
IG93KTsKKyAgICBib29sIHJlbmRlclJhZGlpID0gc3R5bGUtPmhhc091dGxpbmVSYWRpdXMoKTsK
KyAgICBJbnRTaXplIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodDsK
IAotICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0g
b3csIHR4ICsgdyArIG93LCB0eSwKLSAgICAgICAgICAgICAgIEJTVG9wLCBDb2xvcihvYyksIHN0
eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKKyAgICBpbnQgeCA9IHR4IC0gb3c7CisgICAgaW50
IHgyID0gdHggKyB3ICsgMiAqIG93OwogCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggKyB3LCB0eSAtIG93LCB0eCArIHcgKyBvdywgdHkgKyBoICsgb3csCi0gICAg
ICAgICAgICAgICBCU1JpZ2h0LCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93
KTsKKyAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgSW50UmVjdCBvdXRsaW5lUmVjdCA9
IEludFJlY3QoeCwgdHkgLSBvdywgdyArIDIgKiBvdywgaCArIDIgKiBvdyk7CiAKLSAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSArIGgsIHR4ICsgdyAr
IG93LCB0eSArIGggKyBvdywKLSAgICAgICAgICAgICAgIEJTQm90dG9tLCBDb2xvcihvYyksIHN0
eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKKyAgICAgICAgc3R5bGUtPmdldE91dGxpbmVSYWRp
aUZvclJlY3Qob3V0bGluZVJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCk7CisKKyAgICAgICAgLy8gQ2xpcCB0byB0aGUgcm91bmRlZCByZWN0YW5nbGUuCisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgICAgICBncmFwaGljc0NvbnRleHQt
PmFkZFJvdW5kZWRSZWN0Q2xpcChvdXRsaW5lUmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KTsKKyAgICB9CisKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5IC0gb3csIEJTVG9wLCBDb2xvcihvYyksIHN0eWxl
LT5jb2xvcigpLCBvcywgb3csIG93KTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB4LCB0eSArIGgsIHgyLCB0eSArIGggKyBvdywgQlNCb3R0b20sIENvbG9yKG9jKSwg
c3R5bGUtPmNvbG9yKCksIG9zLCBvdywgb3cpOworCisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgeCwgdHksIHggKyBvdywgdHkgKyBoICsgb3csIEJTTGVmdCwgQ29sb3Io
b2MpLCBzdHlsZS0+Y29sb3IoKSwgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdHggKyB3LCB0eSwgdHggKyB3ICsgb3csIHR5ICsgaCArIG93LCBC
U1JpZ2h0LCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKKworICAgIGlm
IChyZW5kZXJSYWRpaSkgeworICAgICAgICBpbnQgZmlyc3RBbmdsZVN0YXJ0LCBzZWNvbmRBbmds
ZVN0YXJ0LCBmaXJzdEFuZ2xlU3Bhbiwgc2Vjb25kQW5nbGVTcGFuOworCisgICAgICAgIC8vIFNh
bWUgc3RyYXRlZ3kgYXMgd2l0aCBib3JkZXJzLiBMZXQgY2xpcCB3b3JrIGl0cyBtYWdpYy4KKyAg
ICAgICAgZmxvYXQgdGhpY2tuZXNzID0gb3cgKiAyOworCisgICAgICAgIC8vIFRoZSBpbm5lciBj
bGlwIGNsaXBzIGluc2lkZSB0aGUgYXJjLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZv
ciAxcHggYm9yZGVycy4KKyAgICAgICAgYm9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAob3cgPCB0
b3BMZWZ0LndpZHRoKCkpCisgICAgICAgICAgICAmJiAob3cgPCB0b3BMZWZ0LmhlaWdodCgpKQor
ICAgICAgICAgICAgJiYgKG9zICE9IERPVUJMRSB8fCBvdyA+IDYpOworCisgICAgICAgIGludCBs
ZWZ0WCA9IHR4IC0gb3c7CisgICAgICAgIGludCBsZWZ0WSA9IHR5IC0gb3c7CisKKyAgICAgICAg
aWYgKGFwcGx5TGVmdElubmVyQ2xpcCkgeworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RD
bGlwKEludFJlY3QobGVmdFgsIGxlZnRZLCB0b3BMZWZ0LndpZHRoKCkgKiAyLCB0b3BMZWZ0Lmhl
aWdodCgpICogMiksIG93KTsKKyAgICAgICAgfQorCisgICAgICAgIGZpcnN0QW5nbGVTdGFydCA9
IDkwOworICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IDkwOworCisgICAgICAgIC8vIERyYXcgdXBw
ZXIgbGVmdCBhcmMKKyAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBs
ZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFu
Z2xlU3BhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIENvbG9yKG9jKSwgc3R5
bGUtPmNvbG9yKCksIG9zLCB0cnVlKTsKKyAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOworCisgICAgICAgIGJvb2wg
YXBwbHlSaWdodElubmVyQ2xpcCA9IChvdyA8IHRvcFJpZ2h0LndpZHRoKCkpCisgICAgICAgICAg
ICAmJiAob3cgPCB0b3BSaWdodC5oZWlnaHQoKSkKKyAgICAgICAgICAgICYmIChvcyAhPSBET1VC
TEUgfHwgb3cgPiA2KTsKKworICAgICAgICBpbnQgcmlnaHRYID0gdHggKyBvdyArIHcgLSB0b3BS
aWdodC53aWR0aCgpICogMjsKKworICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkgewor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJlY3QocmlnaHRYLCBsZWZ0WSwg
dG9wUmlnaHQud2lkdGgoKSAqIDIsIHRvcFJpZ2h0LmhlaWdodCgpICogMiksIG93KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQgPSAwOworICAgICAgICBzZWNvbmRBbmds
ZVNwYW4gPSA5MDsKKworICAgICAgICAvLyBEcmF3IHVwcGVyIHJpZ2h0IGFyYworICAgICAgICBk
cmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVz
cywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgQlNUb3AsIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBm
YWxzZSk7CisgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKQorICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAgICAgbGVmdFkgPSB0eSArIGggKyBvdyAt
IGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyOworCisgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNs
aXApIHsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBs
ZWZ0WSwgYm90dG9tTGVmdC53aWR0aCgpICogMiwgYm90dG9tTGVmdC5oZWlnaHQoKSAqIDIpLCBv
dyk7CisgICAgICAgIH0KKworICAgICAgICBmaXJzdEFuZ2xlU3RhcnQgPSAxODA7CisgICAgICAg
IGZpcnN0QW5nbGVTcGFuID0gOTA7CisKKyAgICAgICAgLy8gRHJhdyBsb3dlciBsZWZ0IGFyYwor
ICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwg
dGhpY2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgQ29sb3Iob2MpLCBzdHlsZS0+Y29s
b3IoKSwgb3MsIHRydWUpOworICAgICAgICBpZiAoYXBwbHlMZWZ0SW5uZXJDbGlwKQorICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAgICAgaW50IHJpZ2h0WSA9
IHR5ICsgaCArIG93IC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOworCisgICAgICAgIGlmIChh
cHBseVJpZ2h0SW5uZXJDbGlwKSB7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAo
SW50UmVjdChyaWdodFgsIHJpZ2h0WSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJp
Z2h0LmhlaWdodCgpICogMiksIG93KTsKKyAgICAgICAgfQorCisgICAgICAgIHNlY29uZEFuZ2xl
U3RhcnQgPSAyNzA7CisgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDkwOworCisgICAgICAgIC8v
IERyYXcgbG93ZXIgcmlnaHQgYXJjCisgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgcmlnaHRYLCByaWdodFksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFu
Z2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQlNC
b3R0b20sIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBmYWxzZSk7CisgICAgICAgIGlm
IChhcHBseVJpZ2h0SW5uZXJDbGlwKQorICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0
b3JlKCk7CisKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgfQogfQog
CiBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VU
cmFuc2Zvcm1zKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZh
bHVlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaAppbmRleCAyNjI4
YjdmLi5mYjhiNTQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5l
VmFsdWUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaApAQCAt
NCw2ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR3Jh
aGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDYsOSArNDcsMjYgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQorCisg
ICAgYm9vbCBoYXNPdXRsaW5lUmFkaXVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICh0b3BM
ZWZ0LndpZHRoKCkgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0
b3BSaWdodC53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBp
ZiAoYm90dG9tTGVmdC53aWR0aCgpID4gMCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAoYm90dG9tUmlnaHQud2lkdGgoKSA+IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBpbnQgX29mZnNldDsK
ICAgICBib29sIF9hdXRvOworICAgIEludFNpemUgdG9wTGVmdDsKKyAgICBJbnRTaXplIHRvcFJp
Z2h0OworICAgIEludFNpemUgYm90dG9tTGVmdDsKKyAgICBJbnRTaXplIGJvdHRvbVJpZ2h0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IDU5ZDQwYjQuLjZiZWUzMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTcyNywxNCArNzI3LDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Qm94U2hhZG93KFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEsIGJvb2wgYWRkKQogICAgIHJhcmVE
YXRhLT5tX2JveFNoYWRvdy5zZXQoc2hhZG93RGF0YSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6
OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0
LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9t
UmlnaHQpIGNvbnN0CitzdGF0aWMgdm9pZCBnZXRSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYg
ciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxl
ZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KQogewotICAgIHRvcExlZnQgPSBzdXJyb3VuZC0+Ym9y
ZGVyLnRvcExlZnQ7Ci0gICAgdG9wUmlnaHQgPSBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0Owot
ICAgIAotICAgIGJvdHRvbUxlZnQgPSBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQ7Ci0gICAg
Ym90dG9tUmlnaHQgPSBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0OwotCiAgICAgLy8gQ29u
c3RyYWluIGNvcm5lciByYWRpaSB1c2luZyBDU1MzIHJ1bGVzOgogICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJvcmRlci1yYWRpdXMKICAgICAKQEAgLTc3
OSw2ICs3NzMsMjggQEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNv
bnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFMKICAgICB9CiB9CiAKK3ZvaWQg
UmVuZGVyU3R5bGU6OmdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRT
aXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50
U2l6ZSYgYm90dG9tUmlnaHQpIGNvbnN0Cit7CisgICAgdG9wTGVmdCA9IHN1cnJvdW5kLT5ib3Jk
ZXIudG9wTGVmdDsKKyAgICB0b3BSaWdodCA9IHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQ7Cisg
ICAgCisgICAgYm90dG9tTGVmdCA9IHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdDsKKyAgICBi
b3R0b21SaWdodCA9IHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQ7CisKKyAgICBnZXRSYWRp
aUZvclJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsK
K30KKwordm9pZCBSZW5kZXJTdHlsZTo6Z2V0T3V0bGluZVJhZGlpRm9yUmVjdChjb25zdCBJbnRS
ZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90
dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQpIGNvbnN0Cit7CisgICAgdG9wTGVmdCA9IGJh
Y2tncm91bmQtPm1fb3V0bGluZS50b3BMZWZ0OworICAgIHRvcFJpZ2h0ID0gYmFja2dyb3VuZC0+
bV9vdXRsaW5lLnRvcFJpZ2h0OworCisgICAgYm90dG9tTGVmdCA9IGJhY2tncm91bmQtPm1fb3V0
bGluZS5ib3R0b21MZWZ0OworICAgIGJvdHRvbVJpZ2h0ID0gYmFja2dyb3VuZC0+bV9vdXRsaW5l
LmJvdHRvbVJpZ2h0OworCisgICAgZ2V0UmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7Cit9CisKIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVN
YXAqIFJlbmRlclN0eWxlOjpjb3VudGVyRGlyZWN0aXZlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJEaXJlY3RpdmVzLmdldCgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNDBjZjFjZC4uMmYxZTQ4NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zODUsNiArMzg1LDEyIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBJbnRTaXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQ7IH0KICAgICBib29sIGhhc0JvcmRl
clJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVz
KCk7IH0KIAorICAgIGNvbnN0IEludFNpemUmIG91dGxpbmVUb3BMZWZ0UmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gYmFja2dyb3VuZC0+bV9vdXRsaW5lLnRvcExlZnQ7IH0KKyAgICBjb25zdCBJbnRT
aXplJiBvdXRsaW5lVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBiYWNrZ3JvdW5kLT5t
X291dGxpbmUudG9wUmlnaHQ7IH0KKyAgICBjb25zdCBJbnRTaXplJiBvdXRsaW5lQm90dG9tTGVm
dFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS5ib3R0b21MZWZ0
OyB9CisgICAgY29uc3QgSW50U2l6ZSYgb3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gYmFja2dyb3VuZC0+bV9vdXRsaW5lLmJvdHRvbVJpZ2h0OyB9CisgICAgYm9vbCBo
YXNPdXRsaW5lUmFkaXVzKCkgY29uc3QgeyByZXR1cm4gYmFja2dyb3VuZC0+bV9vdXRsaW5lLmhh
c091dGxpbmVSYWRpdXMoKTsgfQorCiAgICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyTGVmdFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQog
ICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmxlZnQuc3R5bGUoKTsgfQogICAgIGNvbnN0IENvbG9yJiBib3JkZXJMZWZ0Q29s
b3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQuY29sb3I7IH0KQEAgLTc1
Miw2ICs3NTgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLmJvdHRvbVJpZ2h0LCBpbml0aWFsQm9y
ZGVyUmFkaXVzKCkpIH0KIAogICAgIHZvaWQgcmVzZXRPdXRsaW5lKCkgeyBTRVRfVkFSKGJhY2tn
cm91bmQsIG1fb3V0bGluZSwgT3V0bGluZVZhbHVlKCkpIH0KKyAgICB2b2lkIHJlc2V0T3V0bGlu
ZVJhZGl1cygpIHsgcmVzZXRPdXRsaW5lVG9wTGVmdFJhZGl1cygpOyByZXNldE91dGxpbmVUb3BS
aWdodFJhZGl1cygpOyByZXNldE91dGxpbmVCb3R0b21MZWZ0UmFkaXVzKCk7IHJlc2V0T3V0bGlu
ZUJvdHRvbVJpZ2h0UmFkaXVzKCk7IH0KKyAgICB2b2lkIHJlc2V0T3V0bGluZVRvcExlZnRSYWRp
dXMoKSB7IFNFVF9WQVIoYmFja2dyb3VuZCwgbV9vdXRsaW5lLnRvcExlZnQsIGluaXRpYWxPdXRs
aW5lUmFkaXVzKCkpIH0KKyAgICB2b2lkIHJlc2V0T3V0bGluZVRvcFJpZ2h0UmFkaXVzKCkgeyBT
RVRfVkFSKGJhY2tncm91bmQsIG1fb3V0bGluZS50b3BSaWdodCwgaW5pdGlhbE91dGxpbmVSYWRp
dXMoKSkgfQorICAgIHZvaWQgcmVzZXRPdXRsaW5lQm90dG9tTGVmdFJhZGl1cygpIHsgU0VUX1ZB
UihiYWNrZ3JvdW5kLCBtX291dGxpbmUuYm90dG9tTGVmdCwgaW5pdGlhbE91dGxpbmVSYWRpdXMo
KSkgfQorICAgIHZvaWQgcmVzZXRPdXRsaW5lQm90dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIo
YmFja2dyb3VuZCwgbV9vdXRsaW5lLmJvdHRvbVJpZ2h0LCBpbml0aWFsT3V0bGluZVJhZGl1cygp
KSB9CiAKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKGJhY2tncm91bmQsIG1fY29sb3IsIHYpIH0KIApAQCAtNzc1LDcgKzc4NiwyMSBAQCBwdWJs
aWM6CiAgICAgICAgIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKHMpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIHNldE91dGxpbmVUb3BMZWZ0UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VU
X1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUudG9wTGVmdCwgcykgfQorICAgIHZvaWQgc2V0T3V0
bGluZVRvcFJpZ2h0UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihiYWNrZ3JvdW5k
LCBtX291dGxpbmUudG9wUmlnaHQsIHMpIH0KKyAgICB2b2lkIHNldE91dGxpbmVCb3R0b21MZWZ0
UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUu
Ym90dG9tTGVmdCwgcykgfQorICAgIHZvaWQgc2V0T3V0bGluZUJvdHRvbVJpZ2h0UmFkaXVzKGNv
bnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUuYm90dG9tUmln
aHQsIHMpIH0KKworICAgIHZvaWQgc2V0T3V0bGluZVJhZGl1cyhjb25zdCBJbnRTaXplJiBzKQor
ICAgIHsKKyAgICAgICAgc2V0T3V0bGluZVRvcExlZnRSYWRpdXMocyk7CisgICAgICAgIHNldE91
dGxpbmVUb3BSaWdodFJhZGl1cyhzKTsKKyAgICAgICAgc2V0T3V0bGluZUJvdHRvbUxlZnRSYWRp
dXMocyk7CisgICAgICAgIHNldE91dGxpbmVCb3R0b21SaWdodFJhZGl1cyhzKTsKKyAgICB9CisK
ICAgICB2b2lkIGdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiwgSW50U2l6ZSYg
dG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUm
IGJvdHRvbVJpZ2h0KSBjb25zdDsKKyAgICB2b2lkIGdldE91dGxpbmVSYWRpaUZvclJlY3QoY29u
c3QgSW50UmVjdCYsIEludFNpemUmIHRvcExlZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXpl
JiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dEJvcmRlckxlZnRXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5sZWZ0LndpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUoRUJvcmRl
clN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLmxlZnQubV9zdHlsZSwgdikgfQpA
QCAtMTEzOCw2ICsxMTYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFVGV4dERlY29yYXRpb24g
aW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gVEROT05FOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxab29tKCkgeyByZXR1cm4gMS4wZjsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlh
bE91dGxpbmVPZmZzZXQoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIEludFNpemUgaW5pdGlh
bE91dGxpbmVSYWRpdXMoKSB7IHJldHVybiBJbnRTaXplKDAsIDApOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxPcGFjaXR5KCkgeyByZXR1cm4gMS4wZjsgfQogICAgIHN0YXRpYyBFQm94QWxp
Z25tZW50IGluaXRpYWxCb3hBbGlnbigpIHsgcmV0dXJuIEJTVFJFVENIOyB9CiAgICAgc3RhdGlj
IEVCb3hEaXJlY3Rpb24gaW5pdGlhbEJveERpcmVjdGlvbigpIHsgcmV0dXJuIEJOT1JNQUw7IH0K
LS0gCjEuNi41LjMKCg==
</data>
<flag name="review"
          id="25446"
          type_id="1"
          status="-"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="25447"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>