<?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>61896</bug_id>
          
          <creation_ts>2011-06-01 17:32:07 -0700</creation_ts>
          <short_desc>Create intermediate classes as a path towards getting off of pixel offsets</short_desc>
          <delta_ts>2011-06-28 11:35:31 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63273</dependson>
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>413781</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-01 17:32:07 -0700</bug_when>
    <thetext>In an effort to solve a number of issues that crop up when zooming the DOM, we want to move off of integer layout values that correspond directly to pixels. Ideally, we want to test multiple replacements such as floats and twips. We&apos;ve already begun moving these values off of the int integral type and onto classes such as IntPoint, IntSize, and IntRect. Ideally, we&apos;d use a typedeffed intermediate instead so we could quickly iterate over the different options; smfr threw out &quot;RenderPoint.&quot;

I&apos;m creating this bug to start the discussion. The sooner we reach a conclusion, the sooner we can begin using this class in our transition off of integral types.

Hyatt, your feedback is particularly welcome on all parts of this plan :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414579</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-02 17:51:04 -0700</bug_when>
    <thetext>We’ll need four types, right? The scalar, the point, the size, and the rect types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414990</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-03 10:33:24 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; We’ll need four types, right? The scalar, the point, the size, and the rect types.

That&apos;s exactly right. We&apos;re wrestling with what to call the scalar...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415325</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-03 17:29:05 -0700</bug_when>
    <thetext>The words for the scalar would be “coordinate” and “distance” if you thought in terms of point and size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415908</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-06 11:19:45 -0700</bug_when>
    <thetext>How does &quot;LayoutPoint&quot; and &quot;LayoutSize&quot; sound? Internally they would use &quot;Coordinate&quot; and &quot;Distance&quot; respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416294</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-06 21:36:20 -0700</bug_when>
    <thetext>I’m not sure we really need distinct types for layout coordinates and layout distances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416619</commentid>
    <comment_count>6</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-07 10:37:00 -0700</bug_when>
    <thetext>Good. That simplifies things g(In reply to comment #5)
&gt; I’m not sure we really need distinct types for layout coordinates and layout distances.

I certainly find it preferable to not have distinct types for them since it seems like it would lead to confusion when they&apos;re interchanged, and I don&apos;t believe we&apos;d ever want to use different types for them. They still need a name though, and coordinate and distance both imply a narrower usage than what is proposed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416638</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-07 11:01:16 -0700</bug_when>
    <thetext>Maybe “scalar”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416681</commentid>
    <comment_count>8</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-07 11:43:54 -0700</bug_when>
    <thetext>What about &quot;LayoutUnit&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416683</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-07 11:48:11 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; What about &quot;LayoutUnit&quot;?

It sucks trying to pick a name before we&apos;ve decided what it will be. If we do, we&apos;ll end up with some generic-sounding thing that we may decide to rename again later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416685</commentid>
    <comment_count>10</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-07 11:50:38 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; What about &quot;LayoutUnit&quot;?
&gt; 
&gt; It sucks trying to pick a name before we&apos;ve decided what it will be. If we do, we&apos;ll end up with some generic-sounding thing that we may decide to rename again later.

That&apos;s a fair critique, but I&apos;ll volunteer to rename it to something less detached from the implementation if that really becomes a point of contention.

Personally, I kind of like the abstraction. It certainly makes the specific usage of these integral types more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416733</commentid>
    <comment_count>11</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-07 12:34:57 -0700</bug_when>
    <thetext>We&apos;re nearly done transitioning off of tx/ty, which means this naming is going to be our next hurtle. I think there&apos;s value in trying out the different options for layout units (floats, fixed point, etc.) and an intermediary class seems to be the best way to enable that. If you can suggest a different course to avoid this I&apos;m all ears, otherwise I&apos;d love your opinion in what to call this thing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416747</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-07 12:57:54 -0700</bug_when>
    <thetext>I wonder if it makes sense to do the more disruptive experimentation on a branch, and then touch trunk when you know which approach to take?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425802</commentid>
    <comment_count>13</comment_count>
      <attachid>98277</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-22 18:04:50 -0700</bug_when>
    <thetext>Created attachment 98277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425811</commentid>
    <comment_count>14</comment_count>
      <attachid>98277</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-22 18:10:24 -0700</bug_when>
    <thetext>Comment on attachment 98277
Patch

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

&gt; Source/JavaScriptCore/wtf/Platform.h:1013
&gt; +#define WTF_USE_FLOAT_OFFSETS 0

I think this needs to be a bit more specific. WTF_LAYOUT_USES_FLOAT_OFFSETS ?

&gt; Source/WebCore/rendering/LayoutTypes.h:53
&gt; +typedef int LayoutNumber;

Not a huge fan of &quot;LayoutNumber&quot;. LayoutValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425936</commentid>
    <comment_count>15</comment_count>
      <attachid>98277</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-22 21:01:24 -0700</bug_when>
    <thetext>Comment on attachment 98277
Patch

Attachment 98277 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8918905</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425937</commentid>
    <comment_count>16</comment_count>
      <attachid>98277</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-06-22 21:04:15 -0700</bug_when>
    <thetext>Comment on attachment 98277
Patch

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

&gt;&gt; Source/WebCore/rendering/LayoutTypes.h:53
&gt;&gt; +typedef int LayoutNumber;
&gt; 
&gt; Not a huge fan of &quot;LayoutNumber&quot;. LayoutValue?

LayoutUnit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425977</commentid>
    <comment_count>17</comment_count>
      <attachid>98277</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-22 23:41:02 -0700</bug_when>
    <thetext>Comment on attachment 98277
Patch

Does this actually move us closer?  Isn&apos;t there going to need to be an insane amount of rounding code added as well?  Can that rounding code exist in parallel in both paths?  It&apos;s likely it can, but it would be useful to see what other (rounding) abstracitons you&apos;re going to add with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426189</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-23 08:17:34 -0700</bug_when>
    <thetext>I also think this is starting to be invasive in a way that will be annoying to the rest of us trying to hack layout code on TOT. I foresee an extended set of pages to move from IntRect -&gt; LayoutRect, before it&apos;s even known whether floats can be used at all.

I&apos;d still suggest prototyping on a branch to the point where you&apos;ve chosen a method to move forward with.

BTW, you&apos;ll also have to ensure that IntRect and FloatRect have matching methods with this patch; currently they do not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426275</commentid>
    <comment_count>19</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 10:35:34 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I also think this is starting to be invasive in a way that will be annoying to the rest of us trying to hack layout code on TOT. I foresee an extended set of pages to move from IntRect -&gt; LayoutRect, before it&apos;s even known whether floats can be used at all.
&gt; 
&gt; I&apos;d still suggest prototyping on a branch to the point where you&apos;ve chosen a method to move forward with.

We made a working prototype which passes most of our zooming tests and proves float&apos;s are viable. You can see it attached to the meta bug 60318.

&gt; BTW, you&apos;ll also have to ensure that IntRect and FloatRect have matching methods with this patch; currently they do not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426283</commentid>
    <comment_count>20</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 10:38:14 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 98277 [details])
&gt; Does this actually move us closer?  Isn&apos;t there going to need to be an insane amount of rounding code added as well?  Can that rounding code exist in parallel in both paths?  It&apos;s likely it can, but it would be useful to see what other (rounding) abstracitons you&apos;re going to add with this?

Our plan is to implement this rounding functionality behind the USE(FLOAT_OFFSETS) flag -- or whatever name we settle on. We&apos;ll do this as non-intrusively as possible and in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426284</commentid>
    <comment_count>21</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 10:40:15 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 98277 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98277&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/LayoutTypes.h:53
&gt; &gt;&gt; +typedef int LayoutNumber;
&gt; &gt; 
&gt; &gt; Not a huge fan of &quot;LayoutNumber&quot;. LayoutValue?
&gt; 
&gt; LayoutUnit?

It seems to me that LayoutValue tells us little about what the variables we&apos;re representing really are. Number or Unit seem more informative, but I&apos;m not wedded to any name in particular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426293</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-23 10:45:50 -0700</bug_when>
    <thetext>Although I&apos;ve seen the impressive demo&apos;s of Levi&apos;s functional float-based rendering tree, others have not.

I think it would help your case levi/emil were you to announce your full plan either in a bug or on webkit-dev, describing how this transition will work.

They&apos;ve done the &quot;branch&quot; work (in their own local git branch).  One way to show that to others might be to check it into an SVN branch, but I&apos;m not sure that&apos;s actually that helpful.

I&apos;m not sure this is the best first step for integration, but I&apos;m also not sure which is.

Levi and Emil explored both a float-based rendering tree, and a int-with-accumulated-rounding-hacks approach.  The float approach ended up more complete with about an equal sized patch, is my understanding.  They did this parallel exploration for about a week, after which declaring the float approach the winner.  Last I saw their build, the web rendered fine, the test cases attached to bug 60318 rendered fine, but there were still some rounding corner-cases to work through.

It seems the next step forward is to work on the plan of how to educate the community of their findings, as well as find a smooth path for transitioning TOT to their work (which appears to be what Levi is doing here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426429</commentid>
    <comment_count>23</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 13:57:43 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 98277 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98277&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/Platform.h:1013
&gt; &gt; +#define WTF_USE_FLOAT_OFFSETS 0
&gt; 
&gt; I think this needs to be a bit more specific. WTF_LAYOUT_USES_FLOAT_OFFSETS ?
&gt; 
&gt; &gt; Source/WebCore/rendering/LayoutTypes.h:53
&gt; &gt; +typedef int LayoutNumber;
&gt; 
&gt; Not a huge fan of &quot;LayoutNumber&quot;. LayoutValue?

What about LayoutUnit and WTF_USE_FLOAT_LAYOUT_OFFSETS? WTF_USE_ is the necessary prefix for the USE() macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426593</commentid>
    <comment_count>24</comment_count>
      <attachid>98429</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 16:17:39 -0700</bug_when>
    <thetext>Created attachment 98429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426596</commentid>
    <comment_count>25</comment_count>
      <attachid>98429</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 16:21:21 -0700</bug_when>
    <thetext>Comment on attachment 98429
Patch

Whoops, missed one of my changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426598</commentid>
    <comment_count>26</comment_count>
      <attachid>98429</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 16:23:42 -0700</bug_when>
    <thetext>Comment on attachment 98429
Patch

Scratch that... just being neurotic :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426631</commentid>
    <comment_count>27</comment_count>
      <attachid>98435</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 16:59:37 -0700</bug_when>
    <thetext>Created attachment 98435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426632</commentid>
    <comment_count>28</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-23 17:00:11 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=98435) [details]
&gt; Patch

Updated to patch to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428120</commentid>
    <comment_count>29</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-27 11:22:03 -0700</bug_when>
    <thetext>Anyone willing to review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428956</commentid>
    <comment_count>30</comment_count>
      <attachid>98435</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-28 10:38:01 -0700</bug_when>
    <thetext>Comment on attachment 98435
Patch

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

I think this is a low-risk way to make the further float experiments practical. Even if there is some disaster, it&apos;s easy to back this out with a global replace since the new typedefs are unique words that do not appear elsewhere in the code.

&gt; Source/JavaScriptCore/wtf/Platform.h:1014
&gt; +#if !defined(WTF_USE_FLOAT_LAYOUT_OFFSETS)
&gt; +#define WTF_USE_FLOAT_LAYOUT_OFFSETS 0
&gt; +#endif

I don’t think the first patch should add this switch. Lets just land the typedefs without any #if at first.

Please do not touch Platform.h at all. I do not think this will ever need to have something in Platform.h.

&gt; Source/WebCore/rendering/LayoutState.h:89
&gt; -    IntRect m_clipRect;
&gt; -    IntSize m_paintOffset; // x/y offset from container.  Includes relative positioning and scroll offsets.
&gt; -    IntSize m_layoutOffset; // x/y offset from container.  Does not include relative positioning or scroll offsets.
&gt; -    IntSize m_layoutDelta; // Transient offset from the final position of the object
&gt; +    LayoutRect m_clipRect;
&gt; +    LayoutSize m_paintOffset; // x/y offset from container. Includes relative positioning and scroll offsets.
&gt; +    LayoutSize m_layoutOffset; // x/y offset from container. Does not include relative positioning or scroll offsets.
&gt; +    LayoutSize m_layoutDelta; // Transient offset from the final position of the object
&gt;                             // used to ensure that repaints happen in the correct place.
&gt;                             // This is a total delta accumulated from the root.

