<?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>85834</bug_id>
          
          <creation_ts>2012-05-07 15:22:13 -0700</creation_ts>
          <short_desc>Fix performance regression for floats caused by LayoutUnit change</short_desc>
          <delta_ts>2012-05-09 12:37:46 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617998</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 15:22:13 -0700</bug_when>
    <thetext>The LayoutUnit (r116009) caused the nested float tests and the chromium http-bloat tests to regress.

http://webkit-perf.appspot.com/graph.html#tests=[[472030,2001,3001],[393045,2001,3001],[393045,2001,173262],[363057,2001,32196],[363057,2001,3001],[472030,2001,173262],[363057,2001,173262],[472030,2001,32196],[393045,2001,32196]]&amp;sel=1335802788243,1336407588243&amp;displayrange=7&amp;datatype=running

http://build.chromium.org/f/chromium/perf/linux-release/bloat-http/report.html?history=150&amp;rev=-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618010</commentid>
    <comment_count>1</comment_count>
      <attachid>140605</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 15:28:02 -0700</bug_when>
    <thetext>Created attachment 140605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618017</commentid>
    <comment_count>2</comment_count>
      <attachid>140605</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-07 15:33:10 -0700</bug_when>
    <thetext>Comment on attachment 140605
Patch

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

OK.  So does this get us back the whole speed loss?

&gt; Source/WebCore/platform/FractionalLayoutUnit.h:324
&gt; +#if ENABLE(SUBPIXEL_LAYOUT)

Presumably there is still a regression for ports with this enabled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618018</commentid>
    <comment_count>3</comment_count>
      <attachid>140605</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-07 15:33:32 -0700</bug_when>
    <thetext>Comment on attachment 140605
Patch

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

&gt;&gt; Source/WebCore/platform/FractionalLayoutUnit.h:324
&gt;&gt; +#if ENABLE(SUBPIXEL_LAYOUT)
&gt; 
&gt; Presumably there is still a regression for ports with this enabled?

Also, this multiply is not very bounded anymore... :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618023</commentid>
    <comment_count>4</comment_count>
      <attachid>140605</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 15:38:42 -0700</bug_when>
    <thetext>Comment on attachment 140605
Patch

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

It should get us back most of the lost performance. I&apos;ll post numbers before committing.

&gt;&gt;&gt; Source/WebCore/platform/FractionalLayoutUnit.h:324
&gt;&gt;&gt; +#if ENABLE(SUBPIXEL_LAYOUT)
&gt;&gt; 
&gt;&gt; Presumably there is still a regression for ports with this enabled?
&gt; 
&gt; Also, this multiply is not very bounded anymore... :)

Yes, we plan to address that separately before turning on the flag. We have a couple of ideas but need some more time validating them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618027</commentid>
    <comment_count>5</comment_count>
      <attachid>140605</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-07 15:40:34 -0700</bug_when>
    <thetext>Comment on attachment 140605
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        Disable the use of 64bit (long long) math ni the case where the fraction

Nit: ni.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618049</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 16:02:05 -0700</bug_when>
    <thetext>For floats_50_100_nested and floats_20_100_nested this patch seems to get back the entire speed loss. For floats_2_100_nested on the other hand we get back about 60%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618053</commentid>
    <comment_count>7</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 16:05:56 -0700</bug_when>
    <thetext>Unless anyone objects I plan to commit this and see what our perf bots thinks. If it fails to adequately address the regression I&apos;ll roll out the LayoutUnit change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618059</commentid>
    <comment_count>8</comment_count>
      <attachid>140613</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-07 16:10:03 -0700</bug_when>
    <thetext>Created attachment 140613
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618274</commentid>
    <comment_count>9</comment_count>
      <attachid>140613</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 21:11:31 -0700</bug_when>
    <thetext>Comment on attachment 140613
Patch for landing

Clearing flags on attachment: 140613

Committed r116392: &lt;http://trac.webkit.org/changeset/116392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618275</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 21:11:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618646</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-08 11:11:54 -0700</bug_when>
    <thetext>Unfortunately, this doesn&apos;t seem to have worked. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618724</commentid>
    <comment_count>12</comment_count>
      <attachid>140613</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-08 12:46:15 -0700</bug_when>
    <thetext>Comment on attachment 140613
Patch for landing

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Fix performance regression caused by r116009 by disabling the use of
&gt; +        64bit math in FractionalLayoutUnit, simplifying the pixelSnappedMaxX/Y
&gt; +        math, inlining a couple of methods and replacing the literal 0 (zero)
&gt; +        with ZERO_LAYOUT_UNIT.

Did you verify that the 0 -&gt; ZERO_LAYOUT_UNIT change actually affected performance? I find that highly dubious, so I want to be sure it actually happened!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618973</commentid>
    <comment_count>13</comment_count>
      <attachid>140820</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-05-08 16:59:59 -0700</bug_when>
    <thetext>Created attachment 140820
Patch

Another try at addressing the performance regressions after 116009.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618977</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 17:02:10 -0700</bug_when>
    <thetext>Attachment 140820 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/FractionalLayoutRect.h:187:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618990</commentid>
    <comment_count>15</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-05-08 17:15:31 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Attachment 140820 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/platform/graphics/FractionalLayoutRect.h:187:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
&gt; Total errors found: 1 in 4 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Thanks for the review, Ojan. I&apos;ll fix the style error and am waiting for the EWS bots to validate since I mucked with build files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619002</commentid>
    <comment_count>16</comment_count>
      <attachid>140820</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 17:31:19 -0700</bug_when>
    <thetext>Comment on attachment 140820
Patch

Attachment 140820 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12652527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619019</commentid>
    <comment_count>17</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2012-05-08 17:47:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/11411562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619060</commentid>
    <comment_count>18</comment_count>
      <attachid>140820</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 18:30:39 -0700</bug_when>
    <thetext>Comment on attachment 140820
Patch

Attachment 140820 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12651479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619066</commentid>
    <comment_count>19</comment_count>
      <attachid>140820</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 18:40:45 -0700</bug_when>
    <thetext>Comment on attachment 140820
Patch

Attachment 140820 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12647495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619086</commentid>
    <comment_count>20</comment_count>
      <attachid>140820</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-08 18:58:53 -0700</bug_when>
    <thetext>Comment on attachment 140820
Patch

Attachment 140820 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12656470</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619631</commentid>
    <comment_count>21</comment_count>
      <attachid>140972</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-05-09 10:38:08 -0700</bug_when>
    <thetext>Created attachment 140972
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619660</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 11:07:19 -0700</bug_when>
    <thetext>Attachment 140972 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/ChangeLog:18:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619680</commentid>
    <comment_count>23</comment_count>
      <attachid>140985</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-05-09 11:29:25 -0700</bug_when>
    <thetext>Created attachment 140985
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619731</commentid>
    <comment_count>24</comment_count>
      <attachid>140985</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 12:35:23 -0700</bug_when>
    <thetext>Comment on attachment 140985
Patch for landing

Clearing flags on attachment: 140985

Committed r116549: &lt;http://trac.webkit.org/changeset/116549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619732</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 12:35:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619735</commentid>
    <comment_count>26</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-05-09 12:37:46 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; All reviewed patches have been landed.  Closing bug.

I&apos;ll be monitoring the perf bots and if we don&apos;t see improvement, I&apos;ll roll back 116009 pending further investigation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140605</attachid>
            <date>2012-05-07 15:28:02 -0700</date>
            <delta_ts>2012-05-07 16:09:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85834-20120507152758.patch</filename>
            <type>text/plain</type>
            <size>27266</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA1LTA3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiBmb3IgZmxvYXRzIGNhdXNlZCBieSBMYXlvdXRVbml0IGNoYW5nZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiBjYXVzZWQgYnkgcjExNjAwOSBieSBkaXNhYmxpbmcgdGhlIHVzZSBvZgorICAgICAg