If you&apos;re changing this, you need to get rid of the &quot;lined up&quot; comment lines below. A rename like this shows why we don&apos;t line things up normally in WebKit. Just indent the other lines by 4 or figure out some other commenting style.

&gt; Source/WebCore/rendering/LayoutTypes.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

This is 2011.

&gt; Source/WebCore/rendering/LayoutTypes.h:43
&gt; +#if USE(FLOAT_LAYOUT_OFFSETS)
&gt; +#include &quot;FloatRect.h&quot;
&gt; +#else
&gt; +#include &quot;IntRect.h&quot;
&gt; +#endif

Lets just land the all int version of this for now. No need for the &quot;if float&quot; to be checked in. I definitely don’t think we need a Platform.h switch for this. We do *not* want this different on different platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429009</commentid>
    <comment_count>31</comment_count>
      <attachid>98946</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 11:17:24 -0700</bug_when>
    <thetext>Created attachment 98946
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429031</commentid>
    <comment_count>32</comment_count>
      <attachid>98946</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 11:31:33 -0700</bug_when>
    <thetext>Comment on attachment 98946
Patch for landing

Clearing flags on attachment: 98946

Committed r89945: &lt;http://trac.webkit.org/changeset/89945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429032</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 11:31:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429035</commentid>
    <comment_count>34</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 11:35:31 -0700</bug_when>
    <thetext>Thanks again for the review, Darin.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98277</attachid>
            <date>2011-06-22 18:04:50 -0700</date>
            <delta_ts>2011-06-23 16:17:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61896-20110622180449.patch</filename>
            <type>text/plain</type>
            <size>17376</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0OTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDYtMjIgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBpbnRlcm1l
ZGlhdGUgY2xhc3NlcyBhcyBhIHBhdGggdG93YXJkcyBnZXR0aW5nIG9mZiBvZiBwaXhlbCBvZmZz
ZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTg5
NgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFkZGluZyBmbGFnIGZvciB0b2dnbGluZyB0
aGUgdHlwZWRlZiBvZiB0aGUgaW50ZXJtZWRpYXRlIExheW91dCogY2xhc3NlcworICAgICAgICBm
cm9tIGludHMgdG8gZmxvYXRzIGFuZCBkZWZhdWx0aW5nIGl0IHRvIGludHMgKG9mZikuCisKIDIw
MTEtMDYtMjIgIENhcnkgQ2xhcmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCShyZXZpc2lvbiA4OTQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAwOSw2ICsxMDA5LDEwIEBACiAjZGVmaW5lIEVO
QUJMRV9SRVBBSU5UX1RIUk9UVExJTkcgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChXVEZfVVNF
X0ZMT0FUX09GRlNFVFMpCisjZGVmaW5lIFdURl9VU0VfRkxPQVRfT0ZGU0VUUyAwCisjZW5kaWYK
KwogLyogRGlzYWJsZSB0aGUgSklUIG9uIHZlcnNpb25zIG9mIEdDQyBwcmlvciB0byA0LjEgKi8K
ICNpZiAhZGVmaW5lZChFTkFCTEVfSklUKSAmJiBDT01QSUxFUihHQ0MpICYmICFHQ0NfVkVSU0lP
Tl9BVF9MRUFTVCg0LCAxLCAwKQogI2RlZmluZSBFTkFCTEVfSklUIDAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDg5NDkyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDYtMjIgIExldmkgV2VpbnRyYXViICA8bGV2aXdA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENyZWF0ZSBpbnRlcm1lZGlhdGUgY2xhc3NlcyBhcyBhIHBhdGggdG93YXJkcyBnZXR0
aW5nIG9mZiBvZiBwaXhlbCBvZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTg5NgorCisgICAgICAgIENyZWF0aW5nIHRocmVlIGludGVybWVk
aWF0ZSB0eXBlZGVmcyB0byBhaWQgaW4gbW92aW5nIGxheW91dCBhbmQgaGl0IHRlc3RpbmcgZnJv
bSBpbnRlZ2VycworICAgICAgICB0byBmbG9hdHMuIFdlJ2xsIHRyYW5zaXRpb24gdGhlIHJlbmRl
ciB0cmVlIG92ZXIgdG8gdGhlc2UgaW50ZXJtZWRpYXRlIHR5cGVzIGFuZCBhZGQKKyAgICAgICAg
aW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCB0aGUgbmV3IHR5cGVzIGJlaGluZCBVU0UoRkxPQVRf
T0ZGU0VUUykuIFRoaXMgYWxsb3dzIHRoZSB1bHRpbWF0ZQorICAgICAgICBjaGFuZ2VvdmVyIHRv
IGJlIGVhc2llci4KKworICAgICAgICBTd2l0Y2hpbmcgTGF5b3V0U3RhdGUgb3ZlciB0byB0aGlz
IGFic3RyYWN0aW9uIHRvIHZlcmlmeSBpdCB3b3JrcyBjb3JyZWN0bHkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMgY3JlYXRpbmcgYSBuZXcgYWJzdHJhY3Rpb24sIG5vdCBj
aGFuZ2luZyBjdXJyZW50IGJlaGF2aW9yLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OnBhZ2VMb2dpY2FsT2Zmc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dFN0YXRlOjphZGRGb3JjZWRDb2x1bW5CcmVhayk6CisgICAgICAgICog
cmVuZGVyaW5nL0xheW91dFN0YXRlLmg6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFR5cGVz
Lmg6IEFkZGVkLgorCiAyMDExLTA2LTIyICBBbm5pZSBTdWxsaXZhbiAgPHN1bGxpdmFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5NDc3KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg4Myw2ICsyODgzLDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaCBcCisJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9P
dmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NDc3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05NjUsNiArOTY1LDcgQEAKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvTGF5b3V0U3RhdGUuaCcsCisg
ICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFR5cGVzLmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5n
L1BhaW50SW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUGFpbnRQaGFzZS5oJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM1LDYgKzIxMzUsNyBAQCBIRUFERVJTICs9IFwK
ICAgICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIFwKICAgICByZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5oIFwKICAgICByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaCBcCisgICAgcmVuZGVyaW5nL0xh
eW91dFR5cGVzLmggXAogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBc
CiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaCBcCiAgICAgcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA4OTQ3NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzU5NCw2ICszMzU5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcTGF5b3V0VHlwZXMuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFBhaW50SW5m
by5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg5NDc3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC00NzYxLDYgKzQ3NjEsNyBAQAogCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0
U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQu
aCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
aCAqLzsgfTsKKwkJQkFDRjI5MDExM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQUNGMjkwMDEzQjJB
MEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAw
RkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CiAJ
CUJDMDBGMDA1MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkYwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGUubW0gKi87IH07CiAJCUJDMDBGMDA2MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDBGMDAwMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlSW50ZXJuYWwuaCAqLzsgfTsKQEAg
LTExMzQ4LDYgKzExMzQ5LDcgQEAKIAkJQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNl
bGVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0U2Vs
ZWN0aW9uQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0OTEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjhEQkRCNEExMzBCMEY4QTAwRjVDREIx
IC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0VHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUZpbGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBGMDAwMEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZUlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTI2Myw2ICsxOTI2NSw3
IEBACiAJCQkJQkNFQTQ4MUIwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCAqLywK
IAkJCQkyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovLAogCQkJ
CTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oICovLAorCQkJCUJBQ0Yy
OTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovLAogCQkJCTM3NzRBQkEzMEZB
MjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLywKIAkJCQkwODg1
MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi8sCiAJCQkJMDg4NTA2N0UxMURB
MDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLywKQEAgLTIzMDI3LDYgKzIzMDMwLDcgQEAK
IAkJCQlCMUFENEU3QzEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQUNGMjkwMTEzQjJBMEQ1MDA3ODFG
OTAgLyogTGF5b3V0VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiA4OTQ3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1MYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUo
TGF5b3V0U3RhdGUqIHByZXYsIFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9m
ZnNldCwgaW50IHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCwgQ29sdW1uSW5mbyogY29sdW1uSW5mbykKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlv
dXRTdGF0ZSogcHJldiwgUmVuZGVyQm94KiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0LCBMYXlvdXROdW1iZXIgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWln
aHRDaGFuZ2VkLCBDb2x1bW5JbmZvKiBjb2x1bW5JbmZvKQogICAgIDogbV9jb2x1bW5JbmZvKGNv
bHVtbkluZm8pCiAgICAgLCBtX25leHQocHJldikKICNpZm5kZWYgTkRFQlVHCkBAIC00Nyw3ICs0
Nyw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICBpZiAo
Zml4ZWQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3
aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgIEZsb2F0UG9pbnQgZml4ZWRPZmZzZXQgPSByZW5kZXJl
ci0+dmlldygpLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCB0cnVlKTsKLSAgICAgICAg
bV9wYWludE9mZnNldCA9IEludFNpemUoZml4ZWRPZmZzZXQueCgpLCBmaXhlZE9mZnNldC55KCkp
ICsgb2Zmc2V0OworICAgICAgICBtX3BhaW50T2Zmc2V0ID0gTGF5b3V0U2l6ZShmaXhlZE9mZnNl
dC54KCksIGZpeGVkT2Zmc2V0LnkoKSkgKyBvZmZzZXQ7CiAgICAgfSBlbHNlCiAgICAgICAgIG1f
cGFpbnRPZmZzZXQgPSBwcmV2LT5tX3BhaW50T2Zmc2V0ICsgb2Zmc2V0OwogCkBAIC02OSw3ICs2
OSw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKIAogICAgIGlm
IChyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gcmVuZGVyZXItPmxheWVyKCk7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QodG9Qb2lu
dChtX3BhaW50T2Zmc2V0KSArIHJlbmRlcmVyLT52aWV3KCktPmxheW91dERlbHRhKCksIGxheWVy
LT5zaXplKCkpOworICAgICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KHRvUG9pbnQobV9wYWludE9m
ZnNldCkgKyByZW5kZXJlci0+dmlldygpLT5sYXlvdXREZWx0YSgpLCBsYXllci0+c2l6ZSgpKTsK
ICAgICAgICAgaWYgKG1fY2xpcHBlZCkKICAgICAgICAgICAgIG1fY2xpcFJlY3QuaW50ZXJzZWN0
KGNsaXBSZWN0KTsKICAgICAgICAgZWxzZSB7CkBAIC04NCw3ICs4NCw3IEBAIExheW91dFN0YXRl
OjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICAvLyBXZSBjYW4gY29tcGFyZSB0aGlz
IGxhdGVyIG9uIHRvIGZpZ3VyZSBvdXQgd2hhdCBwYXJ0IG9mIHRoZSBwYWdlIHdlJ3JlIGFjdHVh
bGx5IG9uLAogICAgIGlmIChwYWdlTG9naWNhbEhlaWdodCB8fCBtX2NvbHVtbkluZm8pIHsKICAg
ICAgICAgbV9wYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0OwotICAgICAgICBt
X3BhZ2VPZmZzZXQgPSBJbnRTaXplKG1fbGF5b3V0T2Zmc2V0LndpZHRoKCkgKyByZW5kZXJlci0+
Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCisgICAgICAgIG1fcGFnZU9m
ZnNldCA9IExheW91dFNpemUobV9sYXlvdXRPZmZzZXQud2lkdGgoKSArIHJlbmRlcmVyLT5ib3Jk
ZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2xheW91dE9mZnNldC5oZWlnaHQoKSArIHJlbmRlcmVyLT5ib3JkZXJUb3Ao
KSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsKICAgICB9IGVsc2UgewpAQCAtMTE4
LDEyICsxMTgsMTIgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlck9iamVjdCogcgog
ewogICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyID0gcm9vdC0+Y29udGFpbmVyKCk7CiAgICAg
RmxvYXRQb2ludCBhYnNDb250ZW50UG9pbnQgPSBjb250YWluZXItPmxvY2FsVG9BYnNvbHV0ZShG
bG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKTsKLSAgICBtX3BhaW50T2Zmc2V0ID0gSW50U2l6ZShh
YnNDb250ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQueSgpKTsKKyAgICBtX3BhaW50T2Zm
c2V0ID0gTGF5b3V0U2l6ZShhYnNDb250ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQueSgp
KTsKIAogICAgIGlmIChjb250YWluZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAgICAgIFJl
bmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVyKS0+bGF5
ZXIoKTsKICAgICAgICAgbV9jbGlwcGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jbGlwUmVjdCA9IElu
dFJlY3QodG9Qb2ludChtX3BhaW50T2Zmc2V0KSwgbGF5ZXItPnNpemUoKSk7CisgICAgICAgIG1f
Y2xpcFJlY3QgPSBMYXlvdXRSZWN0KHRvUG9pbnQobV9wYWludE9mZnNldCksIGxheWVyLT5zaXpl
KCkpOwogICAgICAgICBtX3BhaW50T2Zmc2V0IC09IGxheWVyLT5zY3JvbGxlZENvbnRlbnRPZmZz
ZXQoKTsKICAgICB9CiB9CkBAIC0xNjIsMTIgKzE2MiwxMiBAQCB2b2lkIExheW91dFN0YXRlOjpj
bGVhclBhZ2luYXRpb25JbmZvcm1hCiAgICAgbV9jb2x1bW5JbmZvID0gbV9uZXh0LT5tX2NvbHVt
bkluZm87CiB9CiAKLWludCBMYXlvdXRTdGF0ZTo6cGFnZUxvZ2ljYWxPZmZzZXQoaW50IGNoaWxk
TG9naWNhbE9mZnNldCkgY29uc3QKK0xheW91dE51bWJlciBMYXlvdXRTdGF0ZTo6cGFnZUxvZ2lj
YWxPZmZzZXQoTGF5b3V0TnVtYmVyIGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9sYXlvdXRPZmZzZXQuaGVpZ2h0KCkgKyBjaGlsZExvZ2ljYWxPZmZzZXQgLSBtX3Bh
Z2VPZmZzZXQuaGVpZ2h0KCk7CiB9CiAKLXZvaWQgTGF5b3V0U3RhdGU6OmFkZEZvcmNlZENvbHVt
bkJyZWFrKGludCBjaGlsZExvZ2ljYWxPZmZzZXQpCit2b2lkIExheW91dFN0YXRlOjphZGRGb3Jj
ZWRDb2x1bW5CcmVhayhMYXlvdXROdW1iZXIgY2hpbGRMb2dpY2FsT2Zmc2V0KQogewogICAgIGlm
ICghbV9jb2x1bW5JbmZvIHx8IG1fY29sdW1uSW5mby0+Y29sdW1uSGVpZ2h0KCkpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZp
c2lvbiA4OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIExheW91dFN0YXRlX2gKICNk
ZWZpbmUgTGF5b3V0U3RhdGVfaAogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIklu
dFNpemUuaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5kZXJCb3gq
LCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGludCBwYWdlSGVpZ2h0LCBib29sIHBhZ2VIZWlnaHRD
aGFuZ2VkLCBDb2x1bW5JbmZvKik7CisgICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5k
ZXJCb3gqLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91dE51bWJlciBwYWdlSGVpZ2h0
LCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkLCBDb2x1bW5JbmZvKik7CiAgICAgTGF5b3V0U3RhdGUo
UmVuZGVyT2JqZWN0Kik7CiAKICAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKQEAgLTY5
LDkgKzY4LDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIFRoZSBwYWdlIGxvZ2ljYWwgb2Zmc2V0
IGlzIHRoZSBvYmplY3QncyBvZmZzZXQgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIGluIHRoZSBw
YWdlIHByb2dyZXNzaW9uCiAgICAgLy8gZGlyZWN0aW9uIChzbyBhbiB4LW9mZnNldCBpbiB2ZXJ0
aWNhbCB0ZXh0IGFuZCBhIHktb2Zmc2V0IGZvciBob3Jpem9udGFsIHRleHQpLgotICAgIGludCBw
YWdlTG9naWNhbE9mZnNldChpbnQgY2hpbGRMb2dpY2FsT2Zmc2V0KSBjb25zdDsKKyAgICBMYXlv
dXROdW1iZXIgcGFnZUxvZ2ljYWxPZmZzZXQoTGF5b3V0TnVtYmVyIGNoaWxkTG9naWNhbE9mZnNl
dCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZEZvcmNlZENvbHVtbkJyZWFrKGludCBjaGlsZExvZ2lj
YWxPZmZzZXQpOworICAgIHZvaWQgYWRkRm9yY2VkQ29sdW1uQnJlYWsoTGF5b3V0TnVtYmVyIGNo
aWxkTG9naWNhbE9mZnNldCk7CiAgICAgCiAgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2ljYWxIZWlnaHQ7IH0KICAgICBib29sIHBhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2Vk
OyB9CkBAIC04MiwxNiArODEsMTYgQEAgcHJpdmF0ZToKIAogcHVibGljOgogICAgIGJvb2wgbV9j
bGlwcGVkOwotICAgIEludFJlY3QgbV9jbGlwUmVjdDsKLSAgICBJbnRTaXplIG1fcGFpbnRPZmZz
ZXQ7IC8vIHgveSBvZmZzZXQgZnJvbSBjb250YWluZXIuICBJbmNsdWRlcyByZWxhdGl2ZSBwb3Np
dGlvbmluZyBhbmQgc2Nyb2xsIG9mZnNldHMuCi0gICAgSW50U2l6ZSBtX2xheW91dE9mZnNldDsg
Ly8geC95IG9mZnNldCBmcm9tIGNvbnRhaW5lci4gIERvZXMgbm90IGluY2x1ZGUgcmVsYXRpdmUg
cG9zaXRpb25pbmcgb3Igc2Nyb2xsIG9mZnNldHMuCi0gICAgSW50U2l6ZSBtX2xheW91dERlbHRh
OyAvLyBUcmFuc2llbnQgb2Zmc2V0IGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uIG9mIHRoZSBvYmpl
Y3QKKyAgICBMYXlvdXRSZWN0IG1fY2xpcFJlY3Q7CisgICAgTGF5b3V0U2l6ZSBtX3BhaW50T2Zm
c2V0OyAvLyB4L3kgb2Zmc2V0IGZyb20gY29udGFpbmVyLiBJbmNsdWRlcyByZWxhdGl2ZSBwb3Np
dGlvbmluZyBhbmQgc2Nyb2xsIG9mZnNldHMuCisgICAgTGF5b3V0U2l6ZSBtX2xheW91dE9mZnNl
dDsgLy8geC95IG9mZnNldCBmcm9tIGNvbnRhaW5lci4gRG9lcyBub3QgaW5jbHVkZSByZWxhdGl2
ZSBwb3NpdGlvbmluZyBvciBzY3JvbGwgb2Zmc2V0cy4KKyAgICBMYXlvdXRTaXplIG1fbGF5b3V0
RGVsdGE7IC8vIFRyYW5zaWVudCBvZmZzZXQgZnJvbSB0aGUgZmluYWwgcG9zaXRpb24gb2YgdGhl
IG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCB0byBlbnN1cmUgdGhh
dCByZXBhaW50cyBoYXBwZW4gaW4gdGhlIGNvcnJlY3QgcGxhY2UuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgdG90YWwgZGVsdGEgYWNjdW11bGF0ZWQgZnJvbSB0aGUg
cm9vdC4KIAotICAgIGludCBtX3BhZ2VMb2dpY2FsSGVpZ2h0OyAvLyBUaGUgY3VycmVudCBwYWdl
IGhlaWdodCBmb3IgdGhlIHBhZ2luYXRpb24gbW9kZWwgdGhhdCBlbmNsb3NlcyB1cy4KKyAgICBM
YXlvdXROdW1iZXIgbV9wYWdlTG9naWNhbEhlaWdodDsgLy8gVGhlIGN1cnJlbnQgcGFnZSBoZWln
aHQgZm9yIHRoZSBwYWdpbmF0aW9uIG1vZGVsIHRoYXQgZW5jbG9zZXMgdXMuCiAgICAgYm9vbCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsgLy8gSWYgb3VyIHBhZ2UgaGVpZ2h0IGhhcyBjaGFu
Z2VkLCB0aGlzIHdpbGwgZm9yY2UgYWxsIGJsb2NrcyB0byByZWxheW91dC4KLSAgICBJbnRTaXpl
IG1fcGFnZU9mZnNldDsgLy8gVGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IHBh
Z2UgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHBhZ2luYXRpb24gbW9kZWwuCisgICAgTGF5b3V0
U2l6ZSBtX3BhZ2VPZmZzZXQ7IC8vIFRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBmaXJz
dCBwYWdlIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsLgogICAgIENv
bHVtbkluZm8qIG1fY29sdW1uSW5mbzsgLy8gSWYgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIG1v
ZGVsIGlzIGEgY29sdW1uIG1vZGVsLCB0aGVuIHRoaXMgd2lsbCBzdG9yZSBjb2x1bW4gaW5mb3Jt
YXRpb24gZm9yIGVhc3kgcmV0cmlldmFsL21hbmlwdWxhdGlvbi4KIAogICAgIExheW91dFN0YXRl
KiBtX25leHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhlc2UgdHlwZWRlZnMgYXJlIGJlaW5nIHVzZWQg
dG8gYWJzdHJhY3QgbGF5b3V0IGFuZCBoaXQgdGVzdGluZyBvZmYKKy8vIG9mIGludGVnZXJzIGFu
ZCBldmVudHVhbGx5IHJlcGxhY2UgdGhlbSB3aXRoIGZsb2F0cy4gT25jZSB0aGlzIHRyYW5zaXRp
b24KKy8vIGlzIGNvbXBsZXRlLCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbW92ZWQuIFByb2dyZXNz
IGNhbiBiZSB0cmFja2VkIGF0CisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjAzMTgKKworI2lmbmRlZiBMYXlvdXRUeXBlc19oCisjZGVmaW5lIExheW91dFR5cGVz
X2gKKworI2lmIFVTRShGTE9BVF9PRkZTRVRTKQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2Vs
c2UKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisjaWYgVVNFKEZMT0FUX09GRlNFVFMpCit0eXBlZGVmIGZsb2F0IExheW91dE51bWJlcjsKK3R5
cGVkZWYgRmxvYXRQb2ludCBMYXlvdXRQb2ludDsKK3R5cGVkZWYgRmxvYXRTaXplIExheW91dFNp
emU7Cit0eXBlZGVmIEZsb2F0UmVjdCBMYXlvdXRSZWN0OworI2Vsc2UKK3R5cGVkZWYgaW50IExh
eW91dE51bWJlcjsKK3R5cGVkZWYgSW50UG9pbnQgTGF5b3V0UG9pbnQ7Cit0eXBlZGVmIEludFNp
emUgTGF5b3V0U2l6ZTsKK3R5cGVkZWYgSW50UmVjdCBMYXlvdXRSZWN0OworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExheW91dFR5cGVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98429</attachid>
            <date>2011-06-23 16:17:39 -0700</date>
            <delta_ts>2011-06-23 16:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61896-20110623161738.patch</filename>
            <type>text/plain</type>
            <size>17423</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0OTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDYtMjIgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBpbnRlcm1l