ICA2NGJpdCBtYXRoIGluIEZyYWN0aW9uYWxMYXlvdXRVbml0LCBzaW1wbGlmeWluZyB0aGUgcGl4
ZWxTbmFwcGVkTWF4WC9ZCisgICAgICAgIG1hdGgsIGlubGluaW5nIGEgY291cGxlIG9mIG1ldGhv
ZHMgYW5kIHJlcGxhY2luZyB0aGUgbGl0ZXJhbCAwICh6ZXJvKQorICAgICAgICB3aXRoIFpFUk9f
TEFZT1VUX1VOSVQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gZnVuY3Rp
b25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpib3VuZGVkTXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3IqKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLyk6CisgICAgICAgIERpc2FibGUg
dGhlIHVzZSBvZiA2NGJpdCAobG9uZyBsb25nKSBtYXRoIG5pIHRoZSBjYXNlIHdoZXJlIHRoZSBm
cmFjdGlvbgorICAgICAgICBpcyBzZXQgdG8gMS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWN0aW9uYWxMYXlvdXRSZWN0OjpwaXhlbFNuYXBwZWRNYXhYKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWN0aW9uYWxMYXlvdXRSZWN0OjpwaXhlbFNuYXBwZWRNYXhZKToKKyAgICAgICAgU2ltcGxp
ZnkgdGhlIHBpeGVsIHNuYXBwaW5nIGxvZ2ljIGZvciBtYXhYL21heFkuCisgICAgICAgIAorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29t
cHV0ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbGVhckZsb2F0
c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUxvZ2ljYWxMb2NhdGlvbkZv
ckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb3dlc3RGbG9hdExvZ2lj
YWxCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldENsZWFyRGVsdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExv
Z2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmlu
Z1JlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RMaW5lUG9zaXRp
b25Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsV2lkdGhG
b3JDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVj
dDo6eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6Om1h
eFgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6bWF4WSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6aGVpZ2h0KToKKyAg
ICAgICAgKEZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpG
bG9hdGluZ09iamVjdDo6cGl4ZWxTbmFwcGVkWCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6RmxvYXRpbmdPYmplY3Q6OnBpeGVsU25hcHBlZE1heFgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpwaXhlbFNuYXBwZWRZKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6cGl4ZWxTbmFwcGVkTWF4WSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnBpeGVsU25h
cHBlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVj
dDo6cGl4ZWxTbmFwcGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpS
ZW5kZXJCbG9ja1JhcmVEYXRhOjpwb3NpdGl2ZU1hcmdpbkJlZm9yZURlZmF1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrUmFyZURhdGE6Om5lZ2F0aXZlTWFy
Z2luQmVmb3JlRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6UmVuZGVy
QmxvY2tSYXJlRGF0YTo6cG9zaXRpdmVNYXJnaW5BZnRlckRlZmF1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrUmFyZURhdGE6Om5lZ2F0aXZlTWFyZ2luQWZ0
ZXJEZWZhdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YWNjdW11bGF0ZVJlbGF0aXZlUG9zaXRpb25PZmZzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRUb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRk
aW5nQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21w
dXRlZENTU1BhZGRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdBZnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nU3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NT
UGFkZGluZ0VuZCk6CisKIDIwMTItMDUtMDcgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFsbG93IGZvciBhc3ltbWV0cmljIHRpbGUgc2l6
ZXMgb24gY29tcG9zaXRlZCB0aWxlZCBsYXllcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkocmV2aXNpb24gMTE2MzEzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDYgKzMyMSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQg
YSwgY28KIC8vIEZvciBtdWx0aXBsaWNhdGlvbiB0aGF0J3MgcHJvbmUgdG8gb3ZlcmZsb3csIHRo
aXMgYm91bmRzIGl0IHRvIEZyYWN0aW9uYWxMYXlvdXRVbml0OjptYXgoKSBhbmQgOjptaW4oKQog
aW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0IGJvdW5kZWRNdWx0aXBseShjb25zdCBGcmFjdGlv
bmFsTGF5b3V0VW5pdCYgYSwgY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQmIGIpCiB7CisjaWYg
RU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCByZXR1cm5W
YWw7CiAgICAgbG9uZyBsb25nIHJhd1ZhbCA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYS5yYXdW
YWx1ZSgpKSAqIGIucmF3VmFsdWUoKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAgICAgaWYg
KHJhd1ZhbCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCkBAIC0zMjksMTQgKzMz
MCwyMSBAQCBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQgYm91bmRlZE11bHRpCiAgICAgICAg
IHJldHVybiBGcmFjdGlvbmFsTGF5b3V0VW5pdDo6bWluKCk7CiAgICAgcmV0dXJuVmFsLnNldFJh
d1ZhbHVlKHJhd1ZhbCk7CiAgICAgcmV0dXJuIHJldHVyblZhbDsKKyNlbHNlCisgICAgcmV0dXJu
IGEucmF3VmFsdWUoKSAqIGIucmF3VmFsdWUoKTsKKyNlbmRpZgogfQogCiBpbmxpbmUgRnJhY3Rp
b25hbExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiBhLCBj
b25zdCBGcmFjdGlvbmFsTGF5b3V0VW5pdCYgYikKIHsKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZ
T1VUKQogICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0IHJldHVyblZhbDsKICAgICBsb25nIGxvbmcg
cmF3VmFsID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihhLnJhd1ZhbHVlKCkpICogYi5yYXdWYWx1
ZSgpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKICAgICByZXR1cm5WYWwuc2V0UmF3VmFsdWUo
cmF3VmFsKTsKICAgICByZXR1cm4gcmV0dXJuVmFsOworI2Vsc2UKKyAgICByZXR1cm4gYS5yYXdW
YWx1ZSgpICogYi5yYXdWYWx1ZSgpOworI2VuZGlmCiB9ICAgIAogCiBpbmxpbmUgZG91YmxlIG9w
ZXJhdG9yKihjb25zdCBGcmFjdGlvbmFsTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIpCkBAIC0zODEs
MTAgKzM4OSwxNCBAQCBpbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25zdCBkb3VibGUgYSwgCiAK
IGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgRnJhY3Rpb25hbExh
eW91dFVuaXQmIGEsIGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiBiKQogeworI2lmIEVOQUJM
RShTVUJQSVhFTF9MQVlPVVQpCiAgICAgRnJhY3Rpb25hbExheW91dFVuaXQgcmV0dXJuVmFsOwog
ICAgIGxvbmcgbG9uZyByYXdWYWwgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGtGaXhlZFBvaW50
RGVub21pbmF0b3IpICogYS5yYXdWYWx1ZSgpIC8gYi5yYXdWYWx1ZSgpOwogICAgIHJldHVyblZh
bC5zZXRSYXdWYWx1ZShyYXdWYWwpOwogICAgIHJldHVybiByZXR1cm5WYWw7CisjZWxzZQorICAg
IHJldHVybiBhLnJhd1ZhbHVlKCkgLyBiLnJhd1ZhbHVlKCk7CisjZW5kaWYKIH0gICAgCiAKIGlu
bGluZSBmbG9hdCBvcGVyYXRvci8oY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQmIGEsIGZsb2F0
IGIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5
b3V0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmgJKHJldmlzaW9uIDExNjMxMykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogICAgIGludCBwaXhlbFNuYXBwZWRZKCkgY29u
c3QgeyByZXR1cm4geSgpLnJvdW5kKCk7IH0KICAgICBpbnQgcGl4ZWxTbmFwcGVkV2lkdGgoKSBj
b25zdCB7IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwod2lkdGgoKSwgeCgpKTsgfQogICAgIGludCBw
aXhlbFNuYXBwZWRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwoaGVpZ2h0
KCksIHkoKSk7IH0KLSAgICBpbnQgcGl4ZWxTbmFwcGVkTWF4WCgpIGNvbnN0IHsgcmV0dXJuIHBp
eGVsU25hcHBlZFgoKSArIHBpeGVsU25hcHBlZFdpZHRoKCk7IH0KLSAgICBpbnQgcGl4ZWxTbmFw
cGVkTWF4WSgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZFkoKSArIHBpeGVsU25hcHBlZEhl
aWdodCgpOyB9CisgICAgaW50IHBpeGVsU25hcHBlZE1heFgoKSBjb25zdCB7IHJldHVybiAobV9s
b2NhdGlvbi54KCkgKyBtX3NpemUud2lkdGgoKSkucm91bmQoKTsgfQorICAgIGludCBwaXhlbFNu
YXBwZWRNYXhZKCkgY29uc3QgeyByZXR1cm4gKG1fbG9jYXRpb24ueSgpICsgbV9zaXplLmhlaWdo
dCgpKS5yb3VuZCgpOyB9CiAKICAgICB2b2lkIHNldFgoRnJhY3Rpb25hbExheW91dFVuaXQgeCkg
eyBtX2xvY2F0aW9uLnNldFgoeCk7IH0KICAgICB2b2lkIHNldFkoRnJhY3Rpb25hbExheW91dFVu
aXQgeSkgeyBtX2xvY2F0aW9uLnNldFkoeSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTE2MzEzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyOSw3ICsxMjI5
LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKAogICAgIC8vIChj
KSBoYXZlIGJvcmRlci9wYWRkaW5nLAogICAgIC8vIChkKSBoYXZlIGEgbWluLWhlaWdodAogICAg
IC8vIChlKSBoYXZlIHNwZWNpZmllZCB0aGF0IG9uZSBvZiBvdXIgbWFyZ2lucyBjYW4ndCBjb2xs
YXBzZSB1c2luZyBhIENTUyBleHRlbnNpb24KLSAgICBpZiAobG9naWNhbEhlaWdodCgpID4gMAor
ICAgIGlmIChsb2dpY2FsSGVpZ2h0KCkgPiBaRVJPX0xBWU9VVF9VTklUCiAgICAgICAgIHx8IGlz
VGFibGUoKSB8fCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpCiAgICAgICAgIHx8IHN0
eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKS5pc1Bvc2l0aXZlKCkKICAgICAgICAgfHwgc3R5bGUo
KS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UoKSA9PSBNU0VQQVJBVEUgfHwgc3R5bGUoKS0+bWFyZ2lu
QWZ0ZXJDb2xsYXBzZSgpID09IE1TRVBBUkFURSkKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkKICAgICBjbGVhckZsb2F0cygpOwog
CiAgICAgTGF5b3V0VW5pdCBwcmV2aW91c0hlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICBz
ZXRMb2dpY2FsSGVpZ2h0KDApOworICAgIHNldExvZ2ljYWxIZWlnaHQoWkVST19MQVlPVVRfVU5J
VCk7CiAgICAgYm9vbCBoYXNTcGVjaWZpZWRQYWdlTG9naWNhbEhlaWdodCA9IGZhbHNlOwogICAg
IGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7CiAgICAgQ29sdW1uSW5mbyog
Y29sSW5mbyA9IGNvbHVtbkluZm8oKTsKQEAgLTEzODQsMTEgKzEzODQsMTEgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAgICAgICAgICAgLy8gYXZvaWQgZG9p
bmcgdHdvIGxheW91dCBwYXNzZXMuCiAgICAgICAgICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgp
OwogICAgICAgICAgICAgTGF5b3V0VW5pdCBjb2x1bW5IZWlnaHQgPSBjb250ZW50TG9naWNhbEhl
aWdodCgpOwotICAgICAgICAgICAgaWYgKGNvbHVtbkhlaWdodCA+IDApIHsKKyAgICAgICAgICAg
IGlmIChjb2x1bW5IZWlnaHQgPiBaRVJPX0xBWU9VVF9VTklUKSB7CiAgICAgICAgICAgICAgICAg
cGFnZUxvZ2ljYWxIZWlnaHQgPSBjb2x1bW5IZWlnaHQ7CiAgICAgICAgICAgICAgICAgaGFzU3Bl
Y2lmaWVkUGFnZUxvZ2ljYWxIZWlnaHQgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgc2V0TG9naWNhbEhlaWdodCgwKTsKKyAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoWkVS
T19MQVlPVVRfVU5JVCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNvbEluZm8tPmNvbHVtbkhl
aWdodCgpICE9IHBhZ2VMb2dpY2FsSGVpZ2h0ICYmIGV2ZXJIYWRMYXlvdXQoKSkgewogICAgICAg
ICAgICAgY29sSW5mby0+c2V0Q29sdW1uSGVpZ2h0KHBhZ2VMb2dpY2FsSGVpZ2h0KTsKQEAgLTE0
NDcsOSArMTQ0Nyw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkK
ICAgICAgICAgICAgIGxheWVyKCktPnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHRydWUpOwogICAg
IH0KIAotICAgIExheW91dFVuaXQgcmVwYWludExvZ2ljYWxUb3AgPSAwOwotICAgIExheW91dFVu
aXQgcmVwYWludExvZ2ljYWxCb3R0b20gPSAwOwotICAgIExheW91dFVuaXQgbWF4RmxvYXRMb2dp
Y2FsQm90dG9tID0gMDsKKyAgICBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsVG9wID0gWkVST19M
QVlPVVRfVU5JVDsKKyAgICBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsQm90dG9tID0gWkVST19M
QVlPVVRfVU5JVDsKKyAgICBMYXlvdXRVbml0IG1heEZsb2F0TG9naWNhbEJvdHRvbSA9IFpFUk9f
TEFZT1VUX1VOSVQ7CiAgICAgaWYgKCFmaXJzdENoaWxkKCkgJiYgIWlzQW5vbnltb3VzQmxvY2so
KSkKICAgICAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiAgICAgaWYgKGNoaWxkcmVuSW5s
aW5lKCkpCkBAIC0xNTg2LDkgKzE1ODYsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlT3Zl
cmZsb3coTGF5b3V0CiAgICAgICAgIExheW91dFJlY3QgY2xpZW50UmVjdChjbGllbnRCb3hSZWN0
KCkpOwogICAgICAgICBMYXlvdXRSZWN0IHJlY3RUb0FwcGx5OwogICAgICAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHJlY3RUb0FwcGx5ID0gTGF5b3V0UmVj
dChjbGllbnRSZWN0LngoKSwgY2xpZW50UmVjdC55KCksIDEsIG1heDxMYXlvdXRVbml0PigwLCBv
bGRDbGllbnRBZnRlckVkZ2UgLSBjbGllbnRSZWN0LnkoKSkpOworICAgICAgICAgICAgcmVjdFRv
QXBwbHkgPSBMYXlvdXRSZWN0KGNsaWVudFJlY3QueCgpLCBjbGllbnRSZWN0LnkoKSwgMSwgbWF4
KFpFUk9fTEFZT1VUX1VOSVQsIG9sZENsaWVudEFmdGVyRWRnZSAtIGNsaWVudFJlY3QueSgpKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlY3RUb0FwcGx5ID0gTGF5b3V0UmVjdChjbGll
bnRSZWN0LngoKSwgY2xpZW50UmVjdC55KCksIG1heDxMYXlvdXRVbml0PigwLCBvbGRDbGllbnRB
ZnRlckVkZ2UgLSBjbGllbnRSZWN0LngoKSksIDEpOworICAgICAgICAgICAgcmVjdFRvQXBwbHkg
PSBMYXlvdXRSZWN0KGNsaWVudFJlY3QueCgpLCBjbGllbnRSZWN0LnkoKSwgbWF4KFpFUk9fTEFZ
T1VUX1VOSVQsIG9sZENsaWVudEFmdGVyRWRnZSAtIGNsaWVudFJlY3QueCgpKSwgMSk7CiAgICAg
ICAgIGFkZExheW91dE92ZXJmbG93KHJlY3RUb0FwcGx5KTsKICAgICB9CiAgICAgICAgIApAQCAt
MTk0OSw3ICsxOTQ5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHNJZk5l
ZQogICAgICAgICAKICAgICAgICAgLy8gQWRqdXN0IG91ciBoZWlnaHQgc3VjaCB0aGF0IHdlIGFy
ZSByZWFkeSB0byBiZSBjb2xsYXBzZWQgd2l0aCBzdWJzZXF1ZW50IHNpYmxpbmdzIChvciB0aGUg
Ym90dG9tCiAgICAgICAgIC8vIG9mIHRoZSBwYXJlbnQgYmxvY2spLgotICAgICAgICBzZXRMb2dp
Y2FsSGVpZ2h0KGNoaWxkLT55KCkgLSBtYXg8TGF5b3V0VW5pdD4oMCwgbWFyZ2luSW5mby5tYXJn
aW4oKSkpOworICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGNoaWxkLT55KCkgLSBtYXgoWkVST19M
QVlPVVRfVU5JVCwgbWFyZ2luSW5mby5tYXJnaW4oKSkpOwogICAgIH0gZWxzZQogICAgICAgICAv
LyBJbmNyZWFzZSBvdXIgaGVpZ2h0IGJ5IHRoZSBhbW91bnQgd2UgaGFkIHRvIGNsZWFyLgogICAg
ICAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodCgpICsgaGVpZ2h0SW5jcmVhc2UpOwpAQCAtMjcx
Myw3ICsyNzEzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDaGlsZHJlbihQYWludEluZgog
ICAgICAgICBpZiAoY2hlY2tBZnRlckFsd2F5cwogICAgICAgICAgICAgJiYgKGFic29sdXRlQ2hp
bGRZICsgY2hpbGQtPmhlaWdodCgpKSA+IHBhaW50SW5mby5yZWN0LnkoKQogICAgICAgICAgICAg
JiYgKGFic29sdXRlQ2hpbGRZICsgY2hpbGQtPmhlaWdodCgpKSA8IHBhaW50SW5mby5yZWN0Lm1h
eFkoKSkgewotICAgICAgICAgICAgdmlldygpLT5zZXRCZXN0VHJ1bmNhdGVkQXQoYWJzb2x1dGVD
aGlsZFkgKyBjaGlsZC0+aGVpZ2h0KCkgKyBtYXg8TGF5b3V0VW5pdD4oMCwgY2hpbGQtPmNvbGxh
cHNlZE1hcmdpbkFmdGVyKCkpLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgICAgIHZpZXcoKS0+c2V0
QmVzdFRydW5jYXRlZEF0KGFic29sdXRlQ2hpbGRZICsgY2hpbGQtPmhlaWdodCgpICsgbWF4KFpF
Uk9fTEFZT1VUX1VOSVQsIGNoaWxkLT5jb2xsYXBzZWRNYXJnaW5BZnRlcigpKSwgdGhpcywgdHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjYxLDE0ICsz
MjYxLDE0IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2EKIHsKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBsYXN0TG9naWNhbFRvcDsKICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQgPSBibG9ja0RpcmVjdGlvbk9mZnNldChyb290QmxvY2ssIG9mZnNldEZy
b21Sb290QmxvY2spICsgbG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxUb3A7Ci0gICAgaWYgKGxvZ2lj
YWxIZWlnaHQgPD0gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oMCkpCisgICAgaWYgKGxvZ2ljYWxI
ZWlnaHQgPD0gWkVST19MQVlPVVRfVU5JVCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsK
IAogICAgIC8vIEdldCB0aGUgc2VsZWN0aW9uIG9mZnNldHMgZm9yIHRoZSBib3R0b20gb2YgdGhl
IGdhcAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtYXgobGFzdExvZ2ljYWxMZWZ0LCBs
b2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxCb3R0b20pKTsKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1pbihsYXN0TG9naWNhbFJpZ2h0LCBsb2dpY2Fs
UmlnaHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsQm90dG9tKSk7CiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKLSAgICBp
ZiAobG9naWNhbFdpZHRoIDw9IHN0YXRpY19jYXN0PExheW91dFVuaXQ+KDApKQorICAgIGlmIChs
b2dpY2FsV2lkdGggPD0gWkVST19MQVlPVVRfVU5JVCkKICAgICAgICAgcmV0dXJuIExheW91dFJl
Y3QoKTsKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay0+bG9naWNhbFJlY3RU
b1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2lj
YWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKQEAgLTMy
ODQsNyArMzI4NCw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWMK
ICAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxMZWZ0ID0gbWF4KGxvZ2ljYWxMZWZ0U2Vs
ZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxMZWZ0U2VsZWN0aW9u
T2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBMYXlv
dXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxSaWdodCA9IG1pbihpbmxpbmVEaXJlY3Rpb25PZmZzZXQo
cm9vdEJsb2NrLCBvZmZzZXRGcm9tUm9vdEJsb2NrKSArIGxvZ2ljYWxMZWZ0LCBtaW4obG9naWNh
bFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxSaWdo
dFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KSkp
OwogICAgIExheW91dFVuaXQgcm9vdEJsb2NrTG9naWNhbFdpZHRoID0gcm9vdEJsb2NrTG9naWNh
bFJpZ2h0IC0gcm9vdEJsb2NrTG9naWNhbExlZnQ7Ci0gICAgaWYgKHJvb3RCbG9ja0xvZ2ljYWxX
aWR0aCA8PSBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PigwKSkKKyAgICBpZiAocm9vdEJsb2NrTG9n
aWNhbFdpZHRoIDw9IFpFUk9fTEFZT1VUX1VOSVQpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7CiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2stPmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290Qmxv
Y2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSk7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRl
ckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlCiAgICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dpY2Fs
TGVmdCA9IG1heChpbmxpbmVEaXJlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBvZmZzZXRGcm9tUm9v
dEJsb2NrKSArIGxvZ2ljYWxSaWdodCwgbWF4KGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJv
b3RCbG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9j
aywgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpKSk7CiAgICAgTGF5b3V0VW5pdCByb290Qmxv
Y2tMb2dpY2FsUmlnaHQgPSBtaW4obG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9j
aywgbG9naWNhbFRvcCksIGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxv
Z2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dp
Y2FsV2lkdGggPSByb290QmxvY2tMb2dpY2FsUmlnaHQgLSByb290QmxvY2tMb2dpY2FsTGVmdDsK
LSAgICBpZiAocm9vdEJsb2NrTG9naWNhbFdpZHRoIDw9IHN0YXRpY19jYXN0PExheW91dFVuaXQ+
KDApKQorICAgIGlmIChyb290QmxvY2tMb2dpY2FsV2lkdGggPD0gWkVST19MQVlPVVRfVU5JVCkK
ICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9
IHJvb3RCbG9jay0+bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBv
c2l0aW9uLCBMYXlvdXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2Fs
VG9wLCByb290QmxvY2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKQEAgLTM1NjgsNyAr
MzU2OCw3IEBAIExheW91dFBvaW50IFJlbmRlckJsb2NrOjpjb21wdXRlTG9naWNhbEwKICAgICAg
ICAgICAgICAgICBmbG9hdExvZ2ljYWxXaWR0aCA9IG1pbihsb2dpY2FsV2lkdGhGb3JGbG9hdChm
bG9hdGluZ09iamVjdCksIGxvZ2ljYWxSaWdodE9mZnNldCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmbG9hdExvZ2ljYWxMZWZ0ID0gbWF4
PExheW91dFVuaXQ+KGxvZ2ljYWxMZWZ0T2Zmc2V0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxM
ZWZ0KCksIGZsb2F0TG9naWNhbExlZnQpOworICAgICAgICBmbG9hdExvZ2ljYWxMZWZ0ID0gbWF4
KGxvZ2ljYWxMZWZ0T2Zmc2V0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxMZWZ0KCksIGZsb2F0
TG9naWNhbExlZnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVt
YWluaW5nTGVmdCA9IDE7CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWluaW5nUmlnaHQg
PSAxOwpAQCAtMzk2Miw4ICszOTYyLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bmV4dEZs
b2F0TG9naWNhbAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bG93ZXN0RmxvYXRMb2dpY2FsQm90
dG9tKEZsb2F0aW5nT2JqZWN0OjpUeXBlIGZsb2F0VHlwZSkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZmxvYXRpbmdPYmplY3RzKQotICAgICAgICByZXR1cm4gMDsKLSAgICBMYXlvdXRVbml0IGxvd2Vz
dEZsb2F0Qm90dG9tID0gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAg
TGF5b3V0VW5pdCBsb3dlc3RGbG9hdEJvdHRvbSA9IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgY29u
c3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVj
dHMtPnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdP
YmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0g
ZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00MzQwLDcg
KzQzNDAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpnZXRDbGVhckRlbHRhKFJlCiAgICAg
fQogCiAgICAgLy8gV2UgYWxzbyBjbGVhciBmbG9hdHMgaWYgd2UgYXJlIHRvbyBiaWcgdG8gc2l0
IG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBmbG9hdCAoYW5kIHdpc2ggdG8gYXZvaWQgZmxvYXRzIGJ5
IGRlZmF1bHQpLgotICAgIExheW91dFVuaXQgcmVzdWx0ID0gY2xlYXJTZXQgPyBtYXg8TGF5b3V0
VW5pdD4oMCwgbG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxUb3ApIDogWkVST19MQVlPVVRfVU5JVDsK
KyAgICBMYXlvdXRVbml0IHJlc3VsdCA9IGNsZWFyU2V0ID8gbWF4KFpFUk9fTEFZT1VUX1VOSVQs
IGxvZ2ljYWxCb3R0b20gLSBsb2dpY2FsVG9wKSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgaWYg
KCFyZXN1bHQgJiYgY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7CiAgICAgICAgIExheW91dFVuaXQg
bmV3TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC01
NjgzLDggKzU2ODMsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRM
CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIG1ha2Ugc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIG5vbi1u
ZWdhdGl2ZS4KLSAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heDxMYXlvdXRVbml0
PigwLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCk7Ci0gICAgbV9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oMCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgp
OworICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KFpFUk9fTEFZT1VUX1VOSVQs
IG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKyAgICBtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IG1heChaRVJPX0xBWU9VVF9VTklULCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7
CiAKICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChmbG9hdExlZnRXaWR0aCAr
IGZsb2F0UmlnaHRXaWR0aCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogfQpAQCAtNjQ4
MCw4ICs2NDgwLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdAog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3IgYmxvY2stZmxvd3MgdGhhdCBhcmUg
aG9yaXpvbnRhbC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2NzgxCiAgICAgICAgIGJvb2wgcHJldklubGluZUhhc0xpbmVCb3ggPSB0b1JlbmRl
cklubGluZShpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPm5vZGUoKS0+cmVuZGVyZXIoKSkt
PmZpcnN0TGluZUJveCgpOyAKLSAgICAgICAgZmxvYXQgdG9wTWFyZ2luID0gcHJldklubGluZUhh
c0xpbmVCb3ggPyBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSA6IHN0YXRpY19jYXN0PExheW91dFVu
aXQ+KDApOwotICAgICAgICBmbG9hdCBib3R0b21NYXJnaW4gPSBuZXh0SW5saW5lSGFzTGluZUJv
eCA/IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgOiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PigwKTsK
KyAgICAgICAgZmxvYXQgdG9wTWFyZ2luID0gcHJldklubGluZUhhc0xpbmVCb3ggPyBjb2xsYXBz
ZWRNYXJnaW5CZWZvcmUoKSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIGZsb2F0IGJvdHRv
bU1hcmdpbiA9IG5leHRJbmxpbmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6
IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zm
c2V0LngoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgLSB0b3BNYXJnaW4sIHdpZHRoKCksIGhlaWdo
dCgpICsgdG9wTWFyZ2luICsgYm90dG9tTWFyZ2luKTsKICAgICAgICAgaWYgKCFyZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3Qp
KTsKQEAgLTY3MzMsMTAgKzY3MzMsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0TGluZVBv
c2l0aW9uRm9yUAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbm9uLXVuaWZvcm0gcGFnZSBoZWln
aHQsIHRoZW4gd2UgaGF2ZSB0byBzaGlmdCBmdXJ0aGVyIHBvc3NpYmx5LgogICAgICAgICBpZiAo
IWhhc1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCAmJiAhcHVzaFRvTmV4dFBhZ2VXaXRoTWluaW11
bUxvZ2ljYWxIZWlnaHQocmVtYWluaW5nTG9naWNhbEhlaWdodCwgbG9naWNhbE9mZnNldCwgbGlu
ZUhlaWdodCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExheW91dFVuaXQgdG90YWxM
b2dpY2FsSGVpZ2h0ID0gbGluZUhlaWdodCArIG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsT2Zm
c2V0KTsKKyAgICAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxIZWlnaHQgPSBsaW5lSGVpZ2h0
ICsgbWF4KFpFUk9fTEFZT1VUX1VOSVQsIGxvZ2ljYWxPZmZzZXQpOwogICAgICAgICBMYXlvdXRV
bml0IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQgPSBoYXNVbmlmb3JtUGFnZUxvZ2ljYWxI
ZWlnaHQgPyBwYWdlTG9naWNhbEhlaWdodCA6IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxv
Z2ljYWxPZmZzZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgaWYgKGxpbmVC
b3ggPT0gZmlyc3RSb290Qm94KCkgJiYgdG90YWxMb2dpY2FsSGVpZ2h0IDwgcGFnZUxvZ2ljYWxI
ZWlnaHRBdE5ld09mZnNldCAmJiAhaXNQb3NpdGlvbmVkKCkgJiYgIWlzVGFibGVDZWxsKCkpCi0g
ICAgICAgICAgICBzZXRQYWdpbmF0aW9uU3RydXQocmVtYWluaW5nTG9naWNhbEhlaWdodCArIG1h
eDxMYXlvdXRVbml0PigwLCBsb2dpY2FsT2Zmc2V0KSk7CisgICAgICAgICAgICBzZXRQYWdpbmF0
aW9uU3RydXQocmVtYWluaW5nTG9naWNhbEhlaWdodCArIG1heChaRVJPX0xBWU9VVF9VTklULCBs
b2dpY2FsT2Zmc2V0KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZGVsdGEgKz0gcmVt
YWluaW5nTG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGxpbmVCb3gtPnNldFBhZ2luYXRpb25T
dHJ1dChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAxMTYzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHB1
YmxpYzoKICAgICAvLyBjb21wdXRlIHRoZSByZWdpb24gYWxsIG92ZXIgYWdhaW4gd2hlbiB5b3Ug
YWxyZWFkeSBrbm93IGl0LgogICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9y
TGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIGZpcnN0TGluZSwgUmVuZGVyUmVnaW9uKiBy
ZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpCisgICAgICAgIHJldHVybiBtYXgoWkVST19MQVlPVVRfVU5JVCwgbG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCiAgICAgICAgICAgICAtIGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpKTsKICAgICB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJSZWdp
b24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBj
b25zdCAKQEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
UmlnaHRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVM
b2dpY2FsV2lkdGhGb3JDb250ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9m
ZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0
dXJuIG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lv
biwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgLQorICAgICAgICByZXR1cm4gbWF4
KFpFUk9fTEFZT1VUX1VOSVQsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVnaW9uLCBv
ZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSAtCiAgICAgICAgICAgICBsb2dpY2FsTGVm
dE9mZnNldEZvckNvbnRlbnQocmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdl
KSk7IH0KICAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24q
IHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25z
dAogICAgIHsKQEAgLTU2NCwxOSArNTY0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNQ
bGFjZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGxhY2VkOyB9CiAgICAgICAgIHZvaWQgc2V0SXNQ
bGFjZWQoYm9vbCBwbGFjZWQgPSB0cnVlKSB7IG1faXNQbGFjZWQgPSBwbGFjZWQ7IH0KIAotICAg
ICAgICBMYXlvdXRVbml0IHgoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJuIG1f
ZnJhbWVSZWN0LngoKTsgfQotICAgICAgICBMYXlvdXRVbml0IG1heFgoKSBjb25zdCB7IEFTU0VS
VChpc1BsYWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0Lm1heFgoKTsgfQotICAgICAgICBMYXlv
dXRVbml0IHkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0
LnkoKTsgfQotICAgICAgICBMYXlvdXRVbml0IG1heFkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNl
ZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0Lm1heFkoKTsgfQotICAgICAgICBMYXlvdXRVbml0IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQotICAgICAgICBMYXlv
dXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9Ci0K
LSAgICAgICAgaW50IHBpeGVsU25hcHBlZFgoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsg
cmV0dXJuIG1fZnJhbWVSZWN0LnBpeGVsU25hcHBlZFgoKTsgfQotICAgICAgICBpbnQgcGl4ZWxT
bmFwcGVkTWF4WCgpIGNvbnN0IHsgQVNTRVJUKGlzUGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJl
Y3QucGl4ZWxTbmFwcGVkTWF4WCgpOyB9Ci0gICAgICAgIGludCBwaXhlbFNuYXBwZWRZKCkgY29u
c3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRZ
KCk7IH0KLSAgICAgICAgaW50IHBpeGVsU25hcHBlZE1heFkoKSBjb25zdCB7IEFTU0VSVChpc1Bs
YWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0LnBpeGVsU25hcHBlZE1heFkoKTsgfQotICAgICAg
ICBpbnQgcGl4ZWxTbmFwcGVkV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhl
bFNuYXBwZWRXaWR0aCgpOyB9Ci0gICAgICAgIGludCBwaXhlbFNuYXBwZWRIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKTsgfQorICAgICAgICBp
bmxpbmUgTGF5b3V0VW5pdCB4KCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBt
X2ZyYW1lUmVjdC54KCk7IH0KKyAgICAgICAgaW5saW5lIExheW91dFVuaXQgbWF4WCgpIGNvbnN0
IHsgQVNTRVJUKGlzUGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJlY3QubWF4WCgpOyB9CisgICAg
ICAgIGlubGluZSBMYXlvdXRVbml0IHkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0
dXJuIG1fZnJhbWVSZWN0LnkoKTsgfQorICAgICAgICBpbmxpbmUgTGF5b3V0VW5pdCBtYXhZKCkg
Y29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5tYXhZKCk7IH0K
KyAgICAgICAgaW5saW5lIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
UmVjdC53aWR0aCgpOyB9CisgICAgICAgIGlubGluZSBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9CisKKyAgICAgICAgaW5saW5lIGludCBw
aXhlbFNuYXBwZWRYKCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1l
UmVjdC5waXhlbFNuYXBwZWRYKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRN
YXhYKCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhl
bFNuYXBwZWRNYXhYKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRZKCkgY29u
c3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRZ
KCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRNYXhZKCkgY29uc3QgeyBBU1NF
UlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRNYXhZKCk7IH0K
KyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhl
bFNuYXBwZWRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRI
ZWlnaHQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0WChMYXlvdXRVbml0IHgpIHsgQVNTRVJUKCFp
c0luUGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0WCh4KTsgfQogICAgICAgICB2b2lkIHNl
dFkoTGF5b3V0VW5pdCB5KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJhbWVSZWN0
LnNldFkoeSk7IH0KQEAgLTEwNzIsMjAgKzEwNzIsMjAgQEAgcHJvdGVjdGVkOgogCiAgICAgICAg
IHN0YXRpYyBMYXlvdXRVbml0IHBvc2l0aXZlTWFyZ2luQmVmb3JlRGVmYXVsdChjb25zdCBSZW5k
ZXJCbG9jayogYmxvY2spCiAgICAgICAgIHsgCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8
TGF5b3V0VW5pdD4oYmxvY2stPm1hcmdpbkJlZm9yZSgpLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heChibG9jay0+bWFyZ2luQmVmb3JlKCksIFpFUk9fTEFZT1VUX1VOSVQpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBuZWdhdGl2ZU1hcmdp
bkJlZm9yZURlZmF1bHQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogICAgICAgICB7IAotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KC1ibG9jay0+bWFyZ2luQmVmb3Jl
KCksIDApOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KC1ibG9jay0+bWFyZ2luQmVmb3Jl
KCksIFpFUk9fTEFZT1VUX1VOSVQpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBMYXlvdXRV
bml0IHBvc2l0aXZlTWFyZ2luQWZ0ZXJEZWZhdWx0KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaykK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KGJsb2Nr
LT5tYXJnaW5BZnRlcigpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChibG9jay0+
bWFyZ2luQWZ0ZXIoKSwgWkVST19MQVlPVVRfVU5JVCk7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIExheW91dFVuaXQgbmVnYXRpdmVNYXJnaW5BZnRlckRlZmF1bHQoY29uc3QgUmVuZGVyQmxv
Y2sqIGJsb2NrKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0
VW5pdD4oLWJsb2NrLT5tYXJnaW5BZnRlcigpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1heCgtYmxvY2stPm1hcmdpbkFmdGVyKCksIFpFUk9fTEFZT1VUX1VOSVQpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBNYXJnaW5WYWx1ZXMgbV9tYXJnaW5zOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZp
c2lvbiAxMTYzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIExheW91
dFVuaXQgYWNjdW11bGF0ZVJlbGF0aXZlUG9zaQogewogICAgIGlmICghY2hpbGQtPmlzQW5vbnlt
b3VzQmxvY2soKSB8fCAhY2hpbGQtPmlzUmVsUG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBMYXlvdXRVbml0IG9mZnNldCA9IDA7CisgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBa
RVJPX0xBWU9VVF9VTklUOwogICAgIFJlbmRlck9iamVjdCogcCA9IHRvUmVuZGVyQmxvY2soY2hp
bGQpLT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7CiAgICAgd2hpbGUgKHAgJiYgcC0+aXNS
ZW5kZXJJbmxpbmUoKSkgewogICAgICAgICBpZiAocC0+aXNSZWxQb3NpdGlvbmVkKCkpCkBAIC01
NDAsNyArNTQwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TAog
ICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBvciBkb2VzIG5v
dCBoYXZlIGFuIGFzc29jaWF0ZWQgYm94CiAgICAgLy8gcmV0dXJuIDAgYW5kIHN0b3AgdGhpcyBh
bGdvcml0aG0uCiAgICAgaWYgKGlzQm9keSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG9mZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwogICAgIExheW91dFVuaXQgeFBvcyA9IChpc0Jv
eCgpID8gdG9SZW5kZXJCb3godGhpcyktPmxlZnQoKSA6IFpFUk9fTEFZT1VUX1VOSVQpOwpAQCAt
NTc0LDcgKzU3NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldFQK
ICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyB0aGUgSFRNTCBib2R5IGVsZW1lbnQgb3IgZG9lcyBu
b3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGJveAogICAgIC8vIHJldHVybiAwIGFuZCBzdG9wIHRoaXMg
YWxnb3JpdGhtLgogICAgIGlmIChpc0JvZHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBaRVJPX0xBWU9VVF9VTklUOwogICAgIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBvZmZzZXRQYXIgPSBvZmZzZXRQYXJlbnQoKTsKICAgICBMYXlvdXRVbml0IHlQb3MgPSAoaXNC
b3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT50b3AoKSA6IFpFUk9fTEFZT1VUX1VOSVQpOwpAQCAt
NjE0LDcgKzYxNCw3IEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwcGVkT2YK
IAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nVG9w
KCkgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpF
Uk9fTEFZT1VUX1VOSVQ7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVu
Z3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nVG9wKCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQ
ZXJjZW50KCkpCkBAIC02MjYsNyArNjI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y29tcHV0ZQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRl
ZENTU1BhZGRpbmdCb3R0b20oKSBjb25zdAogewotICAgIExheW91dFVuaXQgdyA9IDA7CisgICAg
TGF5b3V0VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3ID0gMDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCb3R0b20oKTsK
ICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTYzOCw3ICs2MzgsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSBjb25zdAogewotICAgIExheW91
dFVuaXQgdyA9IDA7CisgICAgTGF5b3V0VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCkt
PnBhZGRpbmdMZWZ0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCkBAIC02NTAsNyAr
NjUwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZQogCiBMYXlv
dXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdSaWdodCgpIGNv
bnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB3ID0gMDsKKyAgICBMYXlvdXRVbml0IHcgPSBaRVJPX0xB
WU9VVF9VTklUOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAwOwogICAgIExlbmd0aCBw
YWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJj
ZW50KCkpCkBAIC02NjIsNyArNjYyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Y29tcHV0ZQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENT
U1BhZGRpbmdCZWZvcmUoKSBjb25zdAogewotICAgIExheW91dFVuaXQgdyA9IDA7CisgICAgTGF5
b3V0VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gMDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCZWZvcmUoKTsKICAg
ICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTY3NCw3ICs2NzQsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgY29uc3QKIHsKLSAgICBMYXlvdXRV
bml0IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgUmVu
ZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVuZ3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5w
YWRkaW5nQWZ0ZXIoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTY4Niw3ICs2
ODYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91
dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1N0YXJ0KCkgY29u
c3QKIHsKLSAgICBMYXlvdXRVbml0IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpFUk9fTEFZ
T1VUX1VOSVQ7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVuZ3RoIHBh
ZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nU3RhcnQoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNl
bnQoKSkKQEAgLTY5OCw3ICs2OTgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0
Ojpjb21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NT
UGFkZGluZ0VuZCgpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB3ID0gMDsKKyAgICBMYXlvdXRV
bml0IHcgPSBaRVJPX0xBWU9VVF9VTklUOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAw
OwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0VuZCgpOwogICAgIGlmIChw
YWRkaW5nLmlzUGVyY2VudCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140613</attachid>
            <date>2012-05-07 16:10:03 -0700</date>
            <delta_ts>2012-05-08 16:59:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85834-20120507161002.patch</filename>
            <type>text/plain</type>
            <size>27263</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA1LTA3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbiBmb3IgZmxvYXRzIGNhdXNlZCBieSBMYXlvdXRVbml0IGNoYW5nZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2UgcmVncmVz