ZGlhdGUgY2xhc3NlcyBhcyBhIHBhdGggdG93YXJkcyBnZXR0aW5nIG9mZiBvZiBwaXhlbCBvZmZz
ZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTg5
NgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFkZGluZyBmbGFnIGZvciB0b2dnbGluZyB0
aGUgdHlwZWRlZiBvZiB0aGUgaW50ZXJtZWRpYXRlIExheW91dCogY2xhc3NlcworICAgICAgICBm
cm9tIGludHMgdG8gZmxvYXRzIGFuZCBkZWZhdWx0aW5nIGl0IHRvIGludHMgKG9mZikuCisKIDIw
MTEtMDYtMjIgIENhcnkgQ2xhcmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCShyZXZpc2lvbiA4OTQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTAwOSw2ICsxMDA5LDEwIEBACiAjZGVmaW5lIEVO
QUJMRV9SRVBBSU5UX1RIUk9UVExJTkcgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChXVEZfVVNF
X0ZMT0FUX0xBWU9VVF9PRkZTRVRTKQorI2RlZmluZSBXVEZfVVNFX0ZMT0FUX0xBWU9VVF9PRkZT
RVRTIDAKKyNlbmRpZgorCiAvKiBEaXNhYmxlIHRoZSBKSVQgb24gdmVyc2lvbnMgb2YgR0NDIHBy
aW9yIHRvIDQuMSAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpICYmIENPTVBJTEVSKEdDQykg
JiYgIUdDQ19WRVJTSU9OX0FUX0xFQVNUKDQsIDEsIDApCiAjZGVmaW5lIEVOQUJMRV9KSVQgMApJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk0OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wNi0yMiAgTGV2aSBXZWlu
dHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGludGVybWVkaWF0ZSBjbGFzc2VzIGFzIGEgcGF0
aCB0b3dhcmRzIGdldHRpbmcgb2ZmIG9mIHBpeGVsIG9mZnNldHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxODk2CisKKyAgICAgICAgQ3JlYXRpbmcg
dGhyZWUgaW50ZXJtZWRpYXRlIHR5cGVkZWZzIHRvIGFpZCBpbiBtb3ZpbmcgbGF5b3V0IGFuZCBo
aXQgdGVzdGluZyBmcm9tIGludGVnZXJzCisgICAgICAgIHRvIGZsb2F0cy4gV2UnbGwgdHJhbnNp
dGlvbiB0aGUgcmVuZGVyIHRyZWUgb3ZlciB0byB0aGVzZSBpbnRlcm1lZGlhdGUgdHlwZXMgYW5k
IGFkZAorICAgICAgICBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoZSBuZXcgdHlwZXMgYmVo
aW5kIFVTRShGTE9BVF9MQVlPVVRfT0ZGU0VUUykuIFRoaXMgYWxsb3dzIHRoZSB1bHRpbWF0ZQor
ICAgICAgICBjaGFuZ2VvdmVyIHRvIGJlIGVhc2llci4KKworICAgICAgICBTd2l0Y2hpbmcgTGF5
b3V0U3RhdGUgb3ZlciB0byB0aGlzIGFic3RyYWN0aW9uIHRvIHZlcmlmeSBpdCB3b3JrcyBjb3Jy
ZWN0bHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgaXMgY3JlYXRpbmcgYSBu
ZXcgYWJzdHJhY3Rpb24sIG5vdCBjaGFuZ2luZyBjdXJyZW50IGJlaGF2aW9yLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0
ZTo6TGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OnBhZ2VMb2dp
Y2FsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjphZGRGb3JjZWRDb2x1
bW5CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL0xheW91dFR5cGVzLmg6IEFkZGVkLgorCiAyMDExLTA2LTIyICBBbm5pZSBTdWxs
aXZhbiAgPHN1bGxpdmFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9z
dWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5
NDc3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMjg4Myw2ICsyODgzLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRQaGFzZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NDc3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05NjUsNiAr
OTY1LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvTGF5b3V0U3RhdGUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFR5cGVzLmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL1BhaW50SW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUGFpbnRQaGFzZS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4OTQ3NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM1LDYgKzIx
MzUsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIFwKICAg
ICByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKICAgICByZW5kZXJpbmcvTGF5b3V0U3RhdGUu
aCBcCisgICAgcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogICAgIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiA4OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzU5NCw2ICszMzU5NCwxMCBAQAogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcTGF5b3V0
VHlwZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFBhaW50SW5mby5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDg5NDc3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NzYxLDYgKzQ3NjEsNyBAQAogCQlCOERCREI0QzEz
MEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8q
IFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIx
IC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBGNUNE
QjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJQkFDRjI5MDExM0IyQTBENTAwNzgxRjkw
IC8qIExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAwRjAwNDBFMEEx
ODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsg
fTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8qIERP
TUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovOyB9
OwpAQCAtMTEzNDgsNiArMTEzNDksNyBAQAogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyog
U2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJE
QjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01G
aWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjYzLDYgKzE5
MjY1LDcgQEAKIAkJCQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5o
ICovLAogCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8s
CiAJCQkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCisJCQkJ
QkFDRjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi8sCiAJCQkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovLAogCQkJ
CTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLywKIAkJCQkwODg1MDY3
RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovLApAQCAtMjMwMjcsNiArMjMwMzAs
NyBAQAogCQkJCUIxQUQ0RTdDMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIxQUQ0RTdEMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJBQ0YyOTAxMTNCMkEwRDUw
MDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAJKHJldmlzaW9uIDg5NDc3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZShMYXlvdXRTdGF0ZSogcHJldiwgUmVuZGVyQm94KiByZW5kZXJlciwgY29uc3QgSW50U2l6
ZSYgb2Zmc2V0LCBpbnQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRD
aGFuZ2VkLCBDb2x1bW5JbmZvKiBjb2x1bW5JbmZvKQorTGF5b3V0U3RhdGU6OkxheW91dFN0YXRl
KExheW91dFN0YXRlKiBwcmV2LCBSZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkLCBDb2x1bW5JbmZvKiBjb2x1bW5JbmZvKQogICAgIDogbV9jb2x1bW5JbmZv
KGNvbHVtbkluZm8pCiAgICAgLCBtX25leHQocHJldikKICNpZm5kZWYgTkRFQlVHCkBAIC00Nyw3
ICs0Nyw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICBp
ZiAoZml4ZWQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3Rs
eSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgIEZsb2F0UG9pbnQgZml4ZWRPZmZzZXQgPSByZW5k
ZXJlci0+dmlldygpLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCB0cnVlKTsKLSAgICAg
ICAgbV9wYWludE9mZnNldCA9IEludFNpemUoZml4ZWRPZmZzZXQueCgpLCBmaXhlZE9mZnNldC55
KCkpICsgb2Zmc2V0OworICAgICAgICBtX3BhaW50T2Zmc2V0ID0gTGF5b3V0U2l6ZShmaXhlZE9m
ZnNldC54KCksIGZpeGVkT2Zmc2V0LnkoKSkgKyBvZmZzZXQ7CiAgICAgfSBlbHNlCiAgICAgICAg
IG1fcGFpbnRPZmZzZXQgPSBwcmV2LT5tX3BhaW50T2Zmc2V0ICsgb2Zmc2V0OwogCkBAIC02OSw3
ICs2OSw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKIAogICAg
IGlmIChyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIq
IGxheWVyID0gcmVuZGVyZXItPmxheWVyKCk7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QodG9Q
b2ludChtX3BhaW50T2Zmc2V0KSArIHJlbmRlcmVyLT52aWV3KCktPmxheW91dERlbHRhKCksIGxh
eWVyLT5zaXplKCkpOworICAgICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KHRvUG9pbnQobV9wYWlu
dE9mZnNldCkgKyByZW5kZXJlci0+dmlldygpLT5sYXlvdXREZWx0YSgpLCBsYXllci0+c2l6ZSgp
KTsKICAgICAgICAgaWYgKG1fY2xpcHBlZCkKICAgICAgICAgICAgIG1fY2xpcFJlY3QuaW50ZXJz
ZWN0KGNsaXBSZWN0KTsKICAgICAgICAgZWxzZSB7CkBAIC04NCw3ICs4NCw3IEBAIExheW91dFN0
YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICAvLyBXZSBjYW4gY29tcGFyZSB0
aGlzIGxhdGVyIG9uIHRvIGZpZ3VyZSBvdXQgd2hhdCBwYXJ0IG9mIHRoZSBwYWdlIHdlJ3JlIGFj
dHVhbGx5IG9uLAogICAgIGlmIChwYWdlTG9naWNhbEhlaWdodCB8fCBtX2NvbHVtbkluZm8pIHsK
ICAgICAgICAgbV9wYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0OwotICAgICAg
ICBtX3BhZ2VPZmZzZXQgPSBJbnRTaXplKG1fbGF5b3V0T2Zmc2V0LndpZHRoKCkgKyByZW5kZXJl
ci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCisgICAgICAgIG1fcGFn
ZU9mZnNldCA9IExheW91dFNpemUobV9sYXlvdXRPZmZzZXQud2lkdGgoKSArIHJlbmRlcmVyLT5i
b3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2xheW91dE9mZnNldC5oZWlnaHQoKSArIHJlbmRlcmVyLT5ib3JkZXJU
b3AoKSArIHJlbmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBtX3BhZ2VMb2dpY2FsSGVp
Z2h0Q2hhbmdlZCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsKICAgICB9IGVsc2UgewpAQCAt
MTE4LDEyICsxMTgsMTIgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlck9iamVjdCog
cgogewogICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyID0gcm9vdC0+Y29udGFpbmVyKCk7CiAg
ICAgRmxvYXRQb2ludCBhYnNDb250ZW50UG9pbnQgPSBjb250YWluZXItPmxvY2FsVG9BYnNvbHV0
ZShGbG9hdFBvaW50KCksIGZhbHNlLCB0cnVlKTsKLSAgICBtX3BhaW50T2Zmc2V0ID0gSW50U2l6
ZShhYnNDb250ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQueSgpKTsKKyAgICBtX3BhaW50
T2Zmc2V0ID0gTGF5b3V0U2l6ZShhYnNDb250ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQu
eSgpKTsKIAogICAgIGlmIChjb250YWluZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVyKS0+
bGF5ZXIoKTsKICAgICAgICAgbV9jbGlwcGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jbGlwUmVjdCA9
IEludFJlY3QodG9Qb2ludChtX3BhaW50T2Zmc2V0KSwgbGF5ZXItPnNpemUoKSk7CisgICAgICAg
IG1fY2xpcFJlY3QgPSBMYXlvdXRSZWN0KHRvUG9pbnQobV9wYWludE9mZnNldCksIGxheWVyLT5z
aXplKCkpOwogICAgICAgICBtX3BhaW50T2Zmc2V0IC09IGxheWVyLT5zY3JvbGxlZENvbnRlbnRP
ZmZzZXQoKTsKICAgICB9CiB9CkBAIC0xNjIsMTIgKzE2MiwxMiBAQCB2b2lkIExheW91dFN0YXRl
OjpjbGVhclBhZ2luYXRpb25JbmZvcm1hCiAgICAgbV9jb2x1bW5JbmZvID0gbV9uZXh0LT5tX2Nv
bHVtbkluZm87CiB9CiAKLWludCBMYXlvdXRTdGF0ZTo6cGFnZUxvZ2ljYWxPZmZzZXQoaW50IGNo
aWxkTG9naWNhbE9mZnNldCkgY29uc3QKK0xheW91dFVuaXQgTGF5b3V0U3RhdGU6OnBhZ2VMb2dp
Y2FsT2Zmc2V0KExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zmc2V0KSBjb25zdAogewogICAgIHJl
dHVybiBtX2xheW91dE9mZnNldC5oZWlnaHQoKSArIGNoaWxkTG9naWNhbE9mZnNldCAtIG1fcGFn
ZU9mZnNldC5oZWlnaHQoKTsKIH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6YWRkRm9yY2VkQ29sdW1u
QnJlYWsoaW50IGNoaWxkTG9naWNhbE9mZnNldCkKK3ZvaWQgTGF5b3V0U3RhdGU6OmFkZEZvcmNl
ZENvbHVtbkJyZWFrKExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zmc2V0KQogewogICAgIGlmICgh
bV9jb2x1bW5JbmZvIHx8IG1fY29sdW1uSW5mby0+Y29sdW1uSGVpZ2h0KCkpCiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZpc2lv
biA4OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIExheW91dFN0YXRlX2gKICNkZWZp
bmUgTGF5b3V0U3RhdGVfaAogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkludFNp
emUuaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5kZXJCb3gqLCBj
b25zdCBJbnRTaXplJiBvZmZzZXQsIGludCBwYWdlSGVpZ2h0LCBib29sIHBhZ2VIZWlnaHRDaGFu
Z2VkLCBDb2x1bW5JbmZvKik7CisgICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5kZXJC
b3gqLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9v
bCBwYWdlSGVpZ2h0Q2hhbmdlZCwgQ29sdW1uSW5mbyopOwogICAgIExheW91dFN0YXRlKFJlbmRl
ck9iamVjdCopOwogCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC02OSw5ICs2
OCw5IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBUaGUgcGFnZSBsb2dpY2FsIG9mZnNldCBpcyB0
aGUgb2JqZWN0J3Mgb2Zmc2V0IGZyb20gdGhlIHRvcCBvZiB0aGUgcGFnZSBpbiB0aGUgcGFnZSBw
cm9ncmVzc2lvbgogICAgIC8vIGRpcmVjdGlvbiAoc28gYW4geC1vZmZzZXQgaW4gdmVydGljYWwg
dGV4dCBhbmQgYSB5LW9mZnNldCBmb3IgaG9yaXpvbnRhbCB0ZXh0KS4KLSAgICBpbnQgcGFnZUxv
Z2ljYWxPZmZzZXQoaW50IGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3Q7CisgICAgTGF5b3V0VW5p
dCBwYWdlTG9naWNhbE9mZnNldChMYXlvdXRVbml0IGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3Q7
CiAKLSAgICB2b2lkIGFkZEZvcmNlZENvbHVtbkJyZWFrKGludCBjaGlsZExvZ2ljYWxPZmZzZXQp
OworICAgIHZvaWQgYWRkRm9yY2VkQ29sdW1uQnJlYWsoTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxP
ZmZzZXQpOwogICAgIAogICAgIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VMb2dpY2FsSGVpZ2h0OyB9CiAgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsgfQpAQCAtODIs
MTYgKzgxLDE2IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBib29sIG1fY2xpcHBlZDsKLSAg
ICBJbnRSZWN0IG1fY2xpcFJlY3Q7Ci0gICAgSW50U2l6ZSBtX3BhaW50T2Zmc2V0OyAvLyB4L3kg
b2Zmc2V0IGZyb20gY29udGFpbmVyLiAgSW5jbHVkZXMgcmVsYXRpdmUgcG9zaXRpb25pbmcgYW5k
IHNjcm9sbCBvZmZzZXRzLgotICAgIEludFNpemUgbV9sYXlvdXRPZmZzZXQ7IC8vIHgveSBvZmZz
ZXQgZnJvbSBjb250YWluZXIuICBEb2VzIG5vdCBpbmNsdWRlIHJlbGF0aXZlIHBvc2l0aW9uaW5n
IG9yIHNjcm9sbCBvZmZzZXRzLgotICAgIEludFNpemUgbV9sYXlvdXREZWx0YTsgLy8gVHJhbnNp
ZW50IG9mZnNldCBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0CisgICAgTGF5
b3V0UmVjdCBtX2NsaXBSZWN0OworICAgIExheW91dFNpemUgbV9wYWludE9mZnNldDsgLy8geC95
IG9mZnNldCBmcm9tIGNvbnRhaW5lci4gSW5jbHVkZXMgcmVsYXRpdmUgcG9zaXRpb25pbmcgYW5k
IHNjcm9sbCBvZmZzZXRzLgorICAgIExheW91dFNpemUgbV9sYXlvdXRPZmZzZXQ7IC8vIHgveSBv
ZmZzZXQgZnJvbSBjb250YWluZXIuIERvZXMgbm90IGluY2x1ZGUgcmVsYXRpdmUgcG9zaXRpb25p
bmcgb3Igc2Nyb2xsIG9mZnNldHMuCisgICAgTGF5b3V0U2l6ZSBtX2xheW91dERlbHRhOyAvLyBU
cmFuc2llbnQgb2Zmc2V0IGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uIG9mIHRoZSBvYmplY3QKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgdG8gZW5zdXJlIHRoYXQgcmVwYWludHMg
aGFwcGVuIGluIHRoZSBjb3JyZWN0IHBsYWNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBhIHRvdGFsIGRlbHRhIGFjY3VtdWxhdGVkIGZyb20gdGhlIHJvb3QuCiAKLSAg
ICBpbnQgbV9wYWdlTG9naWNhbEhlaWdodDsgLy8gVGhlIGN1cnJlbnQgcGFnZSBoZWlnaHQgZm9y
IHRoZSBwYWdpbmF0aW9uIG1vZGVsIHRoYXQgZW5jbG9zZXMgdXMuCisgICAgTGF5b3V0VW5pdCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0OyAvLyBUaGUgY3VycmVudCBwYWdlIGhlaWdodCBmb3IgdGhlIHBh
Z2luYXRpb24gbW9kZWwgdGhhdCBlbmNsb3NlcyB1cy4KICAgICBib29sIG1fcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkOyAvLyBJZiBvdXIgcGFnZSBoZWlnaHQgaGFzIGNoYW5nZWQsIHRoaXMgd2ls
bCBmb3JjZSBhbGwgYmxvY2tzIHRvIHJlbGF5b3V0LgotICAgIEludFNpemUgbV9wYWdlT2Zmc2V0
OyAvLyBUaGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgbmVh
cmVzdCBlbmNsb3NpbmcgcGFnaW5hdGlvbiBtb2RlbC4KKyAgICBMYXlvdXRTaXplIG1fcGFnZU9m
ZnNldDsgLy8gVGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IHBhZ2UgaW4gdGhl
IG5lYXJlc3QgZW5jbG9zaW5nIHBhZ2luYXRpb24gbW9kZWwuCiAgICAgQ29sdW1uSW5mbyogbV9j
b2x1bW5JbmZvOyAvLyBJZiB0aGUgZW5jbG9zaW5nIHBhZ2luYXRpb24gbW9kZWwgaXMgYSBjb2x1
bW4gbW9kZWwsIHRoZW4gdGhpcyB3aWxsIHN0b3JlIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgZWFz
eSByZXRyaWV2YWwvbWFuaXB1bGF0aW9uLgogCiAgICAgTGF5b3V0U3RhdGUqIG1fbmV4dDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGVzZSB0eXBlZGVmcyBhcmUgYmVpbmcgdXNlZCB0byBhYnN0cmFjdCBs
YXlvdXQgYW5kIGhpdCB0ZXN0aW5nIG9mZgorLy8gb2YgaW50ZWdlcnMgYW5kIGV2ZW50dWFsbHkg
cmVwbGFjZSB0aGVtIHdpdGggZmxvYXRzLiBPbmNlIHRoaXMgdHJhbnNpdGlvbgorLy8gaXMgY29t
cGxldGUsIHRoZXNlIHR5cGVzIHdpbGwgYmUgcmVtb3ZlZC4gUHJvZ3Jlc3MgY2FuIGJlIHRyYWNr
ZWQgYXQKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDMxOAor
CisjaWZuZGVmIExheW91dFR5cGVzX2gKKyNkZWZpbmUgTGF5b3V0VHlwZXNfaAorCisjaWYgVVNF
KEZMT0FUX0xBWU9VVF9PRkZTRVRTKQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2Vsc2UKKyNp
bmNsdWRlICJJbnRSZWN0LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYg
VVNFKEZMT0FUX09GRlNFVFMpCit0eXBlZGVmIGZsb2F0IExheW91dFVuaXQ7Cit0eXBlZGVmIEZs
b2F0UG9pbnQgTGF5b3V0UG9pbnQ7Cit0eXBlZGVmIEZsb2F0U2l6ZSBMYXlvdXRTaXplOwordHlw
ZWRlZiBGbG9hdFJlY3QgTGF5b3V0UmVjdDsKKyNlbHNlCit0eXBlZGVmIGludCBMYXlvdXRVbml0
OwordHlwZWRlZiBJbnRQb2ludCBMYXlvdXRQb2ludDsKK3R5cGVkZWYgSW50U2l6ZSBMYXlvdXRT
aXplOwordHlwZWRlZiBJbnRSZWN0IExheW91dFJlY3Q7CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5b3V0VHlwZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98435</attachid>
            <date>2011-06-23 16:59:37 -0700</date>
            <delta_ts>2011-06-28 11:17:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61896-20110623165936.patch</filename>
            <type>text/plain</type>
            <size>17514</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk2MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDYtMjIgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBpbnRlcm1l
ZGlhdGUgY2xhc3NlcyBhcyBhIHBhdGggdG93YXJkcyBnZXR0aW5nIG9mZiBvZiBwaXhlbCBvZmZz
ZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTg5
NgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFkZGluZyBmbGFnIGZvciB0b2dnbGluZyB0
aGUgdHlwZWRlZiBvZiB0aGUgaW50ZXJtZWRpYXRlIExheW91dCogY2xhc3NlcworICAgICAgICBm
cm9tIGludHMgdG8gZmxvYXRzIGFuZCBkZWZhdWx0aW5nIGl0IHRvIGludHMgKG9mZikuCisKIDIw
MTEtMDYtMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgJKHJldmlzaW9uIDg5NjM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA5LDYgKzEwMDksMTAgQEAKICNkZWZpbmUg
RU5BQkxFX1JFUEFJTlRfVEhST1RUTElORyAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKFdURl9V
U0VfRkxPQVRfTEFZT1VUX09GRlNFVFMpCisjZGVmaW5lIFdURl9VU0VfRkxPQVRfTEFZT1VUX09G
RlNFVFMgMAorI2VuZGlmCisKIC8qIERpc2FibGUgdGhlIEpJVCBvbiB2ZXJzaW9ucyBvZiBHQ0Mg
cHJpb3IgdG8gNC4xICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0pJVCkgJiYgQ09NUElMRVIoR0ND
KSAmJiAhR0NDX1ZFUlNJT05fQVRfTEVBU1QoNCwgMSwgMCkKICNkZWZpbmUgRU5BQkxFX0pJVCAw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDExLTA2LTIyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgaW50ZXJtZWRpYXRlIGNsYXNzZXMgYXMgYSBw
YXRoIHRvd2FyZHMgZ2V0dGluZyBvZmYgb2YgcGl4ZWwgb2Zmc2V0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE4OTYKKworICAgICAgICBDcmVhdGlu
ZyB0aHJlZSBpbnRlcm1lZGlhdGUgdHlwZWRlZnMgdG8gYWlkIGluIG1vdmluZyBsYXlvdXQgYW5k
IGhpdCB0ZXN0aW5nIGZyb20gaW50ZWdlcnMKKyAgICAgICAgdG8gZmxvYXRzLiBXZSdsbCB0cmFu
c2l0aW9uIHRoZSByZW5kZXIgdHJlZSBvdmVyIHRvIHRoZXNlIGludGVybWVkaWF0ZSB0eXBlcyBh
bmQgYWRkCisgICAgICAgIGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhlIG5ldyB0eXBlcyBi
ZWhpbmQgVVNFKEZMT0FUX0xBWU9VVF9PRkZTRVRTKS4gVGhpcyBhbGxvd3MgdGhlIHVsdGltYXRl
CisgICAgICAgIGNoYW5nZW92ZXIgdG8gYmUgZWFzaWVyLgorCisgICAgICAgIFN3aXRjaGluZyBM
YXlvdXRTdGF0ZSBvdmVyIHRvIHRoaXMgYWJzdHJhY3Rpb24gdG8gdmVyaWZ5IGl0IHdvcmtzIGNv
cnJlY3RseS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBpcyBjcmVhdGluZyBh
IG5ldyBhYnN0cmFjdGlvbiwgbm90IGNoYW5naW5nIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0
YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6cGFnZUxv
Z2ljYWxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6OmFkZEZvcmNlZENv
bHVtbkJyZWFrKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvTGF5b3V0VHlwZXMuaDogQWRkZWQuCisKIDIwMTEtMDYtMjMgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFt
ZXMgUm9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDg5NjM0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjg4Myw2ICsyODgzLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGF5b3V0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0
U3RhdGUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRQaGFzZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NjM0
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05NjUs
NiArOTY1LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvTGF5b3V0U3RhdGUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFR5cGVz
LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1BhaW50SW5mby5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUGFpbnRQaGFzZS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4OTYzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM0LDYg
KzIxMzQsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIFwK
ICAgICByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKICAgICByZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuaCBcCisgICAgcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogICAgIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGZW5jZWQuaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiA4OTYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzU5NCw2ICszMzU5NCwxMCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcTGF5
b3V0VHlwZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccmVuZGVyaW5nXFBhaW50SW5mby5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDg5NjM0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NzY1LDYgKzQ3NjUsNyBAQAogCQlCOERCREI0
QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIx
IC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVD
REIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJQkFDRjI5MDExM0IyQTBENTAwNzgx
RjkwIC8qIExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAwRjAwNDBF
MEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAq
LzsgfTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBG
RDA0RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICov
OyB9OwpAQCAtMTEzNjEsNiArMTEzNjIsNyBAQAogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEg
LyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4
REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhB
MDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9N
RmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5Mjg2LDYg
KzE5Mjg4LDcgQEAKIAkJCQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJv
eC5oICovLAogCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAg
Ki8sCiAJCQkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCisJ
CQkJQkFDRjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi8sCiAJCQkJMzc3
NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovLAog
CQkJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLywKIAkJCQkwODg1
MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovLApAQCAtMjMwNTksNiArMjMw
NjIsNyBAQAogCQkJCUIxQUQ0RTdDMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIxQUQ0RTdEMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJBQ0YyOTAxMTNCMkEw
RDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNCOTMzNjkx
M0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuY3BwCShyZXZpc2lvbiA4OTYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1MYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqIHByZXYs
IFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIG9mZnNldCwgaW50IHBhZ2VMb2dp
Y2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCwgQ29sdW1uSW5mbyogY29s
dW1uSW5mbykKK0xheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHJldiwgUmVu
ZGVyQm94KiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0LCBib29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCwgQ29sdW1uSW5m
byogY29sdW1uSW5mbykKICAgICA6IG1fY29sdW1uSW5mbyhjb2x1bW5JbmZvKQogICAgICwgbV9u
ZXh0KHByZXYpCiAjaWZuZGVmIE5ERUJVRwpAQCAtNDcsNyArNDcsNyBAQCBMYXlvdXRTdGF0ZTo6
TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqIHByCiAgICAgaWYgKGZpeGVkKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAg
ICAgICBGbG9hdFBvaW50IGZpeGVkT2Zmc2V0ID0gcmVuZGVyZXItPnZpZXcoKS0+bG9jYWxUb0Fi
c29sdXRlKEZsb2F0UG9pbnQoKSwgdHJ1ZSk7Ci0gICAgICAgIG1fcGFpbnRPZmZzZXQgPSBJbnRT
aXplKGZpeGVkT2Zmc2V0LngoKSwgZml4ZWRPZmZzZXQueSgpKSArIG9mZnNldDsKKyAgICAgICAg
bV9wYWludE9mZnNldCA9IExheW91dFNpemUoZml4ZWRPZmZzZXQueCgpLCBmaXhlZE9mZnNldC55
KCkpICsgb2Zmc2V0OwogICAgIH0gZWxzZQogICAgICAgICBtX3BhaW50T2Zmc2V0ID0gcHJldi0+
bV9wYWludE9mZnNldCArIG9mZnNldDsKIApAQCAtNjksNyArNjksNyBAQCBMYXlvdXRTdGF0ZTo6
TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqIHByCiAKICAgICBpZiAocmVuZGVyZXItPmhhc092ZXJm
bG93Q2xpcCgpKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLT5sYXll
cigpOwotICAgICAgICBJbnRSZWN0IGNsaXBSZWN0KHRvUG9pbnQobV9wYWludE9mZnNldCkgKyBy
ZW5kZXJlci0+dmlldygpLT5sYXlvdXREZWx0YSgpLCBsYXllci0+c2l6ZSgpKTsKKyAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCh0b1BvaW50KG1fcGFpbnRPZmZzZXQpICsgcmVuZGVyZXItPnZp
ZXcoKS0+bGF5b3V0RGVsdGEoKSwgbGF5ZXItPnNpemUoKSk7CiAgICAgICAgIGlmIChtX2NsaXBw
ZWQpCiAgICAgICAgICAgICBtX2NsaXBSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CiAgICAgICAg
IGVsc2UgewpAQCAtODQsNyArODQsNyBAQCBMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoTGF5b3V0
U3RhdGUqIHByCiAgICAgLy8gV2UgY2FuIGNvbXBhcmUgdGhpcyBsYXRlciBvbiB0byBmaWd1cmUg
b3V0IHdoYXQgcGFydCBvZiB0aGUgcGFnZSB3ZSdyZSBhY3R1YWxseSBvbiwKICAgICBpZiAocGFn
ZUxvZ2ljYWxIZWlnaHQgfHwgbV9jb2x1bW5JbmZvKSB7CiAgICAgICAgIG1fcGFnZUxvZ2ljYWxI
ZWlnaHQgPSBwYWdlTG9naWNhbEhlaWdodDsKLSAgICAgICAgbV9wYWdlT2Zmc2V0ID0gSW50U2l6
ZShtX2xheW91dE9mZnNldC53aWR0aCgpICsgcmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRl
cmVyLT5wYWRkaW5nTGVmdCgpLAorICAgICAgICBtX3BhZ2VPZmZzZXQgPSBMYXlvdXRTaXplKG1f
bGF5b3V0T2Zmc2V0LndpZHRoKCkgKyByZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgcmVuZGVyZXIt
PnBhZGRpbmdMZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRP
ZmZzZXQuaGVpZ2h0KCkgKyByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGlu
Z1RvcCgpKTsKICAgICAgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBwYWdlTG9naWNh
bEhlaWdodENoYW5nZWQ7CiAgICAgfSBlbHNlIHsKQEAgLTExOCwxMiArMTE4LDEyIEBAIExheW91
dFN0YXRlOjpMYXlvdXRTdGF0ZShSZW5kZXJPYmplY3QqIHIKIHsKICAgICBSZW5kZXJPYmplY3Qq
IGNvbnRhaW5lciA9IHJvb3QtPmNvbnRhaW5lcigpOwogICAgIEZsb2F0UG9pbnQgYWJzQ29udGVu
dFBvaW50ID0gY29udGFpbmVyLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCBmYWxzZSwg
dHJ1ZSk7Ci0gICAgbV9wYWludE9mZnNldCA9IEludFNpemUoYWJzQ29udGVudFBvaW50LngoKSwg
YWJzQ29udGVudFBvaW50LnkoKSk7CisgICAgbV9wYWludE9mZnNldCA9IExheW91dFNpemUoYWJz
Q29udGVudFBvaW50LngoKSwgYWJzQ29udGVudFBvaW50LnkoKSk7CiAKICAgICBpZiAoY29udGFp
bmVyLT5oYXNPdmVyZmxvd0NsaXAoKSkgewogICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lciktPmxheWVyKCk7CiAgICAgICAgIG1fY2xp
cHBlZCA9IHRydWU7Ci0gICAgICAgIG1fY2xpcFJlY3QgPSBJbnRSZWN0KHRvUG9pbnQobV9wYWlu
dE9mZnNldCksIGxheWVyLT5zaXplKCkpOworICAgICAgICBtX2NsaXBSZWN0ID0gTGF5b3V0UmVj
dCh0b1BvaW50KG1fcGFpbnRPZmZzZXQpLCBsYXllci0+c2l6ZSgpKTsKICAgICAgICAgbV9wYWlu
dE9mZnNldCAtPSBsYXllci0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAgICAgfQogfQpAQCAt
MTYyLDEyICsxNjIsMTIgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6Y2xlYXJQYWdpbmF0aW9uSW5mb3Jt
YQogICAgIG1fY29sdW1uSW5mbyA9IG1fbmV4dC0+bV9jb2x1bW5JbmZvOwogfQogCi1pbnQgTGF5
b3V0U3RhdGU6OnBhZ2VMb2dpY2FsT2Zmc2V0KGludCBjaGlsZExvZ2ljYWxPZmZzZXQpIGNvbnN0
CitMYXlvdXRVbml0IExheW91dFN0YXRlOjpwYWdlTG9naWNhbE9mZnNldChMYXlvdXRVbml0IGNo
aWxkTG9naWNhbE9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sYXlvdXRPZmZzZXQuaGVp
Z2h0KCkgKyBjaGlsZExvZ2ljYWxPZmZzZXQgLSBtX3BhZ2VPZmZzZXQuaGVpZ2h0KCk7CiB9CiAK
LXZvaWQgTGF5b3V0U3RhdGU6OmFkZEZvcmNlZENvbHVtbkJyZWFrKGludCBjaGlsZExvZ2ljYWxP
ZmZzZXQpCit2b2lkIExheW91dFN0YXRlOjphZGRGb3JjZWRDb2x1bW5CcmVhayhMYXlvdXRVbml0
IGNoaWxkTG9naWNhbE9mZnNldCkKIHsKICAgICBpZiAoIW1fY29sdW1uSW5mbyB8fCBtX2NvbHVt
bkluZm8tPmNvbHVtbkhlaWdodCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAkocmV2aXNpb24gODk2MzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
NyBAQAogI2lmbmRlZiBMYXlvdXRTdGF0ZV9oCiAjZGVmaW5lIExheW91dFN0YXRlX2gKIAotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTGF5b3V0
VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTIsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIExheW91
dFN0YXRlKExheW91dFN0YXRlKiwgUmVuZGVyQm94KiwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBp
bnQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCwgQ29sdW1uSW5mbyopOworICAg
IExheW91dFN0YXRlKExheW91dFN0YXRlKiwgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQsIENv
bHVtbkluZm8qKTsKICAgICBMYXlvdXRTdGF0ZShSZW5kZXJPYmplY3QqKTsKIAogICAgIHZvaWQg
ZGVzdHJveShSZW5kZXJBcmVuYSopOwpAQCAtNjksOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgLy8gVGhlIHBhZ2UgbG9naWNhbCBvZmZzZXQgaXMgdGhlIG9iamVjdCdzIG9mZnNldCBmcm9t
IHRoZSB0b3Agb2YgdGhlIHBhZ2UgaW4gdGhlIHBhZ2UgcHJvZ3Jlc3Npb24KICAgICAvLyBkaXJl
Y3Rpb24gKHNvIGFuIHgtb2Zmc2V0IGluIHZlcnRpY2FsIHRleHQgYW5kIGEgeS1vZmZzZXQgZm9y
IGhvcml6b250YWwgdGV4dCkuCi0gICAgaW50IHBhZ2VMb2dpY2FsT2Zmc2V0KGludCBjaGlsZExv
Z2ljYWxPZmZzZXQpIGNvbnN0OworICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxPZmZzZXQoTGF5
b3V0VW5pdCBjaGlsZExvZ2ljYWxPZmZzZXQpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRGb3JjZWRD
b2x1bW5CcmVhayhpbnQgY2hpbGRMb2dpY2FsT2Zmc2V0KTsKKyAgICB2b2lkIGFkZEZvcmNlZENv
bHVtbkJyZWFrKExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zmc2V0KTsKICAgICAKICAgICBib29s
IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTG9naWNhbEhlaWdodDsg
fQogICAgIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlTG9naWNhbEhlaWdodENoYW5nZWQ7IH0KQEAgLTgyLDE2ICs4MSwxNiBAQCBwcml2YXRlOgog
CiBwdWJsaWM6CiAgICAgYm9vbCBtX2NsaXBwZWQ7Ci0gICAgSW50UmVjdCBtX2NsaXBSZWN0Owot
ICAgIEludFNpemUgbV9wYWludE9mZnNldDsgLy8geC95IG9mZnNldCBmcm9tIGNvbnRhaW5lci4g
IEluY2x1ZGVzIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGFuZCBzY3JvbGwgb2Zmc2V0cy4KLSAgICBJ
bnRTaXplIG1fbGF5b3V0T2Zmc2V0OyAvLyB4L3kgb2Zmc2V0IGZyb20gY29udGFpbmVyLiAgRG9l
cyBub3QgaW5jbHVkZSByZWxhdGl2ZSBwb3NpdGlvbmluZyBvciBzY3JvbGwgb2Zmc2V0cy4KLSAg
ICBJbnRTaXplIG1fbGF5b3V0RGVsdGE7IC8vIFRyYW5zaWVudCBvZmZzZXQgZnJvbSB0aGUgZmlu
YWwgcG9zaXRpb24gb2YgdGhlIG9iamVjdAorICAgIExheW91dFJlY3QgbV9jbGlwUmVjdDsKKyAg
ICBMYXlvdXRTaXplIG1fcGFpbnRPZmZzZXQ7IC8vIHgveSBvZmZzZXQgZnJvbSBjb250YWluZXIu
IEluY2x1ZGVzIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGFuZCBzY3JvbGwgb2Zmc2V0cy4KKyAgICBM
YXlvdXRTaXplIG1fbGF5b3V0T2Zmc2V0OyAvLyB4L3kgb2Zmc2V0IGZyb20gY29udGFpbmVyLiBE
b2VzIG5vdCBpbmNsdWRlIHJlbGF0aXZlIHBvc2l0aW9uaW5nIG9yIHNjcm9sbCBvZmZzZXRzLgor
ICAgIExheW91dFNpemUgbV9sYXlvdXREZWx0YTsgLy8gVHJhbnNpZW50IG9mZnNldCBmcm9tIHRo
ZSBmaW5hbCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB1c2VkIHRvIGVuc3VyZSB0aGF0IHJlcGFpbnRzIGhhcHBlbiBpbiB0aGUgY29ycmVjdCBw
bGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSB0b3RhbCBkZWx0
YSBhY2N1bXVsYXRlZCBmcm9tIHRoZSByb290LgogCi0gICAgaW50IG1fcGFnZUxvZ2ljYWxIZWln
aHQ7IC8vIFRoZSBjdXJyZW50IHBhZ2UgaGVpZ2h0IGZvciB0aGUgcGFnaW5hdGlvbiBtb2RlbCB0
aGF0IGVuY2xvc2VzIHVzLgorICAgIExheW91dFVuaXQgbV9wYWdlTG9naWNhbEhlaWdodDsgLy8g
VGhlIGN1cnJlbnQgcGFnZSBoZWlnaHQgZm9yIHRoZSBwYWdpbmF0aW9uIG1vZGVsIHRoYXQgZW5j
bG9zZXMgdXMuCiAgICAgYm9vbCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsgLy8gSWYgb3Vy
IHBhZ2UgaGVpZ2h0IGhhcyBjaGFuZ2VkLCB0aGlzIHdpbGwgZm9yY2UgYWxsIGJsb2NrcyB0byBy
ZWxheW91dC4KLSAgICBJbnRTaXplIG1fcGFnZU9mZnNldDsgLy8gVGhlIG9mZnNldCBvZiB0aGUg
c3RhcnQgb2YgdGhlIGZpcnN0IHBhZ2UgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHBhZ2luYXRp
b24gbW9kZWwuCisgICAgTGF5b3V0U2l6ZSBtX3BhZ2VPZmZzZXQ7IC8vIFRoZSBvZmZzZXQgb2Yg
dGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBwYWdlIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBwYWdp
bmF0aW9uIG1vZGVsLgogICAgIENvbHVtbkluZm8qIG1fY29sdW1uSW5mbzsgLy8gSWYgdGhlIGVu
Y2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsIGlzIGEgY29sdW1uIG1vZGVsLCB0aGVuIHRoaXMgd2ls
bCBzdG9yZSBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIGVhc3kgcmV0cmlldmFsL21hbmlwdWxhdGlv
bi4KIAogICAgIExheW91dFN0YXRlKiBtX25leHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGF5b3V0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0VHlwZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhlc2UgdHlw
ZWRlZnMgYXJlIGJlaW5nIHVzZWQgdG8gYWJzdHJhY3QgbGF5b3V0IGFuZCBoaXQgdGVzdGluZyBv
ZmYKKy8vIG9mIGludGVnZXJzIGFuZCBldmVudHVhbGx5IHJlcGxhY2UgdGhlbSB3aXRoIGZsb2F0
cy4gT25jZSB0aGlzIHRyYW5zaXRpb24KKy8vIGlzIGNvbXBsZXRlLCB0aGVzZSB0eXBlcyB3aWxs
IGJlIHJlbW92ZWQuIFByb2dyZXNzIGNhbiBiZSB0cmFja2VkIGF0CisvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAzMTgKKworI2lmbmRlZiBMYXlvdXRUeXBlc19o
CisjZGVmaW5lIExheW91dFR5cGVzX2gKKworI2lmIFVTRShGTE9BVF9MQVlPVVRfT0ZGU0VUUykK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShGTE9BVF9PRkZTRVRTKQordHlw
ZWRlZiBmbG9hdCBMYXlvdXRVbml0OwordHlwZWRlZiBGbG9hdFBvaW50IExheW91dFBvaW50Owor
dHlwZWRlZiBGbG9hdFNpemUgTGF5b3V0U2l6ZTsKK3R5cGVkZWYgRmxvYXRSZWN0IExheW91dFJl
Y3Q7CisjZWxzZQordHlwZWRlZiBpbnQgTGF5b3V0VW5pdDsKK3R5cGVkZWYgSW50UG9pbnQgTGF5
b3V0UG9pbnQ7Cit0eXBlZGVmIEludFNpemUgTGF5b3V0U2l6ZTsKK3R5cGVkZWYgSW50UmVjdCBM
YXlvdXRSZWN0OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IExheW91dFR5cGVzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98946</attachid>
            <date>2011-06-28 11:17:24 -0700</date>
            <delta_ts>2011-06-28 11:31:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-61896-20110628111723.patch</filename>
            <type>text/plain</type>
            <size>16556</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDYtMjggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIENyZWF0ZSBpbnRlcm1lZGlhdGUgY2xhc3NlcyBhcyBhIHBhdGgg