c2lvbiBjYXVzZWQgYnkgcjExNjAwOSBieSBkaXNhYmxpbmcgdGhlIHVzZSBvZgorICAgICAgICA2
NGJpdCBtYXRoIGluIEZyYWN0aW9uYWxMYXlvdXRVbml0LCBzaW1wbGlmeWluZyB0aGUgcGl4ZWxT
bmFwcGVkTWF4WC9ZCisgICAgICAgIG1hdGgsIGlubGluaW5nIGEgY291cGxlIG9mIG1ldGhvZHMg
YW5kIHJlcGxhY2luZyB0aGUgbGl0ZXJhbCAwICh6ZXJvKQorICAgICAgICB3aXRoIFpFUk9fTEFZ
T1VUX1VOSVQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpib3VuZGVkTXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3IqKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLyk6CisgICAgICAgIERpc2FibGUgdGhl
IHVzZSBvZiA2NGJpdCAobG9uZyBsb25nKSBtYXRoIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBmcmFj
dGlvbgorICAgICAgICBpcyBzZXQgdG8gMS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0
aW9uYWxMYXlvdXRSZWN0OjpwaXhlbFNuYXBwZWRNYXhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWN0aW9uYWxMYXlvdXRSZWN0OjpwaXhlbFNuYXBwZWRNYXhZKToKKyAgICAgICAgU2ltcGxpZnkg
dGhlIHBpeGVsIHNuYXBwaW5nIGxvZ2ljIGZvciBtYXhYL21heFkuCisgICAgICAgIAorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0
ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjbGVhckZsb2F0c0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUxvZ2ljYWxMb2NhdGlvbkZvckZs
b2F0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb3dlc3RGbG9hdExvZ2ljYWxC
b3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmdldENsZWFyRGVsdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2lj
YWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1Jl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1c3RMaW5lUG9zaXRpb25G
b3JQYWdpbmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6Om1heFgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6bWF4WSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OndpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6aGVpZ2h0KToKKyAgICAg
ICAgKEZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9h
dGluZ09iamVjdDo6cGl4ZWxTbmFwcGVkWCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6RmxvYXRpbmdPYmplY3Q6OnBpeGVsU25hcHBlZE1heFgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpwaXhlbFNuYXBwZWRZKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6cGl4ZWxTbmFwcGVkTWF4WSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnBpeGVsU25hcHBl
ZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6
cGl4ZWxTbmFwcGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpSZW5k
ZXJCbG9ja1JhcmVEYXRhOjpwb3NpdGl2ZU1hcmdpbkJlZm9yZURlZmF1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrUmFyZURhdGE6Om5lZ2F0aXZlTWFyZ2lu
QmVmb3JlRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6UmVuZGVyQmxv
Y2tSYXJlRGF0YTo6cG9zaXRpdmVNYXJnaW5BZnRlckRlZmF1bHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrUmFyZURhdGE6Om5lZ2F0aXZlTWFyZ2luQWZ0ZXJE
ZWZhdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YWNjdW11bGF0ZVJlbGF0aXZlUG9zaXRpb25PZmZzZXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRMZWZ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRUb3ApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5n
Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRl
ZENTU1BhZGRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
Ojpjb21wdXRlZENTU1BhZGRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdBZnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFk
ZGluZ0VuZCk6CisKIDIwMTItMDUtMDcgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbY2hyb21pdW1dIEFsbG93IGZvciBhc3ltbWV0cmljIHRpbGUgc2l6ZXMg
b24gY29tcG9zaXRlZCB0aWxlZCBsYXllcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZyYWN0aW9uYWxMYXlvdXRVbml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkocmV2aXNpb24gMTE2MzEzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIxLDYgKzMyMSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgYSwg
Y28KIC8vIEZvciBtdWx0aXBsaWNhdGlvbiB0aGF0J3MgcHJvbmUgdG8gb3ZlcmZsb3csIHRoaXMg
Ym91bmRzIGl0IHRvIEZyYWN0aW9uYWxMYXlvdXRVbml0OjptYXgoKSBhbmQgOjptaW4oKQogaW5s
aW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0IGJvdW5kZWRNdWx0aXBseShjb25zdCBGcmFjdGlvbmFs
TGF5b3V0VW5pdCYgYSwgY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQmIGIpCiB7CisjaWYgRU5B
QkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCByZXR1cm5WYWw7
CiAgICAgbG9uZyBsb25nIHJhd1ZhbCA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYS5yYXdWYWx1
ZSgpKSAqIGIucmF3VmFsdWUoKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAgICAgaWYgKHJh
d1ZhbCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCkBAIC0zMjksMTQgKzMzMCwy
MSBAQCBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQgYm91bmRlZE11bHRpCiAgICAgICAgIHJl
dHVybiBGcmFjdGlvbmFsTGF5b3V0VW5pdDo6bWluKCk7CiAgICAgcmV0dXJuVmFsLnNldFJhd1Zh
bHVlKHJhd1ZhbCk7CiAgICAgcmV0dXJuIHJldHVyblZhbDsKKyNlbHNlCisgICAgcmV0dXJuIGEu
cmF3VmFsdWUoKSAqIGIucmF3VmFsdWUoKTsKKyNlbmRpZgogfQogCiBpbmxpbmUgRnJhY3Rpb25h
bExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiBhLCBjb25z
dCBGcmFjdGlvbmFsTGF5b3V0VW5pdCYgYikKIHsKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VU
KQogICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0IHJldHVyblZhbDsKICAgICBsb25nIGxvbmcgcmF3
VmFsID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihhLnJhd1ZhbHVlKCkpICogYi5yYXdWYWx1ZSgp
IC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKICAgICByZXR1cm5WYWwuc2V0UmF3VmFsdWUocmF3
VmFsKTsKICAgICByZXR1cm4gcmV0dXJuVmFsOworI2Vsc2UKKyAgICByZXR1cm4gYS5yYXdWYWx1
ZSgpICogYi5yYXdWYWx1ZSgpOworI2VuZGlmCiB9ICAgIAogCiBpbmxpbmUgZG91YmxlIG9wZXJh
dG9yKihjb25zdCBGcmFjdGlvbmFsTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIpCkBAIC0zODEsMTAg
KzM4OSwxNCBAQCBpbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25zdCBkb3VibGUgYSwgCiAKIGlu
bGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgRnJhY3Rpb25hbExheW91
dFVuaXQmIGEsIGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiBiKQogeworI2lmIEVOQUJMRShT
VUJQSVhFTF9MQVlPVVQpCiAgICAgRnJhY3Rpb25hbExheW91dFVuaXQgcmV0dXJuVmFsOwogICAg
IGxvbmcgbG9uZyByYXdWYWwgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGtGaXhlZFBvaW50RGVu
b21pbmF0b3IpICogYS5yYXdWYWx1ZSgpIC8gYi5yYXdWYWx1ZSgpOwogICAgIHJldHVyblZhbC5z
ZXRSYXdWYWx1ZShyYXdWYWwpOwogICAgIHJldHVybiByZXR1cm5WYWw7CisjZWxzZQorICAgIHJl
dHVybiBhLnJhd1ZhbHVlKCkgLyBiLnJhd1ZhbHVlKCk7CisjZW5kaWYKIH0gICAgCiAKIGlubGlu
ZSBmbG9hdCBvcGVyYXRvci8oY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQmIGEsIGZsb2F0IGIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0
UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zy
YWN0aW9uYWxMYXlvdXRSZWN0LmgJKHJldmlzaW9uIDExNjMxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogICAgIGludCBwaXhlbFNuYXBwZWRZKCkgY29uc3Qg
eyByZXR1cm4geSgpLnJvdW5kKCk7IH0KICAgICBpbnQgcGl4ZWxTbmFwcGVkV2lkdGgoKSBjb25z
dCB7IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwod2lkdGgoKSwgeCgpKTsgfQogICAgIGludCBwaXhl
bFNuYXBwZWRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwoaGVpZ2h0KCks
IHkoKSk7IH0KLSAgICBpbnQgcGl4ZWxTbmFwcGVkTWF4WCgpIGNvbnN0IHsgcmV0dXJuIHBpeGVs
U25hcHBlZFgoKSArIHBpeGVsU25hcHBlZFdpZHRoKCk7IH0KLSAgICBpbnQgcGl4ZWxTbmFwcGVk
TWF4WSgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZFkoKSArIHBpeGVsU25hcHBlZEhlaWdo
dCgpOyB9CisgICAgaW50IHBpeGVsU25hcHBlZE1heFgoKSBjb25zdCB7IHJldHVybiAobV9sb2Nh
dGlvbi54KCkgKyBtX3NpemUud2lkdGgoKSkucm91bmQoKTsgfQorICAgIGludCBwaXhlbFNuYXBw
ZWRNYXhZKCkgY29uc3QgeyByZXR1cm4gKG1fbG9jYXRpb24ueSgpICsgbV9zaXplLmhlaWdodCgp
KS5yb3VuZCgpOyB9CiAKICAgICB2b2lkIHNldFgoRnJhY3Rpb25hbExheW91dFVuaXQgeCkgeyBt
X2xvY2F0aW9uLnNldFgoeCk7IH0KICAgICB2b2lkIHNldFkoRnJhY3Rpb25hbExheW91dFVuaXQg
eSkgeyBtX2xvY2F0aW9uLnNldFkoeSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTE2MzEzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyOSw3ICsxMjI5LDcg
QEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxmQ29sbGFwc2luZ0Jsb2NrKAogICAgIC8vIChjKSBo
YXZlIGJvcmRlci9wYWRkaW5nLAogICAgIC8vIChkKSBoYXZlIGEgbWluLWhlaWdodAogICAgIC8v
IChlKSBoYXZlIHNwZWNpZmllZCB0aGF0IG9uZSBvZiBvdXIgbWFyZ2lucyBjYW4ndCBjb2xsYXBz
ZSB1c2luZyBhIENTUyBleHRlbnNpb24KLSAgICBpZiAobG9naWNhbEhlaWdodCgpID4gMAorICAg
IGlmIChsb2dpY2FsSGVpZ2h0KCkgPiBaRVJPX0xBWU9VVF9VTklUCiAgICAgICAgIHx8IGlzVGFi
bGUoKSB8fCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpCiAgICAgICAgIHx8IHN0eWxl
KCktPmxvZ2ljYWxNaW5IZWlnaHQoKS5pc1Bvc2l0aXZlKCkKICAgICAgICAgfHwgc3R5bGUoKS0+
bWFyZ2luQmVmb3JlQ29sbGFwc2UoKSA9PSBNU0VQQVJBVEUgfHwgc3R5bGUoKS0+bWFyZ2luQWZ0
ZXJDb2xsYXBzZSgpID09IE1TRVBBUkFURSkKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkKICAgICBjbGVhckZsb2F0cygpOwogCiAg
ICAgTGF5b3V0VW5pdCBwcmV2aW91c0hlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICBzZXRM
b2dpY2FsSGVpZ2h0KDApOworICAgIHNldExvZ2ljYWxIZWlnaHQoWkVST19MQVlPVVRfVU5JVCk7
CiAgICAgYm9vbCBoYXNTcGVjaWZpZWRQYWdlTG9naWNhbEhlaWdodCA9IGZhbHNlOwogICAgIGJv
b2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7CiAgICAgQ29sdW1uSW5mbyogY29s
SW5mbyA9IGNvbHVtbkluZm8oKTsKQEAgLTEzODQsMTEgKzEzODQsMTEgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheQogICAgICAgICAgICAgLy8gYXZvaWQgZG9pbmcg
dHdvIGxheW91dCBwYXNzZXMuCiAgICAgICAgICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgpOwog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBjb2x1bW5IZWlnaHQgPSBjb250ZW50TG9naWNhbEhlaWdo
dCgpOwotICAgICAgICAgICAgaWYgKGNvbHVtbkhlaWdodCA+IDApIHsKKyAgICAgICAgICAgIGlm
IChjb2x1bW5IZWlnaHQgPiBaRVJPX0xBWU9VVF9VTklUKSB7CiAgICAgICAgICAgICAgICAgcGFn
ZUxvZ2ljYWxIZWlnaHQgPSBjb2x1bW5IZWlnaHQ7CiAgICAgICAgICAgICAgICAgaGFzU3BlY2lm
aWVkUGFnZUxvZ2ljYWxIZWlnaHQgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2V0TG9naWNhbEhlaWdodCgwKTsKKyAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoWkVST19M
QVlPVVRfVU5JVCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNvbEluZm8tPmNvbHVtbkhlaWdo
dCgpICE9IHBhZ2VMb2dpY2FsSGVpZ2h0ICYmIGV2ZXJIYWRMYXlvdXQoKSkgewogICAgICAgICAg
ICAgY29sSW5mby0+c2V0Q29sdW1uSGVpZ2h0KHBhZ2VMb2dpY2FsSGVpZ2h0KTsKQEAgLTE0NDcs
OSArMTQ0Nyw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXkKICAg
ICAgICAgICAgIGxheWVyKCktPnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHRydWUpOwogICAgIH0K
IAotICAgIExheW91dFVuaXQgcmVwYWludExvZ2ljYWxUb3AgPSAwOwotICAgIExheW91dFVuaXQg
cmVwYWludExvZ2ljYWxCb3R0b20gPSAwOwotICAgIExheW91dFVuaXQgbWF4RmxvYXRMb2dpY2Fs
Qm90dG9tID0gMDsKKyAgICBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsVG9wID0gWkVST19MQVlP
VVRfVU5JVDsKKyAgICBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2FsQm90dG9tID0gWkVST19MQVlP
VVRfVU5JVDsKKyAgICBMYXlvdXRVbml0IG1heEZsb2F0TG9naWNhbEJvdHRvbSA9IFpFUk9fTEFZ
T1VUX1VOSVQ7CiAgICAgaWYgKCFmaXJzdENoaWxkKCkgJiYgIWlzQW5vbnltb3VzQmxvY2soKSkK
ICAgICAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiAgICAgaWYgKGNoaWxkcmVuSW5saW5l
KCkpCkBAIC0xNTg2LDkgKzE1ODYsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlT3ZlcmZs
b3coTGF5b3V0CiAgICAgICAgIExheW91dFJlY3QgY2xpZW50UmVjdChjbGllbnRCb3hSZWN0KCkp
OwogICAgICAgICBMYXlvdXRSZWN0IHJlY3RUb0FwcGx5OwogICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHJlY3RUb0FwcGx5ID0gTGF5b3V0UmVjdChj
bGllbnRSZWN0LngoKSwgY2xpZW50UmVjdC55KCksIDEsIG1heDxMYXlvdXRVbml0PigwLCBvbGRD
bGllbnRBZnRlckVkZ2UgLSBjbGllbnRSZWN0LnkoKSkpOworICAgICAgICAgICAgcmVjdFRvQXBw
bHkgPSBMYXlvdXRSZWN0KGNsaWVudFJlY3QueCgpLCBjbGllbnRSZWN0LnkoKSwgMSwgbWF4KFpF
Uk9fTEFZT1VUX1VOSVQsIG9sZENsaWVudEFmdGVyRWRnZSAtIGNsaWVudFJlY3QueSgpKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlY3RUb0FwcGx5ID0gTGF5b3V0UmVjdChjbGllbnRS
ZWN0LngoKSwgY2xpZW50UmVjdC55KCksIG1heDxMYXlvdXRVbml0PigwLCBvbGRDbGllbnRBZnRl
ckVkZ2UgLSBjbGllbnRSZWN0LngoKSksIDEpOworICAgICAgICAgICAgcmVjdFRvQXBwbHkgPSBM
YXlvdXRSZWN0KGNsaWVudFJlY3QueCgpLCBjbGllbnRSZWN0LnkoKSwgbWF4KFpFUk9fTEFZT1VU
X1VOSVQsIG9sZENsaWVudEFmdGVyRWRnZSAtIGNsaWVudFJlY3QueCgpKSwgMSk7CiAgICAgICAg
IGFkZExheW91dE92ZXJmbG93KHJlY3RUb0FwcGx5KTsKICAgICB9CiAgICAgICAgIApAQCAtMTk0
OSw3ICsxOTQ5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHNJZk5lZQog
ICAgICAgICAKICAgICAgICAgLy8gQWRqdXN0IG91ciBoZWlnaHQgc3VjaCB0aGF0IHdlIGFyZSBy
ZWFkeSB0byBiZSBjb2xsYXBzZWQgd2l0aCBzdWJzZXF1ZW50IHNpYmxpbmdzIChvciB0aGUgYm90
dG9tCiAgICAgICAgIC8vIG9mIHRoZSBwYXJlbnQgYmxvY2spLgotICAgICAgICBzZXRMb2dpY2Fs
SGVpZ2h0KGNoaWxkLT55KCkgLSBtYXg8TGF5b3V0VW5pdD4oMCwgbWFyZ2luSW5mby5tYXJnaW4o
KSkpOworICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGNoaWxkLT55KCkgLSBtYXgoWkVST19MQVlP
VVRfVU5JVCwgbWFyZ2luSW5mby5tYXJnaW4oKSkpOwogICAgIH0gZWxzZQogICAgICAgICAvLyBJ
bmNyZWFzZSBvdXIgaGVpZ2h0IGJ5IHRoZSBhbW91bnQgd2UgaGFkIHRvIGNsZWFyLgogICAgICAg
ICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodCgpICsgaGVpZ2h0SW5jcmVhc2UpOwpAQCAtMjcxMyw3
ICsyNzEzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDaGlsZHJlbihQYWludEluZgogICAg
ICAgICBpZiAoY2hlY2tBZnRlckFsd2F5cwogICAgICAgICAgICAgJiYgKGFic29sdXRlQ2hpbGRZ
ICsgY2hpbGQtPmhlaWdodCgpKSA+IHBhaW50SW5mby5yZWN0LnkoKQogICAgICAgICAgICAgJiYg
KGFic29sdXRlQ2hpbGRZICsgY2hpbGQtPmhlaWdodCgpKSA8IHBhaW50SW5mby5yZWN0Lm1heFko
KSkgewotICAgICAgICAgICAgdmlldygpLT5zZXRCZXN0VHJ1bmNhdGVkQXQoYWJzb2x1dGVDaGls
ZFkgKyBjaGlsZC0+aGVpZ2h0KCkgKyBtYXg8TGF5b3V0VW5pdD4oMCwgY2hpbGQtPmNvbGxhcHNl
ZE1hcmdpbkFmdGVyKCkpLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgICAgIHZpZXcoKS0+c2V0QmVz
dFRydW5jYXRlZEF0KGFic29sdXRlQ2hpbGRZICsgY2hpbGQtPmhlaWdodCgpICsgbWF4KFpFUk9f
TEFZT1VUX1VOSVQsIGNoaWxkLT5jb2xsYXBzZWRNYXJnaW5BZnRlcigpKSwgdGhpcywgdHJ1ZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjYxLDE0ICszMjYx
LDE0IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2EKIHsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBsYXN0TG9naWNhbFRvcDsKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQgPSBibG9ja0RpcmVjdGlvbk9mZnNldChyb290QmxvY2ssIG9mZnNldEZyb21S
b290QmxvY2spICsgbG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxUb3A7Ci0gICAgaWYgKGxvZ2ljYWxI
ZWlnaHQgPD0gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oMCkpCisgICAgaWYgKGxvZ2ljYWxIZWln
aHQgPD0gWkVST19MQVlPVVRfVU5JVCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAog
ICAgIC8vIEdldCB0aGUgc2VsZWN0aW9uIG9mZnNldHMgZm9yIHRoZSBib3R0b20gb2YgdGhlIGdh
cAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtYXgobGFzdExvZ2ljYWxMZWZ0LCBsb2dp
Y2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxCb3R0b20pKTsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1pbihsYXN0TG9naWNhbFJpZ2h0LCBsb2dpY2FsUmln
aHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsQm90dG9tKSk7CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQgLSBsb2dpY2FsTGVmdDsKLSAgICBpZiAo
bG9naWNhbFdpZHRoIDw9IHN0YXRpY19jYXN0PExheW91dFVuaXQ+KDApKQorICAgIGlmIChsb2dp
Y2FsV2lkdGggPD0gWkVST19MQVlPVVRfVU5JVCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3Qo
KTsKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay0+bG9naWNhbFJlY3RUb1Bo
eXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxM
ZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKQEAgLTMyODQs
NyArMzI4NCw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWMKICAg
ICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxMZWZ0ID0gbWF4KGxvZ2ljYWxMZWZ0U2VsZWN0
aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zm
c2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBMYXlvdXRV
bml0IHJvb3RCbG9ja0xvZ2ljYWxSaWdodCA9IG1pbihpbmxpbmVEaXJlY3Rpb25PZmZzZXQocm9v
dEJsb2NrLCBvZmZzZXRGcm9tUm9vdEJsb2NrKSArIGxvZ2ljYWxMZWZ0LCBtaW4obG9naWNhbFJp
Z2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxSaWdodFNl
bGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KSkpOwog
ICAgIExheW91dFVuaXQgcm9vdEJsb2NrTG9naWNhbFdpZHRoID0gcm9vdEJsb2NrTG9naWNhbFJp
Z2h0IC0gcm9vdEJsb2NrTG9naWNhbExlZnQ7Ci0gICAgaWYgKHJvb3RCbG9ja0xvZ2ljYWxXaWR0
aCA8PSBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PigwKSkKKyAgICBpZiAocm9vdEJsb2NrTG9naWNh
bFdpZHRoIDw9IFpFUk9fTEFZT1VUX1VOSVQpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
CiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2stPmxvZ2ljYWxSZWN0VG9QaHlz
aWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tM
b2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBs
b2dpY2FsSGVpZ2h0KSk7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJs
b2NrOjpsb2dpY2FsUmlnaHRTZWxlCiAgICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dpY2FsTGVm
dCA9IG1heChpbmxpbmVEaXJlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBvZmZzZXRGcm9tUm9vdEJs
b2NrKSArIGxvZ2ljYWxSaWdodCwgbWF4KGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RC
bG9jaywgbG9naWNhbFRvcCksIGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywg
bG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQpKSk7CiAgICAgTGF5b3V0VW5pdCByb290QmxvY2tM
b2dpY2FsUmlnaHQgPSBtaW4obG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywg
bG9naWNhbFRvcCksIGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2lj
YWxUb3AgKyBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dpY2Fs
V2lkdGggPSByb290QmxvY2tMb2dpY2FsUmlnaHQgLSByb290QmxvY2tMb2dpY2FsTGVmdDsKLSAg
ICBpZiAocm9vdEJsb2NrTG9naWNhbFdpZHRoIDw9IHN0YXRpY19jYXN0PExheW91dFVuaXQ+KDAp
KQorICAgIGlmIChyb290QmxvY2tMb2dpY2FsV2lkdGggPD0gWkVST19MQVlPVVRfVU5JVCkKICAg
ICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJv
b3RCbG9jay0+bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0
aW9uLCBMYXlvdXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9w
LCByb290QmxvY2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKQEAgLTM1NjgsNyArMzU2
OCw3IEBAIExheW91dFBvaW50IFJlbmRlckJsb2NrOjpjb21wdXRlTG9naWNhbEwKICAgICAgICAg
ICAgICAgICBmbG9hdExvZ2ljYWxXaWR0aCA9IG1pbihsb2dpY2FsV2lkdGhGb3JGbG9hdChmbG9h
dGluZ09iamVjdCksIGxvZ2ljYWxSaWdodE9mZnNldCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmbG9hdExvZ2ljYWxMZWZ0ID0gbWF4PExh
eW91dFVuaXQ+KGxvZ2ljYWxMZWZ0T2Zmc2V0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxMZWZ0
KCksIGZsb2F0TG9naWNhbExlZnQpOworICAgICAgICBmbG9hdExvZ2ljYWxMZWZ0ID0gbWF4KGxv
Z2ljYWxMZWZ0T2Zmc2V0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxMZWZ0KCksIGZsb2F0TG9n
aWNhbExlZnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWlu
aW5nTGVmdCA9IDE7CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWluaW5nUmlnaHQgPSAx
OwpAQCAtMzk2Miw4ICszOTYyLDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bmV4dEZsb2F0
TG9naWNhbAogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9t
KEZsb2F0aW5nT2JqZWN0OjpUeXBlIGZsb2F0VHlwZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZmxv
YXRpbmdPYmplY3RzKQotICAgICAgICByZXR1cm4gMDsKLSAgICBMYXlvdXRVbml0IGxvd2VzdEZs
b2F0Qm90dG9tID0gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgTGF5
b3V0VW5pdCBsb3dlc3RGbG9hdEJvdHRvbSA9IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgY29uc3Qg
RmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMt
PnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmpl
Y3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxv
YXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00MzQwLDcgKzQz
NDAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpnZXRDbGVhckRlbHRhKFJlCiAgICAgfQog
CiAgICAgLy8gV2UgYWxzbyBjbGVhciBmbG9hdHMgaWYgd2UgYXJlIHRvbyBiaWcgdG8gc2l0IG9u
IHRoZSBzYW1lIGxpbmUgYXMgYSBmbG9hdCAoYW5kIHdpc2ggdG8gYXZvaWQgZmxvYXRzIGJ5IGRl
ZmF1bHQpLgotICAgIExheW91dFVuaXQgcmVzdWx0ID0gY2xlYXJTZXQgPyBtYXg8TGF5b3V0VW5p
dD4oMCwgbG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxUb3ApIDogWkVST19MQVlPVVRfVU5JVDsKKyAg
ICBMYXlvdXRVbml0IHJlc3VsdCA9IGNsZWFyU2V0ID8gbWF4KFpFUk9fTEFZT1VUX1VOSVQsIGxv
Z2ljYWxCb3R0b20gLSBsb2dpY2FsVG9wKSA6IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgaWYgKCFy
ZXN1bHQgJiYgY2hpbGQtPmF2b2lkc0Zsb2F0cygpKSB7CiAgICAgICAgIExheW91dFVuaXQgbmV3
TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC01Njgz
LDggKzU2ODMsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRMCiAg
ICAgfQogCiAgICAgLy8gQWx3YXlzIG1ha2Ugc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIG5vbi1uZWdh
dGl2ZS4KLSAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigw
LCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCk7Ci0gICAgbV9tYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oMCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwor
ICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KFpFUk9fTEFZT1VUX1VOSVQsIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKyAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCA9IG1heChaRVJPX0xBWU9VVF9VTklULCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAK
ICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChmbG9hdExlZnRXaWR0aCArIGZs
b2F0UmlnaHRXaWR0aCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogfQpAQCAtNjQ4MCw4
ICs2NDgwLDggQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdAogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3IgYmxvY2stZmxvd3MgdGhhdCBhcmUgaG9y
aXpvbnRhbC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2NzgxCiAgICAgICAgIGJvb2wgcHJldklubGluZUhhc0xpbmVCb3ggPSB0b1JlbmRlcklu
bGluZShpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPm5vZGUoKS0+cmVuZGVyZXIoKSktPmZp
cnN0TGluZUJveCgpOyAKLSAgICAgICAgZmxvYXQgdG9wTWFyZ2luID0gcHJldklubGluZUhhc0xp
bmVCb3ggPyBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSA6IHN0YXRpY19jYXN0PExheW91dFVuaXQ+
KDApOwotICAgICAgICBmbG9hdCBib3R0b21NYXJnaW4gPSBuZXh0SW5saW5lSGFzTGluZUJveCA/
IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgOiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PigwKTsKKyAg
ICAgICAgZmxvYXQgdG9wTWFyZ2luID0gcHJldklubGluZUhhc0xpbmVCb3ggPyBjb2xsYXBzZWRN
YXJnaW5CZWZvcmUoKSA6IFpFUk9fTEFZT1VUX1VOSVQ7CisgICAgICAgIGZsb2F0IGJvdHRvbU1h
cmdpbiA9IG5leHRJbmxpbmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6IFpF
Uk9fTEFZT1VUX1VOSVQ7CiAgICAgICAgIExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zmc2V0
LngoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgLSB0b3BNYXJnaW4sIHdpZHRoKCksIGhlaWdodCgp
ICsgdG9wTWFyZ2luICsgYm90dG9tTWFyZ2luKTsKICAgICAgICAgaWYgKCFyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsK
QEAgLTY3MzMsMTAgKzY3MzMsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0TGluZVBvc2l0
aW9uRm9yUAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbm9uLXVuaWZvcm0gcGFnZSBoZWlnaHQs
IHRoZW4gd2UgaGF2ZSB0byBzaGlmdCBmdXJ0aGVyIHBvc3NpYmx5LgogICAgICAgICBpZiAoIWhh
c1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCAmJiAhcHVzaFRvTmV4dFBhZ2VXaXRoTWluaW11bUxv
Z2ljYWxIZWlnaHQocmVtYWluaW5nTG9naWNhbEhlaWdodCwgbG9naWNhbE9mZnNldCwgbGluZUhl
aWdodCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExheW91dFVuaXQgdG90YWxMb2dp
Y2FsSGVpZ2h0ID0gbGluZUhlaWdodCArIG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsT2Zmc2V0
KTsKKyAgICAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxIZWlnaHQgPSBsaW5lSGVpZ2h0ICsg
bWF4KFpFUk9fTEFZT1VUX1VOSVQsIGxvZ2ljYWxPZmZzZXQpOwogICAgICAgICBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0QXROZXdPZmZzZXQgPSBoYXNVbmlmb3JtUGFnZUxvZ2ljYWxIZWln
aHQgPyBwYWdlTG9naWNhbEhlaWdodCA6IHBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxvZ2lj
YWxPZmZzZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgaWYgKGxpbmVCb3gg
PT0gZmlyc3RSb290Qm94KCkgJiYgdG90YWxMb2dpY2FsSGVpZ2h0IDwgcGFnZUxvZ2ljYWxIZWln
aHRBdE5ld09mZnNldCAmJiAhaXNQb3NpdGlvbmVkKCkgJiYgIWlzVGFibGVDZWxsKCkpCi0gICAg
ICAgICAgICBzZXRQYWdpbmF0aW9uU3RydXQocmVtYWluaW5nTG9naWNhbEhlaWdodCArIG1heDxM
YXlvdXRVbml0PigwLCBsb2dpY2FsT2Zmc2V0KSk7CisgICAgICAgICAgICBzZXRQYWdpbmF0aW9u
U3RydXQocmVtYWluaW5nTG9naWNhbEhlaWdodCArIG1heChaRVJPX0xBWU9VVF9VTklULCBsb2dp
Y2FsT2Zmc2V0KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZGVsdGEgKz0gcmVtYWlu
aW5nTG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGxpbmVCb3gtPnNldFBhZ2luYXRpb25TdHJ1
dChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCShyZXZpc2lvbiAxMTYzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBjb21wdXRlIHRoZSByZWdpb24gYWxsIG92ZXIgYWdhaW4gd2hlbiB5b3UgYWxy
ZWFkeSBrbm93IGl0LgogICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGlu
ZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIGZpcnN0TGluZSwgUmVuZGVyUmVnaW9uKiByZWdp
b24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UpCisgICAgICAgIHJldHVybiBtYXgoWkVST19MQVlPVVRfVU5JVCwgbG9naWNh
bFJpZ2h0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNldEZy
b21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpCiAgICAgICAgICAgICAtIGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yTGluZShwb3NpdGlvbiwgZmlyc3RMaW5lLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UpKTsKICAgICB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRPZmZzZXRG
b3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJSZWdpb24q
IHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25z
dCAKQEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmln
aHRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGhGb3JDb250ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0dXJu
IG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbiwg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgLQorICAgICAgICByZXR1cm4gbWF4KFpF
Uk9fTEFZT1VUX1VOSVQsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVnaW9uLCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSAtCiAgICAgICAgICAgICBsb2dpY2FsTGVmdE9m
ZnNldEZvckNvbnRlbnQocmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7
IH0KICAgICBMYXlvdXRVbml0IHN0YXJ0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSBjb25zdAog
ICAgIHsKQEAgLTU2NCwxOSArNTY0LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNQbGFj
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGxhY2VkOyB9CiAgICAgICAgIHZvaWQgc2V0SXNQbGFj
ZWQoYm9vbCBwbGFjZWQgPSB0cnVlKSB7IG1faXNQbGFjZWQgPSBwbGFjZWQ7IH0KIAotICAgICAg
ICBMYXlvdXRVbml0IHgoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJuIG1fZnJh
bWVSZWN0LngoKTsgfQotICAgICAgICBMYXlvdXRVbml0IG1heFgoKSBjb25zdCB7IEFTU0VSVChp
c1BsYWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0Lm1heFgoKTsgfQotICAgICAgICBMYXlvdXRV
bml0IHkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0Lnko
KTsgfQotICAgICAgICBMYXlvdXRVbml0IG1heFkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgp
KTsgcmV0dXJuIG1fZnJhbWVSZWN0Lm1heFkoKTsgfQotICAgICAgICBMYXlvdXRVbml0IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQotICAgICAgICBMYXlvdXRV
bml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9Ci0KLSAg
ICAgICAgaW50IHBpeGVsU25hcHBlZFgoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0
dXJuIG1fZnJhbWVSZWN0LnBpeGVsU25hcHBlZFgoKTsgfQotICAgICAgICBpbnQgcGl4ZWxTbmFw
cGVkTWF4WCgpIGNvbnN0IHsgQVNTRVJUKGlzUGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJlY3Qu
cGl4ZWxTbmFwcGVkTWF4WCgpOyB9Ci0gICAgICAgIGludCBwaXhlbFNuYXBwZWRZKCkgY29uc3Qg
eyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRZKCk7
IH0KLSAgICAgICAgaW50IHBpeGVsU25hcHBlZE1heFkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNl
ZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0LnBpeGVsU25hcHBlZE1heFkoKTsgfQotICAgICAgICBp
bnQgcGl4ZWxTbmFwcGVkV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNu
YXBwZWRXaWR0aCgpOyB9Ci0gICAgICAgIGludCBwaXhlbFNuYXBwZWRIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKTsgfQorICAgICAgICBpbmxp
bmUgTGF5b3V0VW5pdCB4KCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2Zy
YW1lUmVjdC54KCk7IH0KKyAgICAgICAgaW5saW5lIExheW91dFVuaXQgbWF4WCgpIGNvbnN0IHsg
QVNTRVJUKGlzUGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJlY3QubWF4WCgpOyB9CisgICAgICAg
IGlubGluZSBMYXlvdXRVbml0IHkoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJu
IG1fZnJhbWVSZWN0LnkoKTsgfQorICAgICAgICBpbmxpbmUgTGF5b3V0VW5pdCBtYXhZKCkgY29u
c3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5tYXhZKCk7IH0KKyAg
ICAgICAgaW5saW5lIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVj
dC53aWR0aCgpOyB9CisgICAgICAgIGlubGluZSBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9CisKKyAgICAgICAgaW5saW5lIGludCBwaXhl
bFNuYXBwZWRYKCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVj
dC5waXhlbFNuYXBwZWRYKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRNYXhY
KCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNu
YXBwZWRNYXhYKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRZKCkgY29uc3Qg
eyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRZKCk7
IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRNYXhZKCkgY29uc3QgeyBBU1NFUlQo
aXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRNYXhZKCk7IH0KKyAg
ICAgICAgaW5saW5lIGludCBwaXhlbFNuYXBwZWRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCk7IH0KKyAgICAgICAgaW5saW5lIGludCBwaXhlbFNu
YXBwZWRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRIZWln
aHQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0WChMYXlvdXRVbml0IHgpIHsgQVNTRVJUKCFpc0lu
UGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0WCh4KTsgfQogICAgICAgICB2b2lkIHNldFko
TGF5b3V0VW5pdCB5KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJhbWVSZWN0LnNl
dFkoeSk7IH0KQEAgLTEwNzIsMjAgKzEwNzIsMjAgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IHBvc2l0aXZlTWFyZ2luQmVmb3JlRGVmYXVsdChjb25zdCBSZW5kZXJC
bG9jayogYmxvY2spCiAgICAgICAgIHsgCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5
b3V0VW5pdD4oYmxvY2stPm1hcmdpbkJlZm9yZSgpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1heChibG9jay0+bWFyZ2luQmVmb3JlKCksIFpFUk9fTEFZT1VUX1VOSVQpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBuZWdhdGl2ZU1hcmdpbkJl
Zm9yZURlZmF1bHQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogICAgICAgICB7IAotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KC1ibG9jay0+bWFyZ2luQmVmb3JlKCks
IDApOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KC1ibG9jay0+bWFyZ2luQmVmb3JlKCks
IFpFUk9fTEFZT1VUX1VOSVQpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0
IHBvc2l0aXZlTWFyZ2luQWZ0ZXJEZWZhdWx0KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaykKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KGJsb2NrLT5t
YXJnaW5BZnRlcigpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChibG9jay0+bWFy
Z2luQWZ0ZXIoKSwgWkVST19MQVlPVVRfVU5JVCk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IExheW91dFVuaXQgbmVnYXRpdmVNYXJnaW5BZnRlckRlZmF1bHQoY29uc3QgUmVuZGVyQmxvY2sq
IGJsb2NrKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5p
dD4oLWJsb2NrLT5tYXJnaW5BZnRlcigpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
eCgtYmxvY2stPm1hcmdpbkFmdGVyKCksIFpFUk9fTEFZT1VUX1VOSVQpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBNYXJnaW5WYWx1ZXMgbV9tYXJnaW5zOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lv
biAxMTYzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIExheW91dFVu
aXQgYWNjdW11bGF0ZVJlbGF0aXZlUG9zaQogewogICAgIGlmICghY2hpbGQtPmlzQW5vbnltb3Vz
QmxvY2soKSB8fCAhY2hpbGQtPmlzUmVsUG9zaXRpb25lZCgpKQogICAgICAgICByZXR1cm4gMDsK
LSAgICBMYXlvdXRVbml0IG9mZnNldCA9IDA7CisgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBaRVJP
X0xBWU9VVF9VTklUOwogICAgIFJlbmRlck9iamVjdCogcCA9IHRvUmVuZGVyQmxvY2soY2hpbGQp
LT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7CiAgICAgd2hpbGUgKHAgJiYgcC0+aXNSZW5k
ZXJJbmxpbmUoKSkgewogICAgICAgICBpZiAocC0+aXNSZWxQb3NpdGlvbmVkKCkpCkBAIC01NDAs
NyArNTQwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TAogICAg
IC8vIElmIHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBvciBkb2VzIG5vdCBo
YXZlIGFuIGFzc29jaWF0ZWQgYm94CiAgICAgLy8gcmV0dXJuIDAgYW5kIHN0b3AgdGhpcyBhbGdv
cml0aG0uCiAgICAgaWYgKGlzQm9keSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9m
ZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwogICAgIExheW91dFVuaXQgeFBvcyA9IChpc0JveCgp
ID8gdG9SZW5kZXJCb3godGhpcyktPmxlZnQoKSA6IFpFUk9fTEFZT1VUX1VOSVQpOwpAQCAtNTc0
LDcgKzU3NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldFQKICAg
ICAvLyBJZiB0aGUgZWxlbWVudCBpcyB0aGUgSFRNTCBib2R5IGVsZW1lbnQgb3IgZG9lcyBub3Qg
aGF2ZSBhbiBhc3NvY2lhdGVkIGJveAogICAgIC8vIHJldHVybiAwIGFuZCBzdG9wIHRoaXMgYWxn
b3JpdGhtLgogICAgIGlmIChpc0JvZHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBaRVJPX0xBWU9VVF9VTklUOwogICAgIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBv
ZmZzZXRQYXIgPSBvZmZzZXRQYXJlbnQoKTsKICAgICBMYXlvdXRVbml0IHlQb3MgPSAoaXNCb3go
KSA/IHRvUmVuZGVyQm94KHRoaXMpLT50b3AoKSA6IFpFUk9fTEFZT1VUX1VOSVQpOwpAQCAtNjE0
LDcgKzYxNCw3IEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGl4ZWxTbmFwcGVkT2YKIAog
TGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkg
Y29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpFUk9f
TEFZT1VUX1VOSVQ7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVuZ3Ro
IHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nVG9wKCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJj
ZW50KCkpCkBAIC02MjYsNyArNjI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Y29tcHV0ZQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENT
U1BhZGRpbmdCb3R0b20oKSBjb25zdAogewotICAgIExheW91dFVuaXQgdyA9IDA7CisgICAgTGF5
b3V0VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gMDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCb3R0b20oKTsKICAg
ICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTYzOCw3ICs2MzgsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSBjb25zdAogewotICAgIExheW91dFVu
aXQgdyA9IDA7CisgICAgTGF5b3V0VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBh
ZGRpbmdMZWZ0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCkBAIC02NTAsNyArNjUw
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZQogCiBMYXlvdXRV
bml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdSaWdodCgpIGNvbnN0
CiB7Ci0gICAgTGF5b3V0VW5pdCB3ID0gMDsKKyAgICBMYXlvdXRVbml0IHcgPSBaRVJPX0xBWU9V
VF9VTklUOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAwOwogICAgIExlbmd0aCBwYWRk
aW5nID0gc3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50
KCkpCkBAIC02NjIsNyArNjYyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Y29tcHV0ZQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1Bh
ZGRpbmdCZWZvcmUoKSBjb25zdAogewotICAgIExheW91dFVuaXQgdyA9IDA7CisgICAgTGF5b3V0
VW5pdCB3ID0gWkVST19MQVlPVVRfVU5JVDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0g
MDsKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCZWZvcmUoKTsKICAgICBp
ZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTY3NCw3ICs2NzQsNyBAQCBMYXlvdXRVbml0IFJl
bmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0
IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVuZ3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRk
aW5nQWZ0ZXIoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKQEAgLTY4Niw3ICs2ODYs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlCiAKIExheW91dFVu
aXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1N0YXJ0KCkgY29uc3QK
IHsKLSAgICBMYXlvdXRVbml0IHcgPSAwOworICAgIExheW91dFVuaXQgdyA9IFpFUk9fTEFZT1VU
X1VOSVQ7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IDA7CiAgICAgTGVuZ3RoIHBhZGRp
bmcgPSBzdHlsZSgpLT5wYWRkaW5nU3RhcnQoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQo
KSkKQEAgLTY5OCw3ICs2OTgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
b21wdXRlCiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFk
ZGluZ0VuZCgpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB3ID0gMDsKKyAgICBMYXlvdXRVbml0
IHcgPSBaRVJPX0xBWU9VVF9VTklUOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAwOwog
ICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0VuZCgpOwogICAgIGlmIChwYWRk
aW5nLmlzUGVyY2VudCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140820</attachid>
            <date>2012-05-08 16:59:59 -0700</date>
            <delta_ts>2012-05-09 10:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18820</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTE2NDM0KQorKysgU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTEwMiw3ICsxMTAyLDYgQEAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwIFwKLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTE2NDM0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMzI0Nyw3ICszMjQ3LDYgQEAKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GcmFjdGlvbmFsTGF5b3V0UG9pbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2Uu
aCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTY0NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNS0wOCAgTGV2
aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRml4IHBlcmZvcm1h
bmNlIHJlZ3Jlc3Npb24gZm9yIGZsb2F0cyBjYXVzZWQgYnkgTGF5b3V0VW5pdCBjaGFuZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Jpbmcg
RnJhY3Rpb25hbExheW91dCB0eXBlcyB0byBhbGxldmlhdGUgcGVyZm9ybWFuY2UgaXNzdWVzLiBF
eHBsaWNpdGx5CisgICAgICAgIGlubGluaW5nIGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvciBmdW5j
dGlvbnMgaW4gRnJhY3Rpb25hbExheW91dFVuaXQsIGFzIHdlbGwgYXMKKyAgICAgICAgcGl4ZWxT
bmFwcGVkSW50U2l6ZSBhbmQgcGl4ZWxTbmFwcGVkSW50UmVjdCAocGFydGljdWxhcmx5IGhvdCBj
b2RlIHBhdGhzKS4gQWxzbworICAgICAgICBmdXJ0aGVyIHNpbXBsaWZ5aW5nIHJvdW5kIGFuZCBj
ZWlsIGZ1bmN0aW9ucyB3aGVuIHN1Yi1waXhlbCBsYXlvdXQgaXMgbm90IGVuYWJsZWQuCisKKyAg
ICAgICAgcGl4ZWxTbmFwcGVkSW50U2l6ZSB3YXMgdGhlIG9ubHkgZnVuY3Rpb24gZGVmaW5lZCBp
biBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAsCisgICAgICAgIHNvIGl0IGlzIHJlbW92ZWQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6RnJhY3Rpb25hbExheW91dFVuaXQp
OgorICAgICAgICAoRnJhY3Rpb25hbExheW91dFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Y3Rpb25hbExheW91dFVuaXQ6OnRvSW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxM
YXlvdXRVbml0Ojp0b0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRV
bml0Ojp0b0RvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6
dG9VbnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6b3Bl
cmF0b3IgaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRVbml0OjpvcGVy
YXRvciB1bnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6
b3BlcmF0b3IgZmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVuaXQ6
Om9wZXJhdG9yIGRvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5p
dDo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5p
dDo6Y2VpbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6cm91bmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9u
YWxMYXlvdXRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0UmVjdDo6
cGl4ZWxTbmFwcGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRJbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0
aW9uYWxMYXlvdXRTaXplLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0xheW91dFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRJ
bnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTA4ICBSYXltb25kIFRveSAg
PHJ0b3lAZ29vZ2xlLmNvbT4KIAogICAgICAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlIHNob3VsZCBu
b3QgQVNTRVJUIGlmIG51bWJlciBvZiBpbnB1dCBjaGFubmVscyBpcyAwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91
dFJlY3QuY3BwCShyZXZpc2lvbiAxMTY0MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCwx
MSArMTQ4LDQgQEAKICNlbmRpZgogfQogCi1JbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoY29u
c3QgRnJhY3Rpb25hbExheW91dFJlY3QmIHJlY3QpCi17Ci0gICAgSW50UG9pbnQgcm91bmRlZExv
Y2F0aW9uID0gcm91bmRlZEludFBvaW50KHJlY3QubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIElu
dFJlY3Qocm91bmRlZExvY2F0aW9uLCBJbnRTaXplKChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSku
cm91bmQoKSAtIHJvdW5kZWRMb2NhdGlvbi54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChyZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpLnJvdW5kKCkgLSBy
b3VuZGVkTG9jYXRpb24ueSgpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25h
bExheW91dFJlY3QuaAkocmV2aXNpb24gMTE2NDM0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQAogICAgIEZyYWN0aW9uYWxMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KIAogICAgIEludFBvaW50IHBpeGVsU25hcHBlZExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gcm91bmRlZEludFBvaW50KG1fbG9jYXRpb24pOyB9Ci0gICAgSW50U2l6ZSBwaXhl
bFNuYXBwZWRTaXplKCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50U2l6ZShtX3NpemUs
IG1fbG9jYXRpb24pOyB9CisgICAgSW50U2l6ZSBwaXhlbFNuYXBwZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShzbmFwU2l6ZVRvUGl4ZWwobV9zaXplLndpZHRoKCksIG1fbG9jYXRpb24u
eCgpKSwgc25hcFNpemVUb1BpeGVsKG1fc2l6ZS5oZWlnaHQoKSwgbV9sb2NhdGlvbi55KCkpKTsg
fQogCiAgICAgdm9pZCBzZXRMb2NhdGlvbihjb25zdCBGcmFjdGlvbmFsTGF5b3V0UG9pbnQmIGxv
Y2F0aW9uKSB7IG1fbG9jYXRpb24gPSBsb2NhdGlvbjsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25z
dCBGcmFjdGlvbmFsTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CkBAIC0xODQs
OSArMTg0LDE4IEBACiAgICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwg
YS5zaXplKCkgIT0gYi5zaXplKCk7CiB9CiAKK2lubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZElu
dFJlY3QoY29uc3QgRnJhY3Rpb25hbExheW91dFJlY3QmIHJlY3QpIHsKKyNpZiBFTkFCTEUoU1VC
UElYRUxfTEFZT1VUKQorICAgIEludFBvaW50IHJvdW5kZWRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQ
b2ludChyZWN0LmxvY2F0aW9uKCkpOworICAgIHJldHVybiBJbnRSZWN0KHJvdW5kZWRMb2NhdGlv
biwgSW50U2l6ZSgocmVjdC54KCkgKyByZWN0LndpZHRoKCkpLnJvdW5kKCkgLSByb3VuZGVkTG9j
YXRpb24ueCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cmVjdC55KCkgKyByZWN0LmhlaWdodCgpKS5yb3VuZCgpIC0gcm91bmRlZExvY2F0aW9uLnkoKSkp
OworI2Vsc2UKKyAgICByZXR1cm4gSW50UmVjdChyZWN0KTsKKyNlbmRpZgorfQorCiBJbnRSZWN0
IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgRnJhY3Rpb25hbExheW91dFJlY3QmKTsKIEZyYWN0aW9u
YWxMYXlvdXRSZWN0IGVuY2xvc2luZ0ZyYWN0aW9uYWxMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYpOwotSW50UmVjdCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRS
ZWN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFNpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oCShy
ZXZpc2lvbiAxMTY0MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFj
dGlvbmFsTGF5b3V0U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOCArMTQ1LDYgQEAKICAg
ICByZXR1cm4gSW50U2l6ZShzLndpZHRoKCkucm91bmQoKSwgcy5oZWlnaHQoKS5yb3VuZCgpKTsK
IH0KIAotSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplKGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRT
aXplJiwgY29uc3QgRnJhY3Rpb25hbExheW91dFBvaW50Jik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEZyYWN0aW9uYWxMYXlvdXRTaXplX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0
U2l6ZS5jcHAJKHJldmlzaW9uIDExNjQzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGcmFjdGlvbmFsTGF5b3V0U2l6
ZS5oIgotCi0jaW5jbHVkZSAiRnJhY3Rpb25hbExheW91dFBvaW50LmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplKGNvbnN0IEZyYWN0aW9uYWxM
YXlvdXRTaXplJiBzLCBjb25zdCBGcmFjdGlvbmFsTGF5b3V0UG9pbnQmIHApCi17Ci0gICAgcmV0
dXJuIEludFNpemUoc25hcFNpemVUb1BpeGVsKHMud2lkdGgoKSwgcC54KCkpLCBzbmFwU2l6ZVRv
UGl4ZWwocy5oZWlnaHQoKSwgcC55KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFsTGF5b3V0VW5pdC5o
CShyZXZpc2lvbiAxMTY0MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmFjdGlvbmFs
TGF5b3V0VW5pdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyNCArNjYsMzggQEAKICAgICAvLyBI
b3dldmVyIGR1ZSB0byBjb21waWxlciBhbmQgcGxhdGZvcm0gZGlmZmVyZW5jZXMgYWRkaW5nIHRo
b3NlIGFyZSBub24tdHJpdmlhbC4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzODQ4IGZvciBkZXRhaWxzLgogICAgIAotICAgIEZyYWN0aW9uYWxM
YXlvdXRVbml0KCkgOiBtX3ZhbHVlKDApIHsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KGlu
dCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0g
dmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVu
aXQodW5zaWduZWQgc2hvcnQgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFs
dWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQotICAgIEZy
YWN0aW9uYWxMYXlvdXRVbml0KHVuc2lnbmVkIGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1co
aXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5h
dG9yOyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQoZmxvYXQgdmFsdWUpIHsgUkVQT1JUX09W
RVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnRE
ZW5vbWluYXRvcjsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KGRvdWJsZSB2YWx1ZSkgeyBS
RVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4
ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQoY29uc3QgRnJh
Y3Rpb25hbExheW91dFVuaXQmIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZS5yYXdWYWx1ZSgpOyB9
CisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KCkgOiBtX3ZhbHVlKDApIHsgfQorI2lm
IEVOQUJMRShTVUJQSVhFTF9MQVlPVVQpCisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0
KGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVl
ID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9CisgICAgaW5saW5lIEZyYWN0aW9u
YWxMYXlvdXRVbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0lu
Qm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0b3I7
IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgaW50IHZhbHVlKSB7
IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZSAqIGtG
aXhlZFBvaW50RGVub21pbmF0b3I7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQo
ZmxvYXQgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1
ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQorICAgIGlubGluZSBGcmFjdGlv
bmFsTGF5b3V0VW5pdChkb3VibGUgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHMo
dmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQorI2Vs
c2UKKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQoaW50IHZhbHVlKSB7IFJFUE9SVF9P
VkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorICAgIGlubGlu
ZSBGcmFjdGlvbmFsTGF5b3V0VW5pdCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkgeyBSRVBPUlRfT1ZF
UkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWU7IH0KKyAgICBpbmxpbmUg
RnJhY3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgaW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxP
Vyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorICAgIGlubGluZSBGcmFj
dGlvbmFsTGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5k
cyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWU7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91
dFVuaXQoZG91YmxlIHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7
IG1fdmFsdWUgPSB2YWx1ZTsgfQorI2VuZGlmCisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRV
bml0KGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWUu
cmF3VmFsdWUoKTsgfQogCisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICBpbmxpbmUg
aW50IHRvSW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAvIGtGaXhlZFBvaW50RGVub21pbmF0
b3I7IH0KLSAgICBpbmxpbmUgdW5zaWduZWQgdG9VbnNpZ25lZCgpIGNvbnN0IHsgUkVQT1JUX09W
RVJGTE9XKG1fdmFsdWUgPj0gMCk7IHJldHVybiB0b0ludCgpOyB9CiAgICAgaW5saW5lIGZsb2F0
IHRvRmxvYXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSkgLyBr
Rml4ZWRQb2ludERlbm9taW5hdG9yOyB9CiAgICAgaW5saW5lIGRvdWJsZSB0b0RvdWJsZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV92YWx1ZSkgLyBrRml4ZWRQb2ludERl
bm9taW5hdG9yOyB9CisjZWxzZQorICAgIGlubGluZSBpbnQgdG9JbnQoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisgICAgaW5saW5lIGZsb2F0IHRvRmxvYXQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSk7IH0KKyAgICBpbmxpbmUgZG91YmxlIHRvRG91Ymxl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKTsgfQorI2VuZGlm
CisgICAgaW5saW5lIHVuc2lnbmVkIHRvVW5zaWduZWQoKSBjb25zdCB7IFJFUE9SVF9PVkVSRkxP
VyhtX3ZhbHVlID49IDApOyByZXR1cm4gdG9JbnQoKTsgfQogCi0gICAgb3BlcmF0b3IgaW50KCkg
Y29uc3QgeyByZXR1cm4gdG9JbnQoKTsgfQotICAgIG9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3Qg
eyByZXR1cm4gdG9VbnNpZ25lZCgpOyB9Ci0gICAgb3BlcmF0b3IgZmxvYXQoKSBjb25zdCB7IHJl
dHVybiB0b0Zsb2F0KCk7IH0KLSAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiB0
b0RvdWJsZSgpOyB9Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KKyAgICBpbmxpbmUgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gdG9JbnQoKTsgfQor
ICAgIGlubGluZSBvcGVyYXRvciB1bnNpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIHRvVW5zaWduZWQo
KTsgfQorICAgIGlubGluZSBvcGVyYXRvciBmbG9hdCgpIGNvbnN0IHsgcmV0dXJuIHRvRmxvYXQo
KTsgfQorICAgIGlubGluZSBvcGVyYXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiB0b0RvdWJs
ZSgpOyB9CisgICAgaW5saW5lIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
OyB9CiAKICAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQgb3BlcmF0b3IrKyhpbnQpCiAg
ICAgewpAQCAtMTExLDE1ICsxMjUsMjMgQEAKICAgICBpbmxpbmUgaW50IGNlaWwoKSBjb25zdAog
I2VuZGlmCiAgICAgeworI2lmIEVOQUJMRShTVUJQSVhFTF9MQVlPVVQpCiAgICAgICAgIGlmICht
X3ZhbHVlID4gMCkKICAgICAgICAgICAgIHJldHVybiAobV92YWx1ZSArIGtGaXhlZFBvaW50RGVu
b21pbmF0b3IgLSAxKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAgICAgICAgIHJldHVybiAo
bV92YWx1ZSAtIGtGaXhlZFBvaW50RGVub21pbmF0b3IgKyAxKSAvIGtGaXhlZFBvaW50RGVub21p
bmF0b3I7CisjZWxzZQorICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyNlbmRpZgogICAgIH0KICAg
ICBpbmxpbmUgaW50IHJvdW5kKCkgY29uc3QKICAgICB7CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xB
WU9VVCkKICAgICAgICAgaWYgKG1fdmFsdWUgPiAwKQogICAgICAgICAgICAgcmV0dXJuIChtX3Zh
bHVlICsgKGtGaXhlZFBvaW50RGVub21pbmF0b3IgLyAyKSkgLyBrRml4ZWRQb2ludERlbm9taW5h
dG9yOwogICAgICAgICByZXR1cm4gKG1fdmFsdWUgLSAoa0ZpeGVkUG9pbnREZW5vbWluYXRvciAv
IDIpKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CisjZWxzZQorICAgICAgICByZXR1cm4gbV92
YWx1ZTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlubGluZSBpbnQgZmxvb3IoKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTE2NDM0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAyLDcgKzM0MDIsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgnLAotICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAnLApAQCAtMzQxOSw3ICszNDE4LDYgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDExNjQzNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUs
NiArMTU1LDExIEBACiAgICAgcmV0dXJuIGNsYW1wVG88RnJhY3Rpb25hbExheW91dFVuaXQ+KHZh
bHVlLCBGcmFjdGlvbmFsTGF5b3V0VW5pdDo6bWluKCksIEZyYWN0aW9uYWxMYXlvdXRVbml0Ojpt
YXgoKSk7CiB9CiAKK2lubGluZSBJbnRTaXplIHBpeGVsU25hcHBlZEludFNpemUoY29uc3QgRnJh
Y3Rpb25hbExheW91dFNpemUmIHMsIGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRQb2ludCYgcCkKK3sK
KyAgICByZXR1cm4gSW50U2l6ZShzbmFwU2l6ZVRvUGl4ZWwocy53aWR0aCgpLCBwLngoKSksIHNu
YXBTaXplVG9QaXhlbChzLmhlaWdodCgpLCBwLnkoKSkpOworfQorCiBpbmxpbmUgSW50UmVjdCBw
aXhlbFNuYXBwZWRJbnRSZWN0KExheW91dFBvaW50IGxvY2F0aW9uLCBMYXlvdXRTaXplIHNpemUp
CiB7CiAgICAgcmV0dXJuIEludFJlY3Qocm91bmRlZEludFBvaW50KGxvY2F0aW9uKSwgcGl4ZWxT
bmFwcGVkSW50U2l6ZShzaXplLCBsb2NhdGlvbikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE2NDM0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTUsNyArMjk1LDYgQEAKIAkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNG
IC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDQ5RTI0QTEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAq
LzsgfTsKIAkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjg2MTA3
RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAgKi87IH07CiAJCTE0NEZDRTUyMTRF
Qzc5QkMwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0VW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RkNFNTExNEVDNzlCQzAwMEQxN0EzIC8q
IEZyYWN0aW9uYWxMYXlvdXRVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMTQ0RkNFNUMxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxM
YXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0NEZDRTU3MTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAg
Ki87IH07CiAJCTE0NEZDRTVEMTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RkNF
NTgxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRTaXplLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0RkNGRTAxNEVGMjUwOTAw
MEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEZDRkRFMTRFRjI1MDkwMDBEMTdBMyAvKiBGcmFj
dGlvbmFsTGF5b3V0UmVjdC5jcHAgKi87IH07CiAJCTE0NEZDRkUxMTRFRjI1MDkwMDBEMTdBMyAv
KiBGcmFjdGlvbmFsTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0RkNGREYxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlv
dXRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTcxNjcsNyArNzE2Niw2IEBACiAJCTE0NDlFMjg2MTA3RDREQjQwMEI1NzkzRiAvKiBKU0Nh
bGxiYWNrRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nh
bGxiYWNrRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NEZDRTUxMTRF
Qzc5QkMwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0VW5pdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFjdGlvbmFsTGF5b3V0VW5pdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDRGQ0U1NDE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91
dFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYWN0aW9uYWxMYXlv
dXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDRGQ0U1NzE0RUM3OUU3
MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRnJhY3Rpb25hbExheW91dFNpemUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDRGQ0U1ODE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExh
eW91dFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhY3Rpb25hbExh
eW91dFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RkNGREUxNEVGMjUw
OTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RkNGREYxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxM
YXlvdXRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYWN0aW9uYWxM
YXlvdXRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTM4Nyw3ICsxOTM4
NSw2IEBACiAJCQkJMTQ0RkNFNTQxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRQ
b2ludC5oICovLAogCQkJCTE0NEZDRkRFMTRFRjI1MDkwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5
b3V0UmVjdC5jcHAgKi8sCiAJCQkJMTQ0RkNGREYxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9u
YWxMYXlvdXRSZWN0LmggKi8sCi0JCQkJMTQ0RkNFNTcxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0
aW9uYWxMYXlvdXRTaXplLmNwcCAqLywKIAkJCQkxNDRGQ0U1ODE0RUM3OUU3MDAwRDE3QTMgLyog
RnJhY3Rpb25hbExheW91dFNpemUuaCAqLywKIAkJCQlCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEg
LyogR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlCQ0UwNEM4OTBEQUZGN0EwMDA3QTBGNDEgLyog
R2VuZXJhdG9yLmggKi8sCkBAIC0yNTk5Myw3ICsyNTk5MCw2IEBACiAJCQkJNjU2RDM3M0IwQURC
QTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg4NUI5
NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ0RkNGRTAxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTE0NEZDRTVDMTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFs
TGF5b3V0U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdCMDcwRDIxMzBBNDA5QzAwQTM3
NjNDIC8qIEZyYW1lQWN0aW9uU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NEE4
NjIyMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140972</attachid>
            <date>2012-05-09 10:38:08 -0700</date>
            <delta_ts>2012-05-09 11:29:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85834-20120509103807.patch</filename>
            <type>text/plain</type>
            <size>20794</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA1LTA5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2Ug