dG93YXJkcyBnZXR0aW5nIG9mZiBvZiBwaXhlbCBvZmZzZXRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTg5NgorCisgICAgICAgIENyZWF0aW5nIHRo
cmVlIGludGVybWVkaWF0ZSB0eXBlZGVmcyB0byBhaWQgaW4gbW92aW5nIGxheW91dCBhbmQgaGl0
IHRlc3RpbmcgZnJvbSBpbnRlZ2VycworICAgICAgICB0byBmbG9hdHMuIFdlJ2xsIHRyYW5zaXRp
b24gdGhlIHJlbmRlciB0cmVlIG92ZXIgdG8gdGhlc2UgaW50ZXJtZWRpYXRlIHR5cGVzIGFuZCBh
ZGQKKyAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCB0aGUgbmV3IHR5cGVzIGJlaGlu
ZCBVU0UoRkxPQVRfTEFZT1VUX09GRlNFVFMpLiBUaGlzIGFsbG93cyB0aGUgdWx0aW1hdGUKKyAg
ICAgICAgY2hhbmdlb3ZlciB0byBiZSBlYXNpZXIuCisKKyAgICAgICAgU3dpdGNoaW5nIExheW91
dFN0YXRlIG92ZXIgdG8gdGhpcyBhYnN0cmFjdGlvbiB0byB2ZXJpZnkgaXQgd29ya3MgY29ycmVj
dGx5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGNyZWF0aW5nIGEgbmV3
IGFic3RyYWN0aW9uLCBub3QgY2hhbmdpbmcgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGU6
OkxheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpwYWdlTG9naWNh
bE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZTo6YWRkRm9yY2VkQ29sdW1u
QnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9MYXlvdXRUeXBlcy5oOiBBZGRlZC4KKwogMjAxMS0wNi0yOCAgSm9vbmUgSHVyICA8
am9vbmUuaHVyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4g
Um9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5
OTQwKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMjkwNyw2ICsyOTA3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0U3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuaCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRQaGFzZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5OTQwKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05NjYsNiAr
OTY2LDcgQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oJywKICAgICAg
ICAgICAgICdyZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvTGF5b3V0U3RhdGUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFR5cGVzLmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCcsCiAg
ICAgICAgICAgICAncmVuZGVyaW5nL1BhaW50SW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJp
bmcvUGFpbnRQaGFzZS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4OTk0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMyLDYgKzIx
MzIsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIFwKICAg
ICByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIFwKICAgICByZW5kZXJpbmcvTGF5b3V0U3RhdGUu
aCBcCisgICAgcmVuZGVyaW5nL0xheW91dFR5cGVzLmggXAogICAgIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiA4OTk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYxMCw2ICszMzYxMCwxMCBAQAogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcTGF5b3V0
VHlwZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccmVuZGVyaW5nXFBhaW50SW5mby5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDg5OTQwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NzcyLDYgKzQ3NzIsNyBAQAogCQlCOERCREI0QzEz
MEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8q
IFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIx
IC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBGNUNE
QjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJQkFDRjI5MDExM0IyQTBENTAwNzgxRjkw
IC8qIExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAwRjAwNDBFMEEx
ODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsg
fTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8qIERP
TUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovOyB9
OwpAQCAtMTEzNzUsNiArMTEzNzYsNyBAQAogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyog
U2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJE
QjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJBQ0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8q
IERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01G
aWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzA3LDYgKzE5
MzA5LDcgQEAKIAkJCQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5o
ICovLAogCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8s
CiAJCQkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCisJCQkJ
QkFDRjI5MDAxM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggKi8sCiAJCQkJMzc3NEFC
QTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovLAogCQkJ
CTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLywKIAkJCQkwODg1MDY3
RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICovLApAQCAtMjMwNzcsNiArMjMwODAs
NyBAQAogCQkJCUIxQUQ0RTdDMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIxQUQ0RTdEMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJBQ0YyOTAxMTNCMkEwRDUw
MDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNCOTMzNjkxM0Iy
NjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg3NTU4QzYxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGF5b3V0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXlvdXRTdGF0ZS5jcHAJKHJldmlzaW9uIDg5OTQwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlv
dXRTdGF0ZSogcHJldiwgUmVuZGVyQm94KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0
LCBpbnQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkLCBD
b2x1bW5JbmZvKiBjb2x1bW5JbmZvKQorTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKExheW91dFN0
YXRlKiBwcmV2LCBSZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQs
IExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHRDaGFu
Z2VkLCBDb2x1bW5JbmZvKiBjb2x1bW5JbmZvKQogICAgIDogbV9jb2x1bW5JbmZvKGNvbHVtbklu
Zm8pCiAgICAgLCBtX25leHQocHJldikKICNpZm5kZWYgTkRFQlVHCkBAIC00Nyw3ICs0Nyw3IEBA
IExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICBpZiAoZml4ZWQp
IHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRy
YW5zZm9ybXMuCiAgICAgICAgIEZsb2F0UG9pbnQgZml4ZWRPZmZzZXQgPSByZW5kZXJlci0+dmll
dygpLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpLCB0cnVlKTsKLSAgICAgICAgbV9wYWlu
dE9mZnNldCA9IEludFNpemUoZml4ZWRPZmZzZXQueCgpLCBmaXhlZE9mZnNldC55KCkpICsgb2Zm
c2V0OworICAgICAgICBtX3BhaW50T2Zmc2V0ID0gTGF5b3V0U2l6ZShmaXhlZE9mZnNldC54KCks
IGZpeGVkT2Zmc2V0LnkoKSkgKyBvZmZzZXQ7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fcGFpbnRP
ZmZzZXQgPSBwcmV2LT5tX3BhaW50T2Zmc2V0ICsgb2Zmc2V0OwogCkBAIC02OSw3ICs2OSw3IEBA
IExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKIAogICAgIGlmIChyZW5k
ZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
cmVuZGVyZXItPmxheWVyKCk7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QodG9Qb2ludChtX3Bh
aW50T2Zmc2V0KSArIHJlbmRlcmVyLT52aWV3KCktPmxheW91dERlbHRhKCksIGxheWVyLT5zaXpl
KCkpOworICAgICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KHRvUG9pbnQobV9wYWludE9mZnNldCkg
KyByZW5kZXJlci0+dmlldygpLT5sYXlvdXREZWx0YSgpLCBsYXllci0+c2l6ZSgpKTsKICAgICAg
ICAgaWYgKG1fY2xpcHBlZCkKICAgICAgICAgICAgIG1fY2xpcFJlY3QuaW50ZXJzZWN0KGNsaXBS
ZWN0KTsKICAgICAgICAgZWxzZSB7CkBAIC04NCw3ICs4NCw3IEBAIExheW91dFN0YXRlOjpMYXlv
dXRTdGF0ZShMYXlvdXRTdGF0ZSogcHIKICAgICAvLyBXZSBjYW4gY29tcGFyZSB0aGlzIGxhdGVy
IG9uIHRvIGZpZ3VyZSBvdXQgd2hhdCBwYXJ0IG9mIHRoZSBwYWdlIHdlJ3JlIGFjdHVhbGx5IG9u
LAogICAgIGlmIChwYWdlTG9naWNhbEhlaWdodCB8fCBtX2NvbHVtbkluZm8pIHsKICAgICAgICAg
bV9wYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0OwotICAgICAgICBtX3BhZ2VP
ZmZzZXQgPSBJbnRTaXplKG1fbGF5b3V0T2Zmc2V0LndpZHRoKCkgKyByZW5kZXJlci0+Ym9yZGVy
TGVmdCgpICsgcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCksCisgICAgICAgIG1fcGFnZU9mZnNldCA9
IExheW91dFNpemUobV9sYXlvdXRPZmZzZXQud2lkdGgoKSArIHJlbmRlcmVyLT5ib3JkZXJMZWZ0
KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xheW91dE9mZnNldC5oZWlnaHQoKSArIHJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIHJl
bmRlcmVyLT5wYWRkaW5nVG9wKCkpOwogICAgICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdl
ZCA9IHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsKICAgICB9IGVsc2UgewpAQCAtMTE4LDEyICsx
MTgsMTIgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKFJlbmRlck9iamVjdCogcgogewogICAg
IFJlbmRlck9iamVjdCogY29udGFpbmVyID0gcm9vdC0+Y29udGFpbmVyKCk7CiAgICAgRmxvYXRQ
b2ludCBhYnNDb250ZW50UG9pbnQgPSBjb250YWluZXItPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBv
aW50KCksIGZhbHNlLCB0cnVlKTsKLSAgICBtX3BhaW50T2Zmc2V0ID0gSW50U2l6ZShhYnNDb250
ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQueSgpKTsKKyAgICBtX3BhaW50T2Zmc2V0ID0g
TGF5b3V0U2l6ZShhYnNDb250ZW50UG9pbnQueCgpLCBhYnNDb250ZW50UG9pbnQueSgpKTsKIAog
ICAgIGlmIChjb250YWluZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7CiAgICAgICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY29udGFpbmVyKS0+bGF5ZXIoKTsK
ICAgICAgICAgbV9jbGlwcGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jbGlwUmVjdCA9IEludFJlY3Qo
dG9Qb2ludChtX3BhaW50T2Zmc2V0KSwgbGF5ZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpcFJl
Y3QgPSBMYXlvdXRSZWN0KHRvUG9pbnQobV9wYWludE9mZnNldCksIGxheWVyLT5zaXplKCkpOwog
ICAgICAgICBtX3BhaW50T2Zmc2V0IC09IGxheWVyLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsK
ICAgICB9CiB9CkBAIC0xNjIsMTIgKzE2MiwxMiBAQCB2b2lkIExheW91dFN0YXRlOjpjbGVhclBh
Z2luYXRpb25JbmZvcm1hCiAgICAgbV9jb2x1bW5JbmZvID0gbV9uZXh0LT5tX2NvbHVtbkluZm87
CiB9CiAKLWludCBMYXlvdXRTdGF0ZTo6cGFnZUxvZ2ljYWxPZmZzZXQoaW50IGNoaWxkTG9naWNh
bE9mZnNldCkgY29uc3QKK0xheW91dFVuaXQgTGF5b3V0U3RhdGU6OnBhZ2VMb2dpY2FsT2Zmc2V0
KExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zmc2V0KSBjb25zdAogewogICAgIHJldHVybiBtX2xh
eW91dE9mZnNldC5oZWlnaHQoKSArIGNoaWxkTG9naWNhbE9mZnNldCAtIG1fcGFnZU9mZnNldC5o
ZWlnaHQoKTsKIH0KIAotdm9pZCBMYXlvdXRTdGF0ZTo6YWRkRm9yY2VkQ29sdW1uQnJlYWsoaW50
IGNoaWxkTG9naWNhbE9mZnNldCkKK3ZvaWQgTGF5b3V0U3RhdGU6OmFkZEZvcmNlZENvbHVtbkJy
ZWFrKExheW91dFVuaXQgY2hpbGRMb2dpY2FsT2Zmc2V0KQogewogICAgIGlmICghbV9jb2x1bW5J
bmZvIHx8IG1fY29sdW1uSW5mby0+Y29sdW1uSGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiA4OTk0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIExheW91dFN0YXRlX2gKICNkZWZpbmUgTGF5b3V0
U3RhdGVfaAogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5kZXJCb3gqLCBjb25zdCBJbnRT
aXplJiBvZmZzZXQsIGludCBwYWdlSGVpZ2h0LCBib29sIHBhZ2VIZWlnaHRDaGFuZ2VkLCBDb2x1
bW5JbmZvKik7CisgICAgTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqLCBSZW5kZXJCb3gqLCBjb25z
dCBMYXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCwgYm9vbCBwYWdlSGVp
Z2h0Q2hhbmdlZCwgQ29sdW1uSW5mbyopOwogICAgIExheW91dFN0YXRlKFJlbmRlck9iamVjdCop
OwogCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CkBAIC02OSw5ICs2OCw5IEBAIHB1
YmxpYzoKICAgICAKICAgICAvLyBUaGUgcGFnZSBsb2dpY2FsIG9mZnNldCBpcyB0aGUgb2JqZWN0
J3Mgb2Zmc2V0IGZyb20gdGhlIHRvcCBvZiB0aGUgcGFnZSBpbiB0aGUgcGFnZSBwcm9ncmVzc2lv
bgogICAgIC8vIGRpcmVjdGlvbiAoc28gYW4geC1vZmZzZXQgaW4gdmVydGljYWwgdGV4dCBhbmQg
YSB5LW9mZnNldCBmb3IgaG9yaXpvbnRhbCB0ZXh0KS4KLSAgICBpbnQgcGFnZUxvZ2ljYWxPZmZz
ZXQoaW50IGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbE9mZnNldChMYXlvdXRVbml0IGNoaWxkTG9naWNhbE9mZnNldCkgY29uc3Q7CiAKLSAgICB2
b2lkIGFkZEZvcmNlZENvbHVtbkJyZWFrKGludCBjaGlsZExvZ2ljYWxPZmZzZXQpOworICAgIHZv
aWQgYWRkRm9yY2VkQ29sdW1uQnJlYWsoTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxPZmZzZXQpOwog
ICAgIAogICAgIGJvb2wgcGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VM
b2dpY2FsSGVpZ2h0OyB9CiAgICAgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDsgfQpAQCAtODIsMTcgKzgxLDI1
IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBib29sIG1fY2xpcHBlZDsKLSAgICBJbnRSZWN0
IG1fY2xpcFJlY3Q7Ci0gICAgSW50U2l6ZSBtX3BhaW50T2Zmc2V0OyAvLyB4L3kgb2Zmc2V0IGZy
b20gY29udGFpbmVyLiAgSW5jbHVkZXMgcmVsYXRpdmUgcG9zaXRpb25pbmcgYW5kIHNjcm9sbCBv
ZmZzZXRzLgotICAgIEludFNpemUgbV9sYXlvdXRPZmZzZXQ7IC8vIHgveSBvZmZzZXQgZnJvbSBj
b250YWluZXIuICBEb2VzIG5vdCBpbmNsdWRlIHJlbGF0aXZlIHBvc2l0aW9uaW5nIG9yIHNjcm9s
bCBvZmZzZXRzLgotICAgIEludFNpemUgbV9sYXlvdXREZWx0YTsgLy8gVHJhbnNpZW50IG9mZnNl
dCBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiBvZiB0aGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB1c2VkIHRvIGVuc3VyZSB0aGF0IHJlcGFpbnRzIGhhcHBlbiBpbiB0aGUg
Y29ycmVjdCBwbGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSB0
b3RhbCBkZWx0YSBhY2N1bXVsYXRlZCBmcm9tIHRoZSByb290LgotCi0gICAgaW50IG1fcGFnZUxv
Z2ljYWxIZWlnaHQ7IC8vIFRoZSBjdXJyZW50IHBhZ2UgaGVpZ2h0IGZvciB0aGUgcGFnaW5hdGlv
biBtb2RlbCB0aGF0IGVuY2xvc2VzIHVzLgotICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENo
YW5nZWQ7IC8vIElmIG91ciBwYWdlIGhlaWdodCBoYXMgY2hhbmdlZCwgdGhpcyB3aWxsIGZvcmNl
IGFsbCBibG9ja3MgdG8gcmVsYXlvdXQuCi0gICAgSW50U2l6ZSBtX3BhZ2VPZmZzZXQ7IC8vIFRo
ZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBwYWdlIGluIHRoZSBuZWFyZXN0IGVu
Y2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsLgotICAgIENvbHVtbkluZm8qIG1fY29sdW1uSW5mbzsg
Ly8gSWYgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsIGlzIGEgY29sdW1uIG1vZGVsLCB0
aGVuIHRoaXMgd2lsbCBzdG9yZSBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIGVhc3kgcmV0cmlldmFs
L21hbmlwdWxhdGlvbi4KKyAgICBMYXlvdXRSZWN0IG1fY2xpcFJlY3Q7CisgICAgCisgICAgLy8g
eC95IG9mZnNldCBmcm9tIGNvbnRhaW5lci4gSW5jbHVkZXMgcmVsYXRpdmUgcG9zaXRpb25pbmcg
YW5kIHNjcm9sbCBvZmZzZXRzLgorICAgIExheW91dFNpemUgbV9wYWludE9mZnNldDsKKyAgICAv
LyB4L3kgb2Zmc2V0IGZyb20gY29udGFpbmVyLiBEb2VzIG5vdCBpbmNsdWRlIHJlbGF0aXZlIHBv
c2l0aW9uaW5nIG9yIHNjcm9sbCBvZmZzZXRzLgorICAgIExheW91dFNpemUgbV9sYXlvdXRPZmZz
ZXQ7CisgICAgLy8gVHJhbnNpZW50IG9mZnNldCBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiBvZiB0
aGUgb2JqZWN0CisgICAgLy8gdXNlZCB0byBlbnN1cmUgdGhhdCByZXBhaW50cyBoYXBwZW4gaW4g
dGhlIGNvcnJlY3QgcGxhY2UuCisgICAgLy8gVGhpcyBpcyBhIHRvdGFsIGRlbHRhIGFjY3VtdWxh
dGVkIGZyb20gdGhlIHJvb3QuIAorICAgIExheW91dFNpemUgbV9sYXlvdXREZWx0YTsKKworICAg
IC8vIFRoZSBjdXJyZW50IHBhZ2UgaGVpZ2h0IGZvciB0aGUgcGFnaW5hdGlvbiBtb2RlbCB0aGF0
IGVuY2xvc2VzIHVzLgorICAgIExheW91dFVuaXQgbV9wYWdlTG9naWNhbEhlaWdodDsKKyAgICAv
LyBJZiBvdXIgcGFnZSBoZWlnaHQgaGFzIGNoYW5nZWQsIHRoaXMgd2lsbCBmb3JjZSBhbGwgYmxv
Y2tzIHRvIHJlbGF5b3V0LgorICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQ7Cisg
ICAgLy8gVGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IHBhZ2UgaW4gdGhlIG5l
YXJlc3QgZW5jbG9zaW5nIHBhZ2luYXRpb24gbW9kZWwuCisgICAgTGF5b3V0U2l6ZSBtX3BhZ2VP
ZmZzZXQ7CisgICAgLy8gSWYgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsIGlzIGEgY29s
dW1uIG1vZGVsLCB0aGVuIHRoaXMgd2lsbCBzdG9yZSBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIGVh
c3kgcmV0cmlldmFsL21hbmlwdWxhdGlvbi4KKyAgICBDb2x1bW5JbmZvKiBtX2NvbHVtbkluZm87
CiAKICAgICBMYXlvdXRTdGF0ZSogbV9uZXh0OwogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBUaGVzZSB0eXBlZGVmcyBhcmUgYmVpbmcgdXNlZCB0byBhYnN0cmFjdCBsYXlvdXQgYW5k
IGhpdCB0ZXN0aW5nIG9mZgorLy8gb2YgaW50ZWdlcnMgYW5kIGV2ZW50dWFsbHkgcmVwbGFjZSB0
aGVtIHdpdGggZmxvYXRzLiBPbmNlIHRoaXMgdHJhbnNpdGlvbgorLy8gaXMgY29tcGxldGUsIHRo
ZXNlIHR5cGVzIHdpbGwgYmUgcmVtb3ZlZC4gUHJvZ3Jlc3MgY2FuIGJlIHRyYWNrZWQgYXQKKy8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDMxOAorCisjaWZuZGVm
IExheW91dFR5cGVzX2gKKyNkZWZpbmUgTGF5b3V0VHlwZXNfaAorCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IExheW91dFVuaXQ7Cit0
eXBlZGVmIEludFBvaW50IExheW91dFBvaW50OwordHlwZWRlZiBJbnRTaXplIExheW91dFNpemU7
Cit0eXBlZGVmIEludFJlY3QgTGF5b3V0UmVjdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gTGF5b3V0VHlwZXNfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>