cmVncmVzc2lvbiBmb3IgZmxvYXRzIGNhdXNlZCBieSBMYXlvdXRVbml0IGNoYW5nZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEZyYWN0aW9u
YWxMYXlvdXQgdHlwZXMgdG8gYWxsZXZpYXRlIHBlcmZvcm1hbmNlIGlzc3Vlcy4gRXhwbGljaXRs
eQorICAgICAgICBpbmxpbmluZyBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3IgZnVuY3Rpb25zIGlu
IEZyYWN0aW9uYWxMYXlvdXRVbml0LCBhcyB3ZWxsIGFzCisgICAgICAgIHBpeGVsU25hcHBlZElu
dFNpemUgYW5kIHBpeGVsU25hcHBlZEludFJlY3QgKHBhcnRpY3VsYXJseSBob3QgY29kZSBwYXRo
cykuIEFsc28KKyAgICAgICAgZnVydGhlciBzaW1wbGlmeWluZyByb3VuZCBhbmQgY2VpbCBmdW5j
dGlvbnMgd2hlbiBzdWItcGl4ZWwgbGF5b3V0IGlzIG5vdCBlbmFibGVkLgorCisgICAgICAgIHBp
eGVsU25hcHBlZEludFNpemUgd2FzIHRoZSBvbmx5IGZ1bmN0aW9uIGRlZmluZWQgaW4gRnJhY3Rp
b25hbExheW91dFNpemUuY3BwLAorICAgICAgICBzbyBpdCBpcyByZW1vdmVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dAorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6RnJhY3Rpb25hbExheW91dFVu
aXQpOgorICAgICAgICAoRnJhY3Rpb25hbExheW91dFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhY3Rpb25hbExheW91dFVuaXQ6OnRvSW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9u
YWxMYXlvdXRVbml0Ojp0b0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlv
dXRVbml0Ojp0b0RvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5p
dDo6dG9VbnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6
b3BlcmF0b3IgaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRVbml0Ojpv
cGVyYXRvciB1bnNpZ25lZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5p
dDo6b3BlcmF0b3IgZmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVu
aXQ6Om9wZXJhdG9yIGRvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0
VW5pdDo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0
VW5pdDo6Y2VpbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6cm91
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0
aW9uYWxMYXlvdXRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0UmVj
dDo6cGl4ZWxTbmFwcGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBwZWRJbnRS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zy
YWN0aW9uYWxMYXlvdXRTaXplLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0xheW91dFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpwaXhlbFNuYXBw
ZWRJbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTA5ICBUb21teSBXaWRl
bmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTog
U2Vzc2lvbkRlc2NyaXB0aW9uOjphZGRDYW5kaWRhdGUgc2hvdWxkIG5vdCBjcmFzaCBmb3IgbWFs
Zm9ybWVkIGlucHV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE2NTM3KQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExNTcs
NyArMTE1Nyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
b250RmFzdFBhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5n
cy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAKLSAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAgIAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTY1
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjUyLDcgKzMyNTIsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRQb2ludC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmggXAot
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFNp
emUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTE2NTM3KQor
KysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTEwMyw3ICsx
MTAzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJh
Y3Rpb25hbExheW91dFNpemUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTE2NTM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwNyw3ICs2MDcsNiBAQCBfX1pON1dlYkNvcmUx
OVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURl
Y29kZXJDMUVSS04zV1RGNlN0cmluZ0VSS05TXzEyVGV4dEVuY29kaW5nRWIKIF9fWk43V2ViQ29y
ZTE5VGV4dFJlc291cmNlRGVjb2RlckQxRXYKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1Nh
ZmFyaUV2Ci1fX1pON1dlYkNvcmUxOXBpeGVsU25hcHBlZEludFJlY3RFUktOU18yMEZyYWN0aW9u
YWxMYXlvdXRSZWN0RQogX19aTjdXZWJDb3JlMjBEaWN0YXRpb25BbHRlcm5hdGl2ZUMxRWpqeQog
X19aTjdXZWJDb3JlMjBEaWN0YXRpb25BbHRlcm5hdGl2ZUMxRXYKIF9fWk43V2ViQ29yZTIwRGlz
cGxheVNsZWVwRGlzYWJsZXJDMUVQS2MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEx
NjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
MzQwMyw3ICszNDAzLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnMzRC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlv
bmFsTGF5b3V0U2l6ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9pbnQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0Qu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwJywKQEAg
LTM0MjAsNyArMzQxOSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExh
eW91dFJlY3QuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFs
TGF5b3V0U2l6ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRv
ckdlbmVyYXRlZEltYWdlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdGVkSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdl
VHJlZU5vZGUuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjg4MjksMTAgKzI4ODI5
LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcCIKLQkJCQkJPgot
CQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEZyYWN0aW9uYWxMYXlvdXRTaXplLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw3ICsyOTUsNiBAQAogCQkxNDQ5
RTI0QzEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAv
KiBKU0NhbGxiYWNrRGF0YS5oICovOyB9OwogCQkxNDQ5RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyog
SlNDYWxsYmFja0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ0OUUyODYxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAq
LzsgfTsKIAkJMTQ0RkNFNTIxNEVDNzlCQzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRVbml0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRGQ0U1
MTE0RUM3OUJDMDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFVuaXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNDRGQ0U1QzE0RUM3OUU3MDAw
RDE3QTMgLyogRnJhY3Rpb25hbExheW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RkNFNTcxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0
aW9uYWxMYXlvdXRTaXplLmNwcCAqLzsgfTsKIAkJMTQ0RkNFNUQxNEVDNzlFNzAwMEQxN0EzIC8q
IEZyYWN0aW9uYWxMYXlvdXRTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDRGQ0U1ODE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91
dFNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDRGQ0ZFMDE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RkNGREUxNEVG
MjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCAqLzsgfTsKIAkJMTQ0RkNG
RTExNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRGQ0ZERjE0RUYyNTA5MDAwRDE3
QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzE3MSw3ICs3MTcwLDYgQEAKIAkJMTQ0OUUyODYxMDdE
NERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQ0RkNFNTExNEVDNzlCQzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRVbml0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYWN0aW9uYWxMYXlvdXRVbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NEZDRTU0MTRFQzc5RTcwMDBEMTdB
MyAvKiBGcmFjdGlvbmFsTGF5b3V0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRnJhY3Rpb25hbExheW91dFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTE0NEZDRTU3MTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFjdGlvbmFsTGF5b3V0U2l6
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NEZDRTU4MTRFQzc5RTcwMDBE
MTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDRGQ0ZERTE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhY3Rpb25hbExheW91dFJl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRGQ0ZERjE0RUYyNTA5MDAw
RDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnJhY3Rpb25hbExheW91dFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE5Mzk5LDcgKzE5Mzk3LDYgQEAKIAkJCQkxNDRGQ0U1NDE0RUM3OUU3MDAwRDE3QTMg
LyogRnJhY3Rpb25hbExheW91dFBvaW50LmggKi8sCiAJCQkJMTQ0RkNGREUxNEVGMjUwOTAwMEQx
N0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCAqLywKIAkJCQkxNDRGQ0ZERjE0RUYyNTA5
MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuaCAqLywKLQkJCQkxNDRGQ0U1NzE0RUM3
OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFNpemUuY3BwICovLAogCQkJCTE0NEZDRTU4
MTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5oICovLAogCQkJCUJDMjNG
MERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCUJDRTA0Qzg5
MERBRkY3QTAwMDdBMEY0MSAvKiBHZW5lcmF0b3IuaCAqLywKQEAgLTI2MDA3LDcgKzI2MDA0LDYg
QEAKIAkJCQk2NTZEMzczQjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxODg1Qjk0MTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDRGQ0ZFMDE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rp
b25hbExheW91dFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0RkNFNUMxNEVDNzlFNzAw
MEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
N0IwNzBEMjEzMEE0MDlDMDBBMzc2M0MgLyogRnJhbWVBY3Rpb25TY2hlZHVsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTc0QTg2MjIxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZyYWN0aW9uYWxMYXlvdXRVbml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkocmV2aXNpb24gMTE2NTM3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjYsMjQgKzY2LDM4IEBAIHB1YmxpYzoKICAgICAvLyBIb3dldmVyIGR1ZSB0byBjb21w
aWxlciBhbmQgcGxhdGZvcm0gZGlmZmVyZW5jZXMgYWRkaW5nIHRob3NlIGFyZSBub24tdHJpdmlh
bC4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
ODQ4IGZvciBkZXRhaWxzLgogICAgIAotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KCkgOiBtX3Zh
bHVlKDApIHsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KGludCB2YWx1ZSkgeyBSRVBPUlRf
T1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2lu
dERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgc2hvcnQg
dmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZh
bHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0
KHVuc2lnbmVkIGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkp
OyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rp
b25hbExheW91dFVuaXQoZmxvYXQgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHMo
dmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQotICAg
IEZyYWN0aW9uYWxMYXlvdXRVbml0KGRvdWJsZSB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJ
bkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9y
OyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQoY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQm
IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZS5yYXdWYWx1ZSgpOyB9CisgICAgaW5saW5lIEZyYWN0
aW9uYWxMYXlvdXRVbml0KCkgOiBtX3ZhbHVlKDApIHsgfQorI2lmIEVOQUJMRShTVUJQSVhFTF9M
QVlPVVQpCisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KGludCB2YWx1ZSkgeyBSRVBP
UlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQ
b2ludERlbm9taW5hdG9yOyB9CisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KHVuc2ln
bmVkIHNob3J0IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1f
dmFsdWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0b3I7IH0KKyAgICBpbmxpbmUgRnJh
Y3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgaW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhp
c0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0
b3I7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQoZmxvYXQgdmFsdWUpIHsgUkVQ
T1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVk
UG9pbnREZW5vbWluYXRvcjsgfQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdChkb3Vi
bGUgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9
IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQorI2Vsc2UKKyAgICBpbmxpbmUgRnJh
Y3Rpb25hbExheW91dFVuaXQoaW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRz
KHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0
VW5pdCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2
YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWU7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVu
aXQodW5zaWduZWQgaW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVl
KSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdChm
bG9hdCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVl
ID0gdmFsdWU7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQoZG91YmxlIHZhbHVl
KSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsg
fQorI2VuZGlmCisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KGNvbnN0IEZyYWN0aW9u
YWxMYXlvdXRVbml0JiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWUucmF3VmFsdWUoKTsgfQogCisj
aWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICBpbmxpbmUgaW50IHRvSW50KCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7IH0KLSAgICBpbmxpbmUg
dW5zaWduZWQgdG9VbnNpZ25lZCgpIGNvbnN0IHsgUkVQT1JUX09WRVJGTE9XKG1fdmFsdWUgPj0g
MCk7IHJldHVybiB0b0ludCgpOyB9CiAgICAgaW5saW5lIGZsb2F0IHRvRmxvYXQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSkgLyBrRml4ZWRQb2ludERlbm9taW5h
dG9yOyB9CiAgICAgaW5saW5lIGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGRvdWJsZT4obV92YWx1ZSkgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9CisjZWxz
ZQorICAgIGlubGluZSBpbnQgdG9JbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
aW5saW5lIGZsb2F0IHRvRmxvYXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bV92YWx1ZSk7IH0KKyAgICBpbmxpbmUgZG91YmxlIHRvRG91YmxlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKTsgfQorI2VuZGlmCisgICAgaW5saW5lIHVuc2ln
bmVkIHRvVW5zaWduZWQoKSBjb25zdCB7IFJFUE9SVF9PVkVSRkxPVyhtX3ZhbHVlID49IDApOyBy
ZXR1cm4gdG9JbnQoKTsgfQogCi0gICAgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gdG9J
bnQoKTsgfQotICAgIG9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gdG9VbnNpZ25l
ZCgpOyB9Ci0gICAgb3BlcmF0b3IgZmxvYXQoKSBjb25zdCB7IHJldHVybiB0b0Zsb2F0KCk7IH0K
LSAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiB0b0RvdWJsZSgpOyB9Ci0gICAg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBpbmxpbmUgb3Bl
cmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gdG9JbnQoKTsgfQorICAgIGlubGluZSBvcGVyYXRv
ciB1bnNpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIHRvVW5zaWduZWQoKTsgfQorICAgIGlubGluZSBv
cGVyYXRvciBmbG9hdCgpIGNvbnN0IHsgcmV0dXJuIHRvRmxvYXQoKTsgfQorICAgIGlubGluZSBv
cGVyYXRvciBkb3VibGUoKSBjb25zdCB7IHJldHVybiB0b0RvdWJsZSgpOyB9CisgICAgaW5saW5l
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBpbmxpbmUg
RnJhY3Rpb25hbExheW91dFVuaXQgb3BlcmF0b3IrKyhpbnQpCiAgICAgewpAQCAtMTExLDE1ICsx
MjUsMjMgQEAgcHVibGljOgogICAgIGlubGluZSBpbnQgY2VpbCgpIGNvbnN0CiAjZW5kaWYKICAg
ICB7CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKICAgICAgICAgaWYgKG1fdmFsdWUgPiAw
KQogICAgICAgICAgICAgcmV0dXJuIChtX3ZhbHVlICsga0ZpeGVkUG9pbnREZW5vbWluYXRvciAt
IDEpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKICAgICAgICAgcmV0dXJuIChtX3ZhbHVlIC0g
a0ZpeGVkUG9pbnREZW5vbWluYXRvciArIDEpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKKyNl
bHNlCisgICAgICAgIHJldHVybiBtX3ZhbHVlOworI2VuZGlmCiAgICAgfQogICAgIGlubGluZSBp
bnQgcm91bmQoKSBjb25zdAogICAgIHsKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQogICAg
ICAgICBpZiAobV92YWx1ZSA+IDApCiAgICAgICAgICAgICByZXR1cm4gKG1fdmFsdWUgKyAoa0Zp
eGVkUG9pbnREZW5vbWluYXRvciAvIDIpKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAgICAg
ICAgIHJldHVybiAobV92YWx1ZSAtIChrRml4ZWRQb2ludERlbm9taW5hdG9yIC8gMikpIC8ga0Zp
eGVkUG9pbnREZW5vbWluYXRvcjsKKyNlbHNlCisgICAgICAgIHJldHVybiBtX3ZhbHVlOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgaW5saW5lIGludCBmbG9vcigpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91
dFJlY3QuY3BwCShyZXZpc2lvbiAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCwx
MSArMTQ4LDQgQEAgRnJhY3Rpb25hbExheW91dFJlY3QgZW5jbG9zaW5nRnJhY3Rpb25hbAogI2Vu
ZGlmCiB9CiAKLUludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChjb25zdCBGcmFjdGlvbmFsTGF5
b3V0UmVjdCYgcmVjdCkKLXsKLSAgICBJbnRQb2ludCByb3VuZGVkTG9jYXRpb24gPSByb3VuZGVk
SW50UG9pbnQocmVjdC5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkTG9j
YXRpb24sIEludFNpemUoKHJlY3QueCgpICsgcmVjdC53aWR0aCgpKS5yb3VuZCgpIC0gcm91bmRl
ZExvY2F0aW9uLngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkucm91bmQoKSAtIHJvdW5kZWRMb2NhdGlvbi55
KCkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5oCShy
ZXZpc2lvbiAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFj
dGlvbmFsTGF5b3V0UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICBGcmFjdGlvbmFsTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAKICAgICBJbnRQb2ludCBwaXhlbFNuYXBwZWRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHJvdW5kZWRJbnRQb2ludChtX2xvY2F0aW9uKTsgfQotICAgIEludFNpemUgcGl4ZWxTbmFwcGVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHBpeGVsU25hcHBlZEludFNpemUobV9zaXplLCBtX2xvY2F0
aW9uKTsgfQorICAgIEludFNpemUgcGl4ZWxTbmFwcGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIElu
dFNpemUoc25hcFNpemVUb1BpeGVsKG1fc2l6ZS53aWR0aCgpLCBtX2xvY2F0aW9uLngoKSksIHNu
YXBTaXplVG9QaXhlbChtX3NpemUuaGVpZ2h0KCksIG1fbG9jYXRpb24ueSgpKSk7IH0KIAogICAg
IHZvaWQgc2V0TG9jYXRpb24oY29uc3QgRnJhY3Rpb25hbExheW91dFBvaW50JiBsb2NhdGlvbikg
eyBtX2xvY2F0aW9uID0gbG9jYXRpb247IH0KICAgICB2b2lkIHNldFNpemUoY29uc3QgRnJhY3Rp
b25hbExheW91dFNpemUmIHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQpAQCAtMTg0LDkgKzE4NCwx
OSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYWN0aW9uYWxMCiAgICAgcmV0dXJu
IGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7CiB9
CiAKK2lubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoY29uc3QgRnJhY3Rpb25hbExh
eW91dFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKKyAgICBJbnRQ
b2ludCByb3VuZGVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKTsK
KyAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkTG9jYXRpb24sIEludFNpemUoKHJlY3QueCgpICsg
cmVjdC53aWR0aCgpKS5yb3VuZCgpIC0gcm91bmRlZExvY2F0aW9uLngoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQo
KSkucm91bmQoKSAtIHJvdW5kZWRMb2NhdGlvbi55KCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIElu
dFJlY3QocmVjdCk7CisjZW5kaWYKK30KKwogSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0
IEZyYWN0aW9uYWxMYXlvdXRSZWN0Jik7CiBGcmFjdGlvbmFsTGF5b3V0UmVjdCBlbmNsb3NpbmdG
cmFjdGlvbmFsTGF5b3V0UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLUludFJlY3QgcGl4ZWxTbmFw
cGVkSW50UmVjdChjb25zdCBGcmFjdGlvbmFsTGF5b3V0UmVjdCYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0
aW9uYWxMYXlvdXRTaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAJKHJldmlzaW9uIDExNjUzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAy
MDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJGcmFjdGlvbmFsTGF5b3V0U2l6ZS5oIgotCi0jaW5jbHVkZSAiRnJhY3Rpb25hbExh
eW91dFBvaW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW50U2l6ZSBwaXhlbFNuYXBw
ZWRJbnRTaXplKGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRTaXplJiBzLCBjb25zdCBGcmFjdGlvbmFs
TGF5b3V0UG9pbnQmIHApCi17Ci0gICAgcmV0dXJuIEludFNpemUoc25hcFNpemVUb1BpeGVsKHMu
d2lkdGgoKSwgcC54KCkpLCBzbmFwU2l6ZVRvUGl4ZWwocy5oZWlnaHQoKSwgcC55KCkpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oCShyZXZpc2lvbiAx
MTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5
b3V0U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOCArMTQ1LDYgQEAgaW5saW5lIEludFNp
emUgcm91bmRlZEludFNpemUoY29uc3QgRnJhYwogICAgIHJldHVybiBJbnRTaXplKHMud2lkdGgo
KS5yb3VuZCgpLCBzLmhlaWdodCgpLnJvdW5kKCkpOwogfQogCi1JbnRTaXplIHBpeGVsU25hcHBl
ZEludFNpemUoY29uc3QgRnJhY3Rpb25hbExheW91dFNpemUmLCBjb25zdCBGcmFjdGlvbmFsTGF5
b3V0UG9pbnQmKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRnJhY3Rp
b25hbExheW91dFNpemVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVz
LmgJKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRU
eXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDExIEBAIGlubGluZSBMYXlvdXRV
bml0IGNsYW1wVG9MYXlvdXRVbml0KGRvdWIKICAgICByZXR1cm4gY2xhbXBUbzxGcmFjdGlvbmFs
TGF5b3V0VW5pdD4odmFsdWUsIEZyYWN0aW9uYWxMYXlvdXRVbml0OjptaW4oKSwgRnJhY3Rpb25h
bExheW91dFVuaXQ6Om1heCgpKTsKIH0KIAoraW5saW5lIEludFNpemUgcGl4ZWxTbmFwcGVkSW50
U2l6ZShjb25zdCBGcmFjdGlvbmFsTGF5b3V0U2l6ZSYgcywgY29uc3QgRnJhY3Rpb25hbExheW91
dFBvaW50JiBwKQoreworICAgIHJldHVybiBJbnRTaXplKHNuYXBTaXplVG9QaXhlbChzLndpZHRo
KCksIHAueCgpKSwgc25hcFNpemVUb1BpeGVsKHMuaGVpZ2h0KCksIHAueSgpKSk7Cit9CisKIGlu
bGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3QoTGF5b3V0UG9pbnQgbG9jYXRpb24sIExh
eW91dFNpemUgc2l6ZSkKIHsKICAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQobG9j
YXRpb24pLCBwaXhlbFNuYXBwZWRJbnRTaXplKHNpemUsIGxvY2F0aW9uKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140985</attachid>
            <date>2012-05-09 11:29:25 -0700</date>
            <delta_ts>2012-05-09 12:35:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85834-20120509112924.patch</filename>
            <type>text/plain</type>
            <size>21118</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA1LTA5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggcGVyZm9ybWFuY2Ug
cmVncmVzc2lvbiBmb3IgZmxvYXRzIGNhdXNlZCBieSBMYXlvdXRVbml0IGNoYW5nZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEZyYWN0aW9u
YWxMYXlvdXQgdHlwZXMgdG8gYWxsZXZpYXRlIHBlcmZvcm1hbmNlIGlzc3Vlcy4gRXhwbGljaXRs
eQorICAgICAgICBpbmxpbmluZyBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3IgZnVuY3Rpb25zIGlu
IEZyYWN0aW9uYWxMYXlvdXRVbml0LCBhcyB3ZWxsIGFzCisgICAgICAgIHBpeGVsU25hcHBlZElu
dFNpemUgYW5kIHBpeGVsU25hcHBlZEludFJlY3QgKHBhcnRpY3VsYXJseSBob3QgY29kZSBwYXRo
cykuIEFsc28KKyAgICAgICAgZnVydGhlciBzaW1wbGlmeWluZyByb3VuZCBhbmQgY2VpbCBmdW5j
dGlvbnMgd2hlbiBzdWItcGl4ZWwgbGF5b3V0IGlzIG5vdCBlbmFibGVkLgorCisgICAgICAgIHBp
eGVsU25hcHBlZEludFNpemUgd2FzIHRoZSBvbmx5IGZ1bmN0aW9uIGRlZmluZWQgaW4gRnJhY3Rp
b25hbExheW91dFNpemUuY3BwLAorICAgICAgICBzbyBpdCBpcyByZW1vdmVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9GcmFjdGlvbmFsTGF5b3V0VW5pdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVuaXQ6OkZyYWN0aW9uYWxMYXlvdXRV
bml0KToKKyAgICAgICAgKEZyYWN0aW9uYWxMYXlvdXRVbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYWN0aW9uYWxMYXlvdXRVbml0Ojp0b0ludCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlv
bmFsTGF5b3V0VW5pdDo6dG9GbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5
b3V0VW5pdDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVu
aXQ6OnRvVW5zaWduZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVuaXQ6
Om9wZXJhdG9yIGludCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0VW5pdDo6
b3BlcmF0b3IgdW5zaWduZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVu
aXQ6Om9wZXJhdG9yIGZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRV
bml0OjpvcGVyYXRvciBkb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91
dFVuaXQ6Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91
dFVuaXQ6OmNlaWwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFVuaXQ6OnJv
dW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GcmFj
dGlvbmFsTGF5b3V0UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dFJl
Y3Q6OnBpeGVsU25hcHBlZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkSW50
UmVjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
cmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRnJhY3Rpb25hbExheW91dFNpemUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFw
cGVkSW50U2l6ZSk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNS0wOSAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6
IFNlc3Npb25EZXNjcmlwdGlvbjo6YWRkQ2FuZGlkYXRlIHNob3VsZCBub3QgY3Jhc2ggZm9yIG1h
bGZvcm1lZCBpbnB1dApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExNjUzNykK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTU3
LDcgKzExNTcsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZhc3RQYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGlu
Z3MuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFNpemUuY3BwICAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTE2
NTM3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMzI1Miw3ICszMjUyLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UG9pbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRT
aXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVy
YXRlZEltYWdlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJh
dG9yR2VuZXJhdGVkSW1hZ2UuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExNjUzNykK
KysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTExMDMsNyAr
MTEwMyw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAgXAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zy
YWN0aW9uYWxMYXlvdXRTaXplLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9y
R2VuZXJhdGVkSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNyArNjA3LDYgQEAgX19aTjdXZWJDb3Jl
MTlUZXh0UmVzb3VyY2VEZWNvZGVyNmRlY29kZQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VE
ZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18xMlRleHRFbmNvZGluZ0ViCiBfX1pON1dlYkNv
cmUxOVRleHRSZXNvdXJjZURlY29kZXJEMUV2CiBfX1pON1dlYkNvcmUxOWFwcGxpY2F0aW9uSXNT
YWZhcmlFdgotX19aTjdXZWJDb3JlMTlwaXhlbFNuYXBwZWRJbnRSZWN0RVJLTlNfMjBGcmFjdGlv
bmFsTGF5b3V0UmVjdEUKIF9fWk43V2ViQ29yZTIwRGljdGF0aW9uQWx0ZXJuYXRpdmVDMUVqankK
IF9fWk43V2ViQ29yZTIwRGljdGF0aW9uQWx0ZXJuYXRpdmVDMUV2CiBfX1pON1dlYkNvcmUyMERp
c3BsYXlTbGVlcERpc2FibGVyQzFFUEtjCkBAIC05NDAsNiArOTM5LDcgQEAgX19aTjdXZWJDb3Jl
N0VsZW1lbnQ5aW5uZXJUZXh0RXYKIF9fWk43V2ViQ29yZTdJbnRSZWN0NXNjYWxlRWYKIF9fWk43
V2ViQ29yZTdJbnRSZWN0NXVuaXRlRVJLUzBfCiBfX1pON1dlYkNvcmU3SW50UmVjdDlpbnRlcnNl
Y3RFUktTMF8KK19fWk43V2ViQ29yZTdJbnRSZWN0QzFFUktOU18yMEZyYWN0aW9uYWxMYXlvdXRS
ZWN0RQogX19aTjdXZWJDb3JlN0ludFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNv
cmU3SW50U2l6ZUMxRVJLNkNHU2l6ZQogX19aTjdXZWJDb3JlN1J1bkxvb3AxNHJ1bkZvckR1cmF0
aW9uRWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzQwMyw3ICszNDAzLDYgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwJywKQEAgLTM0MjAsNyArMzQxOSw2IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjg4MjksMTAgKzI4ODI5LDYgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXEZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8
RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZyYWN0aW9uYWxM
YXlvdXRTaXplLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTY1Mzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI5NSw3ICsyOTUsNiBAQAogCQkxNDQ5RTI0QzEwN0Q0QTg0MDBCNTc5
M0YgLyogSlNDYWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5o
ICovOyB9OwogCQkxNDQ5RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OUUyODYx
MDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLzsgfTsKIAkJMTQ0RkNFNTIx
NEVDNzlCQzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRGQ0U1MTE0RUM3OUJDMDAwRDE3QTMg
LyogRnJhY3Rpb25hbExheW91dFVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkxNDRGQ0U1QzE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25h
bExheW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ0RkNFNTcxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRTaXplLmNw
cCAqLzsgfTsKIAkJMTQ0RkNFNUQxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRT
aXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRG
Q0U1ODE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFNpemUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDRGQ0ZFMDE0RUYyNTA5
MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0RkNGREUxNEVGMjUwOTAwMEQxN0EzIC8qIEZy
YWN0aW9uYWxMYXlvdXRSZWN0LmNwcCAqLzsgfTsKIAkJMTQ0RkNGRTExNEVGMjUwOTAwMEQxN0Ez
IC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDRGQ0ZERjE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExh
eW91dFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNzE3MSw3ICs3MTcwLDYgQEAKIAkJMTQ0OUUyODYxMDdENERCNDAwQjU3OTNGIC8qIEpT
Q2FsbGJhY2tEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q2FsbGJhY2tEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0RkNFNTEx
NEVDNzlCQzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRVbml0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYWN0aW9uYWxMYXlvdXRVbml0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NEZDRTU0MTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5
b3V0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhY3Rpb25hbExh
eW91dFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0NEZDRTU3MTRFQzc5
RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0NEZDRTU4MTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFs
TGF5b3V0U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFjdGlvbmFs
TGF5b3V0U2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRGQ0ZERTE0RUYy
NTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnJhY3Rpb25hbExheW91dFJlY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDRGQ0ZERjE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25h
bExheW91dFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhY3Rpb25h
bExheW91dFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5Mzk5LDcgKzE5
Mzk3LDYgQEAKIAkJCQkxNDRGQ0U1NDE0RUM3OUU3MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91
dFBvaW50LmggKi8sCiAJCQkJMTQ0RkNGREUxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxM
YXlvdXRSZWN0LmNwcCAqLywKIAkJCQkxNDRGQ0ZERjE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rp
b25hbExheW91dFJlY3QuaCAqLywKLQkJCQkxNDRGQ0U1NzE0RUM3OUU3MDAwRDE3QTMgLyogRnJh
Y3Rpb25hbExheW91dFNpemUuY3BwICovLAogCQkJCTE0NEZDRTU4MTRFQzc5RTcwMDBEMTdBMyAv
KiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5oICovLAogCQkJCUJDMjNGMERBMERBRkY0QTQwMDlGREM5
MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCUJDRTA0Qzg5MERBRkY3QTAwMDdBMEY0MSAv
KiBHZW5lcmF0b3IuaCAqLywKQEAgLTI2MDA3LDcgKzI2MDA0LDYgQEAKIAkJCQk2NTZEMzczQjBB
REJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODg1
Qjk0MTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDRGQ0ZFMDE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0RkNFNUMxNEVDNzlFNzAwMEQxN0EzIC8qIEZyYWN0aW9u
YWxMYXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QkYwMjJFMDk3NDgxNjMwMEM0
MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0IwNzBEMjEzMEE0MDlDMDBB
Mzc2M0MgLyogRnJhbWVBY3Rpb25TY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0
QTg2MjIxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZyYWN0aW9uYWxMYXlv
dXRVbml0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJhY3Rpb25h
bExheW91dFVuaXQuaAkocmV2aXNpb24gMTE2NTM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRnJhY3Rpb25hbExheW91dFVuaXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMjQgKzY2LDM4
IEBAIHB1YmxpYzoKICAgICAvLyBIb3dldmVyIGR1ZSB0byBjb21waWxlciBhbmQgcGxhdGZvcm0g
ZGlmZmVyZW5jZXMgYWRkaW5nIHRob3NlIGFyZSBub24tdHJpdmlhbC4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODQ4IGZvciBkZXRhaWxzLgog
ICAgIAotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KCkgOiBtX3ZhbHVlKDApIHsgfQotICAgIEZy
YWN0aW9uYWxMYXlvdXRVbml0KGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5k
cyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0g
ICAgRnJhY3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgc2hvcnQgdmFsdWUpIHsgUkVQT1JUX09W
RVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnRE
ZW5vbWluYXRvcjsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0KHVuc2lnbmVkIGludCB2YWx1
ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUg
KiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQoZmxv
YXQgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9
IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsgfQotICAgIEZyYWN0aW9uYWxMYXlvdXRV
bml0KGRvdWJsZSB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBt
X3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9Ci0gICAgRnJhY3Rpb25h
bExheW91dFVuaXQoY29uc3QgRnJhY3Rpb25hbExheW91dFVuaXQmIHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZS5yYXdWYWx1ZSgpOyB9CisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KCkg
OiBtX3ZhbHVlKDApIHsgfQorI2lmIEVOQUJMRShTVUJQSVhFTF9MQVlPVVQpCisgICAgaW5saW5l
IEZyYWN0aW9uYWxMYXlvdXRVbml0KGludCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJv
dW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWUgKiBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9
CisgICAgaW5saW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKSB7
IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZSAqIGtG
aXhlZFBvaW50RGVub21pbmF0b3I7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQo
dW5zaWduZWQgaW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7
IG1fdmFsdWUgPSB2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0b3I7IH0KKyAgICBpbmxpbmUg
RnJhY3Rpb25hbExheW91dFVuaXQoZmxvYXQgdmFsdWUpIHsgUkVQT1JUX09WRVJGTE9XKGlzSW5C
b3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsg
fQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdChkb3VibGUgdmFsdWUpIHsgUkVQT1JU
X09WRVJGTE9XKGlzSW5Cb3VuZHModmFsdWUpKTsgbV92YWx1ZSA9IHZhbHVlICoga0ZpeGVkUG9p
bnREZW5vbWluYXRvcjsgfQorI2Vsc2UKKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQo
aW50IHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUg
PSB2YWx1ZTsgfQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdCh1bnNpZ25lZCBzaG9y
dCB2YWx1ZSkgeyBSRVBPUlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0g
dmFsdWU7IH0KKyAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQodW5zaWduZWQgaW50IHZh
bHVlKSB7IFJFUE9SVF9PVkVSRkxPVyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1
ZTsgfQorICAgIGlubGluZSBGcmFjdGlvbmFsTGF5b3V0VW5pdChmbG9hdCB2YWx1ZSkgeyBSRVBP
UlRfT1ZFUkZMT1coaXNJbkJvdW5kcyh2YWx1ZSkpOyBtX3ZhbHVlID0gdmFsdWU7IH0KKyAgICBp
bmxpbmUgRnJhY3Rpb25hbExheW91dFVuaXQoZG91YmxlIHZhbHVlKSB7IFJFUE9SVF9PVkVSRkxP
Vyhpc0luQm91bmRzKHZhbHVlKSk7IG1fdmFsdWUgPSB2YWx1ZTsgfQorI2VuZGlmCisgICAgaW5s
aW5lIEZyYWN0aW9uYWxMYXlvdXRVbml0KGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRVbml0JiB2YWx1
ZSkgeyBtX3ZhbHVlID0gdmFsdWUucmF3VmFsdWUoKTsgfQogCisjaWYgRU5BQkxFKFNVQlBJWEVM
X0xBWU9VVCkKICAgICBpbmxpbmUgaW50IHRvSW50KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAv
IGtGaXhlZFBvaW50RGVub21pbmF0b3I7IH0KLSAgICBpbmxpbmUgdW5zaWduZWQgdG9VbnNpZ25l
ZCgpIGNvbnN0IHsgUkVQT1JUX09WRVJGTE9XKG1fdmFsdWUgPj0gMCk7IHJldHVybiB0b0ludCgp
OyB9CiAgICAgaW5saW5lIGZsb2F0IHRvRmxvYXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4obV92YWx1ZSkgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9CiAgICAgaW5saW5l
IGRvdWJsZSB0b0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV92
YWx1ZSkgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOyB9CisjZWxzZQorICAgIGlubGluZSBpbnQg
dG9JbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgaW5saW5lIGZsb2F0IHRvRmxv
YXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSk7IH0KKyAgICBp
bmxpbmUgZG91YmxlIHRvRG91YmxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtX3ZhbHVlKTsgfQorI2VuZGlmCisgICAgaW5saW5lIHVuc2lnbmVkIHRvVW5zaWduZWQoKSBj
b25zdCB7IFJFUE9SVF9PVkVSRkxPVyhtX3ZhbHVlID49IDApOyByZXR1cm4gdG9JbnQoKTsgfQog
Ci0gICAgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gdG9JbnQoKTsgfQotICAgIG9wZXJh
dG9yIHVuc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gdG9VbnNpZ25lZCgpOyB9Ci0gICAgb3BlcmF0
b3IgZmxvYXQoKSBjb25zdCB7IHJldHVybiB0b0Zsb2F0KCk7IH0KLSAgICBvcGVyYXRvciBkb3Vi
bGUoKSBjb25zdCB7IHJldHVybiB0b0RvdWJsZSgpOyB9Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBpbmxpbmUgb3BlcmF0b3IgaW50KCkgY29uc3Qg
eyByZXR1cm4gdG9JbnQoKTsgfQorICAgIGlubGluZSBvcGVyYXRvciB1bnNpZ25lZCgpIGNvbnN0
IHsgcmV0dXJuIHRvVW5zaWduZWQoKTsgfQorICAgIGlubGluZSBvcGVyYXRvciBmbG9hdCgpIGNv
bnN0IHsgcmV0dXJuIHRvRmxvYXQoKTsgfQorICAgIGlubGluZSBvcGVyYXRvciBkb3VibGUoKSBj
b25zdCB7IHJldHVybiB0b0RvdWJsZSgpOyB9CisgICAgaW5saW5lIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBpbmxpbmUgRnJhY3Rpb25hbExheW91dFVu
aXQgb3BlcmF0b3IrKyhpbnQpCiAgICAgewpAQCAtMTExLDE1ICsxMjUsMjMgQEAgcHVibGljOgog
ICAgIGlubGluZSBpbnQgY2VpbCgpIGNvbnN0CiAjZW5kaWYKICAgICB7CisjaWYgRU5BQkxFKFNV
QlBJWEVMX0xBWU9VVCkKICAgICAgICAgaWYgKG1fdmFsdWUgPiAwKQogICAgICAgICAgICAgcmV0
dXJuIChtX3ZhbHVlICsga0ZpeGVkUG9pbnREZW5vbWluYXRvciAtIDEpIC8ga0ZpeGVkUG9pbnRE
ZW5vbWluYXRvcjsKICAgICAgICAgcmV0dXJuIChtX3ZhbHVlIC0ga0ZpeGVkUG9pbnREZW5vbWlu
YXRvciArIDEpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKKyNlbHNlCisgICAgICAgIHJldHVy
biBtX3ZhbHVlOworI2VuZGlmCiAgICAgfQogICAgIGlubGluZSBpbnQgcm91bmQoKSBjb25zdAog
ICAgIHsKKyNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQogICAgICAgICBpZiAobV92YWx1ZSA+
IDApCiAgICAgICAgICAgICByZXR1cm4gKG1fdmFsdWUgKyAoa0ZpeGVkUG9pbnREZW5vbWluYXRv
ciAvIDIpKSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAgICAgICAgIHJldHVybiAobV92YWx1
ZSAtIChrRml4ZWRQb2ludERlbm9taW5hdG9yIC8gMikpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRv
cjsKKyNlbHNlCisgICAgICAgIHJldHVybiBtX3ZhbHVlOworI2VuZGlmCiAgICAgfQogCiAgICAg
aW5saW5lIGludCBmbG9vcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dFJlY3QuY3BwCShyZXZpc2lv
biAxMTY1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFs
TGF5b3V0UmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCwxMSArMTQ4LDQgQEAgRnJhY3Rp
b25hbExheW91dFJlY3QgZW5jbG9zaW5nRnJhY3Rpb25hbAogI2VuZGlmCiB9CiAKLUludFJlY3Qg
cGl4ZWxTbmFwcGVkSW50UmVjdChjb25zdCBGcmFjdGlvbmFsTGF5b3V0UmVjdCYgcmVjdCkKLXsK
LSAgICBJbnRQb2ludCByb3VuZGVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQocmVjdC5sb2Nh
dGlvbigpKTsKLSAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkTG9jYXRpb24sIEludFNpemUoKHJl
Y3QueCgpICsgcmVjdC53aWR0aCgpKS5yb3VuZCgpIC0gcm91bmRlZExvY2F0aW9uLngoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlY3QueSgpICsgcmVj
dC5oZWlnaHQoKSkucm91bmQoKSAtIHJvdW5kZWRMb2NhdGlvbi55KCkpKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RnJhY3Rpb25hbExheW91dFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5oCShyZXZpc2lvbiAxMTY1MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0UmVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBGcmFjdGlvbmFs
TGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICBJbnRQb2lu
dCBwaXhlbFNuYXBwZWRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludCht
X2xvY2F0aW9uKTsgfQotICAgIEludFNpemUgcGl4ZWxTbmFwcGVkU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHBpeGVsU25hcHBlZEludFNpemUobV9zaXplLCBtX2xvY2F0aW9uKTsgfQorICAgIEludFNp
emUgcGl4ZWxTbmFwcGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoc25hcFNpemVUb1Bp
eGVsKG1fc2l6ZS53aWR0aCgpLCBtX2xvY2F0aW9uLngoKSksIHNuYXBTaXplVG9QaXhlbChtX3Np
emUuaGVpZ2h0KCksIG1fbG9jYXRpb24ueSgpKSk7IH0KIAogICAgIHZvaWQgc2V0TG9jYXRpb24o
Y29uc3QgRnJhY3Rpb25hbExheW91dFBvaW50JiBsb2NhdGlvbikgeyBtX2xvY2F0aW9uID0gbG9j
YXRpb247IH0KICAgICB2b2lkIHNldFNpemUoY29uc3QgRnJhY3Rpb25hbExheW91dFNpemUmIHNp
emUpIHsgbV9zaXplID0gc2l6ZTsgfQpAQCAtMTg0LDkgKzE4NCwxOSBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZyYWN0aW9uYWxMCiAgICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBi
LmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7CiB9CiAKK2lubGluZSBJbnRSZWN0
IHBpeGVsU25hcHBlZEludFJlY3QoY29uc3QgRnJhY3Rpb25hbExheW91dFJlY3QmIHJlY3QpCit7
CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkKKyAgICBJbnRQb2ludCByb3VuZGVkTG9jYXRp
b24gPSByb3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gSW50UmVj
dChyb3VuZGVkTG9jYXRpb24sIEludFNpemUoKHJlY3QueCgpICsgcmVjdC53aWR0aCgpKS5yb3Vu
ZCgpIC0gcm91bmRlZExvY2F0aW9uLngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkucm91bmQoKSAtIHJvdW5k
ZWRMb2NhdGlvbi55KCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEludFJlY3QocmVjdCk7CisjZW5k
aWYKK30KKwogSW50UmVjdCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IEZyYWN0aW9uYWxMYXlvdXRS
ZWN0Jik7CiBGcmFjdGlvbmFsTGF5b3V0UmVjdCBlbmNsb3NpbmdGcmFjdGlvbmFsTGF5b3V0UmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKLUludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChjb25zdCBG
cmFjdGlvbmFsTGF5b3V0UmVjdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlv
bmFsTGF5b3V0U2l6ZS5jcHAJKHJldmlzaW9uIDExNjUzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRTaXplLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGcmFjdGlvbmFs
TGF5b3V0U2l6ZS5oIgotCi0jaW5jbHVkZSAiRnJhY3Rpb25hbExheW91dFBvaW50LmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplKGNvbnN0IEZy
YWN0aW9uYWxMYXlvdXRTaXplJiBzLCBjb25zdCBGcmFjdGlvbmFsTGF5b3V0UG9pbnQmIHApCi17
Ci0gICAgcmV0dXJuIEludFNpemUoc25hcFNpemVUb1BpeGVsKHMud2lkdGgoKSwgcC54KCkpLCBz
bmFwU2l6ZVRvUGl4ZWwocy5oZWlnaHQoKSwgcC55KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25h
bExheW91dFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oCShyZXZpc2lvbiAxMTY1MzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0U2l6ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUsOCArMTQ1LDYgQEAgaW5saW5lIEludFNpemUgcm91bmRlZEludFNpemUo
Y29uc3QgRnJhYwogICAgIHJldHVybiBJbnRTaXplKHMud2lkdGgoKS5yb3VuZCgpLCBzLmhlaWdo
dCgpLnJvdW5kKCkpOwogfQogCi1JbnRTaXplIHBpeGVsU25hcHBlZEludFNpemUoY29uc3QgRnJh
Y3Rpb25hbExheW91dFNpemUmLCBjb25zdCBGcmFjdGlvbmFsTGF5b3V0UG9pbnQmKTsKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRnJhY3Rpb25hbExheW91dFNpemVfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDExNjUz
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTUsNiArMTU1LDExIEBAIGlubGluZSBMYXlvdXRVbml0IGNsYW1wVG9MYXlvdXRV
bml0KGRvdWIKICAgICByZXR1cm4gY2xhbXBUbzxGcmFjdGlvbmFsTGF5b3V0VW5pdD4odmFsdWUs
IEZyYWN0aW9uYWxMYXlvdXRVbml0OjptaW4oKSwgRnJhY3Rpb25hbExheW91dFVuaXQ6Om1heCgp
KTsKIH0KIAoraW5saW5lIEludFNpemUgcGl4ZWxTbmFwcGVkSW50U2l6ZShjb25zdCBGcmFjdGlv
bmFsTGF5b3V0U2l6ZSYgcywgY29uc3QgRnJhY3Rpb25hbExheW91dFBvaW50JiBwKQoreworICAg
IHJldHVybiBJbnRTaXplKHNuYXBTaXplVG9QaXhlbChzLndpZHRoKCksIHAueCgpKSwgc25hcFNp
emVUb1BpeGVsKHMuaGVpZ2h0KCksIHAueSgpKSk7Cit9CisKIGlubGluZSBJbnRSZWN0IHBpeGVs
U25hcHBlZEludFJlY3QoTGF5b3V0UG9pbnQgbG9jYXRpb24sIExheW91dFNpemUgc2l6ZSkKIHsK
ICAgICByZXR1cm4gSW50UmVjdChyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBwaXhlbFNuYXBw
ZWRJbnRTaXplKHNpemUsIGxvY2F0aW9uKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>